View | Details | Raw Unified | Return to bug 8435
Collapse All | Expand All

(-)a/C4/Auth.pm (-2 / +2 lines)
Lines 1573-1579 sub getuserflags { Link Here
1573
            $userflags->{$flag} = 0;
1573
            $userflags->{$flag} = 0;
1574
        }
1574
        }
1575
    }
1575
    }
1576
1577
    # get subpermissions and merge with top-level permissions
1576
    # get subpermissions and merge with top-level permissions
1578
    my $user_subperms = get_user_subpermissions($userid);
1577
    my $user_subperms = get_user_subpermissions($userid);
1579
    foreach my $module (keys %$user_subperms) {
1578
    foreach my $module (keys %$user_subperms) {
Lines 1669-1675 sub haspermission { Link Here
1669
    my ($userid, $flagsrequired) = @_;
1668
    my ($userid, $flagsrequired) = @_;
1670
    my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
1669
    my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
1671
    $sth->execute($userid);
1670
    $sth->execute($userid);
1672
    my $flags = getuserflags($sth->fetchrow(), $userid);
1671
    my $row = $sth->fetchrow();
1672
    my $flags = getuserflags($row, $userid);
1673
    if ( $userid eq C4::Context->config('user') ) {
1673
    if ( $userid eq C4::Context->config('user') ) {
1674
        # Super User Account from /etc/koha.conf
1674
        # Super User Account from /etc/koha.conf
1675
        $flags->{'superlibrarian'} = 1;
1675
        $flags->{'superlibrarian'} = 1;
(-)a/C4/Serials.pm (-66 / +46 lines)
Lines 20-25 package C4::Serials; Link Here
20
20
21
use strict;
21
use strict;
22
use warnings;
22
use warnings;
23
use C4::Context;
23
use C4::Dates qw(format_date format_date_in_iso);
24
use C4::Dates qw(format_date format_date_in_iso);
24
use Date::Calc qw(:all);
25
use Date::Calc qw(:all);
25
use POSIX qw(strftime);
26
use POSIX qw(strftime);
Lines 214-228 sub GetSerialInformation { Link Here
214
    my ($serialid) = @_;
215
    my ($serialid) = @_;
215
    my $dbh        = C4::Context->dbh;
216
    my $dbh        = C4::Context->dbh;
216
    my $query      = qq|
217
    my $query      = qq|
217
        SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid |;
218
        SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid
218
    if (   C4::Context->preference('IndependantBranches')
219
        && C4::Context->userenv
220
        && C4::Context->userenv->{'flags'} != 1
221
        && C4::Context->userenv->{'branch'} ) {
222
        $query .= "
223
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
224
    }
225
    $query .= qq|             
226
        FROM   serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid
219
        FROM   serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid
227
        WHERE  serialid = ?
220
        WHERE  serialid = ?
228
    |;
221
    |;
Lines 261-266 sub GetSerialInformation { Link Here
261
    $data->{ "status" . $data->{'serstatus'} } = 1;
254
    $data->{ "status" . $data->{'serstatus'} } = 1;
262
    $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1;
255
    $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1;
263
    $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} );
256
    $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} );
257
    $data->{cannotedit} = not can_edit_subscription( $data );
264
    return $data;
258
    return $data;
265
}
259
}
266
260
Lines 319-333 sub GetSubscription { Link Here
319
                subscriptionhistory.*,
313
                subscriptionhistory.*,
320
                aqbooksellers.name AS aqbooksellername,
314
                aqbooksellers.name AS aqbooksellername,
321
                biblio.title AS bibliotitle,
315
                biblio.title AS bibliotitle,
322
                subscription.biblionumber as bibnum);
316
                subscription.biblionumber as bibnum
323
    if (   C4::Context->preference('IndependantBranches')
324
        && C4::Context->userenv
325
        && C4::Context->userenv->{'flags'} != 1
326
        && C4::Context->userenv->{'branch'} ) {
327
        $query .= "
328
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
329
    }
330
    $query .= qq(             
331
       FROM subscription
317
       FROM subscription
332
       LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid
318
       LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid
333
       LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id
319
       LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id
Lines 335-350 sub GetSubscription { Link Here
335
       WHERE subscription.subscriptionid = ?
321
       WHERE subscription.subscriptionid = ?
336
    );
322
    );
337
323
338
    #     if (C4::Context->preference('IndependantBranches') &&
339
    #         C4::Context->userenv &&
340
    #         C4::Context->userenv->{'flags'} != 1){
341
    # #       $debug and warn "flags: ".C4::Context->userenv->{'flags'};
342
    #       $query.=" AND subscription.branchcode IN ('".C4::Context->userenv->{'branch'}."',\"\")";
343
    #     }
344
    $debug and warn "query : $query\nsubsid :$subscriptionid";
324
    $debug and warn "query : $query\nsubsid :$subscriptionid";
345
    my $sth = $dbh->prepare($query);
325
    my $sth = $dbh->prepare($query);
346
    $sth->execute($subscriptionid);
326
    $sth->execute($subscriptionid);
347
    return $sth->fetchrow_hashref;
327
    my $subscription = $sth->fetchrow_hashref;
328
    $subscription->{cannotedit} = not can_edit_subscription( $subscription );
329
    return $subscription;
348
}
330
}
349
331
350
=head2 GetFullSubscription
332
=head2 GetFullSubscription
Lines 368-382 sub GetFullSubscription { Link Here
368
            aqbooksellers.name as aqbooksellername,
350
            aqbooksellers.name as aqbooksellername,
369
            biblio.title as bibliotitle,
351
            biblio.title as bibliotitle,
370
            subscription.branchcode AS branchcode,
352
            subscription.branchcode AS branchcode,
371
            subscription.subscriptionid AS subscriptionid |;
353
            subscription.subscriptionid AS subscriptionid
372
    if (   C4::Context->preference('IndependantBranches')
373
        && C4::Context->userenv
374
        && C4::Context->userenv->{'flags'} != 1
375
        && C4::Context->userenv->{'branch'} ) {
376
        $query .= "
377
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
378
    }
379
    $query .= qq|
380
  FROM      serial 
354
  FROM      serial 
381
  LEFT JOIN subscription ON 
355
  LEFT JOIN subscription ON 
382
          (serial.subscriptionid=subscription.subscriptionid )
356
          (serial.subscriptionid=subscription.subscriptionid )
Lines 390-396 sub GetFullSubscription { Link Here
390
    $debug and warn "GetFullSubscription query: $query";
364
    $debug and warn "GetFullSubscription query: $query";
391
    my $sth = $dbh->prepare($query);
365
    my $sth = $dbh->prepare($query);
392
    $sth->execute($subscriptionid);
366
    $sth->execute($subscriptionid);
393
    return $sth->fetchall_arrayref( {} );
367
    my $subscriptions = $sth->fetchall_arrayref( {} );
368
    for my $subscription ( @$subscriptions ) {
369
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
370
    }
371
    return $subscriptions;
394
}
372
}
395
373
396
=head2 PrepareSerialsData
374
=head2 PrepareSerialsData
Lines 488-500 sub GetSubscriptionsFromBiblionumber { Link Here
488
        $subs->{ "periodicity" . $subs->{periodicity} }     = 1;
466
        $subs->{ "periodicity" . $subs->{periodicity} }     = 1;
489
        $subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
467
        $subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
490
        $subs->{ "status" . $subs->{'status'} }             = 1;
468
        $subs->{ "status" . $subs->{'status'} }             = 1;
491
        $subs->{'cannotedit'} =
492
          (      C4::Context->preference('IndependantBranches')
493
              && C4::Context->userenv
494
              && C4::Context->userenv->{flags} % 2 != 1
495
              && C4::Context->userenv->{branch}
496
              && $subs->{branchcode}
497
              && ( C4::Context->userenv->{branch} ne $subs->{branchcode} ) );
498
469
499
        if ( $subs->{enddate} eq '0000-00-00' ) {
470
        if ( $subs->{enddate} eq '0000-00-00' ) {
500
            $subs->{enddate} = '';
471
            $subs->{enddate} = '';
Lines 503-508 sub GetSubscriptionsFromBiblionumber { Link Here
503
        }
474
        }
504
        $subs->{'abouttoexpire'}       = abouttoexpire( $subs->{'subscriptionid'} );
475
        $subs->{'abouttoexpire'}       = abouttoexpire( $subs->{'subscriptionid'} );
505
        $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} );
