diff options
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 67 |
1 files changed, 20 insertions, 47 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index b7f051c11..50b4360eb 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -723,37 +723,17 @@ sub report_edit : Path('report_edit') : Args(1) { elsif ( $c->get_param('submit') ) { $c->forward('/auth/check_csrf_token'); - my $done = 0; - my $edited = 0; - - my $new_state = $c->get_param('state'); my $old_state = $problem->state; - my $flagged = $c->get_param('flagged') ? 1 : 0; - my $non_public = $c->get_param('non_public') ? 1 : 0; - - # do this here so before we update the values in problem - if ( $c->get_param('anonymous') ne $problem->anonymous - || $c->get_param('name') ne $problem->name - || $c->get_param('email') ne $problem->user->email - || $c->get_param('title') ne $problem->title - || $c->get_param('detail') ne $problem->detail - || ($c->get_param('body') && $c->get_param('body') ne $problem->bodies_str) - || $flagged != $problem->flagged - || $non_public != $problem->non_public ) - { - $edited = 1; + my %columns = ( + flagged => $c->get_param('flagged') ? 1 : 0, + non_public => $c->get_param('non_public') ? 1 : 0, + ); + $columns{bodies_str} = $c->get_param('body') if $c->get_param('body'); + foreach (qw/state anonymous title detail name external_id external_body external_team/) { + $columns{$_} = $c->get_param($_); } - - $problem->anonymous( $c->get_param('anonymous') ); - $problem->title( $c->get_param('title') ); - $problem->detail( $c->get_param('detail') ); - $problem->state( $new_state ); - $problem->name( $c->get_param('name') ); - $problem->bodies_str( $c->get_param('body') ) if $c->get_param('body'); - - $problem->flagged( $flagged ); - $problem->non_public( $non_public ); + $problem->set_inflated_columns(\%columns); if ( $c->get_param('email') ne $problem->user->email ) { my $user = $c->model('DB::User')->find_or_create( @@ -770,7 +750,7 @@ sub report_edit : Path('report_edit') : Args(1) { $self->remove_photo($c, $problem, $remove_photo_param); } - if ( $remove_photo_param || $new_state eq 'hidden' ) { + if ( $remove_photo_param || $problem->state eq 'hidden' ) { $problem->get_photoset->delete_cached; } @@ -778,27 +758,20 @@ sub report_edit : Path('report_edit') : Args(1) { $problem->confirmed( \'current_timestamp' ); } - if ($done) { - $problem->discard_changes; - } - else { - $problem->lastupdate( \'current_timestamp' ) if $edited || $new_state ne $old_state; - $problem->update; + $problem->lastupdate( \'current_timestamp' ); + $problem->update; - if ( $new_state ne $old_state ) { - $c->forward( 'log_edit', [ $id, 'problem', 'state_change' ] ); - } - if ($edited) { - $c->forward( 'log_edit', [ $id, 'problem', 'edit' ] ); - } + if ( $problem->state ne $old_state ) { + $c->forward( 'log_edit', [ $id, 'problem', 'state_change' ] ); + } + $c->forward( 'log_edit', [ $id, 'problem', 'edit' ] ); - $c->stash->{status_message} = - '<p><em>' . _('Updated!') . '</em></p>'; + $c->stash->{status_message} = + '<p><em>' . _('Updated!') . '</em></p>'; - # do this here otherwise lastupdate and confirmed times - # do not display correctly - $problem->discard_changes; - } + # do this here otherwise lastupdate and confirmed times + # do not display correctly + $problem->discard_changes; } return 1; |