#!/usr/bin/perl -w # # CrossSell.pm: # Adverts from FixMyStreet to another site. # # Unlike the PHP crosssell script, returns strings rather than prints them; # and currently displays the same advert if e.g. there's a connection problem. # # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: matthew@mysociety.org. WWW: http://www.mysociety.org # # $Id: CrossSell.pm,v 1.10 2008-02-07 17:53:52 matthew Exp $ # Config parameters site needs set to call these functions: # OPTION_AUTH_SHARED_SECRET # OPTION_HEARFROMYOURMP_BASE_URL package CrossSell; use strict; use LWP::Simple qw($ua get); $ua->timeout(5); use URI::Escape; use mySociety::AuthToken; use mySociety::Web qw(ent); sub display_random_hfymp_advert { my ($email, $name, $text) = @_; $name ||= ''; my $auth_signature = mySociety::AuthToken::sign_with_shared_secret($email, mySociety::Config::get('AUTH_SHARED_SECRET')); # See if already signed up my $url = mySociety::Config::get('HEARFROMYOURMP_BASE_URL'); my $already_signed = get($url . '/authed?email=' . uri_escape($email) . "&sign=" . uri_escape($auth_signature)); # Different from PHP version; display this advert if e.g. connection problem return '' if $already_signed && $already_signed eq 'already signed'; $email = ent($email); $name = ent($name); $auth_signature = ent($auth_signature); $text =~ s#\[form\]#
EOF return ($out, "cheltenhamhfyc$rand"); } # Choose appropriate advert and display it. # $this_site is to stop a site advertising itself. sub display_advert ($$;$%) { my ($q, $email, $name, %data) = @_; if (defined $data{council} && $data{council} eq '2326') { my ($out, $ad) = display_hfyc_cheltenham_advert($email, $name); if ($out) { $q->{scratch} = "advert=$ad"; return $out; } } my @adverts = ( [ 'gny0', 'and have a chance to discuss what they say in a public forum [form]Sign up to HearFromYourMP[/form]' ], [ 'twfy_alerts0', '