original_string: function _validate_files(&$files) {
          global $CFG, $COURSE;
  
          $files = array();
  
          if (empty($_FILES)) {
              // we do not need to do any checks because no files were submitted
              // note: server side rules do not work for files - use custom verification in validate() instead
              return true;
          }
  
          $errors = array();
          $filenames = array();
  
          // now check that we really want each file
          foreach ($_FILES as $elname=>$file) {
              $required = $this->_form->isElementRequired($elname);
  
              if ($file['error'] == 4 and $file['size'] == 0) {
                  if ($required) {
                      $errors[$elname] = get_string('required');
                  }
                  unset($_FILES[$elname]);
                  continue;
              }
  
              if (!empty($file['error'])) {
                  $errors[$elname] = file_get_upload_error($file['error']);
                  unset($_FILES[$elname]);
                  continue;
              }
  
              if (!is_uploaded_file($file['tmp_name'])) {
                  // TODO: improve error message
                  $errors[$elname] = get_string('error');
                  unset($_FILES[$elname]);
                  continue;
              }
  
              if (!$this->_form->elementExists($elname) or !$this->_form->getElementType($elname)=='file') {
                  // hmm, this file was not requested
                  unset($_FILES[$elname]);
                  continue;
              }
  
              // NOTE: the viruses are scanned in file picker, no need to deal with them here.
  
              $filename = clean_param($_FILES[$elname]['name'], PARAM_FILE);
              if ($filename === '') {
                  // TODO: improve error message - wrong chars
                  $errors[$elname] = get_string('error');
                  unset($_FILES[$elname]);
                  continue;
              }
              if (in_array($filename, $filenames)) {
                  // TODO: improve error message - duplicate name
                  $errors[$elname] = get_string('error');
                  unset($_FILES[$elname]);
                  continue;
              }
              $filenames[] = $filename;
              $_FILES[$elname]['name'] = $filename;
  
              $files[$elname] = $_FILES[$elname]['tmp_name'];
          }
  
          // return errors if found
          if (count($errors) == 0){
              return true;
  
          } else {
              $files = array();
              return $errors;
          }
      }
code: function _validate_files(&$files) {
          global $CFG, $COURSE;
  
          $files = array();
  
          if (empty($_FILES)) {
              // we do not need to do any checks because no files were submitted
              // note: server side rules do not work for files - use custom verification in validate() instead
              return true;
          }
  
          $errors = array();
          $filenames = array();
  
          // now check that we really want each file
          foreach ($_FILES as $elname=>$file) {
              $required = $this->_form->isElementRequired($elname);
  
              if ($file['error'] == 4 and $file['size'] == 0) {
                  if ($required) {
                      $errors[$elname] = get_string('required');
                  }
                  unset($_FILES[$elname]);
                  continue;
              }
  
              if (!empty($file['error'])) {
                  $errors[$elname] = file_get_upload_error($file['error']);
                  unset($_FILES[$elname]);
                  continue;
              }
  
              if (!is_uploaded_file($file['tmp_name'])) {
                  // TODO: improve error message
                  $errors[$elname] = get_string('error');
                  unset($_FILES[$elname]);
                  continue;
              }
  
              if (!$this->_form->elementExists($elname) or !$this->_form->getElementType($elname)=='file') {
                  // hmm, this file was not requested
                  unset($_FILES[$elname]);
                  continue;
              }
  
              // NOTE: the viruses are scanned in file picker, no need to deal with them here.
  
              $filename = clean_param($_FILES[$elname]['name'], PARAM_FILE);
              if ($filename === '') {
                  // TODO: improve error message - wrong chars
                  $errors[$elname] = get_string('error');
                  unset($_FILES[$elname]);
                  continue;
              }
              if (in_array($filename, $filenames)) {
                  // TODO: improve error message - duplicate name
                  $errors[$elname] = get_string('error');
                  unset($_FILES[$elname]);
                  continue;
              }
              $filenames[] = $filename;
              $_FILES[$elname]['name'] = $filename;
  
              $files[$elname] = $_FILES[$elname]['tmp_name'];
          }
  
          // return errors if found
          if (count($errors) == 0){
              return true;
  
          } else {
              $files = array();
              return $errors;
          }
      }
code_tokens: function _validate_files ( & $ files ) { global $ CFG , $ COURSE ; $ files = array ( ) ; if ( empty ( $ _FILES ) ) { // we do not need to do any checks because no files were submitted // note: server side rules do not work for files - use custom verification in validate() instead return true ; } $ errors = array ( ) ; $ filenames = array ( ) ; // now check that we really want each file foreach ( $ _FILES as $ elname => $ file ) { $ required = $ this -> _form -> isElementRequired ( $ elname ) ; if ( $ file [ 'error' ] == 4 and $ file [ 'size' ] == 0 ) { if ( $ required ) { $ errors [ $ elname ] = get_string ( 'required' ) ; } unset ( $ _FILES [ $ elname ] ) ; continue ; } if ( ! empty ( $ file [ 'error' ] ) ) { $ errors [ $ elname ] = file_get_upload_error ( $ file [ 'error' ] ) ; unset ( $ _FILES [ $ elname ] ) ; continue ; } if ( ! is_uploaded_file ( $ file [ 'tmp_name' ] ) ) { // TODO: improve error message $ errors [ $ elname ] = get_string ( 'error' ) ; unset ( $ _FILES [ $ elname ] ) ; continue ; } if ( ! $ this -> _form -> elementExists ( $ elname ) or ! $ this -> _form -> getElementType ( $ elname ) == 'file' ) { // hmm, this file was not requested unset ( $ _FILES [ $ elname ] ) ; continue ; } // NOTE: the viruses are scanned in file picker, no need to deal with them here. $ filename = clean_param ( $ _FILES [ $ elname ] [ 'name' ] , PARAM_FILE ) ; if ( $ filename === '' ) { // TODO: improve error message - wrong chars $ errors [ $ elname ] = get_string ( 'error' ) ; unset ( $ _FILES [ $ elname ] ) ; continue ; } if ( in_array ( $ filename , $ filenames ) ) { // TODO: improve error message - duplicate name $ errors [ $ elname ] = get_string ( 'error' ) ; unset ( $ _FILES [ $ elname ] ) ; continue ; } $ filenames [ ] = $ filename ; $ _FILES [ $ elname ] [ 'name' ] = $ filename ; $ files [ $ elname ] = $ _FILES [ $ elname ] [ 'tmp_name' ] ; } // return errors if found if ( count ( $ errors ) == 0 ) { return true ; } else { $ files = array ( ) ; return $ errors ; } }
docstring: Internal method. Validates all old-style deprecated uploaded files.
  The new way is to upload files via repository api.
  
  @param array $files list of files to be validated
  @return bool|array Success or an array of errors
docstring_tokens: Internal method . Validates all old - style deprecated uploaded files . The new way is to upload files via repository api .