aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/DB
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/DB')
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/AlertType.pm9
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Comment.pm17
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Nearby.pm6
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Problem.pm15
4 files changed, 30 insertions, 17 deletions
diff --git a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
index d2264139a..dde30b59c 100644
--- a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
@@ -70,8 +70,6 @@ sub email_alerts ($) {
# this is for the new_updates alerts
next if $row->{non_public} and $row->{user_id} != $row->{alert_user_id};
- my $hashref_restriction = $cobrand->site_restriction( $row->{cobrand_data} );
-
FixMyStreet::App->model('DB::AlertSent')->create( {
alert_id => $row->{alert_id},
parameter => $row->{item_id},
@@ -90,8 +88,9 @@ sub email_alerts ($) {
$data{state_message} = _("This report is currently marked as open.");
}
+ my $hashref_restriction = $cobrand->body_restriction;
my $url = $cobrand->base_url( $row->{alert_cobrand_data} );
- if ( $hashref_restriction && $hashref_restriction->{bodies_str} && $row->{bodies_str} ne $hashref_restriction->{bodies_str} ) {
+ if ( $hashref_restriction && $row->{bodies_str} ne $hashref_restriction ) {
$url = mySociety::Config::get('BASE_URL');
}
# this is currently only for new_updates
@@ -172,7 +171,7 @@ sub email_alerts ($) {
my $longitude = $alert->parameter;
my $latitude = $alert->parameter2;
- my $hashref_restriction = $cobrand->site_restriction( $alert->cobrand_data );
+ my $hashref_restriction = $cobrand->body_restriction;
my $d = mySociety::Gaze::get_radius_containing_population($latitude, $longitude, 200000);
# Convert integer to GB locale string (with a ".")
$d = mySociety::Locale::in_gb_locale {
@@ -197,7 +196,7 @@ sub email_alerts ($) {
parameter => $row->{id},
} );
my $url = $cobrand->base_url( $alert->cobrand_data );
- if ( $hashref_restriction && $hashref_restriction->{bodies_str} && $row->{bodies_str} ne $hashref_restriction->{bodies_str} ) {
+ if ( $hashref_restriction && $row->{bodies_str} ne $hashref_restriction ) {
$url = mySociety::Config::get('BASE_URL');
}
$data{data} .= $url . "/report/" . $row->{id} . " - $row->{title}\n\n";
diff --git a/perllib/FixMyStreet/DB/ResultSet/Comment.pm b/perllib/FixMyStreet/DB/ResultSet/Comment.pm
index abdc46868..270501efc 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Comment.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Comment.pm
@@ -4,19 +4,24 @@ use base 'DBIx::Class::ResultSet';
use strict;
use warnings;
+sub to_body {
+ my ($rs, $body_restriction) = @_;
+ return FixMyStreet::DB::ResultSet::Problem::to_body($rs, $body_restriction);
+}
+
+
sub timeline {
- my ( $rs, $restriction ) = @_;
+ my ( $rs, $body_restriction ) = @_;
my $prefetch =
FixMyStreet::App->model('DB')->schema->storage->sql_maker->quote_char ?
[ qw/user/ ] :
[];
- return $rs->search(
+ return $rs->to_body($body_restriction)->search(
{
state => 'confirmed',
created => { '>=', \"current_timestamp-'7 days'::interval" },
- %{ $restriction },
},
{
prefetch => $prefetch,
@@ -25,10 +30,10 @@ sub timeline {
}
sub summary_count {
- my ( $rs, $restriction ) = @_;
+ my ( $rs, $body_restriction ) = @_;
- return $rs->search(
- $restriction,
+ return $rs->to_body($body_restriction)->search(
+ undef,
{
group_by => ['me.state'],
select => [ 'me.state', { count => 'me.id' } ],
diff --git a/perllib/FixMyStreet/DB/ResultSet/Nearby.pm b/perllib/FixMyStreet/DB/ResultSet/Nearby.pm
index 670673ab3..a6b00ef7b 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Nearby.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Nearby.pm
@@ -19,12 +19,10 @@ sub nearby {
if $interval;
$params->{id} = { -not_in => $ids }
if $ids;
- $params = {
- %{ $c->cobrand->problems_clause },
- %$params
- } if $c->cobrand->problems_clause;
$params->{category} = $category if $category;
+ $rs = FixMyStreet::DB::ResultSet::Problem::to_body($rs, $c->cobrand->body_restriction);
+
my $attrs = {
prefetch => 'problem',
bind => [ $mid_lat, $mid_lon, $dist ],
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
index 98bd7c68f..8f0d23080 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
@@ -20,6 +20,18 @@ sub set_restriction {
$site_key = $key;
}
+sub to_body {
+ my ($rs, $bodies) = @_;
+ return $rs unless $bodies;
+ unless (ref $bodies eq 'ARRAY') {
+ $bodies = [ map { ref $_ ? $_->id : $_ } $bodies ];
+ }
+ $rs = $rs->search(
+ \[ "regexp_split_to_array(bodies_str, ',') && ?", [ {} => $bodies ] ]
+ );
+ return $rs;
+}
+
# Front page statistics
sub recent_fixed {
@@ -320,9 +332,8 @@ sub send_reports {
$cobrand->process_additional_metadata_for_email($row, \%h);
}
- my @bodies = split /,/, $row->bodies_str;
my $bodies = FixMyStreet::App->model("DB::Body")->search(
- { id => \@bodies },
+ { id => $row->bodies_str_ids },
{ order_by => 'name' },
);