diff --git a/docs/upgrades/upgrade_6.8.8-6.99.0.pl b/docs/upgrades/upgrade_6.8.8-6.99.0.pl index 0002ac07e..0d4cf23ff 100644 --- a/docs/upgrades/upgrade_6.8.8-6.99.0.pl +++ b/docs/upgrades/upgrade_6.8.8-6.99.0.pl @@ -37,6 +37,7 @@ updateTemplates(); updateDatabaseLinksAndSQLReport(); ipsToCIDR(); addDisabletoRichEditor(); +changeDbCacheTimeoutName(); addNavigationMimeType(); addIndexes(); addDatabaseCache(); @@ -1103,6 +1104,12 @@ sub addDisabletoRichEditor { $session->db->write("alter table RichEdit add column disableRichEditor int(11) default 0") if ($numColumns < 21); } +#------------------------------------------------- +sub addDisabletoRichEditor { + print "\tChanging dbCacheTimeout to groupCacheTimeout.\n" unless ($quiet); + $session->db->write("alter table groups change dbCacheTimeout groupCacheTimeout int not null default 3600"); +} + #------------------------------------------------- sub addNavigationMimeType { print "\tAdding Mime Type to Navigations.\n" unless ($quiet); diff --git a/lib/WebGUI/Group.pm b/lib/WebGUI/Group.pm index 58f4c0ec5..bbd8211a5 100755 --- a/lib/WebGUI/Group.pm +++ b/lib/WebGUI/Group.pm @@ -90,7 +90,7 @@ sub _create { deleteOffset=>14, expireNotify=>0, databaseLinkId=>0, - dbCacheTimeout=>3600, + groupCacheTimeout=>3600, lastUpdated=>$self->session->datetime->time() }, $override); $self->addGroups([3]); @@ -686,6 +686,9 @@ sub getUsers { my $withoutExpired = shift; my $loopCount = shift; my $expireTime = 0; + my $cache = WebGUI::Cache->new($self->session, $self->getId); + my $value = $cache->get; + return $value if defined $value; if ($withoutExpired) { $expireTime = $self->session->datetime->time(); } @@ -710,6 +713,7 @@ sub getUsers { } my %users = map { $_ => 1 } @users; @users = keys %users; + $cache->set(\@users, $self->groupCacheTimeout); return \@users; } @@ -961,23 +965,23 @@ sub databaseLinkId { #------------------------------------------------------------------- -=head2 dbCacheTimeout ( [ value ] ) +=head2 groupCacheTimeout ( [ value ] ) -Returns the dbCacheTimeout for this group. +Returns the groupCacheTimeout for this group. =head3 value -If specified, the dbCacheTimeout is set to this value. +If specified, the groupCacheTimeout is set to this value. =cut -sub dbCacheTimeout { +sub groupCacheTimeout { my $self = shift; my $value = shift; if (defined $value) { - $self->set("dbCacheTimeout",$value); + $self->set("groupCacheTimeout",$value); } - return $self->get("dbCacheTimeout"); + return $self->get("groupCacheTimeout"); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Operation/Group.pm b/lib/WebGUI/Operation/Group.pm index 7e02f08df..f717317da 100644 --- a/lib/WebGUI/Operation/Group.pm +++ b/lib/WebGUI/Operation/Group.pm @@ -397,10 +397,10 @@ sub www_editGroup { -value=>$g->ldapRecursiveProperty ); $f->interval( - -name=>"dbCacheTimeout", + -name=>"groupCacheTimeout", -label=>$i18n->get(1004), -hoverHelp=>$i18n->get('1004 description'), - -value=>$g->dbCacheTimeout + -value=>$g->groupCacheTimeout ); $f->submit; $output .= $f->print; @@ -426,7 +426,7 @@ sub www_editGroupSave { $g->autoDelete($session->form->yesNo("autoDelete")); $g->databaseLinkId($session->form->process("databaseLinkId")); $g->dbQuery($session->form->process("dbQuery")); - $g->dbCacheTimeout($session->form->interval("dbCacheTimeout")); + $g->groupCacheTimeout($session->form->interval("groupCacheTimeout")); $g->ldapGroup($session->form->text("ldapGroup")); $g->ldapGroupProperty($session->form->text("ldapGroupProperty")); $g->ldapRecursiveProperty($session->form->text("ldapRecursiveProperty")); diff --git a/lib/WebGUI/User.pm b/lib/WebGUI/User.pm index d97878562..fdf2ef198 100644 --- a/lib/WebGUI/User.pm +++ b/lib/WebGUI/User.pm @@ -298,13 +298,13 @@ sub isInGroup { } if(isIn($connectDn,@peeps)) { $isInGroup->{$uid}{$gid} = 1; - if ($group->{'dbCacheTimeout'} > 10) { + if ($group->{'groupCacheTimeout'} > 10) { $group->deleteUsers([$uid]); - $group->addUsers([$uid],$group->get("dbCacheTimeout")); + $group->addUsers([$uid],$group->get("groupCacheTimeout")); } } else { $isInGroup->{$uid}{$gid} = 0; - $group->deleteUsers([$uid]) if ($group->get("dbCacheTimeout") > 10); + $group->deleteUsers([$uid]) if ($group->get("groupCacheTimeout") > 10); } $ldapLink->unbind; $self->session->stow->set("isInGroup",$isInGroup); diff --git a/lib/WebGUI/Workflow/Activity/ExpireGroupings.pm b/lib/WebGUI/Workflow/Activity/ExpireGroupings.pm index 55869b2ab..9c5bd7e6f 100644 --- a/lib/WebGUI/Workflow/Activity/ExpireGroupings.pm +++ b/lib/WebGUI/Workflow/Activity/ExpireGroupings.pm @@ -86,9 +86,9 @@ sub execute { }); } } - my $sth = $self->session->db->read("select groupId,deleteOffset,dbCacheTimeout from groups"); + my $sth = $self->session->db->read("select groupId,deleteOffset,groupCacheTimeout from groups"); while (my $data = $sth->hashRef) { - if ($data->{dbCacheTimeout} > 0) { + if ($data->{groupCacheTimeout} > 0) { # there is no need to wait deleteOffset days for expired external group cache data $self->session->db->write("delete from groupings where groupId=? and expireDate < ?", [$data->{groupId}, time()]); } else { diff --git a/lib/WebGUI/i18n/English/WebGUI.pm b/lib/WebGUI/i18n/English/WebGUI.pm index c12c5dfaf..54e077b93 100644 --- a/lib/WebGUI/i18n/English/WebGUI.pm +++ b/lib/WebGUI/i18n/English/WebGUI.pm @@ -1525,7 +1525,7 @@ As with any delete operation, you are prompted to be sure you wish to proceed wi }, '1004' => { - message => q|Cache external groups for how long?|, + message => q|Cache groups for how long?|, lastUpdated => 1057208065 },