aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/Cobrand/Zurich.pm25
1 files changed, 13 insertions, 12 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Zurich.pm b/perllib/FixMyStreet/Cobrand/Zurich.pm
index b2d68014a..81ace5a05 100644
--- a/perllib/FixMyStreet/Cobrand/Zurich.pm
+++ b/perllib/FixMyStreet/Cobrand/Zurich.pm
@@ -337,21 +337,16 @@ sub _admin_send_email {
sub admin_fetch_all_bodies {
my ( $self, @bodies ) = @_;
- my %sorted;
- foreach (@bodies) {
- my $p = $_->parent ? $_->parent->id : 0;
- push @{$sorted{$p}}, $_;
- }
-
sub tree_sort {
- my ( $level, $array, $out ) = @_;
+ my ( $level, $id, $sorted, $out ) = @_;
my @sorted;
+ my $array = $sorted->{$id};
if ( $level == 0 ) {
@sorted = sort {
# Want Zurich itself at the top.
- return -1 if $sorted{$a->id};
- return 1 if $sorted{$b->id};
+ return -1 if $sorted->{$a->id};
+ return 1 if $sorted->{$b->id};
# Otherwise, by name
strcoll($a->name, $b->name)
} @$array;
@@ -361,14 +356,20 @@ sub admin_fetch_all_bodies {
foreach ( @sorted ) {
$_->api_key( $level ); # Misuse
push @$out, $_;
- if ($sorted{$_->id}) {
- tree_sort( $level+1, $sorted{$_->id}, $out );
+ if ($sorted->{$_->id}) {
+ tree_sort( $level+1, $_->id, $sorted, $out );
}
}
}
+ my %sorted;
+ foreach (@bodies) {
+ my $p = $_->parent ? $_->parent->id : 0;
+ push @{$sorted{$p}}, $_;
+ }
+
my @out;
- tree_sort( 0, $sorted{0}, \@out );
+ tree_sort( 0, 0, \%sorted, \@out );
return @out;
}