aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Roles/Moderation.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/Roles/Moderation.pm')
-rw-r--r--perllib/FixMyStreet/Roles/Moderation.pm41
1 files changed, 41 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Roles/Moderation.pm b/perllib/FixMyStreet/Roles/Moderation.pm
new file mode 100644
index 000000000..f43b65208
--- /dev/null
+++ b/perllib/FixMyStreet/Roles/Moderation.pm
@@ -0,0 +1,41 @@
+package FixMyStreet::Roles::Moderation;
+use Moo::Role;
+
+=head2 latest_moderation_log_entry
+
+Return most recent AdminLog object concerning moderation
+
+=cut
+
+sub latest_moderation_log_entry {
+ my $self = shift;
+
+ my $latest = $self->moderation_original_datas->search(
+ $self->moderation_filter,
+ { order_by => { -desc => 'id' } })->first;
+ return unless $latest;
+
+ my $rs = $self->result_source->schema->resultset("AdminLog");
+ my $log = $rs->search({
+ object_id => $latest->id,
+ object_type => 'moderation',
+ })->first;
+ return $log if $log;
+
+ return $self->admin_log_entries->search({ action => 'moderation' }, { order_by => { -desc => 'id' } })->first;
+}
+
+=head2 moderation_history
+
+Returns all moderation history, most recent first.
+
+=cut
+
+sub moderation_history {
+ my $self = shift;
+ return $self->moderation_original_datas->search(
+ $self->moderation_filter,
+ { order_by => { -desc => 'id' } })->all;
+}
+
+1;