|
Lines 173-188
Generates the DBIC join attribute based on extended_attributes query entries, an
Link Here
|
| 173 |
|
173 |
|
| 174 |
my $attributes = $args->{attributes}; |
174 |
my $attributes = $args->{attributes}; |
| 175 |
my $filtered_params = $args->{filtered_params}; |
175 |
my $filtered_params = $args->{filtered_params}; |
|
|
176 |
my $result_set = $args->{result_set}; |
| 176 |
|
177 |
|
| 177 |
if ( reftype( $attributes->{prefetch} ) |
178 |
if ( reftype( $attributes->{prefetch} ) |
| 178 |
&& reftype( $attributes->{prefetch} ) eq 'ARRAY' |
179 |
&& reftype( $attributes->{prefetch} ) eq 'ARRAY' |
| 179 |
&& grep ( /extended_attributes/, @{ $attributes->{prefetch} } ) ) |
180 |
&& grep ( /extended_attributes/, @{ $attributes->{prefetch} } ) ) |
| 180 |
{ |
181 |
{ |
| 181 |
my $ea_entries = $self->_get_extended_attributes_entries( $filtered_params, 0 ); |
182 |
my @array = $self->_get_extended_attributes_entries( $filtered_params, 0 ); |
| 182 |
while ( $ea_entries > 0 ) { |
183 |
|
| 183 |
push( @{ $attributes->{join} }, 'extended_attributes' ); |
184 |
# Calling our private method to build the extended attributes relations |
| 184 |
$ea_entries--; |
185 |
my @joins = $result_set->_build_extended_attributes_relations(\@array); |
| 185 |
} |
186 |
push @{ $attributes->{join} }, @joins; |
|
|
187 |
|
| 186 |
} |
188 |
} |
| 187 |
} |
189 |
} |
| 188 |
); |
190 |
); |
|
Lines 557-592
Example: Returns 2 if given a $filtered_params containing the below:
Link Here
|
| 557 |
=cut |
559 |
=cut |
| 558 |
|
560 |
|
| 559 |
sub _get_extended_attributes_entries { |
561 |
sub _get_extended_attributes_entries { |
| 560 |
my ( $self, $params, $extended_attributes_entries ) = @_; |
562 |
my ( $self, $params, $extended_attributes_entries, @array ) = @_; |
| 561 |
|
563 |
|
| 562 |
if ( reftype($params) && reftype($params) eq 'HASH' ) { |
564 |
if ( reftype($params) && reftype($params) eq 'HASH' ) { |
| 563 |
|
565 |
|
| 564 |
# rewrite additional_field_values table query params |
566 |
# rewrite additional_field_values table query params |
| 565 |
$extended_attributes_entries = |
567 |
@array = |
| 566 |
_rewrite_related_metadata_query( $params, $extended_attributes_entries, 'field_id', 'value' ) |
568 |
_rewrite_related_metadata_query( $params, 'field_id', 'value', @array ) |
| 567 |
if $params->{'extended_attributes.field_id'}; |
569 |
if $params->{'extended_attributes.field_id'}; |
| 568 |
|
570 |
|
| 569 |
# rewrite borrower_attributes table query params |
571 |
# rewrite borrower_attributes table query params |
| 570 |
$extended_attributes_entries = |
572 |
@array = |
| 571 |
_rewrite_related_metadata_query( $params, $extended_attributes_entries, 'code', 'attribute' ) |
573 |
_rewrite_related_metadata_query( $params, 'code', 'attribute', @array ) |
| 572 |
if $params->{'extended_attributes.code'}; |
574 |
if $params->{'extended_attributes.code'}; |
| 573 |
|
575 |
|
| 574 |
# rewrite illrequestattributes table query params |
576 |
# rewrite illrequestattributes table query params |
| 575 |
$extended_attributes_entries = |
577 |
@array = |
| 576 |
_rewrite_related_metadata_query( $params, $extended_attributes_entries, 'type', 'value' ) |
578 |
_rewrite_related_metadata_query( $params, 'type', 'value', @array ) |
| 577 |
if $params->{'extended_attributes.type'}; |
579 |
if $params->{'extended_attributes.type'}; |
| 578 |
|
580 |
|
| 579 |
foreach my $key ( keys %{$params} ) { |
581 |
foreach my $key ( keys %{$params} ) { |
| 580 |
return $self->_get_extended_attributes_entries( $params->{$key}, $extended_attributes_entries ); |
582 |
return $self->_get_extended_attributes_entries( $params->{$key}, $extended_attributes_entries, @array ); |
| 581 |
} |
583 |
} |
| 582 |
} elsif ( reftype($params) && reftype($params) eq 'ARRAY' ) { |
584 |
} elsif ( reftype($params) && reftype($params) eq 'ARRAY' ) { |
| 583 |
foreach my $ea_instance (@$params) { |
585 |
foreach my $ea_instance (@$params) { |
| 584 |
$extended_attributes_entries = |
586 |
@array = $self->_get_extended_attributes_entries( $ea_instance, $extended_attributes_entries, @array ); |
| 585 |
+$self->_get_extended_attributes_entries( $ea_instance, $extended_attributes_entries ); |
|
|
| 586 |
} |
587 |
} |
| 587 |
return $extended_attributes_entries; |
588 |
return @array; |
| 588 |
} else { |
589 |
} else { |
| 589 |
return $extended_attributes_entries; |
590 |
return @array; |
| 590 |
} |
591 |
} |
| 591 |
} |
592 |
} |
| 592 |
|
593 |
|
|
Lines 625-644
It'll be rewritten as:
Link Here
|
| 625 |
=cut |
626 |
=cut |
| 626 |
|
627 |
|
| 627 |
sub _rewrite_related_metadata_query { |
628 |
sub _rewrite_related_metadata_query { |
| 628 |
my ( $params, $extended_attributes_entries, $key, $value ) = @_; |
629 |
my ( $params, $key, $value, @array ) = @_; |
| 629 |
|
630 |
|
| 630 |
$extended_attributes_entries++; |
631 |
my $old_key_value = delete $params->{ 'extended_attributes.' . $key }; |
| 631 |
if ( $extended_attributes_entries > 1 ) { |
632 |
my $new_key_value = "extended_attributes_$old_key_value" . "." . $key; |
| 632 |
my $old_key_value = delete $params->{ 'extended_attributes.' . $key }; |
633 |
$params->{$new_key_value} = $old_key_value; |
| 633 |
my $new_key_value = "extended_attributes_$extended_attributes_entries" . "." . $key; |
|
|
| 634 |
$params->{$new_key_value} = $old_key_value; |
| 635 |
|
634 |
|
| 636 |
my $old_value_value = delete $params->{ 'extended_attributes.' . $value }; |
635 |
my $old_value_value = delete $params->{ 'extended_attributes.' . $value }; |
| 637 |
my $new_value_value = "extended_attributes_$extended_attributes_entries" . "." . $value; |
636 |
my $new_value_value = "extended_attributes_$old_key_value" . "." . $value; |
| 638 |
$params->{$new_value_value} = $old_value_value; |
637 |
$params->{$new_value_value} = $old_value_value; |
| 639 |
} |
638 |
|
|
|
639 |
push @array, $old_key_value; |
| 640 |
|
640 |
|
| 641 |
return $extended_attributes_entries; |
641 |
return @array; |
| 642 |
} |
642 |
} |
| 643 |
|
643 |
|
| 644 |
1; |
644 |
1; |
| 645 |
- |
|
|