Bugzilla – Attachment 3515 Details for
Bug 6000
Performance enhancements for C4::Context and C4::Languages
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Followup patch
0002-Bug-6000-Follow-up-Performance-enhancing-C4-Language.patch (text/plain), 7.06 KB, created by
Chris Cormack
on 2011-03-29 23:07:04 UTC
(
hide
)
Description:
Followup patch
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2011-03-29 23:07:04 UTC
Size:
7.06 KB
patch
obsolete
>From a52fe52453b0711e563e7d6e61d89a7068add8f5 Mon Sep 17 00:00:00 2001 >From: Henri-Damien LAURENT <henridamien.laurent@biblibre.com> >Date: Sat, 27 Mar 2010 23:21:13 +0100 >Subject: [PATCH] Bug 6000 : Follow up Performance enhancing : C4/Languages.pm > >removing a call unused to getAllLanguages >Doing better job at enabled languages >--- > C4/Languages.pm | 79 +++++++++++++++++------------------------------------- > 1 files changed, 25 insertions(+), 54 deletions(-) > >diff --git a/C4/Languages.pm b/C4/Languages.pm >index 381b863..e73f37f 100644 >--- a/C4/Languages.pm >+++ b/C4/Languages.pm >@@ -23,7 +23,7 @@ use strict; > #use warnings; FIXME - Bug 2505 > use Carp; > use C4::Context; >-use List::MoreUtils qw/any/; >+use List::MoreUtils qw/any uniq/; > use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG); > > eval { >@@ -87,8 +87,7 @@ Returns a reference to an array of hashes: > sub getFrameworkLanguages { > # get a hash with all language codes, names, and locale names > my $all_languages = getAllLanguages(); >- my @languages; >- >+ > # find the available directory names > my $dir=C4::Context->config('intranetdir')."/installer/data/"; > opendir (MYDIR,$dir); >@@ -121,52 +120,35 @@ Returns a reference to an array of hashes: > sub getTranslatedLanguages { > my ($interface, $theme, $current_language, $which) = @_; > my $htdocs; >- my $all_languages = getAllLanguages(); > my @languages; > my @enabled_languages; > >- if ($interface && $interface eq 'opac' ) { >- my $languages= C4::Context->preference('opaclanguage') ||'en'; >- @enabled_languages = split ",", $languages; >- $htdocs = C4::Context->config('opachtdocs'); >- if ( $theme and -d "$htdocs/$theme" ) { >- (@languages) = _get_language_dirs($htdocs,$theme); >- } >- else { >- for my $theme ( _get_themes('opac') ) { >- push @languages, _get_language_dirs($htdocs,$theme); >- } >- } >+ my ($preference,$config); >+ if ($interface && $interface eq 'intranet' ) { >+ $preference="language"; >+ $config='intrahtdocs'; > } >- elsif ($interface && $interface eq 'intranet' ) { >- my $languages= C4::Context->preference('language') ||'en'; >- @enabled_languages = split ",", $languages; >- $htdocs = C4::Context->config('intrahtdocs'); >- if ( $theme and -d "$htdocs/$theme" ) { >- @languages = _get_language_dirs($htdocs,$theme); >- } >- else { >- foreach my $theme ( _get_themes('intranet') ) { >- push @languages, _get_language_dirs($htdocs,$theme); >- } >- } >+ else { >+ $preference="opaclanguages"; >+ $config='opachtdocs'; >+ $interface ||='opac'; >+ >+ } >+ >+ my $languages= C4::Context->preference($preference) ||'en'; >+ @enabled_languages = split ",", $languages; >+ $htdocs = C4::Context->config($config); >+ if ( $theme and -d "$htdocs/$theme" ) { >+ (@languages) = _get_language_dirs($htdocs,$theme); > } > else { >- my $languages= C4::Context->preference('opaclanguage') ||'en'; >- @enabled_languages = split ",", $languages; >- my $htdocs = C4::Context->config('intrahtdocs'); >- foreach my $theme ( _get_themes('intranet') ) { >+ for my $theme ( _get_themes($interface) ) { > push @languages, _get_language_dirs($htdocs,$theme); > } >- $htdocs = C4::Context->config('opachtdocs'); >- foreach my $theme ( _get_themes('opac') ) { >- push @languages, _get_language_dirs($htdocs,$theme); >- } >- my %seen; >- $seen{$_}++ for @languages; >- @languages = keys %seen; >+ @languages=uniq @languages; > } >- return _build_languages_arrayref($all_languages,\@languages,$current_language,\@enabled_languages); >+ @enabled_languages=grep{my $enabled_language=$_;any{$_ eq $enabled_language}@languages}@enabled_languages; >+ return _build_languages_arrayref(\@enabled_languages,$current_language); > } > > =head2 getAllLanguages >@@ -283,10 +265,9 @@ FIXME: this could be rewritten and simplified using map > =cut > > sub _build_languages_arrayref { >- my ($all_languages,$translated_languages,$current_language,$enabled_languages) = @_; >+ my ($translated_languages,$current_language) = @_; > my @translated_languages = @$translated_languages; > my @languages_loop; # the final reference to an array of hashrefs >- my @enabled_languages = @$enabled_languages; > # how many languages are enabled, if one, take note, some contexts won't need to display it > my %seen_languages; # the language tags we've seen > my %found_languages; >@@ -298,15 +279,10 @@ sub _build_languages_arrayref { > # separate the language string into its subtag types > my $language_subtags_hashref = regex_lang_subtags($translated_language); > >- # is this language string 'enabled'? >- for my $enabled_language (@enabled_languages) { >- #warn "Checking out if $translated_language eq $enabled_language"; >- $language_subtags_hashref->{'enabled'} = 1 if $translated_language eq $enabled_language; >- } >- > # group this language, key by langtag > $language_subtags_hashref->{'sublanguage_current'} = 1 if $translated_language eq $current_language; > $language_subtags_hashref->{'rfc4646_subtag'} = $translated_language; >+ $language_subtags_hashref->{'enabled'} = 1; > $language_subtags_hashref->{'native_description'} = language_get_description($language_subtags_hashref->{language},$language_subtags_hashref->{language},'language'); > $language_subtags_hashref->{'script_description'} = language_get_description($language_subtags_hashref->{script},$language_subtags_hashref->{'language'},'script'); > $language_subtags_hashref->{'region_description'} = language_get_description($language_subtags_hashref->{region},$language_subtags_hashref->{'language'},'region'); >@@ -318,11 +294,6 @@ sub _build_languages_arrayref { > while( my ($key, $value) = each %$language_groups) { > > # is this language group enabled? are any of the languages within it enabled? >- my $enabled; >- for my $enabled_language (@enabled_languages) { >- my $regex_enabled_language = regex_lang_subtags($enabled_language); >- $enabled = 1 if $key eq $regex_enabled_language->{language}; >- } > push @languages_loop, { > # this is only use if there is one > rfc4646_subtag => @$value[0]->{rfc4646_subtag}, >@@ -331,7 +302,7 @@ sub _build_languages_arrayref { > sublanguages_loop => $value, > plural => $track_language_groups->{$key} >1 ? 1 : 0, > current => $current_language_regex->{language} eq $key ? 1 : 0, >- group_enabled => $enabled, >+ group_enabled=>1 > }; > } > return \@languages_loop; >-- >1.7.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6000
:
3514
|
3515
|
7037