From 133bb07f78b9486f0a524390253f08a0b446c584 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 05 Dec 2008 02:38:54 -0500
Subject: [PATCH] - performance: skip imap connection for attachments actions - created attachments.inc file for attachment upload, remove and display actions
---
index.php | 5 +-
program/steps/mail/attachments.inc | 46 ++++++++++++++++++++---
program/steps/mail/compose.inc | 28 --------------
program/steps/mail/func.inc | 3 -
4 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/index.php b/index.php
index 74c7c21..6f24ef7 100644
--- a/index.php
+++ b/index.php
@@ -176,8 +176,9 @@
'send' => 'sendmail.inc',
'expunge' => 'folders.inc',
'purge' => 'folders.inc',
- 'remove-attachment' => 'compose.inc',
- 'display-attachment' => 'compose.inc',
+ 'remove-attachment' => 'attachments.inc',
+ 'display-attachment' => 'attachments.inc',
+ 'upload' => 'attachments.inc',
),
'addressbook' => array(
diff --git a/program/steps/mail/upload.inc b/program/steps/mail/attachments.inc
similarity index 72%
rename from program/steps/mail/upload.inc
rename to program/steps/mail/attachments.inc
index 4a59b8b..a43b22e 100644
--- a/program/steps/mail/upload.inc
+++ b/program/steps/mail/attachments.inc
@@ -2,20 +2,20 @@
/*
+-----------------------------------------------------------------------+
- | program/steps/mail/upload.inc |
+ | program/steps/mail/attachments.inc |
| |
| This file is part of the RoundCube Webmail client |
- | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland |
+ | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland |
| Licensed under the GNU GPL |
| |
| PURPOSE: |
- | Handle file-upload and make them available as attachments |
+ | Upload, remove, display attachments in compose form |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
- $Id$
+ $Id: compose.inc 2081 2008-11-23 12:38:44Z thomasb $
*/
@@ -25,9 +25,43 @@
}
+// remove an attachment
+if ($RCMAIL->action=='remove-attachment')
+{
+ if (preg_match('/^rcmfile([0-9]+)$/', $_POST['_file'], $regs))
+ {
+ $id = $regs[1];
+ if (is_array($_SESSION['compose']['attachments'][$id]))
+ {
+ @unlink($_SESSION['compose']['attachments'][$id]['path']);
+ unset($_SESSION['compose']['attachments'][$id]);
+ $OUTPUT->command('remove_from_attachment_list', "rcmfile$id");
+ $OUTPUT->send();
+ }
+ }
+ exit;
+}
+
+if ($RCMAIL->action=='display-attachment')
+{
+ if (preg_match('/^rcmfile([0-9]+)$/', $_GET['_file'], $regs))
+ {
+ $id = $regs[1];
+ if (is_array($_SESSION['compose']['attachments'][$id]))
+ {
+ $apath = $_SESSION['compose']['attachments'][$id]['path'];
+ header('Content-Type: ' . $_SESSION['compose']['attachments'][$id]['mimetype']);
+ header('Content-Length: ' . filesize($apath));
+ readfile($apath);
+ }
+ }
+ exit;
+}
+
+// attachment upload action
+
// use common temp dir for file uploads
$temp_dir = unslashify($CONFIG['temp_dir']);
-
if (!is_array($_SESSION['compose']['attachments'])) {
$_SESSION['compose']['attachments'] = array();
@@ -90,4 +124,4 @@
$OUTPUT->command('auto_save_start', false);
$OUTPUT->send('iframe');
-?>
\ No newline at end of file
+?>
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 8a9c36a..95630b1 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -24,34 +24,6 @@
define('RCUBE_COMPOSE_FORWARD', 0x0107);
define('RCUBE_COMPOSE_DRAFT', 0x0108);
-
-// remove an attachment
-if ($RCMAIL->action=='remove-attachment' && preg_match('/^rcmfile([0-9]+)$/', $_POST['_file'], $regs))
-{
- $id = $regs[1];
- if (is_array($_SESSION['compose']['attachments'][$id]))
- {
- @unlink($_SESSION['compose']['attachments'][$id]['path']);
- unset($_SESSION['compose']['attachments'][$id]);
- $OUTPUT->command('remove_from_attachment_list', "rcmfile$id");
- $OUTPUT->send();
- }
- exit;
-}
-
-if ($RCMAIL->action=='display-attachment' && preg_match('/^rcmfile([0-9]+)$/', $_GET['_file'], $regs))
-{
- $id = $regs[1];
- if (is_array($_SESSION['compose']['attachments'][$id]))
- {
- $apath = $_SESSION['compose']['attachments'][$id]['path'];
- header('Content-Type: ' . $_SESSION['compose']['attachments'][$id]['mimetype']);
- header('Content-Length: ' . filesize($apath));
- readfile($apath);
- }
- exit;
-}
-
$MESSAGE_FORM = NULL;
$MESSAGE = NULL;
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 33503ae..93dae66 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -25,7 +25,7 @@
$EMAIL_ADDRESS_PATTERN = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/i';
// actions that do not require imap connection
-$NOIMAP_ACTIONS = array('spell', 'addcontact', 'autocomplete', 'upload');
+$NOIMAP_ACTIONS = array('spell', 'addcontact', 'autocomplete', 'upload', 'display-attachment', 'remove-attachment');
// log in to imap server
@@ -38,7 +38,6 @@
$OUTPUT->set_env('task', 'login');
$OUTPUT->send('login');
}
-
// set imap properties and session vars
--
Gitblit v1.9.1