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