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

(-)a/C4/Context.pm (-8 / +26 lines)
Lines 505-510 with this method. Link Here
505
=cut
505
=cut
506
506
507
my $syspref_cache = Koha::Cache->get_instance();
507
my $syspref_cache = Koha::Cache->get_instance();
508
my %syspref_L1_cache;
508
my $use_syspref_cache = 1;
509
my $use_syspref_cache = 1;
509
sub preference {
510
sub preference {
510
    my $self = shift;
511
    my $self = shift;
Lines 512-524 sub preference { Link Here
512
513
513
    $var = lc $var;
514
    $var = lc $var;
514
515
516
    # Return the value if the var has already been accessed
517
    if ($use_syspref_cache && exists $syspref_L1_cache{$var}) {
518
        return $syspref_L1_cache{$var};
519
    }
520
515
    my $cached_var = $use_syspref_cache
521
    my $cached_var = $use_syspref_cache
516
        ? $syspref_cache->get_from_cache("syspref_$var")
522
        ? $syspref_cache->get_from_cache("syspref_$var")
517
        : undef;
523
        : undef;
518
    return $cached_var if defined $cached_var;
524
    return $cached_var if defined $cached_var;
519
525
520
    my $dbh  = C4::Context->dbh or return 0;
521
522
    my $value;
526
    my $value;
523
    if ( defined $ENV{"OVERRIDE_SYSPREF_$var"} ) {
527
    if ( defined $ENV{"OVERRIDE_SYSPREF_$var"} ) {
524
        $value = $ENV{"OVERRIDE_SYSPREF_$var"};
528
        $value = $ENV{"OVERRIDE_SYSPREF_$var"};
Lines 528-534 sub preference { Link Here
528
        $value = $syspref ? $syspref->value() : undef;
532
        $value = $syspref ? $syspref->value() : undef;
529
    }
533
    }
530
534
531
    $syspref_cache->set_in_cache("syspref_$var", $value) if $use_syspref_cache;
535
    if ( $use_syspref_cache ) {
536
        $syspref_cache->set_in_cache("syspref_$var", $value);
537
        $syspref_L1_cache{$var} = $value;
538
    }
532
    return $value;
539
    return $value;
533
}
540
}
534
541
Lines 581-587 will not be seen by this process. Link Here
581
=cut
588
=cut
582
589
583
sub clear_syspref_cache {
590
sub clear_syspref_cache {
584
    $syspref_cache->flush_all if $use_syspref_cache;
591
    return unless $use_syspref_cache;
592
    $syspref_cache->flush_all;
593
    clear_syspref_L1_cache()
594
}
595
596
sub clear_syspref_L1_cache {
597
    %syspref_L1_cache = ();
585
}
598
}
586
599
587
=head2 set_preference
600
=head2 set_preference
Lines 632-639 sub set_preference { Link Here
632
        )->store();
645
        )->store();
633
    }
646
    }
634
647
635
    $syspref_cache->set_in_cache( "syspref_$variable", $value )
648
    if ( $use_syspref_cache ) {
636
      if $use_syspref_cache;
649
        $syspref_cache->set_in_cache( "syspref_$variable", $value );
650
        $syspref_L1_cache{$variable} = $value;
651
    }
637
652
638
    return $syspref;
653
    return $syspref;
639
}
654
}
Lines 652-658 sub delete_preference { Link Here
652
    my ( $self, $var ) = @_;
667
    my ( $self, $var ) = @_;
653
668
654
    if ( Koha::Config::SysPrefs->find( $var )->delete ) {
669
    if ( Koha::Config::SysPrefs->find( $var )->delete ) {
655
        $syspref_cache->clear_from_cache("syspref_$var") if $use_syspref_cache;
670
        if ( $use_syspref_cache ) {
671
            $syspref_cache->clear_from_cache("syspref_$var");
672
            delete $syspref_L1_cache{$var};
673
        }
674
656
        return 1;
675
        return 1;
657
    }
676
    }
658
    return 0;
677
    return 0;
659
- 

Return to bug 11998