From 77a5b7406ad2efcf11e734a9b5c1be3d52e82b40 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Tue, 17 Dec 2002 08:08:30 +0000 Subject: [PATCH] Added Cache::FileCache support. --- lib/WebGUI/International.pm | 30 +++++++++++------------------- sbin/preload.perl | 21 +-------------------- 2 files changed, 12 insertions(+), 39 deletions(-) diff --git a/lib/WebGUI/International.pm b/lib/WebGUI/International.pm index 7074c762c..d095c3afd 100644 --- a/lib/WebGUI/International.pm +++ b/lib/WebGUI/International.pm @@ -15,9 +15,9 @@ package WebGUI::International; =cut -#Test to see if IPC::Shareable will load. -my $hasIPC=1; -eval " use IPC::Shareable; "; $hasIPC=0 if $@; +#Test to see if Cache::FileCache will load. +my $hasCache=1; +eval " use Cache::FileCache; "; $hasCache=0 if $@; use strict; use WebGUI::Session; @@ -69,18 +69,8 @@ An integer that specifies the language that the user should see. Defaults to th =cut sub get { - my ($output, $language, $namespace, %international); - my $useCache = ($session{env}{MOD_PERL} && $hasIPC && $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."); - } + my ($output, $language, $namespace, $cache); + my $useCache = ($hasCache && $session{config}{cacheInternational}); if ($_[2] ne "") { $language = $_[2]; } elsif ($session{user}{language} ne "") { @@ -93,15 +83,17 @@ sub get { } else { $namespace = "WebGUI"; } - if ($useCache && $international{$language}{$namespace}{$_[0]}) { - $output = $international{$language}{$namespace}{$_[0]}; - } else { + if ($useCache) { + $cache = new Cache::FileCache({'namespace'=>'International'}); + $output = $cache->get($language."_".$namespace."_".$_[0]); + } + if (not defined $output) { ($output) = WebGUI::SQL->quickArray("select message from international where internationalId=$_[0] and namespace='$namespace' and languageId='$language'"); if ($output eq "" && $language ne 1) { $output = get($_[0],$namespace,1); } - $international{$language}{$namespace}{$_[0]} = $output if ($useCache); + $cache->set($language."_".$namespace."_".$_[0], $output) if ($useCache); } return $output; } diff --git a/sbin/preload.perl b/sbin/preload.perl index 79716f452..6512b53b5 100644 --- a/sbin/preload.perl +++ b/sbin/preload.perl @@ -25,26 +25,7 @@ use File::Copy (); use File::Path (); use FileHandle (); use POSIX (); - - - -#---------------------------------------- -# 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 }; -} +eval " use Cache::FileCache (); "; # check to see if it will load; #----------------------------------------