[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_0ALPHA2-1788-gf30125f

Marc Delisle lem9 at users.sourceforge.net
Mon Dec 6 18:49:17 CET 2010


The branch, master has been updated
       via  f30125fcd3c0cf2f4d80997c8dc2332311cfc12c (commit)
      from  aa38371c48976ef6e14581f3e189bf1632ba6cff (commit)


- Log -----------------------------------------------------------------
commit f30125fcd3c0cf2f4d80997c8dc2332311cfc12c
Author: Marc Delisle <marc at infomarc.info>
Date:   Mon Dec 6 12:49:08 2010 -0500

    Continue insertion did not work if the form had special controls like file upload from client, file upload from server or BLOB streaming upload

-----------------------------------------------------------------------

Summary of changes:
 libraries/File.class.php |  177 +++++++++++++++-------------------------------
 tbl_change.php           |    6 +-
 2 files changed, 59 insertions(+), 124 deletions(-)

diff --git a/libraries/File.class.php b/libraries/File.class.php
index 2c59179..c093a7b 100644
--- a/libraries/File.class.php
+++ b/libraries/File.class.php
@@ -263,24 +263,19 @@ class PMA_File
      * @param   string  $rownumber
      * @return  boolean success
      */
-    function setUploadedFromTblChangeRequest($key, $rownumber = null)
+    function setUploadedFromTblChangeRequest($key, $rownumber)
     {
-        if (! isset($_FILES['fields_upload_' . $key])) {
+        if (! isset($_FILES['fields_upload']) && ! isset($_FILES['fields_upload']['name']['multi_edit'][$rownumber][$key])) {
             return false;
         }
-
-        $file = $_FILES['fields_upload_' . $key];
-
-        if (null !== $rownumber) {
-            $file = PMA_File::fetchUploadedFromTblChangeRequestMultiple($file, $rownumber);
-        }
+        $file = PMA_File::fetchUploadedFromTblChangeRequestMultiple($_FILES['fields_upload'], $rownumber, $key);
 
         // for blobstreaming
         $is_bs_upload = FALSE;
 
         // check if this field requires a repository upload
-        if (isset($_REQUEST['upload_blob_repo_' . $key])) {
-            $is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE;
+        if (isset($_REQUEST['upload_blob_repo']['multi_edit'][$rownumber][$key])) {
+            $is_bs_upload = ($_REQUEST['upload_blob_repo']['multi_edit'][$rownumber][$key] == "on") ? TRUE : FALSE;
         }
         // if request is an upload to the BLOB repository
         if ($is_bs_upload) {
@@ -340,11 +335,11 @@ class PMA_File
      * strips some dimension from the multi-dimensional array from $_FILES
      *
      * <code>
-     * $file['name']['multi_edit'][$rownumber] = [value]
-     * $file['type']['multi_edit'][$rownumber] = [value]
-     * $file['size']['multi_edit'][$rownumber] = [value]
-     * $file['tmp_name']['multi_edit'][$rownumber] = [value]
-     * $file['error']['multi_edit'][$rownumber] = [value]
+     * $file['name']['multi_edit'][$rownumber][$key] = [value]
+     * $file['type']['multi_edit'][$rownumber][$key] = [value]
+     * $file['size']['multi_edit'][$rownumber][$key] = [value]
+     * $file['tmp_name']['multi_edit'][$rownumber][$key] = [value]
+     * $file['error']['multi_edit'][$rownumber][$key] = [value]
      *
      * // becomes:
      *
@@ -360,16 +355,17 @@ class PMA_File
      * @static
      * @param   array   $file       the array
      * @param   string  $rownumber
+     * @param   string  $key
      * @return  array
      */
-    function fetchUploadedFromTblChangeRequestMultiple($file, $rownumber)
+    function fetchUploadedFromTblChangeRequestMultiple($file, $rownumber, $key)
     {
         $new_file = array(
-            'name' => $file['name']['multi_edit'][$rownumber],
-            'type' => $file['type']['multi_edit'][$rownumber],
-            'size' => $file['size']['multi_edit'][$rownumber],
-            'tmp_name' => $file['tmp_name']['multi_edit'][$rownumber],
-            'error' => $file['error']['multi_edit'][$rownumber],
+            'name' => $file['name']['multi_edit'][$rownumber][$key],
+            'type' => $file['type']['multi_edit'][$rownumber][$key],
+            'size' => $file['size']['multi_edit'][$rownumber][$key],
+            'tmp_name' => $file['tmp_name']['multi_edit'][$rownumber][$key],
+            'error' => $file['error']['multi_edit'][$rownumber][$key],
         );
 
         return $new_file;
@@ -388,104 +384,55 @@ class PMA_File
      */
     function setSelectedFromTblChangeRequest($key, $rownumber = null)
     {
-        if (null !== $rownumber) {
-            if (! empty($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$rownumber])
-             && is_string($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$rownumber])) {
-                // ... whether with multiple rows ...
-                // for blobstreaming
-                $is_bs_upload = FALSE;
-
-                // check if this field requires a repository upload
-                if (isset($_REQUEST['upload_blob_repo_' . $key])) {
-                    $is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE;
-                }
-
-                // is a request to upload file to BLOB repository using uploadDir mechanism
-                if ($is_bs_upload) {
-                    $bs_db = $_REQUEST['db'];
-                    $bs_table = $_REQUEST['table'];
-                    $tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$rownumber];
-
-                    // check if fileinfo library exists
-                    if ($PMA_Config->get('FILEINFO_EXISTS')) {
-                    // attempt to init fileinfo
-                        $finfo = finfo_open(FILEINFO_MIME);
-
-                        // fileinfo exists
-                        if ($finfo) {
-                            // pass in filename to fileinfo and close fileinfo handle after
-                            $tmp_file_type = finfo_file($finfo, $tmp_filename);
-                            finfo_close($finfo);
-                        }
-                    } else {
-                        // no fileinfo library exists, use file command
-                        $tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename));
-                    }
-
-                    if (! $tmp_file_type) {
-                        $tmp_file_type = NULL;
-                    }
-
-                    if (! $bs_db || !$bs_table) {
-                        $this->_error_message = $GLOBALS['strUploadErrorUnknown'];
-                        return FALSE;
-                    }
-                    $blob_url = PMA_BS_UpLoadFile($bs_db, $bs_table, $tmp_file_type, $tmp_filename);
-                    PMA_File::setRecentBLOBReference($blob_url);
-				}   // end if ($is_bs_upload)
-
-                return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$rownumber]);
-            } else {
-                return false;
-            }
-        } elseif (! empty($_REQUEST['fields_uploadlocal_' . $key])
-         && is_string($_REQUEST['fields_uploadlocal_' . $key])) {
+        if (! empty($_REQUEST['fields_uploadlocal']['multi_edit'][$rownumber][$key])
+         && is_string($_REQUEST['fields_uploadlocal']['multi_edit'][$rownumber][$key])) {
+            // ... whether with multiple rows ...
             // for blobstreaming
             $is_bs_upload = FALSE;
 
             // check if this field requires a repository upload
-            if (isset($_REQUEST['upload_blob_repo_' . $key]))
-                $is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE;
+            if (isset($_REQUEST['upload_blob_repo']['multi_edit'][$rownumber][$key])) {
+                $is_bs_upload = ($_REQUEST['upload_blob_repo']['multi_edit'][$rownumber][$key] == "on") ? TRUE : FALSE;
+            }
 
             // is a request to upload file to BLOB repository using uploadDir mechanism
-            if ($is_bs_upload)
-            {
-				// check if fileinfo library exists
-				if ($PMA_Config->get('FILEINFO_EXISTS'))
-				{
-					// attempt to init fileinfo
-					$finfo = finfo_open(FILEINFO_MIME);
-
-					// if fileinfo exists
-					if ($finfo)
-					{
-						// pass in filename to fileinfo and close fileinfo handle after
-						$tmp_file_type = finfo_file($finfo, $tmp_filename);
-						finfo_close($finfo);
-					}
-				}
-				else // no fileinfo library exists, use file command
-					$tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename));
-
-				if (!$tmp_file_type)
-					$tmp_file_type = NULL;
-
-			    $bs_db = $_REQUEST['db'];
-				$bs_table = $_REQUEST['table'];
-				if (!$bs_db || !$bs_table)
-				{
-					$this->_error_message = $GLOBALS['strUploadErrorUnknown'];
-					return FALSE;
-				}
- 				$blob_url =  PMA_BS_UpLoadFile($bs_db, $bs_table, $tmp_file_type, $tmp_filename);
-				PMA_File::setRecentBLOBReference($blob_url);
+            if ($is_bs_upload) {
+                $bs_db = $_REQUEST['db'];
+                $bs_table = $_REQUEST['table'];
+                $tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$rownumber];
+
+                // check if fileinfo library exists
+                if ($PMA_Config->get('FILEINFO_EXISTS')) {
+                // attempt to init fileinfo
+                    $finfo = finfo_open(FILEINFO_MIME);
+
+                    // fileinfo exists
+                    if ($finfo) {
+                        // pass in filename to fileinfo and close fileinfo handle after
+                        $tmp_file_type = finfo_file($finfo, $tmp_filename);
+                        finfo_close($finfo);
+                    }
+                } else {
+                    // no fileinfo library exists, use file command
+                    $tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename));
+                }
+
+                if (! $tmp_file_type) {
+                    $tmp_file_type = NULL;
+                }
 
