From f4595b7bbdd4fd739084e4df3123821572b1a39c Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Mon, 13 Dec 2021 14:44:18 +0000 Subject: [PATCH] Bug 29454: Use Koha Cache Memory Lite to stash itemtype descriptions for template plugin Returns empty string if given item type is undefined or unknown To test: 1 - Add 1000 items to a record, of varying item types 2 - Bring up the details page 3 - Note time to load 4 - Apply patch 5 - Reload page and compare to previous 6 - Confirm information is correct 7 - Confirm some performance benefit Signed-off-by: Fridolin Somers Signed-off-by: Martin Renvoize Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 3df28469c551d7cc2c2f16925e75e9913db0ee67) Signed-off-by: Lucas Gass --- Koha/Template/Plugin/ItemTypes.pm | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Koha/Template/Plugin/ItemTypes.pm b/Koha/Template/Plugin/ItemTypes.pm index 5b3cf1edeb..d2184f8fa7 100644 --- a/Koha/Template/Plugin/ItemTypes.pm +++ b/Koha/Template/Plugin/ItemTypes.pm @@ -22,15 +22,32 @@ use Modern::Perl; use Template::Plugin; use base qw( Template::Plugin ); +use Koha::Cache::Memory::Lite; use Koha::ItemTypes; sub GetDescription { my ( $self, $itemtypecode, $want_parent ) = @_; + return q{} unless defined $itemtypecode; + + my $memory_cache = Koha::Cache::Memory::Lite->get_instance; + my $cache_key = $want_parent ? "Itemtype_parent_description:".$itemtypecode : "Itemtype_description:" . $itemtypecode; + + my $cached = $memory_cache->get_from_cache($cache_key); + return $cached if $cached; + my $itemtype = Koha::ItemTypes->find( $itemtypecode ); - return q{} unless $itemtype; + unless ($itemtype) { + $memory_cache->set_in_cache( $cache_key, q{} ); + return q{}; + } + my $parent; $parent = $itemtype->parent if $want_parent; - return $parent ? $parent->translated_description . "->" . $itemtype->translated_description : $itemtype->translated_description; + + my $description = $parent ? $parent->translated_description . "->" . $itemtype->translated_description : $itemtype->translated_description; + $memory_cache->set_in_cache( $cache_key, $description ); + + return $description; } sub Get { -- 2.39.5