Added Cache::FileCache support.
This commit is contained in:
parent
0938e9d6cb
commit
77a5b7406a
2 changed files with 12 additions and 39 deletions
|
|
@ -15,9 +15,9 @@ package WebGUI::International;
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
|
||||||
#Test to see if IPC::Shareable will load.
|
#Test to see if Cache::FileCache will load.
|
||||||
my $hasIPC=1;
|
my $hasCache=1;
|
||||||
eval " use IPC::Shareable; "; $hasIPC=0 if $@;
|
eval " use Cache::FileCache; "; $hasCache=0 if $@;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
|
|
@ -69,18 +69,8 @@ An integer that specifies the language that the user should see. Defaults to th
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub get {
|
sub get {
|
||||||
my ($output, $language, $namespace, %international);
|
my ($output, $language, $namespace, $cache);
|
||||||
my $useCache = ($session{env}{MOD_PERL} && $hasIPC && $session{config}{cacheInternational});
|
my $useCache = ($hasCache && $session{config}{cacheInternational});
|
||||||
if ($useCache) {
|
|
||||||
my $glue = 'intl';
|
|
||||||
my %options = (
|
|
||||||
create => 0,
|
|
||||||
exclusive => 0,
|
|
||||||
mode => 0666,
|
|
||||||
destroy => 0,
|
|
||||||
);
|
|
||||||
tie %international, 'IPC::Shareable', $glue, { %options } or WebGUI::ErrorHandler::warn("Couldn't cache international message.");
|
|
||||||
}
|
|
||||||
if ($_[2] ne "") {
|
if ($_[2] ne "") {
|
||||||
$language = $_[2];
|
$language = $_[2];
|
||||||
} elsif ($session{user}{language} ne "") {
|
} elsif ($session{user}{language} ne "") {
|
||||||
|
|
@ -93,15 +83,17 @@ sub get {
|
||||||
} else {
|
} else {
|
||||||
$namespace = "WebGUI";
|
$namespace = "WebGUI";
|
||||||
}
|
}
|
||||||
if ($useCache && $international{$language}{$namespace}{$_[0]}) {
|
if ($useCache) {
|
||||||
$output = $international{$language}{$namespace}{$_[0]};
|
$cache = new Cache::FileCache({'namespace'=>'International'});
|
||||||
} else {
|
$output = $cache->get($language."_".$namespace."_".$_[0]);
|
||||||
|
}
|
||||||
|
if (not defined $output) {
|
||||||
($output) = WebGUI::SQL->quickArray("select message from international
|
($output) = WebGUI::SQL->quickArray("select message from international
|
||||||
where internationalId=$_[0] and namespace='$namespace' and languageId='$language'");
|
where internationalId=$_[0] and namespace='$namespace' and languageId='$language'");
|
||||||
if ($output eq "" && $language ne 1) {
|
if ($output eq "" && $language ne 1) {
|
||||||
$output = get($_[0],$namespace,1);
|
$output = get($_[0],$namespace,1);
|
||||||
}
|
}
|
||||||
$international{$language}{$namespace}{$_[0]} = $output if ($useCache);
|
$cache->set($language."_".$namespace."_".$_[0], $output) if ($useCache);
|
||||||
}
|
}
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,26 +25,7 @@ use File::Copy ();
|
||||||
use File::Path ();
|
use File::Path ();
|
||||||
use FileHandle ();
|
use FileHandle ();
|
||||||
use POSIX ();
|
use POSIX ();
|
||||||
|
eval " use Cache::FileCache (); "; # check to see if it will load;
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------
|
|
||||||
# International Message Caching
|
|
||||||
#----------------------------------------
|
|
||||||
#Test to see if IPC::Sharable will load.
|
|
||||||
my $hasIPC=1;
|
|
||||||
eval " use IPC::Shareable (); "; $hasIPC=0 if $@;
|
|
||||||
my (%international);
|
|
||||||
if ($hasIPC) {
|
|
||||||
my $glue = 'intl';
|
|
||||||
my %options = (
|
|
||||||
create => 'yes',
|
|
||||||
exclusive => 0,
|
|
||||||
mode => 0666,
|
|
||||||
destroy => 'yes',
|
|
||||||
);
|
|
||||||
tie %international, 'IPC::Shareable', $glue, { %options };
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------
|
#----------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue