mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-21 13:33:57 +00:00
Update: laravel 8 to 12, php 7.3 to php 8.3, Jenkinsfile, Unit/Feature testing, vapor, docker
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Classes\General\Interfaces\DataTransferObject;
|
||||
use App\Classes\ValueObjects\Constants\FileType;
|
||||
use Illuminate\Support\Str;
|
||||
use Intervention\Image\ImageManager;
|
||||
use Intervention\Image\Drivers\Gd\Driver;
|
||||
|
||||
class FileObject implements DataTransferObject
|
||||
{
|
||||
@@ -28,7 +29,13 @@ class FileObject implements DataTransferObject
|
||||
*/
|
||||
public function getData()
|
||||
{
|
||||
return in_array($this->getExtension(), ['pdf', 'excel', 'text']) ? $this->data : (new imageManager())->make($this->data);
|
||||
// intervention/image v2: old
|
||||
//return in_array($this->getExtension(), ['pdf', 'excel', 'text']) ? $this->data : (new imageManager())->make($this->data);
|
||||
|
||||
// intervention/image v3: new
|
||||
return in_array($this->getExtension(), ['pdf', 'excel', 'text'])
|
||||
? $this->data
|
||||
: (new ImageManager(new Driver()))->read($this->data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,7 +60,7 @@ class FileObject implements DataTransferObject
|
||||
*/
|
||||
public function getExtension(): string
|
||||
{
|
||||
if(array_key_exists($this->getMimeType(), FileType::EXTENSION)){
|
||||
if (array_key_exists($this->getMimeType(), FileType::EXTENSION)) {
|
||||
return FileType::EXTENSION[$this->getMimeType()];
|
||||
}
|
||||
|
||||
@@ -66,9 +73,10 @@ class FileObject implements DataTransferObject
|
||||
*/
|
||||
public function getDecodedData(): string
|
||||
{
|
||||
// intervention/image v3: Use encode()->toDataUri() instead of encode('data-url')->encoded
|
||||
return in_array($this->getExtension(), ['pdf', 'excel', 'text']) ?
|
||||
base64_decode((explode('base64,', $this->getData()))[1]):
|
||||
$this->getData()->encode('data-url')->encoded;
|
||||
base64_decode((explode('base64,', $this->getData()))[1]) :
|
||||
$this->getData()->encode()->toDataUri();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,7 +32,8 @@ class ConvertsBase64ToFile
|
||||
* @return array
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function convert($files = []){
|
||||
public function convert($files = [])
|
||||
{
|
||||
foreach ($files as $file) {
|
||||
|
||||
$object = new FileObject($file);
|
||||
@@ -48,41 +49,47 @@ class ConvertsBase64ToFile
|
||||
* @param FileObject $file
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function generatePDF(FileObject $file){
|
||||
private function generatePDF(FileObject $file)
|
||||
{
|
||||
|
||||
$filePath = $this->generateFile($file);
|
||||
$this->updateFiles($file, [ 'original' => [ 'file' => $filePath ] ]);
|
||||
$this->updateFiles($file, ['original' => ['file' => $filePath]]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $file
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function generateImage(FileObject $file){
|
||||
private function generateImage(FileObject $file)
|
||||
{
|
||||
|
||||
$fileInfo = [];
|
||||
|
||||
foreach (['original' => null, 'large' => 800, 'medium' => 480, 'small' => 320] as $size => $value) {
|
||||
$suffix = $size !== 'original' ? '_'.$size : '';
|
||||
$suffix = $size !== 'original' ? '_' . $size : '';
|
||||
|
||||
if($size !== 'original') {
|
||||
$thumbnail = $file->getData()->widen($value, function ($constraint) {
|
||||
if ($size !== 'original') {
|
||||
// intervention/image v2: old
|
||||
// $thumbnail = $file->getData()->widen($value, function ($constraint) {
|
||||
// $constraint->upsize();
|
||||
// })->heighten($value, function ($constraint) {
|
||||
// $constraint->upsize();
|
||||
// });
|
||||
// $file->setData($thumbnail->encode('data-url')->encoded);
|
||||
|
||||
$constraint->upsize();
|
||||
|
||||
})->heighten($value, function ($constraint) {
|
||||
// intervention/image v3: Use scaleDown() instead of widen()/heighten()
|
||||
// scaleDown() maintains aspect ratio and prevents upsizing by default
|
||||
$thumbnail = $file->getData()->scaleDown(width: $value, height: $value);
|
||||
|
||||
$constraint->upsize();
|
||||
|
||||
});
|
||||
|
||||
$file->setData($thumbnail->encode('data-url')->encoded);
|
||||
// intervention/image v3: Use encode()->toDataUri() instead of encode('data-url')->encoded
|
||||
$file->setData($thumbnail->encode()->toDataUri());
|
||||
}
|
||||
|
||||
|
||||
$filePath = $this->generateFile($file, $suffix);
|
||||
|
||||
$fileInfo[] = [ $size => [ 'file' => $filePath, 'width' => $file->getData()->width(), 'height' => $file->getData()->height() ]];
|
||||
$fileInfo[] = [$size => ['file' => $filePath, 'width' => $file->getData()->width(), 'height' => $file->getData()->height()]];
|
||||
|
||||
|
||||
}
|
||||
@@ -97,16 +104,16 @@ class ConvertsBase64ToFile
|
||||
* @return string
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function generateFile(FileObject $file, string $suffix = '') {
|
||||
private function generateFile(FileObject $file, string $suffix = '')
|
||||
{
|
||||
|
||||
$filesystemDriver = Storage::getDefaultDriver();
|
||||
if($filesystemDriver === 's3'){
|
||||
$filePath = 'documents/'.$this->path.'/'.$file->getFileName().$suffix.'.'.$file->getExtension();
|
||||
if ($filesystemDriver === 's3') {
|
||||
$filePath = 'documents/' . $this->path . '/' . $file->getFileName() . $suffix . '.' . $file->getExtension();
|
||||
Storage::put($filePath, $file->getDecodedData(), 's3');
|
||||
return $filePath;
|
||||
}
|
||||
else{
|
||||
$filePath = $this->path.'/'.$file->getFileName().$suffix.'.'.$file->getExtension();
|
||||
} else {
|
||||
$filePath = $this->path . '/' . $file->getFileName() . $suffix . '.' . $file->getExtension();
|
||||
Storage::disk('documents')->put($filePath, $file->getDecodedData());
|
||||
return $filePath;
|
||||
}
|
||||
@@ -117,10 +124,11 @@ class ConvertsBase64ToFile
|
||||
* @param array $fileInfo
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function updateFiles(FileObject $file, array $fileInfo){
|
||||
private function updateFiles(FileObject $file, array $fileInfo)
|
||||
{
|
||||
$this->filesInfo[] = json_encode([
|
||||
'path' => $this->path,
|
||||
'filename' => $file->getFileName().'.'.$file->getExtension(),
|
||||
'filename' => $file->getFileName() . '.' . $file->getExtension(),
|
||||
'mime_type' => $file->getMimeType(),
|
||||
'extension' => $file->getExtension(),
|
||||
'file_info' => $fileInfo
|
||||
|
||||
@@ -19,14 +19,19 @@ class CreatesFiles extends AbstractUpdateRelationshipRecord
|
||||
{
|
||||
$models = [];
|
||||
|
||||
// foreach ($object->getFiles() as $file) {
|
||||
// $model = new File(['file' => $file]);
|
||||
// $models[] = $this->handler($document->files(), $model);
|
||||
// }
|
||||
|
||||
foreach ($object->getFiles() as $file) {
|
||||
|
||||
$model = new File(['file' => $file]);
|
||||
$fileData = is_string($file) ? json_decode($file, true) : $file;
|
||||
$model = new File(['file' => $fileData]);
|
||||
$models[] = $this->handler($document->files(), $model);
|
||||
|
||||
}
|
||||
|
||||
return $models;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user