aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/Default.pm12
-rw-r--r--perllib/Open311.pm1
-rw-r--r--perllib/Open311/PopulateServiceList.pm16
4 files changed, 5 insertions, 26 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 9a18d0e32..554fbc3b7 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -771,8 +771,6 @@ sub setup_categories_and_bodies : Private {
my %category_groups = ();
for my $category (@category_options) {
my $group = $category->{group} // $category->get_extra_metadata('group') // [''];
- # multiple groups from open311 can contain " which upsets the html so strip them
- $group =~ s/^"|"$//g;
# this could be an array ref or a string
my @groups = ref $group eq 'ARRAY' ? @$group : ($group);
push( @{$category_groups{$_}}, $category ) for @groups;
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm
index 829c85f5d..d2929dcc0 100644
--- a/perllib/FixMyStreet/Cobrand/Default.pm
+++ b/perllib/FixMyStreet/Cobrand/Default.pm
@@ -1112,18 +1112,6 @@ sub enable_category_groups {
return $self->feature('category_groups');
}
-=item enable_multiple_category_groups
-
-Whether a category can be included in multiple groups. Required enable_category_groups
-to alse be true.
-
-=cut
-
-sub enable_multiple_category_groups {
- my $self = shift;
- return $self->enable_category_groups && $self->feature('multiple_category_groups');
-}
-
sub default_problem_state { 'unconfirmed' }
sub state_groups_admin {
diff --git a/perllib/Open311.pm b/perllib/Open311.pm
index d1659bea1..3573409e2 100644
--- a/perllib/Open311.pm
+++ b/perllib/Open311.pm
@@ -614,6 +614,7 @@ sub _get_xml_object {
service_requests => 'request',
errors => 'error',
service_request_updates => 'request_update',
+ groups => 'group',
};
my $simple = XML::Simple->new(
ForceArray => [ values %$group_tags ],
diff --git a/perllib/Open311/PopulateServiceList.pm b/perllib/Open311/PopulateServiceList.pm
index f6e8c8668..f1bfc0f21 100644
--- a/perllib/Open311/PopulateServiceList.pm
+++ b/perllib/Open311/PopulateServiceList.pm
@@ -2,7 +2,6 @@ package Open311::PopulateServiceList;
use Moo;
use Open311;
-use Text::CSV;
has bodies => ( is => 'ro' );
has found_contacts => ( is => 'rw', default => sub { [] } );
@@ -282,23 +281,16 @@ sub _set_contact_group {
my ($self, $contact) = @_;
my $groups_enabled = $self->_current_body_cobrand && $self->_current_body_cobrand->enable_category_groups;
- my $multi_groups_enabled = $self->_current_body_cobrand && $self->_current_body_cobrand->enable_multiple_category_groups;
my $old_group = $contact->get_extra_metadata('group') || '';
my $new_group = $groups_enabled ? $self->_current_service->{group} || '' : '';
-
- if ($multi_groups_enabled && $new_group =~ /,/) {
- my $csv = Text::CSV->new;
- if ( $csv->parse($new_group) ) {
- $new_group = [ $csv->fields ];
- } else {
- warn "error parsing groups for " . $self->_current_body_cobrand->moniker . "contact " . $contact->category . ": $new_group\n";
- $new_group = [ $new_group ];
- }
+ my $new_group_multi = $groups_enabled ? $self->_current_service->{groups} || [] : [];
+ if (@$new_group_multi) {
+ $new_group = $new_group_multi;
}
if ($self->_groups_different($old_group, $new_group)) {
if ($new_group) {
- $contact->set_extra_metadata(group => $new_group);
+ $contact->set_extra_metadata(group => @$new_group == 1 ? $new_group->[0] : $new_group);
$contact->update({
editor => $0,
whenedited => \'current_timestamp',