Ignore:
Timestamp:
03/03/09 19:51:40 (15 years ago)
Author:
nanardon
Message:
  • add create object to UNIX base
Location:
LATMOS-Accounts/lib/LATMOS/Accounts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm

    r7 r16  
    9191} 
    9292 
     93=head2 create_object($type, $id, %data) 
     94 
     95Create and return an object of type $type with unique id 
     96$id having %data. 
     97 
     98This method should be provided by the data base handler. 
     99 
     100=cut 
     101 
     102sub create_object { 
     103    my ($self, $otype, $id, %data) = @_; 
     104    return; 
     105} 
     106 
     107=head2 create_c_object($type, $id, %data) 
     108 
     109Create and return an object of type $type with unique id 
     110$id having %data using canonical fields 
     111 
     112=cut 
     113 
     114sub create_c_object { 
     115    my ($self, $otype, $id, %cdata) = @_; 
     116 
     117    my %data; 
     118    foreach my $cfield (keys %cdata) { 
     119        my $field = $self->base->get_field_name($self->type, $cfield) or next; 
     120        $data{$field} = $cdata{$cfield}; 
     121    } 
     122    keys %data or return 1; # TODO: return an error ? 
     123    $self->create_object($otype, $id, %data); 
     124} 
     125 
    93126=head2 load 
    94127 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Unix.pm

    r13 r16  
    8383} 
    8484 
    85  
    8685my @password_fields = qw(account password uid gid gecos home shell); 
    8786my @shadow_fields =   qw(account spassword last_changed before_ch after_ch exp_warn exp_disable disable res); 
     
    196195            $self->{users}{$_}{home}, 
    197196            $self->{users}{$_}{shell}, 
    198         ]} keys %{$self->{users}} 
     197        ]} sort { $self->{users}{$a}{uid} <=> $self->{users}{$b}{uid} } keys %{$self->{users}} 
    199198    ) or return; 
    200199 
     
    206205            $self->{groups}{$_}{gid}, 
    207206            join(',', keys %{$self->{groups}{$_}{users} || {}}),  
    208         ]} keys %{$self->{groups}} 
     207        ]} sort {  $self->{groups}{$a}{gid} <=> $self->{groups}{$b}{gid} } keys %{$self->{groups}} 
    209208    ) or return; 
    210209 
     
    223222            $self->{users}{$_}{disable}, 
    224223            $self->{users}{$_}{res}, 
    225         ]} keys %{$self->{users}} 
     224        ]} sort { $self->{users}{$a}{uid} <=> $self->{users}{$b}{uid} } keys %{$self->{users}} 
    226225    ) or return; 
    227226 
     
    234233            $self->{groups}{$_}{unknown}, 
    235234            join(',', keys %{$self->{groups}{$_}{susers} || {}}),  
    236         ]} keys %{$self->{groups}} 
     235        ]} sort {  $self->{groups}{$a}{gid} <=> $self->{groups}{$b}{gid} } keys %{$self->{groups}} 
    237236    ) or return; 
    238237 
     
    240239 
    241240    1 
     241} 
     242 
     243sub create_object { 
     244    my ($self, $otype, $id, %data) = @_; 
     245 
     246    my $internal_obj = { 
     247        user => 'users', 
     248        group => 'groups', 
     249    }->{$otype}; 
     250 
     251    if ($self->{$internal_obj}{$id}) { return }; 
     252    $self->{$internal_obj}{$id} = { account => $id }; 
     253    my $obj = $self->get_object($otype, $id) or return; 
     254    $obj->set_fields(%data); 
     255    $obj 
    242256} 
    243257 
Note: See TracChangeset for help on using the changeset viewer.