]> git.andy128k.dev Git - ipf.git/commitdiff
Rewrite Upload File Names
authoravl <alex.litovchenko@gmail.com>
Wed, 10 Sep 2008 15:16:58 +0000 (18:16 +0300)
committeravl <alex.litovchenko@gmail.com>
Wed, 10 Sep 2008 15:16:58 +0000 (18:16 +0300)
ipf/form/field/file.php
ipf/form/widget/fileinput.php
ipf/utils.php

index d7cb36ac8f9e434e480743600f794bc293cf3f0e..646c6eb08a0e6bad0907ba8f22179c66b0f6af91 100644 (file)
@@ -5,13 +5,12 @@ class IPF_Form_Field_File extends IPF_Form_Field
     public $widget = 'IPF_Form_Widget_FileInput';
     public $move_function = 'IPF_Form_Field_moveToUploadFolder';
     public $remove_function = 'IPF_Form_Field_removeFile';
-    public $max_size = 2097152; // 2MB
+    public $max_size =  8388608; // 8MB
     public $move_function_params = array();
 
     function clean($value)
     {
-        if ($value['remove']==1){
-            //print_r($value);
+        if ($value['remove']===true){
             IPF::loadFunction($this->remove_function);
             return call_user_func($this->remove_function, $value['data']);
         }
@@ -61,11 +60,11 @@ class IPF_Form_Field_File extends IPF_Form_Field
 
 function IPF_Form_Field_moveToUploadFolder($value, $params=array())
 {
-    $name = IPF_Utils::cleanFileName($value['name']);
     $upload_path = IPF::get('upload_path', '/tmp');
     if (isset($params['upload_path'])) {
         $upload_path = $params['upload_path'];
     }
+    $name = IPF_Utils::cleanFileName($value['name'], $upload_path);
     $dest = $upload_path.DIRECTORY_SEPARATOR.$name;
     if (!move_uploaded_file($value['tmp_name'], $dest)) {
         throw new IPF_Exception_Form(__('An error occured when upload the file. Please try to send the file again.'));
index c28c8b3156407971605a1429f5c590830e4c8c6b..75dfdf16474b1aa8e76a4ded13c97978c1d4f346 100644 (file)
@@ -19,7 +19,10 @@ class IPF_Form_Widget_FileInput extends IPF_Form_Widget_Input
     public function valueFromFormData($name, $data)
     {
         if (isset($data[$name])) {
-            $remove = (int)$data[$name.'_remove'];
+            $remove = false;
+            if (isset($data[$name.'_remove']))
+                if ($data[$name.'_remove']==1)
+                    $remove = true;
             $res = array('data'=>$data[$name], 'remove'=>$remove);
             return $res;
         }
index 5979aa978304c4a1cda53b4124b6a759f3bdabc1..94305ec0adee5c5c1e6dddf747a9ac08e2b80f90 100644 (file)
@@ -43,10 +43,27 @@ class IPF_Utils {
         return $mysize;
     }
        
-    static function cleanFileName($name)
+    static function cleanFileName($name, $path)
     {
         $name = mb_strtolower($name, 'UTF-8');
-        return mb_ereg_replace("/\015\012|\015|\012|\s|[^A-Za-z0-9\.\-\_]/", '_', $name);
+        $name = mb_ereg_replace("/\015\012|\015|\012|\s|[^A-Za-z0-9\.\-\_]/", '_', $name);
+
+        while(file_exists($path.$name)){
+            $pathinfo = pathinfo($name);
+            $filename = $pathinfo['filename'];
+            $split = split('_', $filename);
+            $n = count($split);
+            if ($n<2){
+                $filename .= '_2';
+            }
+            else{
+                $x = (int)$split[$n-1];
+                $y = $x+1;
+                $filename = str_replace('_'.$x, '_'.$y, $filename);
+            }
+            $name = $filename.'.'.$pathinfo['extension'];
+        }
+        return $name;
     }
     
     static function isValidUrl($url)