mail: support invalid and repeated requests
[minimedit.git] / mail / index.php
index d8195f689f3eaa5f9eb1fa4f628581582512e363..2b6e6008214199078b2f663a8ae55449badbd922 100644 (file)
@@ -2,6 +2,7 @@
 $mailbox = 'mail/inbox';
 @list ($msgid) = explode('/', ltrim($Page->path, '/'));
 
+if (!function_exists('parsemailhead')) {
 function parsemailhead($headerdata)
 {
        $headlist = iconv_mime_decode_headers($headerdata, ICONV_MIME_DECODE_CONTINUE_ON_ERROR);
@@ -12,9 +13,14 @@ function parsemailhead($headerdata)
        });
        return $headlist;
 }
+}
 
 if ($msgid) {
        $filename = "$mailbox/$msgid";
+       if (!is_readable($filename)) {
+               return TRUE;
+       }
+
        list ($headerdata, $rawbody) = explode("\n\n", file_get_contents($filename), 2);
        $head = parsemailhead($headerdata);
        $head['date']->setTimezone(new DateTimeZone(date_default_timezone_get()));
@@ -49,6 +55,9 @@ if ($msgid) {
        return;
 }
 
+if (!$User) {
+       return;
+}
 if (!$User->admin('user')) {
        http_response_code(403);
        $Page->place['warn'] = "Geen gebruikersrechten om e-mails in te zien.";
@@ -93,8 +102,6 @@ foreach (array_reverse($rows) as $filename) {
 }
 print "</ul>\n";
 
-print $Page->widget('nav', [
-       "start=$nav[start]", "n=$nav[n]", "total=$nav[total]",
-]);
+print $Page->widget('nav', $nav);
 
 $Page->place['maillist'] = ob_get_clean();