Ignore:
Timestamp:
05/17/09 17:18:52 (15 years ago)
Author:
nanardon
Message:
  • add a generic search function
Location:
LATMOS-Accounts/lib/LATMOS/Accounts
Files:
3 edited

Legend:

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

    r105 r122  
    304304} 
    305305 
     306=head2 search_objects($otype, %filter) 
     307 
     308Search object according %filter. %filter is a list 
     309of field/value which should match. 
     310 
     311A default function is provided but each db driver can provide 
     312an optimize version. 
     313 
     314=cut 
     315 
     316sub search_objects { 
     317    my ($self, $otype, %filter) = @_; 
     318    my $pclass = $self->_load_obj_class($otype) or return; 
     319    $pclass->search($self, %filter); 
     320} 
     321 
    3063221; 
    307323 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Objects.pm

    r81 r122  
    245245} 
    246246 
     247sub search { 
     248    my ($class, $base, %filter) = @_; 
     249    my @results; 
     250    foreach my $id ($base->list_objects($class->type)) { 
     251        my $obj = $base->get_object($class->type, $id); 
     252        my $match = 1; 
     253        foreach my $field (keys %filter) { 
     254            my $value = $filter{$field}; 
     255            $base->get_field_name($class->type, $field, 'r') or next; 
     256            my $fval = $obj->get_c_field($field) || ''; 
     257            if ($fval !~ m/\Q$value\E/i) { 
     258                $match = 0; 
     259                last; 
     260            } 
     261        } 
     262        push(@results, $id) if($match); 
     263    } 
     264    @results; 
     265} 
     266 
    2472671; 
    248268 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/objects.pm

    r85 r122  
    124124sub _get_field_name { 
    125125    my ($class, $c_field, $base, $for) = @_; 
     126    $c_field or return; 
    126127    $for ||= 'rw'; 
    127128    my $inline = $class->_inline_fields($for) || {}; 
Note: See TracChangeset for help on using the changeset viewer.