Ignore:
Timestamp:
06/24/16 12:20:47 (8 years ago)
Author:
nanardon
Message:

Allow recursive masse data fetching

File:
1 edited

Legend:

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

    r1790 r1791  
    9494 
    9595    my $op = $self->_get_attributes('aggregateFunction'); 
    96     if (my $attr = $self->base->attribute($otype, $attribute)) { 
    97         if (my $obj = $attr->reference) { 
    98             if (my @reffilter = $self->_get_attributes('refFilter')) { 
    99                 $reffiltered = {}; 
    100                 foreach ($self->base->search_objects($obj, @reffilter)) { 
    101                     $reffiltered->{$_} = 1; 
    102                 } 
    103             } 
    104         } 
    105         if ($self->_get_attributes('refall') && $attr->has_values_list && !$op) { 
    106             foreach ($attr->can_values) { 
     96 
     97    my ($refOtype, $refAttr) = ($otype, undef); 
     98 
     99    foreach (split(/\./, $attribute)) { 
     100        if (my $attr = $self->base->attribute($refOtype, $_)) { 
     101            if (my $obj = $attr->reference) { 
     102                ($refOtype, $refAttr) = ($obj, $attr); 
     103            } else { 
     104                ($refOtype, $refAttr) = (undef, undef); 
     105            } 
     106        } 
     107    } 
     108 
     109    if ($refAttr && $refOtype) { 
     110        if (my @reffilter = $self->_get_attributes('refFilter')) { 
     111            $reffiltered = {}; 
     112            foreach ($self->base->search_objects($refOtype, @reffilter)) { 
     113                $reffiltered->{$_} = 1; 
     114            } 
     115        } 
     116        if ($self->_get_attributes('refall') && $refAttr->has_values_list && !$op) { 
     117            foreach ($refAttr->can_values) { 
    107118                if ($reffiltered && !$reffiltered->{$_}) { 
    108119                    next; 
     
    136147                next; 
    137148            } 
    138             $_ ||= '(none)'; 
     149            defined($_) && $_ ne '' or $_ = '(none)'; 
    139150            if ($op) { 
    140151                push(@{$aggdata{$id}}, $_); 
Note: See TracChangeset for help on using the changeset viewer.