diff options
Diffstat (limited to 'perllib/FixMyStreet/Roles/PhotoSet.pm')
-rw-r--r-- | perllib/FixMyStreet/Roles/PhotoSet.pm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Roles/PhotoSet.pm b/perllib/FixMyStreet/Roles/PhotoSet.pm index 9607b5049..2a6863cff 100644 --- a/perllib/FixMyStreet/Roles/PhotoSet.pm +++ b/perllib/FixMyStreet/Roles/PhotoSet.pm @@ -32,4 +32,38 @@ sub get_first_image_fp { return $self->get_photoset->get_image_data( num => 0, size => 'fp' ); } +sub photos { + my $self = shift; + my $photoset = $self->get_photoset; + my $i = 0; + my $id = $self->id; + my $typ = $self->result_source->name eq 'comment' ? 'c/' : ''; + + my @photos = map { + my $cachebust = substr($_, 0, 8); + # Some Varnish configurations (e.g. on mySociety infra) strip cookies from + # images, which means image requests will be redirected to the login page + # if LOGIN_REQUIRED is set. To stop this happening, Varnish should be + # configured to not strip cookies if the cookie_passthrough param is + # present, which this line ensures will be if LOGIN_REQUIRED is set. + my $extra = ''; + if (FixMyStreet->config('LOGIN_REQUIRED')) { + $cachebust .= '&cookie_passthrough=1'; + $extra = '?cookie_passthrough=1'; + } + my ($hash, $format) = split /\./, $_; + { + id => $hash, + url_temp => "/photo/temp.$hash.$format$extra", + url_temp_full => "/photo/fulltemp.$hash.$format$extra", + url => "/photo/$typ$id.$i.$format?$cachebust", + url_full => "/photo/$typ$id.$i.full.$format?$cachebust", + url_tn => "/photo/$typ$id.$i.tn.$format?$cachebust", + url_fp => "/photo/$typ$id.$i.fp.$format?$cachebust", + idx => $i++, + } + } $photoset->all_ids; + return \@photos; +} + 1; |