Esempio n. 1
0
 /**
  * Adds the file array to the form POST/GET array and normalizes
  * it rather then keeping the weird _FILES structure.
  * 
  * Called only once a form has been identified for processing.
  * 
  * @param array $arr
  *   The array to add the file information to, usually a reference to
  *   the _POST or _GET superglobal array.
  * 
  * @return void
  */
 private static function fixFileArray(array &$arr)
 {
     $fileKeys = array('name', 'type', 'tmp_name', 'error', 'size');
     foreach ($_FILES as $basename => $fileArr) {
         $res = array();
         foreach ($fileKeys as $key) {
             if (array_key_exists($key, $fileArr)) {
                 if (is_array($fileArr[$key])) {
                     $subkey = self::flatten_file($fileArr[$key]);
                     foreach ($subkey as $k => $v) {
                         $res[$basename . $k . '[' . $key . ']'] = $key == 'type' ? strtolower($v) : $v;
                         if ($key == 'name' && !array_key_exists($basename . $k . '[ext]', $res)) {
                             $res[$basename . $k . '[ext]'] = get::fullext($v);
                         }
                     }
                 } else {
                     $res[$basename . '[' . $key . ']'] = $key == 'type' ? strtolower($fileArr[$key]) : $fileArr[$key];
                     if ($key == 'name' && !array_key_exists($basename . '[ext]', $res)) {
                         $res[$basename . '[ext]'] = get::fullext($fileArr[$key]);
                     }
                 }
             }
         }
         foreach ($res as $path => $v) {
             $pa = formElement::getFieldPath($path, false, false);
             $ref =& $arr;
             while (count($pa) > 0) {
                 $idx = array_shift($pa);
                 if (!array_key_exists($idx, $ref)) {
                     $ref[$idx] = array();
                 }
                 $ref =& $ref[$idx];
             }
             $ref = $v;
             unset($ref);
         }
     }
 }