aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/DB/Result/Comment.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-01-24 21:12:56 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-01-31 11:18:54 +0000
commit604873e402188986f9662aad5ab6d3fec989274f (patch)
tree4ad5ba569b5e0e97fa40fdc34d70ff755ffa90fb /perllib/FixMyStreet/DB/Result/Comment.pm
parent7c49ea4a87bb8b98f1c14e28dc4859c05205f9b7 (diff)
Admin ability to hide a user's reports/updates.
Diffstat (limited to 'perllib/FixMyStreet/DB/Result/Comment.pm')
-rw-r--r--perllib/FixMyStreet/DB/Result/Comment.pm25
1 files changed, 25 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/DB/Result/Comment.pm b/perllib/FixMyStreet/DB/Result/Comment.pm
index 60fd31510..ce4fc216a 100644
--- a/perllib/FixMyStreet/DB/Result/Comment.pm
+++ b/perllib/FixMyStreet/DB/Result/Comment.pm
@@ -293,4 +293,29 @@ sub problem_state_display {
return $update_state;
}
+sub is_latest {
+ my $self = shift;
+ my $latest_update = $self->result_source->resultset->search(
+ { problem_id => $self->problem_id, state => 'confirmed' },
+ { order_by => [ { -desc => 'confirmed' }, { -desc => 'id' } ] }
+ )->first;
+ return $latest_update->id == $self->id;
+}
+
+sub hide {
+ my $self = shift;
+
+ my $ret = {};
+
+ # If we're hiding an update, see if it marked as fixed and unfix if so
+ if ($self->mark_fixed && $self->is_latest && $self->problem->state =~ /^fixed/) {
+ $self->problem->state('confirmed');
+ $self->problem->update;
+ $ret->{reopened} = 1;
+ }
+ $self->get_photoset->delete_cached;
+ $self->update({ state => 'hidden' });
+ return $ret;
+}
+
1;