You are here

function subform_buffer_files in Subform 7

Buffers uploads seperating them per (sub)form.

1 call to subform_buffer_files()
subform_buffer in ./subform.module
Buffers errors and uploads seperating them per (sub)form.

File

./subform.module, line 883
Defines a subform element type.

Code

function subform_buffer_files($op, &$subform_element) {
  static $files_stack = array();
  $subform_name = $subform_element['#name'];
  switch ($op) {
    case 'start':
      $files_stack[] = $prior_files = $_FILES;
      $_FILES = array();
      if (!empty($prior_files['files'])) {
        foreach ($prior_files['files']['name'] as $old_name => $value) {
          if (strpos($old_name, $subform_name . '-') === 0) {

            // Remove the subform element name prefix.
            $new_name = substr($old_name, strlen($subform_name . '-'));
            foreach (array(
              'name',
              'type',
              'tmp_name',
              'error',
              'size',
            ) as $key) {
              $_FILES['files'][$key][$new_name] = $prior_files['files'][$key][$old_name];
            }
          }
        }
      }
      break;
    case 'end':
      $_FILES = array_pop($files_stack);
      break;
  }
}