aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Roles/Extra.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2019-10-28 11:27:26 +0000
committerMatthew Somerville <matthew@mysociety.org>2019-10-28 11:27:26 +0000
commit64687c93beffc07d0fcb10459e5a898544bf8aae (patch)
tree7f253610cadbb176e20b6a3dea9528528df8a02a /perllib/FixMyStreet/Roles/Extra.pm
parent780724c9c47120bad925f1cbed1b68b323497c37 (diff)
parent6ebae2b9f5c4b88474ad0556d8954681cc187744 (diff)
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'perllib/FixMyStreet/Roles/Extra.pm')
-rw-r--r--perllib/FixMyStreet/Roles/Extra.pm20
1 files changed, 20 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Roles/Extra.pm b/perllib/FixMyStreet/Roles/Extra.pm
index 5132c3e58..530064b99 100644
--- a/perllib/FixMyStreet/Roles/Extra.pm
+++ b/perllib/FixMyStreet/Roles/Extra.pm
@@ -243,4 +243,24 @@ sub get_extra_field_value {
return $field->{value};
}
+=head2 get_extra_field
+
+ my $field = $problem->get_extra_field(name => 'field_name');
+
+Return a field stored in `_fields` in extra, or undefined if it's not present.
+Can use either `name` or `code` to identify the field.
+
+=cut
+
+sub get_extra_field {
+ my ($self, %opts) = @_;
+
+ my @fields = @{ $self->get_extra_fields() };
+
+ my $comparison = $opts{code} ? 'code' : 'name';
+
+ my ($field) = grep { $_->{$comparison} && $_->{$comparison} eq $opts{$comparison} } @fields;
+ return $field;
+}
+
1;