telaen-webmail-php/telaen/process.php
2015-03-02 14:09:51 -05:00

114 lines
3.6 KiB
PHP

<?php
/************************************************************************
Telaen is a GPL'ed software developed by
- The Telaen Group
- http://jimjag.github.io/telaen/
*************************************************************************/
define('I_AM_TELAEN', basename($_SERVER['SCRIPT_NAME']));
// @ini_set('output_buffering', 1024);
// @ob_start();
require './inc/init.php';
/* @var $TLN Telaen */
extract(Telaen::pullFromArray($_GET, ['decision'], 'str'));
extract(Telaen::pullFromArray($_GET, ['refr', 'mlist'], true));
extract(Telaen::pullFromArray($_POST, ['decision', 'aval_folders'], 'str'));
extract(Telaen::pullFromArray($_POST, ['start_pos', 'end_pos'], 1));
extract(Telaen::pullFromArray($_POST, ['back'], true));
$headers = $tdb->getMessages($folder);
$messagecount = count($headers);
if (!$messagecount
|| isset($decision)
|| isset($refr)
|| isset($mlist)) {
$expunge = false;
$require_update = false;
$reg_pp = $TLN->prefs['rpp'];
if (isset($pag) && isset($mlist) && !isset($start_pos)) {
$start_pos = ($pag-1)*$reg_pp;
} else {
$start_pos = 0;
}
if (isset($start_pos) && isset($end_pos)) { // eg: messages.php or readmsg.php
foreach (array_keys($_POST) as $key) {
$matches = [];
if (preg_match('|msg_([0-9a-fA-F]+)|', $key, $matches)) {
$msg = $TLN->tdb->getMessage($matches[1], $folder);
if (empty($msg)) {
continue;
/* TODO: Should we log this?? */
}
if ($decision == 'delete') {
$TLN->mailDeleteMsg($msg);
$expunge = true;
} elseif ($decision == 'move') {
$TLN->mailMoveMsg($msg, $aval_folders);
$expunge = true;
} elseif ($decision == 'mark') {
$TLN->mailSetFlag($msg, 'seen', '+');
} elseif ($decision == 'unmark') {
$TLN->mailSetFlag($msg, 'seen', '-');
}
}
}
if ($expunge) {
$TLN->mailExpunge();
}
if ($back) {
$back_to = $start_pos;
}
}
if ($mlist) {
$TLN->mailListMsgs($folder, $start_pos, $reg_pp);
require './apply_filters.php';
}
if ($require_update) {
$TLN->mailListMsgs($folder, $start_pos, $reg_pp);
}
$TLN->mailDisconnect();
}
$auth['havespam'] = ($TLN->havespam || $tdb->countMessages('spam') > 0);
$AuthSession->Save($auth);
$tdb->syncMessages();
/*
* If they used a different version (ignoring patchlevel) then
* they really should checkout the preferences page, since
* they have likely changed.
*
* HACK:
*/
$same_version = true;
if ($TLN->prefs['version'] != $TLN->appversion) {
list($their_major, $their_minor, $patch_level) = explode('.', $TLN->prefs['version']);
list($our_major, $our_minor, $patch_level, $devver) = explode('.', $TLN->appversion);
if (!$devver && (($their_minor != $our_minor) || ($their_major != $our_major))) {
$same_version = false;
}
}
if ((!$same_version) ||
($TLN->config['check_first_login'] && !$TLN->prefs['first-login'])) {
$TLN->prefs['first-login'] = 1;
$TLN->savePrefs($TLN->prefs);
$TLN->redirectAndExit('preferences.php?folder='.urlencode($folder));
exit;
}
if (isset($back_to)) {
if (count($headers) > $back_to) {
$TLN->redirectAndExit('readmsg.php?folder='.urlencode($folder)."&pag=$pag&ix=$back_to");
}
}
$refreshurl = 'messages.php?folder='.urlencode($folder)."&pag=$pag";
$TLN->redirectAndExit("$refreshurl");