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;
use SGalinski\SgAjax\Controller\Ajax\AbstractAjaxController;
use SGalinski\SgJobs\Service\FileAndFolderService;
use TusPhp\File;
use TYPO3\CMS\Core\Core\Environment;
use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderAccessPermissionsException;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***************************************************************
......@@ -35,7 +37,21 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
* Uploads for the applicationForm
*/
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.
......@@ -56,10 +72,8 @@ class UploadController extends AbstractAjaxController {
* Uploads a new coverletter.
*
* @return void
* @throws \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
* @throws \InvalidArgumentException
*/
public function uploadCoverletterAction() {
public function uploadCoverletterAction(): void {
$this->handleAnyDropZoneUpload();
}
......@@ -67,10 +81,8 @@ class UploadController extends AbstractAjaxController {
* Uploads a new cd.
*
* @return void
* @throws \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
* @throws \InvalidArgumentException
*/
public function uploadCvAction() {
public function uploadCvAction(): void {
$this->handleAnyDropZoneUpload();
}
......@@ -78,10 +90,8 @@ class UploadController extends AbstractAjaxController {
* Uploads a new cd.
*
* @return void
* @throws \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
* @throws \InvalidArgumentException
*/
public function uploadCertificateAction() {
public function uploadCertificateAction(): void {
$this->handleAnyDropZoneUpload();
}
......@@ -90,26 +100,33 @@ class UploadController extends AbstractAjaxController {
*
* @return void
*/
private function handleAnyDropZoneUpload() {
private function handleAnyDropZoneUpload(): void {
$success = FALSE;
$filePath = '';
if (\count($_FILES) > 0) {
$firstFile = current($_FILES);
$pathInfo = pathinfo($firstFile['name']);
$fileAndFolderService = $this->objectManager->get(FileAndFolderService::class);
$storage = $fileAndFolderService->getStorage();
$storage = $this->fileAndFolderService->getStorage();
$fileName = $storage->sanitizeFileName(
strtolower(
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 (!$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'];
$success = GeneralUtility::upload_copy_move($tempFilePath, $filePath);
}
......
......@@ -28,6 +28,7 @@ namespace SGalinski\SgJobs\Controller;
use Psr\Http\Message\ResponseInterface;
use SGalinski\ProjectBase\Domain\Repository\CountryRepository;
use SGalinski\SgJobs\Controller\Ajax\UploadController;
use SGalinski\SgJobs\Domain\Model\Company;
use SGalinski\SgJobs\Domain\Model\Job;
use SGalinski\SgJobs\Domain\Model\JobApplication;
......@@ -700,16 +701,16 @@ class JoblistController extends ActionController {
$allowedFileExtensions = $this->getAllowedFileExtensions();
/** @var ResourceFactory $resourceFactory */
$resourceFactory = $this->objectManager->get(ResourceFactory::class);
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
$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)) {
$newFolder = $storage->createFolder($folderName, $folder);
} 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
......
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