Skip to content
Snippets Groups Projects
Commit 835adf6c authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

[TASK] Try harder

parent 1cbf3515
No related branches found
No related tags found
No related merge requests found
...@@ -164,17 +164,9 @@ class JoblistController extends ActionController { ...@@ -164,17 +164,9 @@ class JoblistController extends ActionController {
->setTypeConverterOptions(UploadedFileReferenceConverter::class, $uploadConfiguration); ->setTypeConverterOptions(UploadedFileReferenceConverter::class, $uploadConfiguration);
$propertyMappingConfiguration->forProperty('cv') $propertyMappingConfiguration->forProperty('cv')
->setTypeConverterOptions(UploadedFileReferenceConverter::class, $uploadConfiguration); ->setTypeConverterOptions(UploadedFileReferenceConverter::class, $uploadConfiguration);
$propertyMappingConfiguration->forProperty('certificates') $propertyMappingConfiguration->forProperty('certificates.0')
->setTypeConverterOptions(UploadedFileReferenceConverter::class, $uploadConfiguration); ->setTypeConverterOptions(UploadedFileReferenceConverter::class, $uploadConfiguration);
// try {
// $this->handleFileUpload('coverLetter', $uniqueFolderName);
// $this->handleFileUpload('cv', $uniqueFolderName);
// $this->handleFileUpload('certificates', $uniqueFolderName);
// } catch (\Exception $exception) {
// $this->redirect('applyForm', NULL, NULL, ['error' => $exception->getMessage()]);
// }
$uploadedFiles = $this->getExistingApplicationFiles($uniqueFolderName); $uploadedFiles = $this->getExistingApplicationFiles($uniqueFolderName);
$this->request->setArgument('uploadedFiles', $uploadedFiles); $this->request->setArgument('uploadedFiles', $uploadedFiles);
$this->request->setArgument('folderName', $uniqueFolderName); $this->request->setArgument('folderName', $uniqueFolderName);
......
...@@ -108,14 +108,14 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter { ...@@ -108,14 +108,14 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
* Actually convert from $source to $targetType, taking into account the fully * Actually convert from $source to $targetType, taking into account the fully
* built $convertedChildProperties and $configuration. * built $convertedChildProperties and $configuration.
* *
* @param string|int $source * @param array $source
* @param string $targetType * @param string $targetType
* @param array $convertedChildProperties * @param array $convertedChildProperties
* @param \TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationInterface $configuration * @param \TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationInterface $configuration
* @return null|\TYPO3\CMS\Core\Resource\FileInterface|FileReference|Error
* @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidHashException * @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidHashException
* @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException * @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException
* @throws \TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException * @throws \TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException
* @return \TYPO3\CMS\Extbase\Domain\Model\AbstractFileFolder
* @api * @api
* @throws \TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException * @throws \TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException
*/ */
...@@ -165,7 +165,9 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter { ...@@ -165,7 +165,9 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
} }
try { try {
$resource = $this->importUploadedResource($source, $configuration); if ($configuration) {
$resource = $this->importUploadedResource($source, $configuration);
}
} catch (\Exception $e) { } catch (\Exception $e) {
return new Error($e->getMessage(), $e->getCode()); return new Error($e->getMessage(), $e->getCode());
} }
...@@ -184,7 +186,8 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter { ...@@ -184,7 +186,8 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
* @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException * @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException
* @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidHashException * @throws \TYPO3\CMS\Extbase\Security\Exception\InvalidHashException
*/ */
protected function importUploadedResource(array $uploadInfo, PropertyMappingConfigurationInterface $configuration) { protected function importUploadedResource(array $uploadInfo, PropertyMappingConfigurationInterface $configuration
): FileReference {
if (!GeneralUtility::verifyFilenameAgainstDenyPattern($uploadInfo['name'])) { if (!GeneralUtility::verifyFilenameAgainstDenyPattern($uploadInfo['name'])) {
throw new TypeConverterException('Uploading files with PHP file extensions is not allowed!', 1399312430); throw new TypeConverterException('Uploading files with PHP file extensions is not allowed!', 1399312430);
} }
...@@ -204,9 +207,7 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter { ...@@ -204,9 +207,7 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
$uploadFolderId = $configuration->getConfigurationValue( $uploadFolderId = $configuration->getConfigurationValue(
UploadedFileReferenceConverter::class, self::CONFIGURATION_UPLOAD_FOLDER UploadedFileReferenceConverter::class, self::CONFIGURATION_UPLOAD_FOLDER
) ?: $this->defaultUploadFolder; ) ?: $this->defaultUploadFolder;
if (class_exists(DuplicationBehavior::class)) { $defaultConflictMode = DuplicationBehavior::RENAME;
$defaultConflictMode = \TYPO3\CMS\Core\Resource\DuplicationBehavior::RENAME;
}
$conflictMode = $configuration->getConfigurationValue( $conflictMode = $configuration->getConfigurationValue(
UploadedFileReferenceConverter::class, self::CONFIGURATION_UPLOAD_CONFLICT_MODE UploadedFileReferenceConverter::class, self::CONFIGURATION_UPLOAD_CONFLICT_MODE
...@@ -230,7 +231,8 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter { ...@@ -230,7 +231,8 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
* @param int $resourcePointer * @param int $resourcePointer
* @return \SGalinski\SgJobs\Domain\Model\FileReference * @return \SGalinski\SgJobs\Domain\Model\FileReference
*/ */
protected function createFileReferenceFromFalFileObject(FalFile $file, $resourcePointer = NULL) { protected function createFileReferenceFromFalFileObject(FalFile $file, $resourcePointer = NULL
): \SGalinski\SgJobs\Domain\Model\FileReference {
$fileReference = $this->resourceFactory->createFileReferenceObject( $fileReference = $this->resourceFactory->createFileReferenceObject(
[ [
'uid_local' => $file->getUid(), 'uid_local' => $file->getUid(),
...@@ -251,6 +253,7 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter { ...@@ -251,6 +253,7 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
FalFileReference $falFileReference, $resourcePointer = NULL FalFileReference $falFileReference, $resourcePointer = NULL
) { ) {
if ($resourcePointer === NULL) { if ($resourcePointer === NULL) {
/** @var \SGalinski\SgJobs\Domain\Model\FileReference $fileReference */
$fileReference = $this->objectManager->get(FileReference::class); $fileReference = $this->objectManager->get(FileReference::class);
} else { } else {
$fileReference = $this->persistenceManager->getObjectByIdentifier( $fileReference = $this->persistenceManager->getObjectByIdentifier(
......
...@@ -164,7 +164,7 @@ ...@@ -164,7 +164,7 @@
<p> <p>
<label for="apply-email"><f:translate key="frontend.apply.email" /></label> <label for="apply-email"><f:translate key="frontend.apply.email" /></label>
<f:form.textfield type="email" property="email" id="apply-email" data="{}" /> <f:form.textfield type="email" property="email" id="apply-email" />
<f:form.validationResults for="applyData.email"> <f:form.validationResults for="applyData.email">
<f:for each="{validationResults.errors}" as="error"> <f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error"> <div class="sg-jobs-validation-error">
...@@ -229,6 +229,13 @@ ...@@ -229,6 +229,13 @@
<a href="#" filetype="certificates" class="remove-file">(remove)</a> <a href="#" filetype="certificates" class="remove-file">(remove)</a>
</div> </div>
</f:for> </f:for>
<f:form.validationResults for="applyData.certificates">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p> </p>
<p> <p>
......
config.tx_extbase {
persistence {
classes {
SGalinski\SgJobs\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
}
}
}
}
}
objects {
TYPO3\CMS\Extbase\Domain\Model\FileReference.className = SGalinski\SgJobs\Domain\Model\FileReference
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment