From c41a86e5cc26dc8ae37ed4b3fddcaa195b1616a4 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Mon, 06 Aug 2012 12:00:38 -0400 Subject: [PATCH] Updated translations from launchpad --- plugins/database_attachments/database_attachments.php | 57 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 37 insertions(+), 20 deletions(-) diff --git a/plugins/database_attachments/database_attachments.php b/plugins/database_attachments/database_attachments.php index 28ccde4..9a279f5 100644 --- a/plugins/database_attachments/database_attachments.php +++ b/plugins/database_attachments/database_attachments.php @@ -1,7 +1,7 @@ <?php /** * Filesystem Attachments - * + * * This plugin which provides database backed storage for temporary * attachment file handling. The primary advantage of this plugin * is its compatibility with round-robin dns multi-server roundcube @@ -10,7 +10,8 @@ * This plugin relies on the core filesystem_attachments plugin * * @author Ziba Scott <ziba@umich.edu> - * + * @author Aleksander Machniak <alec@alec.pl> + * @version @package_version@ */ require_once('plugins/filesystem_attachments/filesystem_attachments.php'); class database_attachments extends filesystem_attachments @@ -22,9 +23,10 @@ /** * Helper method to generate a unique key for the given attachment file */ - private function _key($filepath) + private function _key($args) { - return $this->cache_prefix.md5(mktime().$filepath.$_SESSION['user_id']); + $uname = $args['path'] ? $args['path'] : $args['name']; + return $this->cache_prefix . $args['group'] . md5(mktime() . $uname . $_SESSION['user_id']); } /** @@ -34,8 +36,14 @@ { $args['status'] = false; $rcmail = rcmail::get_instance(); - $key = $this->_key($args['path']); - $data = base64_encode(file_get_contents($args['path'])); + $key = $this->_key($args); + + $data = file_get_contents($args['path']); + + if ($data === false) + return $args; + + $data = base64_encode($data); $status = $rcmail->db->query( "INSERT INTO ".get_table_name('cache')." @@ -44,13 +52,13 @@ $_SESSION['user_id'], $key, $data); - + if ($status) { $args['id'] = $key; $args['status'] = true; unset($args['path']); } - + return $args; } @@ -62,7 +70,15 @@ $args['status'] = false; $rcmail = rcmail::get_instance(); - $key = $this->_key($args['name']); + $key = $this->_key($args); + + if ($args['path']) { + $args['data'] = file_get_contents($args['path']); + + if ($args['data'] === false) + return $args; + } + $data = base64_encode($args['data']); $status = $rcmail->db->query( @@ -72,7 +88,7 @@ $_SESSION['user_id'], $key, $data); - + if ($status) { $args['id'] = $key; $args['status'] = true; @@ -95,32 +111,32 @@ AND cache_key=?", $_SESSION['user_id'], $args['id']); - + if ($status) { $args['status'] = true; } - + return $args; } /** * When composing an html message, image attachments may be shown - * For this plugin, $this->get_attachment will check the file and + * For this plugin, $this->get() will check the file and * return it's contents */ function display($args) { - return $this->get_attachment($args); + return $this->get($args); } /** * When displaying or sending the attachment the file contents are fetched - * using this method. This is also called by the display_attachment hook. + * using this method. This is also called by the attachment_display hook. */ - function get_attachment($args) + function get($args) { $rcmail = rcmail::get_instance(); - + $sql_result = $rcmail->db->query( "SELECT cache_id, data FROM ".get_table_name('cache')." @@ -133,20 +149,21 @@ $args['data'] = base64_decode($sql_arr['data']); $args['status'] = true; } - + return $args; } - + /** * Delete all temp files associated with this user */ function cleanup($args) { + $prefix = $this->cache_prefix . $args['group']; $rcmail = rcmail::get_instance(); $rcmail->db->query( "DELETE FROM ".get_table_name('cache')." WHERE user_id=? - AND cache_key like '{$this->cache_prefix}%'", + AND cache_key like '{$prefix}%'", $_SESSION['user_id']); } } -- Gitblit v1.9.1