public function validate($validator)
 {
     if (!isset($_FILES[$this->name])) {
         return true;
     }
     $tmpFile = $_FILES[$this->name];
     $valid = $this->upload->validate($tmpFile);
     if (!$valid) {
         $errors = $this->upload->getErrors();
         if ($errors) {
             foreach ($errors as $error) {
                 $validator->validationError($this->name, $error, "validation");
             }
         }
         return false;
     }
     return true;
 }
 public function testPHPUploadErrors()
 {
     $configMaxFileSizes = ['*' => '1k'];
     Config::inst()->update('SilverStripe\\Assets\\Upload_Validator', 'default_max_file_size', $configMaxFileSizes);
     // create tmp file
     $tmpFileName = 'myfile.jpg';
     $tmpFilePath = TEMP_FOLDER . '/' . $tmpFileName;
     $tmpFileContent = '';
     for ($i = 0; $i < 100; $i++) {
         $tmpFileContent .= '0';
     }
     file_put_contents($tmpFilePath, $tmpFileContent);
     // Build file
     $upload = new Upload();
     $tmpFile = array('name' => $tmpFileName, 'type' => '', 'tmp_name' => $tmpFilePath, 'size' => filesize($tmpFilePath), 'error' => UPLOAD_ERR_OK);
     // Test ok
     $this->assertTrue($upload->validate($tmpFile));
     // Test zero size file
     $upload->clearErrors();
     $tmpFile['size'] = 0;
     $this->assertFalse($upload->validate($tmpFile));
     $this->assertContains(_t('File.NOFILESIZE', 'Filesize is zero bytes.'), $upload->getErrors());
     // Test file too large
     $upload->clearErrors();
     $tmpFile['error'] = UPLOAD_ERR_INI_SIZE;
     $this->assertFalse($upload->validate($tmpFile));
     $this->assertContains(_t('File.TOOLARGE', 'Filesize is too large, maximum {size} allowed', 'Argument 1: Filesize (e.g. 1MB)', array('size' => '1 KB')), $upload->getErrors());
     // Test form size
     $upload->clearErrors();
     $tmpFile['error'] = UPLOAD_ERR_FORM_SIZE;
     $this->assertFalse($upload->validate($tmpFile));
     $this->assertContains(_t('File.TOOLARGE', 'Filesize is too large, maximum {size} allowed', 'Argument 1: Filesize (e.g. 1MB)', array('size' => '1 KB')), $upload->getErrors());
     // Test no file
     $upload->clearErrors();
     $tmpFile['error'] = UPLOAD_ERR_NO_FILE;
     $this->assertFalse($upload->validate($tmpFile));
     $this->assertContains(_t('File.NOVALIDUPLOAD', 'File is not a valid upload'), $upload->getErrors());
 }