476
        $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} );
477
        $subs->{cannotedit} = not can_edit_subscription( $subs );
506
        push @res, $subs;
478
        push @res, $subs;
507
    }
479
    }
508
    return \@res;
480
    return \@res;
Lines 528-543 sub GetFullSubscriptionsFromBiblionumber { Link Here
528
            year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
500
            year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
529
            biblio.title as bibliotitle,
501
            biblio.title as bibliotitle,
530
            subscription.branchcode AS branchcode,
502
            subscription.branchcode AS branchcode,
531
            subscription.subscriptionid AS subscriptionid|;
503
            subscription.subscriptionid AS subscriptionid
532
    if (   C4::Context->preference('IndependantBranches')
533
        && C4::Context->userenv
534
        && C4::Context->userenv->{'flags'} != 1
535
        && C4::Context->userenv->{'branch'} ) {
536
        $query .= "
537
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
538
    }
539
540
    $query .= qq|      
541
  FROM      serial 
504
  FROM      serial 
542
  LEFT JOIN subscription ON 
505
  LEFT JOIN subscription ON 
543
          (serial.subscriptionid=subscription.subscriptionid)
506
          (serial.subscriptionid=subscription.subscriptionid)
Lines 550-556 sub GetFullSubscriptionsFromBiblionumber { Link Here
550
          |;
513
          |;
551
    my $sth = $dbh->prepare($query);
514
    my $sth = $dbh->prepare($query);
552
    $sth->execute($biblionumber);
515
    $sth->execute($biblionumber);
553
    return $sth->fetchall_arrayref( {} );
516
    my $subscriptions = $sth->fetchall_arrayref( {} );
517
    for my $subscription ( @$subscriptions ) {
518
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
519
    }
520
    return $subscriptions;
554
}
521
}
555
522
556
=head2 GetSubscriptions
523
=head2 GetSubscriptions
Lines 625-643 sub GetSubscriptions { Link Here
625
    $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
592
    $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
626
    $sth = $dbh->prepare($sql);
593
    $sth = $dbh->prepare($sql);
627
    $sth->execute(@bind_params);
594
    $sth->execute(@bind_params);
628
    my @results;
595
    my $subscriptions = $sth->fetchall_arrayref( {} );
629
596
    for my $subscription ( @$subscriptions ) {
630
    while ( my $line = $sth->fetchrow_hashref ) {
597
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
631
        $line->{'cannotedit'} =
598
    }
632
          (      C4::Context->preference('IndependantBranches')
599
    return @$subscriptions;
633
              && C4::Context->userenv
634
              && C4::Context->userenv->{flags} % 2 != 1
635
              && C4::Context->userenv->{branch}
636
              && $line->{branchcode}
637
              && ( C4::Context->userenv->{branch} ne $line->{branchcode} ) );
638
        push @results, $line;
639
    }
640
    return @results;
641
}
600
}
642
601
643
=head2 SearchSubscriptions
602
=head2 SearchSubscriptions
Lines 715-720 sub SearchSubscriptions { Link Here
715
    my $results = $sth->fetchall_arrayref( {} );
674
    my $results = $sth->fetchall_arrayref( {} );
716
    $sth->finish;
675
    $sth->finish;
717
676
677
    for my $subscription ( @$results ) {
678
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
679
    }
680
718
    return @$results;
681
    return @$results;
719
}
682
}
720
683
Lines 2532-2537 sub ReopenSubscription { Link Here
2532
    $sth->execute( $subscriptionid );
2495
    $sth->execute( $subscriptionid );
2533
}
2496
}
2534
2497
2498
sub can_edit_subscription {
2499
    my ( $subscription, $userid ) = @_;
2500
    my $flags = C4::Context->userenv->{flags};
2501
    $userid ||= C4::Context->userenv->{'id'};
2502
    my $independant_branches = C4::Context->preference('IndependantBranches');
2503
    return 1 unless $independant_branches;
2504
    if( $flags % 2 == 1
2505
        or C4::Auth::haspermission( $userid, {serials => 'superserials'}),
2506
        or not defined $subscription->{branchcode}
2507
        or $subscription->{branchcode} eq ''
2508
        or $subscription->{branchcode} eq C4::Context->userenv->{'branch'}
2509
    ) {
2510
        return 1;
2511
    }
2512
     return 0;
2513
}
2514
2535
1;
2515
1;
2536
__END__
2516
__END__
2537
2517
(-)a/installer/data/mysql/de-DE/mandatory/userpermissions.sql (+1 lines)
Lines 51-56 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
51
   (15, 'receive_serials', 'Zugang von Heften'),
