Bug 17835: Do not reselect translated_description if comes from search_with_localization
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 3 Jan 2017 08:22:48 +0000 (09:22 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 14 Apr 2017 14:43:51 +0000 (10:43 -0400)
If the Koha::ItemType object has been instanciated from a call to
Koha::ItemTypes->search_with_localization, we already have the
translated_description value. So there is no need to fetch it again from
the DB. This is what this trick does: if the translated_description
column exist in the DBIx::Class result source's column list, that means
the value has already been retrieved.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Lari Taskula <lari.taskula@jns.fi>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Koha/ItemType.pm

index 48df808..8f2279b 100644 (file)
@@ -51,6 +51,14 @@ sub image_location {
 
 sub translated_description {
     my ( $self, $lang ) = @_;
+    if ( my $translated_description = eval { $self->get_column('translated_description') } ) {
+        # If the value has already been fetched (eg. from sarch_with_localization),
+        # do not search for it again
+        # Note: This is a bit hacky but should be fast
+        return $translated_description
+             ? $translated_description
+             : $self->description;
+    }
     $lang ||= C4::Languages::getlanguage;
     my $translated_description = Koha::Localizations->search({
         code => $self->itemtype,