aboutsummaryrefslogtreecommitdiffstats
path: root/web/contact.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'web/contact.cgi')
-rwxr-xr-xweb/contact.cgi245
1 files changed, 0 insertions, 245 deletions
diff --git a/web/contact.cgi b/web/contact.cgi
deleted file mode 100755
index b3af1688b..000000000
--- a/web/contact.cgi
+++ /dev/null
@@ -1,245 +0,0 @@
-#!/usr/bin/perl -w -I../perllib
-
-# contact.cgi:
-# Contact page for FixMyStreet
-#
-# Copyright (c) 2006 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org. WWW: http://www.mysociety.org
-#
-# $Id: contact.cgi,v 1.58 2009-12-17 14:57:34 louise Exp $
-
-use strict;
-use Standard;
-use CrossSell;
-use mySociety::Email;
-use mySociety::EmailUtil;
-use mySociety::Web qw(ent);
-use mySociety::Random qw(random_bytes);
-
-# Main code for index.cgi
-sub main {
- my $q = shift;
- print Page::header($q, title=>_('Contact Us'), context=>'contact', robots => 'noindex,nofollow');
- my $out = '';
- if ($q->param('submit_form')) {
- $out = contact_submit($q);
- } else {
- $out = contact_page($q, [], {});
- }
- print $out;
- print Page::footer($q);
-}
-Page::do_fastcgi(\&main);
-
-sub contact_submit {
- my $q = shift;
- my @vars = qw(name em subject message id update_id);
- my %input = map { $_ => $q->param($_) || '' } @vars;
- my $cobrand = Page::get_cobrand($q);
- my @errors;
- my %field_errors;
- $field_errors{name} = _('Please give your name') unless $input{name} =~ /\S/;
- if ($input{em} !~ /\S/) {
- $field_errors{email} = _('Please give your email');
- } elsif (!mySociety::EmailUtil::is_valid_email($input{em})) {
- $field_errors{email} = _('Please give a valid email address');
- }
- $field_errors{subject} = _('Please give a subject') unless $input{subject} =~ /\S/;
- $field_errors{message} = _('Please write a message') unless $input{message} =~ /\S/;
- push(@errors, _('Illegal ID')) if (($input{id} && $input{id} !~ /^[1-9]\d*$/) || ($input{update_id} && $input{update_id} !~ /^[1-9]\d*$/));
- return contact_page($q, \@errors, \%field_errors) if (@errors || scalar keys %field_errors);
-
- (my $message = $input{message}) =~ s/\r\n/\n/g;
- (my $subject = $input{subject}) =~ s/\r|\n/ /g;
- my $extra_data = Cobrand::extra_data($cobrand, $q);
- my $base_url = Cobrand::base_url_for_emails($cobrand, $extra_data);
- my $admin_base_url = Cobrand::admin_base_url($cobrand);
- if (!$admin_base_url) {
- $admin_base_url = "https://secure.mysociety.org/admin/bci/";
- }
- if ($input{id} && $input{update_id}) {
- $message .= "\n\n[ Complaint about update $input{update_id} on report $input{id} - "
- . $base_url . "/report/$input{id}#update_$input{update_id} - "
- . "$admin_base_url?page=update_edit;id=$input{update_id} ]";
- } elsif ($input{id}) {
- $message .= "\n\n[ Complaint about report $input{id} - "
- . $base_url . "/report/$input{id} - "
- . "$admin_base_url?page=report_edit;id=$input{id} ]";
- }
- my $postfix = '[ Sent by contact.cgi on ' .
- $ENV{'HTTP_HOST'} . '. ' .
- "IP address " . $ENV{'REMOTE_ADDR'} .
- ($ENV{'HTTP_X_FORWARDED_FOR'} ? ' (forwarded from '.$ENV{'HTTP_X_FORWARDED_FOR'}.')' : '') . '. ' .
- ' ]';
-
- my $recipient = Cobrand::contact_email($cobrand);
- my $recipient_name = Cobrand::contact_name($cobrand);
- my $email = mySociety::Email::construct_email({
- _body_ => "$message\n\n$postfix",
- From => [$input{em}, $input{name}],
- To => [[$recipient, _($recipient_name)]],
- Subject => 'FMS message: ' . $subject,
- 'Message-ID' => sprintf('<contact-%s-%s@mysociety.org>', time(), unpack('h*', random_bytes(5, 1))),
- });
- my $result = mySociety::EmailUtil::send_email($email, $input{em}, $recipient);
- if ($result == mySociety::EmailUtil::EMAIL_SUCCESS) {
- my $message = _("Thanks for your feedback. We'll get back to you as soon as we can!");
- my $out = $q->p($message);
- my $display_advert = Cobrand::allow_crosssell_adverts($cobrand);
- my $advert = '';
- if ($display_advert) {
- $advert = CrossSell::display_advert($q, $input{em}, $input{name}, emailunvalidated=>1 );
- $out .= $advert;
- }
- my %vars = (message => $message,
- advert => $advert);
- my $template_out = Page::template_include('confirmed-alert', $q, Page::template_root($q), %vars);
- return $template_out if $template_out;
- return $out;
- } else {
- return $q->p('Failed to send message. Please try again, or <a href="mailto:' . $recipient . '">email us</a>.');
- }
-}
-
-sub contact_details {
- my ($q) = @_;
- my $out = '';
- my $sitename = _('FixMyStreet');
- my $contact_info = '';
- if ( mySociety::Config::get('COUNTRY') eq 'GB' ) {
- # XXX Rewrite to make brandable?
- $contact_info .= <<EOF;
-<div class="contact-details">
-<p>$sitename is a service provided by mySociety, which is the project of a
-registered charity. The charity is called UK Citizens Online Democracy and is charity number 1076346.</p>
-<p>mySociety can be contacted by email at <a href="mailto:hello&#64;mysociety.org">hello&#64;mysociety.org</a>,
-or by post at:</p>
-<p>mySociety<br>
-483 Green Lanes<br>
-London<br>
-N13 4BS<br>
-UK</p>
-</div>
-EOF
- $out .= $contact_info unless $q->{site} eq 'emptyhomes';
- }
- return $out;
-}
-
-sub generic_contact_text {
- my ($q) = @_;
- my $intro;
-
- if ($q->{site} eq 'emptyhomes') {
- $intro .= $q->p(_('We&rsquo;d love to hear what you think about this
-website. Just fill in the form. Please don&rsquo;t contact us about individual empty
-homes; use the box accessed from <a href="/">the front page</a>.'));
- } else {
- my $cobrand = Page::get_cobrand($q);
- my $mailto = Cobrand::contact_email($cobrand);
- $mailto =~ s/\@/&#64;/;
- $intro .= $q->p(_('Please do <strong>not</strong> report problems through this form; messages go to
-the team behind FixMyStreet, not a council. To report a problem,
-please <a href="/">go to the front page</a> and follow the instructions.'));
- $intro .= $q->p(sprintf(_("We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"), $mailto, $mailto));
- }
- return $intro;
-}
-
-sub contact_page {
- my ($q, $errors, $field_errors) = @_;
- my @errors = @$errors;
- my %field_errors = %{$field_errors};
- push @errors, _('There were problems with your report. Please see below.') if (scalar keys %field_errors);
- my @vars = qw(name em subject message);
- my %input = map { $_ => $q->param($_) || '' } @vars;
- my %input_h = map { $_ => $q->param($_) ? ent($q->param($_)) : '' } @vars;
- my $out = '';
- my $header = _('Contact the team');
- $errors = '';
-
- if (@errors) {
- $errors = '<ul class="error"><li>' . join('</li><li>', @errors) . '</li></ul>';
- }
- my $cobrand = Page::get_cobrand($q);
- my $form_action = Cobrand::url($cobrand, '/contact', $q);
-
- my $intro = '';
- my $item_title = '';
- my $item_body = '';
- my $item_meta = '';
- my $hidden_vals = '';
- my $id = $q->param('id');
- my $update_id = $q->param('update_id');
- $id = undef unless $id && $id =~ /^[1-9]\d*$/;
- $update_id = undef unless $update_id && $update_id =~ /^[1-9]\d*$/;
- if ($id) {
- mySociety::DBHandle::configure(
- Name => mySociety::Config::get('BCI_DB_NAME'),
- User => mySociety::Config::get('BCI_DB_USER'),
- Password => mySociety::Config::get('BCI_DB_PASS'),
- Host => mySociety::Config::get('BCI_DB_HOST', undef),
- Port => mySociety::Config::get('BCI_DB_PORT', undef)
- );
- my $p = dbh()->selectrow_hashref(
- 'select title,detail,name,anonymous,extract(epoch from confirmed) as confirmed
- from problem where id=?', {}, $id);
- if ($update_id) {
- my $u = dbh()->selectrow_hashref(
- 'select comment.text, comment.name, problem.title, extract(epoch from comment.confirmed) as confirmed
- from comment, problem where comment.id=?
- and comment.problem_id = problem.id
- and comment.problem_id=?', {}, $update_id ,$id);
- if (! $u) {
- $intro = generic_contact_text($q);
- } else {
- $intro .= $q->p(_('You are reporting the following update for being abusive, containing personal information, or similar:'));
- $item_title = ent($u->{title});
- $item_meta = $q->em( 'Update below added ', (!$u->{name}) ? 'anonymously' : "by " . ent($u->{name}),
- ' at ' . Page::prettify_epoch($q, $u->{confirmed}));
- $item_body = ent($u->{text});
- $hidden_vals .= '<input type="hidden" name="update_id" value="' . $update_id . '">';
- }
- } else {
- if (! $p) {
- $intro = generic_contact_text($q);
- } else {
- $intro .= $q->p(_('You are reporting the following problem report for being abusive, containing personal information, or similar:'));
- $item_title = ent($p->{title});
- my $date_time = Page::prettify_epoch($q, $p->{confirmed});
- $item_meta = $q->em(
- $p->{anonymous}
- ? sprintf(_('Reported anonymously at %s'), $date_time)
- : sprintf(_('Reported by %s at %s'), ent($p->{name}), $date_time)
- );
- $item_body = ent($p->{detail});
- }
- }
- $hidden_vals .= '<input type="hidden" name="id" value="' . $id . '">';
- } else {
- $intro = generic_contact_text($q);
- }
- my $cobrand_form_elements = Cobrand::form_elements(Page::get_cobrand($q), 'contactForm', $q);
- my %vars = (
- header => $header,
- errors => $errors,
- intro => $intro,
- item_title => $item_title,
- item_meta => $item_meta,
- item_body => $item_body,
- hidden_vals => $hidden_vals,
- form_action => $form_action,
- input_h => \%input_h,
- field_errors => \%field_errors,
- label_name => _('Your name:'),
- label_email => _('Your&nbsp;email:'),
- label_subject => _('Subject:'),
- label_message => _('Message:'),
- label_submit => _('Post'),
- contact_details => contact_details($q),
- cobrand_form_elements => $cobrand_form_elements
- );
- $out .= Page::template_include('contact', $q, Page::template_root($q), %vars);
- return $out;
-}
-