51
   (15, 'receive_serials', 'Zugang von Heften'),
52
   (15, 'renew_subscription', 'Abonnements verlängern'),
52
   (15, 'renew_subscription', 'Abonnements verlängern'),
53
   (15, 'routing', 'Umlauflisten verwalten'),
53
   (15, 'routing', 'Umlauflisten verwalten'),
54
   (15, 'superserials', 'Manage subscriptions from any branch'),
54
   (16, 'execute_reports', 'SQL-Reports ausführen'),
55
   (16, 'execute_reports', 'SQL-Reports ausführen'),
55
   (16, 'create_reports', 'SQL-Reports erstellen'),
56
   (16, 'create_reports', 'SQL-Reports erstellen'),
56
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
57
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/en/mandatory/userpermissions.sql (+1 lines)
Lines 51-56 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
51
   (15, 'receive_serials', 'Serials receiving'),
51
   (15, 'receive_serials', 'Serials receiving'),
52
   (15, 'renew_subscription', 'Renew a subscription'),
52
   (15, 'renew_subscription', 'Renew a subscription'),
53
   (15, 'routing', 'Routing'),
53
   (15, 'routing', 'Routing'),
54
   (15, 'superserials', 'Manage subscriptions from any branch'),
54
   (16, 'execute_reports', 'Execute SQL reports'),
