aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Admin.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm67
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;