nieuws: inline code to format article overviews
[minimedit.git] / contact.php
1 <?php
2 $error = NULL;
3 if ($_POST) {
4         global $User;
5         if ($User) {
6                 $_REQUEST['login'] = $User->login;
7         }
8         $error = mailform($_REQUEST);
9         if (!empty($error)) {
10                 print "<p class=warn>$error</p>\n\n";
11         }
12 }
13
14 function mailform($input = [])
15 {
16         $source = empty($input['subject']) ? 'reactie' : $input['subject'];
17         $domain = preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
18         $rcpt = "info@$domain";
19         $subject = "Formulier {$_SERVER['HTTP_HOST']}: $source";
20
21         if (!$input) {
22                 return 'Geen gegevens ontvangen. Probeer het nog eens.';
23         }
24
25 switch ($source) {
26         case 'melding':
27                 if (empty($input['login'])) {
28                         return "Inloggen is verplicht om een melding te plaatsen.";
29                 }
30                 if (empty($input['body'])) {
31                         return "Geen bericht opgegeven.";
32                 }
33                 break;
34         case 'bbq':
35                 if (empty($input['naam']) or empty($input['huis'])) {
36                         return 'De bedoeling is juist dat je opgeeft wie er komt.';
37                 }
38                 $rcpt .= ', Heleen <heleen.terlouw.2910@gmail.com>';
39                 break;
40         default:
41         if (empty($input['email']) or !preg_match('/.+@.+\..+/', $input['email'])) {
42                 return 'Een geldig e-mailadres is verplicht zodat we antwoord kunnen geven.';
43         }
44         if (isset($input['naam']) and empty($input['naam'])) {
45                 return 'Geef ook een naam waarmee we u kunnen aanspreken.';
46         }
47 }
48
49         $reply = preg_match('/\A\w+@\w+\.[a-z]+\z/', @$input['email'])
50                 ? $input['email'] : "noreply@$domain";
51         $header = "From: $reply";
52
53         foreach (array(
54                 'X-Accept-Language' => 'HTTP_ACCEPT_LANGUAGE',
55                 'User-Agent'        => 'HTTP_USER_AGENT',
56         ) as $mailhdr => $serverhdr) {
57                 if (!$_SERVER[$serverhdr]) continue;
58                 $header .= "\r\n$mailhdr: ".$_SERVER[$serverhdr];
59         }
60
61         $origin = $_SERVER['REMOTE_ADDR'];
62         if ($resolved = @gethostbyaddr($origin) and $resolved !== $origin) {
63                 $origin .= sprintf(' (%s)', gethostbyaddr($origin));
64         }
65         $body = "Ingevuld vanaf $origin:\r\n\r\n";
66
67         foreach ($input as $k => $v) {
68                 $body .= "$k: $v\r\n";
69         }
70
71         $sent = mail($rcpt, $subject, $body, $header);
72         if (!$sent)
73                 return 'Helaas ging er iets mis bij het doorvoeren. Probeer het later nog eens.';
74
75         switch ($source) {
76         case 'bestelling':
77                 print '<p>Bedankt voor uw bestelling. U ontvangt z.s.m. de bevestiging van deze bestelling via uw opgegeven e-mailadres.</p>';
78                 break;
79         case 'bbq':
80                 print "<p>Bedankt voor je deelname. Tot ziens!</p>";
81                 break;
82         case 'melding':
83                 print "<p>Bedankt voor de melding. Na goedkeuring zal het hier geplaatst worden.</p>";
84                 break;
85         default:
86                 print '<p>Bedankt voor uw reactie!</p>';
87         }
88         return;
89 }