55
   (16, 'execute_reports', 'Execute SQL reports'),
55
   (16, 'create_reports', 'Create SQL Reports'),
56
   (16, 'create_reports', 'Create SQL Reports'),
56
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
57
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/es-ES/mandatory/userpermissions.sql (+1 lines)
Lines 51-56 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
51
   (15, 'receive_serials', 'Serials receiving'),
51
   (15, 'receive_serials', 'Serials receiving'),
52
   (15, 'renew_subscription', 'Renew a subscription'),
52
   (15, 'renew_subscription', 'Renew a subscription'),
53
   (15, 'routing', 'Routing'),
53
   (15, 'routing', 'Routing'),
54
   (15, 'superserials', 'Manage subscriptions from any branch'),
54
   (16, 'execute_reports', 'Execute SQL reports'),
55
   (16, 'execute_reports', 'Execute SQL reports'),
55
   (16, 'create_reports', 'Create SQL Reports'),
56
   (16, 'create_reports', 'Create SQL Reports'),
56
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
57
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql (+1 lines)
Lines 51-56 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
51
   (15, 'receive_serials', 'Bulletiner les périodiques'),
51
   (15, 'receive_serials', 'Bulletiner les périodiques'),
52
   (15, 'renew_subscription', 'Renouveler les abonnements'),
52
   (15, 'renew_subscription', 'Renouveler les abonnements'),
53
   (15, 'routing', 'Mettre en circulation'),
53
   (15, 'routing', 'Mettre en circulation'),
54
   (15, 'superserials', 'Manage subscriptions from any branch'),
54
   (16, 'execute_reports', 'Lancer les rapports SQL'),
55
   (16, 'execute_reports', 'Lancer les rapports SQL'),
55
   (16, 'create_reports', 'Créer les rapports SQL Reports'),
56
   (16, 'create_reports', 'Créer les rapports SQL Reports'),
56
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
57
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/it-IT/necessari/userpermissions.sql (+1 lines)
Lines 53-58 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
53
   (15, 'receive_serials', 'Ricevi fascicoli'),