+                if (! $bs_db || !$bs_table) {
+                    $this->_error_message = $GLOBALS['strUploadErrorUnknown'];
+                    return FALSE;
+                }
+                $blob_url = PMA_BS_UpLoadFile($bs_db, $bs_table, $tmp_file_type, $tmp_filename);
+                PMA_File::setRecentBLOBReference($blob_url);
             }   // end if ($is_bs_upload)
 
-            return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]);
+            return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal']['multi_edit'][$rownumber][$key]);
+        } else {
+            return false;
         }
-
-         return false;
     }
 
     /**
@@ -525,22 +472,10 @@ class PMA_File
             // well done ...
             $this->_error_message = '';
             return true;
-/*
-        } elseif ($this->setUploadedFromTblChangeRequest($key)) {
-            // well done ...
-            $this->_error_message = '';
-            return true;
-*/
         } elseif ($this->setSelectedFromTblChangeRequest($key, $rownumber)) {
             // well done ...
             $this->_error_message = '';
             return true;
-/*
-        } elseif ($this->setSelectedFromTblChangeRequest($key)) {
-            // well done ...
-            $this->_error_message = '';
-            return true;
-*/
         }
         // all failed, whether just no file uploaded/selected or an error
 
diff --git a/tbl_change.php b/tbl_change.php
index bee7017..edbddb0 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -889,11 +889,11 @@ foreach ($rows as $row_id => $vrow) {
                 // check if field type is of longblob and  if the table is PBMS enabled.
                 if (($field['pma_type'] == "longblob") && PMA_BS_IsTablePBMSEnabled($db, $table, $tbl_type)) {
                     echo '<br />';
-                    echo '<input type="checkbox" name="upload_blob_repo_' . $field['Field_md5'] . $vkey . '" /> ' .  __('Upload to BLOB repository');
+                    echo '<input type="checkbox" name="upload_blob_repo' . $vkey . '[' . $field['Field_md5'] . ']" /> ' .  __('Upload to BLOB repository');
                 }
 
                 echo '<br />';
-                echo '<input type="file" name="fields_upload_' . $field['Field_md5'] . $vkey . '" class="textfield" id="field_' . $idindex . '_3" size="10" ' . $unnullify_trigger . '/> ';
+                echo '<input type="file" name="fields_upload' . $vkey . '[' . $field['Field_md5'] . ']" class="textfield" id="field_' . $idindex . '_3" size="10" ' . $unnullify_trigger . '/> ';
 
                 // find maximum upload size, based on field type
                 /**
@@ -926,7 +926,7 @@ foreach ($rows as $row_id => $vrow) {
                 } elseif (!empty($files)) {
                     echo "<br />\n";
                     echo '    <i>' . __('Or') . '</i>' . ' ' . __('web server upload directory') . ':<br />' . "\n";
-                    echo '        <select size="1" name="fields_uploadlocal_' . $field['Field_md5'] . $vkey . '">' . "\n";
+                    echo '        <select size="1" name="fields_uploadlocal' . $vkey . '[' . $field['Field_md5'] . ']">' . "\n";
                     echo '            <option value="" selected="selected"></option>' . "\n";
                     echo $files;
                     echo '        </select>' . "\n";


hooks/post-receive
-- 
phpMyAdmin




More information about the Git mailing list