diff --git a/smradius/modules/userdb/mod_userdb_sql.pm b/smradius/modules/userdb/mod_userdb_sql.pm index 21af1c13aa206039f0b05b1ec4f1c60d6aaac0a9..536d3d7091bc876c59359a04485e2b4a8441ed54 100644 --- a/smradius/modules/userdb/mod_userdb_sql.pm +++ b/smradius/modules/userdb/mod_userdb_sql.pm @@ -391,13 +391,14 @@ sub get # # @param server Server object # @param user UserDB hash we got from find() +# @param module Module that is variable pertains to # @param name Variable name # @param value Variable value # # @return RES_OK on success, RES_ERROR on error sub data_set { - my ($server, $user, $name, $value) = @_; + my ($server, $user, $module, $name, $value) = @_; # Build template @@ -440,11 +441,15 @@ sub data_set my %data; $data{'CachedUntil'} = $user->{'_Internal'}->{'Timestamp-Unix'} + $config->{'accounting_usage_cache_time'}; $data{'LastUpdated'} = $user->{'_Internal'}->{'Timestamp-Unix'}; + $data{'Module'} = $module; $data{'Name'} = $name; $data{'Value'} = $value; # Cache the result - cacheStoreComplexKeyPair('mod_userdb_sql(data_get)',$user->{'UserID'}."/".$template->{'query'}->{'Name'},\%data); + cacheStoreComplexKeyPair('mod_userdb_sql(data_get)', + sprintf('%s/%s/%s',$module,$user->{'_UserDB_Data'}->{'id'},$name), + \%data + ); } return RES_OK; @@ -456,6 +461,7 @@ sub data_set # # @param server Server object # @param user UserDB hash we got from find() +# @param module Module that is variable pertains to # @param name Variable name # # @return Users data hash @@ -464,7 +470,7 @@ sub data_set # @li Value Variable Value sub data_get { - my ($server, $user, $name) = @_; + my ($server, $user, $module, $name) = @_; # Build template @@ -473,19 +479,22 @@ sub data_get # Add in userdb data foreach my $item (keys %{$user->{'_UserDB_Data'}}) { - $template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item}; + $template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item}; } # If we using caching, check how old the result is if (defined($config->{'userdb_data_cache_time'})) { - my ($res,$val) = cacheGetComplexKeyPair('mod_userdb_sql(data_get)',$user->{'UserID'}."/".$template->{'query'}->{'Name'}); + my ($res,$val) = cacheGetComplexKeyPair('mod_userdb_sql(data_get)', + sprintf('%s/%s/%s',$module,$user->{'_UserDB_Data'}->{'id'},$name) + ); + if (defined($val) && $val->{'CachedUntil'} > $user->{'_Internal'}->{'Timestamp-Unix'}) { return $val; } } # Replace template entries - my @dbDoParams = templateReplace($config->{'user_data_get_query'},$template); + my @dbDoParams = templateReplace($config->{'users_data_get_query'},$template); # Query database my $sth = DBSelect(@dbDoParams); @@ -499,6 +508,7 @@ sub data_get my %data; $data{'LastUpdated'} = $row->{'LastUpdated'}; + $data{'Module'} = $module; $data{'Name'} = $row->{'Name'}; $data{'Value'} = $row->{'Value'}; @@ -507,7 +517,10 @@ sub data_get $data{'CachedUntil'} = $user->{'_Internal'}->{'Timestamp-Unix'} + $config->{'userdb_data_cache_time'}; # Cache the result - cacheStoreComplexKeyPair('mod_userdb_sql(data_get)',$user->{'UserID'}."/".$template->{'query'}->{'Name'},\%data); + cacheStoreComplexKeyPair('mod_userdb_sql(data_get)', + sprintf('%s/%s/%s',$module,$user->{'_UserDB_Data'}->{'id'},$name), + \%data + ); } return \%data;