page: api attribute indicate index requests
[minimedit.git] / mail / index.php
index d4d4c29a2131ac54e8e779b164ad2c6e5aacd3bf..ee7365aa62cb321de3af6581704edea85cf063e2 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 ($Page->api) {
+       return;
+}
 if (!$User->admin('user')) {
        http_response_code(403);
        $Page->place['warn'] = "Geen gebruikersrechten om e-mails in te zien.";
@@ -60,7 +69,13 @@ $rows = glob("$mailbox/*");
 if (!$rows) {
        throw new Exception('Kon inbox niet openen.');
 }
-array_splice($rows, 0, -50);
+
+$nav = [
+       'start' => $_GET['start'] ?? 0,
+       'n'     => $_GET['n'] ?? 10,
+       'total' => count($rows),
+];
+$rows = array_slice(array_reverse($rows), $nav['start'], $nav['n']);
 
 ob_start();
 print '<ul>';
@@ -86,4 +101,7 @@ foreach (array_reverse($rows) as $filename) {
        print "</a></li>\n";
 }
 print "</ul>\n";
+
+print $Page->widget('nav', $nav);
+
 $Page->place['maillist'] = ob_get_clean();