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

(-)a/C4/Context.pm (-19 / +24 lines)
Lines 101-107 use C4::Boolean; Link Here
101
use C4::Debug;
101
use C4::Debug;
102
use Koha;
102
use Koha;
103
use Koha::Config;
103
use Koha::Config;
104
use Koha::Config::SysPref;
105
use Koha::Config::SysPrefs;
104
use Koha::Config::SysPrefs;
106
105
107
=head1 NAME
106
=head1 NAME
Lines 401-408 with this method. Link Here
401
400
402
=cut
401
=cut
403
402
404
my $syspref_cache = Koha::Caches->get_instance('syspref');
403
my $sysprefs          = {};
405
my $use_syspref_cache = 1;
404
my $use_syspref_cache = 1;
405
406
sub preference {
406
sub preference {
407
    my $self = shift;
407
    my $self = shift;
408
    my $var  = shift;    # The system preference to return
408
    my $var  = shift;    # The system preference to return
Lines 410-430 sub preference { Link Here
410
    $var = lc $var;
410
    $var = lc $var;
411
411
412
    return $ENV{"OVERRIDE_SYSPREF_$var"}
412
    return $ENV{"OVERRIDE_SYSPREF_$var"}
413
        if defined $ENV{"OVERRIDE_SYSPREF_$var"};
413
      if defined $ENV{"OVERRIDE_SYSPREF_$var"};
414
414
415
    my $cached_var = $use_syspref_cache
415
    my $cached_var;
416
        ? $syspref_cache->get_from_cache("syspref_$var")
416
    if ($use_syspref_cache) {
417
        : undef;
417
        unless (%$sysprefs) {
418
            # first hit
419
            my $syspref_cache = Koha::Caches->get_instance('sysprefs');
420
            $sysprefs = $syspref_cache->get_from_cache('sysprefs');
421
            unless ( $sysprefs and %$sysprefs) {
422
                # L2 is not populated yet
423
                map { $sysprefs->{ lc $_->{variable} } = $_->{value} or undef } @{ Koha::Config::SysPrefs->search()->unblessed };
424
                $syspref_cache->set_in_cache( 'sysprefs', $sysprefs );
425
            }
426
        }
427
        $cached_var = exists $sysprefs->{$var} ? $sysprefs->{$var} : undef;
428
    }
418
    return $cached_var if defined $cached_var;
429
    return $cached_var if defined $cached_var;
419
430
420
    my $syspref;
431
    my $syspref;
421
    eval { $syspref = Koha::Config::SysPrefs->find( lc $var ) };
432
    eval { $syspref = Koha::Config::SysPrefs->find( lc $var ) };
422
    my $value = $syspref ? $syspref->value() : undef;
433
    return $syspref ? $syspref->value() : undef;
423
424
    if ( $use_syspref_cache ) {
425
        $syspref_cache->set_in_cache("syspref_$var", $value);
426
    }
427
    return $value;
428
}
434
}
429
435
430
sub boolean_preference {
436
sub boolean_preference {
Lines 477-483 will not be seen by this process. Link Here
477
483
478
sub clear_syspref_cache {
484
sub clear_syspref_cache {
479
    return unless $use_syspref_cache;
485
    return unless $use_syspref_cache;
486
    my $syspref_cache = Koha::Caches->get_instance('sysprefs');
480
    $syspref_cache->flush_all;
487
    $syspref_cache->flush_all;
488
    $sysprefs = {};
481
}
489
}
482
490
483
=head2 set_preference
491
=head2 set_preference
Lines 528-538 sub set_preference { Link Here
528
        )->store();
536
        )->store();
529
    }
537
    }
530
538
531
    if ( $use_syspref_cache ) {
539
    $self->clear_syspref_cache;
532
        $syspref_cache->set_in_cache( "syspref_$variable", $value );
540
    return $self->preference($variable);
533
    }
534
535
    return $syspref;
536
}
541
}
537
542
538
=head2 delete_preference
543
=head2 delete_preference
Lines 550-555 sub delete_preference { Link Here
550
555
551
    if ( Koha::Config::SysPrefs->find( $var )->delete ) {
556
    if ( Koha::Config::SysPrefs->find( $var )->delete ) {
552
        if ( $use_syspref_cache ) {
557
        if ( $use_syspref_cache ) {
558
            my $syspref_cache = Koha::Caches->get_instance('sysprefs');
553
            $syspref_cache->clear_from_cache("syspref_$var");
559
            $syspref_cache->clear_from_cache("syspref_$var");
554
        }
560
        }
555
561
556
- 

Return to bug 15341