Skip to content
Snippets Groups Projects
Commit c2d4f310 authored by Kevin von Spiczak's avatar Kevin von Spiczak
Browse files

[TASK] automatically create JobApplication & temp folder, refactor

parent 7dc470ab
No related branches found
No related tags found
1 merge request!43Bugfix 4458 mail pid
...@@ -4,7 +4,9 @@ namespace SGalinski\SgJobs\Controller\Ajax; ...@@ -4,7 +4,9 @@ namespace SGalinski\SgJobs\Controller\Ajax;
use SGalinski\SgAjax\Controller\Ajax\AbstractAjaxController; use SGalinski\SgAjax\Controller\Ajax\AbstractAjaxController;
use SGalinski\SgJobs\Service\FileAndFolderService; use SGalinski\SgJobs\Service\FileAndFolderService;
use TusPhp\File;
use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Core\Environment;
use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderAccessPermissionsException;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
/*************************************************************** /***************************************************************
...@@ -35,7 +37,21 @@ use TYPO3\CMS\Core\Utility\GeneralUtility; ...@@ -35,7 +37,21 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
* Uploads for the applicationForm * Uploads for the applicationForm
*/ */
class UploadController extends AbstractAjaxController { class UploadController extends AbstractAjaxController {
public const TYPO3_TMP_FOLDER = '/JobApplication/temp/'; public const JOB_APPLICATION_FOLDER = 'JobApplication';
public const JOB_APPLICATION_TEMP_FOLDER = 'temp';
/**
* @var FileAndFolderService
*/
protected FileAndFolderService $fileAndFolderService;
/**
* @param FileAndFolderService $fileAndFolderService
* @return void
*/
public function injectFileAndFolderService(FileAndFolderService $fileAndFolderService): void {
$this->fileAndFolderService = $fileAndFolderService;
}
/** /**
* Returns the calculated max file size. * Returns the calculated max file size.
...@@ -56,10 +72,8 @@ class UploadController extends AbstractAjaxController { ...@@ -56,10 +72,8 @@ class UploadController extends AbstractAjaxController {
* Uploads a new coverletter. * Uploads a new coverletter.
* *
* @return void * @return void
* @throws \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
* @throws \InvalidArgumentException
*/ */
public function uploadCoverletterAction() { public function uploadCoverletterAction(): void {
$this->handleAnyDropZoneUpload(); $this->handleAnyDropZoneUpload();
} }
...@@ -67,10 +81,8 @@ class UploadController extends AbstractAjaxController { ...@@ -67,10 +81,8 @@ class UploadController extends AbstractAjaxController {
* Uploads a new cd. * Uploads a new cd.
* *
* @return void * @return void
* @throws \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
* @throws \InvalidArgumentException
*/ */
public function uploadCvAction() { public function uploadCvAction(): void {
$this->handleAnyDropZoneUpload(); $this->handleAnyDropZoneUpload();
} }
...@@ -78,10 +90,8 @@ class UploadController extends AbstractAjaxController { ...@@ -78,10 +90,8 @@ class UploadController extends AbstractAjaxController {
* Uploads a new cd. * Uploads a new cd.
* *
* @return void * @return void
* @throws \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
* @throws \InvalidArgumentException
*/ */
public function uploadCertificateAction() { public function uploadCertificateAction(): void {
$this->handleAnyDropZoneUpload(); $this->handleAnyDropZoneUpload();
} }
...@@ -90,26 +100,33 @@ class UploadController extends AbstractAjaxController { ...@@ -90,26 +100,33 @@ class UploadController extends AbstractAjaxController {
* *
* @return void * @return void
*/ */
private function handleAnyDropZoneUpload() { private function handleAnyDropZoneUpload(): void {
$success = FALSE; $success = FALSE;
$filePath = ''; $filePath = '';
if (\count($_FILES) > 0) { if (\count($_FILES) > 0) {
$firstFile = current($_FILES); $firstFile = current($_FILES);
$pathInfo = pathinfo($firstFile['name']); $pathInfo = pathinfo($firstFile['name']);
$fileAndFolderService = $this->objectManager->get(FileAndFolderService::class); $storage = $this->fileAndFolderService->getStorage();
$storage = $fileAndFolderService->getStorage();
$fileName = $storage->sanitizeFileName( $fileName = $storage->sanitizeFileName(
strtolower( strtolower(
str_replace(' ', '_', trim($pathInfo['filename'] . '.' . strtolower($pathInfo['extension']))) str_replace(' ', '_', trim($pathInfo['filename'] . '.' . strtolower($pathInfo['extension'])))
) )
); );
$folder = $storage->getFolder('JobApplication'); // if job application folder is not existing, create it
if (!$storage->hasFolder(self::JOB_APPLICATION_FOLDER)) {
$folder = $storage->createFolder(self::JOB_APPLICATION_FOLDER);
} else {
$folder = $storage->getFolder(self::JOB_APPLICATION_FOLDER);
}
// if temp folder is not existing, create one // if temp folder is not existing, create one
if (!$storage->hasFolderInFolder('temp', $folder)) { if (!$storage->hasFolderInFolder('temp', $folder)) {
$tempFolder = $storage->createFolder('temp', $folder); $storage->createFolder('temp', $folder);
} }
$filePath = Environment::getPublicPath() . '/fileadmin/' . self::TYPO3_TMP_FOLDER . $fileName; $filePath = Environment::getPublicPath() . '/fileadmin/' .
self::JOB_APPLICATION_FOLDER . DIRECTORY_SEPARATOR .
self::JOB_APPLICATION_TEMP_FOLDER . DIRECTORY_SEPARATOR . $fileName;
$tempFilePath = $firstFile['tmp_name']; $tempFilePath = $firstFile['tmp_name'];
$success = GeneralUtility::upload_copy_move($tempFilePath, $filePath); $success = GeneralUtility::upload_copy_move($tempFilePath, $filePath);
} }
......
...@@ -28,6 +28,7 @@ namespace SGalinski\SgJobs\Controller; ...@@ -28,6 +28,7 @@ namespace SGalinski\SgJobs\Controller;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use SGalinski\ProjectBase\Domain\Repository\CountryRepository; use SGalinski\ProjectBase\Domain\Repository\CountryRepository;
use SGalinski\SgJobs\Controller\Ajax\UploadController;
use SGalinski\SgJobs\Domain\Model\Company; use SGalinski\SgJobs\Domain\Model\Company;
use SGalinski\SgJobs\Domain\Model\Job; use SGalinski\SgJobs\Domain\Model\Job;
use SGalinski\SgJobs\Domain\Model\JobApplication; use SGalinski\SgJobs\Domain\Model\JobApplication;
...@@ -700,16 +701,16 @@ class JoblistController extends ActionController { ...@@ -700,16 +701,16 @@ class JoblistController extends ActionController {
$allowedFileExtensions = $this->getAllowedFileExtensions(); $allowedFileExtensions = $this->getAllowedFileExtensions();
/** @var ResourceFactory $resourceFactory */ /** @var ResourceFactory $resourceFactory */
$resourceFactory = $this->objectManager->get(ResourceFactory::class); $resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
$storage = $resourceFactory->getStorageObject(1); $storage = $resourceFactory->getStorageObject(1);
$folder = $storage->getFolder('/JobApplication/'); $folder = $storage->getFolder(UploadController::JOB_APPLICATION_FOLDER);
$tempFolder = $storage->getFolder('/JobApplication/temp'); $tempFolder = $storage->getFolderInFolder(UploadController::JOB_APPLICATION_TEMP_FOLDER, $folder);
if (!$storage->hasFolderInFolder($folderName, $folder)) { if (!$storage->hasFolderInFolder($folderName, $folder)) {
$newFolder = $storage->createFolder($folderName, $folder); $newFolder = $storage->createFolder($folderName, $folder);
} else { } else {
$newFolder = $storage->getFolder('/JobApplication/' . $folderName); $newFolder = $storage->getFolder(UploadController::JOB_APPLICATION_FOLDER . $folderName);
} }
// Move uploaded files & csv fo real folder and delete the tmp folder // Move uploaded files & csv fo real folder and delete the tmp folder
......
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