1package OurNet::BBS::RAM::UserGroup; 2 3use strict; 4no warnings 'deprecated'; 5use fields qw/dbh _ego _hash _array/; 6 7use OurNet::BBS::Base; 8 9sub refresh_meta { 10 my ($self, $key, $flag) = @_; 11 my $name; 12 13 if (defined($key) and $flag == ARRAY) { 14 # XXX: ARRAY FETCH 15 return if $self->{_array}[$key]; 16 } 17 elsif ($key and $flag == HASH) { 18 # XXX: KEY FETCH 19 $name = $key; 20 return if $self->{_hash}{$name}; 21 $key = 0; 22 } 23 else { 24 # XXX: GLOBAL FETCH 25 } 26 27 my $obj = $self->module('User')->new({ 28 dbh => $self->{dbh}, 29 id => $name, 30 recno => $key, 31 }); 32 33 $key ||= $obj->{userno} ||= 0; 34 35 $self->{_hash}{$name} = $self->{_array}[$key] = $obj; 36 37 return 1; 38} 39 40sub STORE { 41 my ($self, $key, $value) = @_; 42 43 %{$self->module('User', $value)->new({ 44 dbh => $self->{dbh}, 45 id => $key 46 })} = %{$value}; 47 48 $self->refresh($key); 49} 50 51sub EXISTS { 52 my ($self, $key) = @_; 53 54 # XXX: USER EXISTS 55 return exists ($self->ego->{_hash}{$key}); 56} 57 581; 59