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;
        }
    }
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;
        }
    }
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 ; } }
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
Internal method . Validates all old - style deprecated uploaded files . The new way is to upload files via repository api .