53
   (15, 'receive_serials', 'Ricevi fascicoli'),
54
   (15, 'renew_subscription', 'Rinnova un abbonamento'),
54
   (15, 'renew_subscription', 'Rinnova un abbonamento'),
55
   (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'),
55
   (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'),
56
   (15, 'superserials', 'Manage subscriptions from any branch'),
56
   (16, 'execute_reports', 'Esegui reports SQL'),
57
   (16, 'execute_reports', 'Esegui reports SQL'),
57
   (16, 'create_reports', 'Crea reports SQL'),
58
   (16, 'create_reports', 'Crea reports SQL'),
58
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
59
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql (+1 lines)
Lines 71-76 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
71
   (15, 'receive_serials', 'Heftemottak'),
71
   (15, 'receive_serials', 'Heftemottak'),
72
   (15, 'renew_subscription', 'Fornye abonnementer'),
72
   (15, 'renew_subscription', 'Fornye abonnementer'),
73
   (15, 'routing', 'Sirkulasjon'),
73
   (15, 'routing', 'Sirkulasjon'),
74
   (15, 'superserials', 'Manage subscriptions from any branch'),
74
   (16, 'execute_reports', 'Kjøre SQL-rapporter'),
75
   (16, 'execute_reports', 'Kjøre SQL-rapporter'),
75
   (16, 'create_reports', 'Opprette SQL-rapporter'),
76
   (16, 'create_reports', 'Opprette SQL-rapporter'),
76
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
77
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql (+1 lines)
Lines 52-57 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
52
   (15, 'receive_serials', 'Serials receiving'),
52
   (15, 'receive_serials', 'Serials receiving'),
53
   (15, 'renew_subscription', 'Renew a subscription'),
53
   (15, 'renew_subscription', 'Renew a subscription'),
54
   (15, 'routing', 'Routing'),
54
   (15, 'routing', 'Routing'),
55
   (15, 'superserials', 'Manage subscriptions from any branch'),
55
   (16, 'execute_reports', 'Execute SQL reports'),
56
   (16, 'execute_reports', 'Execute SQL reports'),
56
   (16, 'create_reports', 'Create SQL Reports'),
57
   (16, 'create_reports', 'Create SQL Reports'),
57
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
58
   (19, 'manage', 'Manage plugins ( install / uninstall )'),
(-)a/installer/data/mysql/updatedatabase.pl (+7 lines)
Lines 6723-6728 if (C4::Context->preference("Version") < TransformToNum($DBversion)) { Link Here
6723
    SetVersion ($DBversion);
6723
    SetVersion ($DBversion);
6724
}
6724
}
6725
6725
6726
$DBversion = "3.09.00.XXX";
6727
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6728
    $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES(15, 'superserials', 'Manage subscriptions from any branch')");
6729
    print "Upgrade to $DBversion done (Add superserials permission)\n";
6730
    SetVersion($DBversion);
6731
}
6732
6726
=head1 FUNCTIONS
6733
=head1 FUNCTIONS
6727
6734
6728
=head2 TableExists($table)
6735
=head2 TableExists($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt (-4 / +4 lines)
Lines 141-146 Link Here
141
                  </tfoot>
141
                  </tfoot>
142
                  <tbody>
142
                  <tbody>
143
                    [% FOREACH subscription IN openedsubscriptions %]
143
                    [% FOREACH subscription IN openedsubscriptions %]
144
                    [% UNLESS subscription.cannotedit %]
144
                      <tr>
145
                      <tr>
145
                        <td>
146
                        <td>
146
                        [% IF ( subscription.issn ) %][% subscription.issn %]
147
                        [% IF ( subscription.issn ) %][% subscription.issn %]
Lines 177-189 Link Here
177
                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
178
                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
178
                        </td>
179
                        </td>
179
                        <td>
180
                        <td>
180
                        [% IF ( subscription.cannotedit ) %]
181
                        [% IF ( CAN_user_serials_receive_serials ) %]
181
                          &nbsp;
182
                          <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
182
                        [% ELSE %]
183
                          [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>[% END %]
184
                        [% END %]
183
                        [% END %]
185
                        </td>
184
                        </td>
186
                      </tr>
185
                      </tr>
186
                      [% END %]
187
                    [% END %]
187
                    [% END %]
188
                  </tbody>
188
                  </tbody>
189
                </table>
189
                </table>
(-)a/serials/serials-collection.pl (-2 / +2 lines)
Lines 37-44 my $op = $query->param('op') || q{}; Link Here
37
my $nbissues=$query->param('nbissues');
37
my $nbissues=$query->param('nbissues');
38
my $dbh = C4::Context->dbh;
38
my $dbh = C4::Context->dbh;
39
39
40
my ($template, $loggedinuser, $cookie);
40
my ($template, $loggedinuser, $cookie)
41
($template, $loggedinuser, $cookie)
42
  = get_template_and_user({template_name => "serials/serials-collection.tmpl",
41
  = get_template_and_user({template_name => "serials/serials-collection.tmpl",
43
                            query => $query,
42
                            query => $query,
44
                            type => "intranet",
43
                            type => "intranet",
Lines 105-110 if (@subscriptionid){ Link Here
105
   foreach my $subscriptionid (@subscriptionid){
104
   foreach my $subscriptionid (@subscriptionid){
106
    my $subs= GetSubscription($subscriptionid);
105
    my $subs= GetSubscription($subscriptionid);
107
    $closed = 1 if $subs->{closed};
106
    $closed = 1 if $subs->{closed};
107
108
    $subs->{opacnote}     =~ s/\n/\<br\/\>/g;
108
    $subs->{opacnote}     =~ s/\n/\<br\/\>/g;
109
    $subs->{missinglist}  =~ s/\n/\<br\/\>/g;
109
    $subs->{missinglist}  =~ s/\n/\<br\/\>/g;
110
    $subs->{recievedlist} =~ s/\n/\<br\/\>/g;
110
    $subs->{recievedlist} =~ s/\n/\<br\/\>/g;
(-)a/serials/serials-edit.pl (+1 lines)
Lines 134-139 foreach my $serialid (@serialids) { Link Here
134
        && !$processedserialid{$serialid} )
134
        && !$processedserialid{$serialid} )
135
    {
135
    {
136
        my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above
136
        my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above
137
137
        for my $d ( qw( publisheddate planneddate )){
138
        for my $d ( qw( publisheddate planneddate )){
138
            if ( $serinfo->{$d} =~m/^00/ ) {
139
            if ( $serinfo->{$d} =~m/^00/ ) {
139
                $serinfo->{$d} = q{};
140
                $serinfo->{$d} = q{};
(-)a/serials/serials-search.pl (+1 lines)
Lines 127-132 $template->param( Link Here
127
    branches_loop => \@branches_loop,
127
    branches_loop => \@branches_loop,
128
    done_searched => $searched,
128
    done_searched => $searched,
129
    routing       => $routing,
129
    routing       => $routing,
130
    size          => scalar ( map {$_->{cannotedit} ? () : 1} @subscriptions ),
130
    marcflavour   => (uc(C4::Context->preference("marcflavour")))
131
    marcflavour   => (uc(C4::Context->preference("marcflavour")))
131
);
132
);
132
133
(-)a/serials/subscription-add.pl (-1 / +2 lines)
Lines 69-75 if ($op eq 'modify' || $op eq 'dup' || $op eq 'modsubscription') { Link Here
69
69
70
    my $subscriptionid = $query->param('subscriptionid');
70
    my $subscriptionid = $query->param('subscriptionid');
71
    $subs = GetSubscription($subscriptionid);
71
    $subs = GetSubscription($subscriptionid);
72
## FIXME : Check rights to edit if mod. Could/Should display an error message.
72
73
    ## FIXME : Check rights to edit if mod. Could/Should display an error message.
73
    if ($subs->{'cannotedit'} && $op eq 'modify'){
74
    if ($subs->{'cannotedit'} && $op eq 'modify'){
74
      carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
75
      carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
75
      print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
76
      print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
(-)a/serials/subscription-detail.pl (-26 / +8 lines)
Lines 32-38 my $query = new CGI; Link Here
32
my $op = $query->param('op') || q{};
32
my $op = $query->param('op') || q{};
33
my $issueconfirmed = $query->param('issueconfirmed');
33
my $issueconfirmed = $query->param('issueconfirmed');
34
my $dbh = C4::Context->dbh;
34
my $dbh = C4::Context->dbh;
35
my ($template, $loggedinuser, $cookie, $hemisphere);
36
my $subscriptionid = $query->param('subscriptionid');
35
my $subscriptionid = $query->param('subscriptionid');
37
36
38
if ( $op and $op eq "close" ) {
37
if ( $op and $op eq "close" ) {
Lines 41-69 if ( $op and $op eq "close" ) { Link Here
41
    C4::Serials::ReopenSubscription( $subscriptionid );
40
    C4::Serials::ReopenSubscription( $subscriptionid );
42
}
41
}
43
42
44
my $subs = GetSubscription($subscriptionid);
45
46
$subs->{enddate} = GetExpirationDate($subscriptionid);
47
48
if ($op && $op eq 'del') {
49
	if ($subs->{'cannotedit'}){
50
		carp "Attempt to delete subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
51
		print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
52
	}
53
	DelSubscription($subscriptionid);
54
	print "Content-Type: text/html\n\n<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=serials-home.pl\"></html>";
55
	exit;
56
}
57
58
my ($totalissues,@serialslist) = GetSerials($subscriptionid);
59
$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
60
# the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...)
43
# the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...)
61
44
62
# Permission needed if it is a deletion (del) : delete_subscription
45
# Permission needed if it is a deletion (del) : delete_subscription
63
# Permission needed otherwise : *
46
# Permission needed otherwise : *
64
my $permission = ($op eq "del") ? "delete_subscription" : "*";
47
my $permission = ($op eq "del") ? "delete_subscription" : "*";
65
48
66
($template, $loggedinuser, $cookie)
49
my ($template, $loggedinuser, $cookie)
67
= get_template_and_user({template_name => "serials/subscription-detail.tmpl",
50
= get_template_and_user({template_name => "serials/subscription-detail.tmpl",
68
                query => $query,
51
                query => $query,
69
                type => "intranet",
52
                type => "intranet",
Lines 72-78 my $permission = ($op eq "del") ? "delete_subscription" : "*"; Link Here
72
                debug => 1,
55
                debug => 1,
73
                });
56
                });
74
57
75
$$subs{enddate} ||= GetExpirationDate($subscriptionid);
58
59
my $subs = GetSubscription($subscriptionid);
60
$subs->{enddate} ||= GetExpirationDate($subscriptionid);
61
62
my ($totalissues,@serialslist) = GetSerials($subscriptionid);
63
$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
76
64
77
if ($op eq 'del') {
65
if ($op eq 'del') {
78
	if ($$subs{'cannotedit'}){
66
	if ($$subs{'cannotedit'}){
Lines 160-171 $template->param( Link Here
160
    hasRouting  => $hasRouting,
148
    hasRouting  => $hasRouting,
161
    routing => C4::Context->preference("RoutingSerials"),
149
    routing => C4::Context->preference("RoutingSerials"),
162
    totalissues => $totalissues,
150
    totalissues => $totalissues,
163
    hemisphere => $hemisphere,
151
    cannotedit => (not C4::Serials::can_edit_subscription( $subs )),
164
    cannotedit =>(C4::Context->preference('IndependantBranches') &&
165
                C4::Context->userenv &&
166
                C4::Context->userenv->{flags} % 2 !=1  &&
167
                C4::Context->userenv->{branch} && $subs->{branchcode} &&
168
                (C4::Context->userenv->{branch} ne $subs->{branchcode})),
169
    'periodicity' . $subs->{periodicity} => 1,
152
    'periodicity' . $subs->{periodicity} => 1,
170
    'arrival' . $subs->{dow} => 1,
153
    'arrival' . $subs->{dow} => 1,
171
    'numberpattern' . $subs->{numberpattern} => 1,
154
    'numberpattern' . $subs->{numberpattern} => 1,
172
- 

Return to bug 8435