aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-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;