diff options
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Zurich.pm | 25 |
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; } |