/
FileUploadSynth.php
66 lines (51 loc) · 1.9 KB
/
FileUploadSynth.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
namespace Livewire\Features\SupportFileUploads;
use Livewire\Mechanisms\HandleComponents\Synthesizers\Synth;
use Illuminate\Http\UploadedFile;
class FileUploadSynth extends Synth {
public static $key = 'fil';
static function match($target) {
return $target instanceof UploadedFile;
}
function dehydrate($target) {
return [$this->dehydratePropertyFromWithFileUploads($target), []];
}
public function dehydratePropertyFromWithFileUploads($value)
{
if (TemporaryUploadedFile::canUnserialize($value)) {
return TemporaryUploadedFile::unserializeFromLivewireRequest($value);
}
if ($value instanceof TemporaryUploadedFile) {
return $value->serializeForLivewireResponse();
}
if (is_array($value) && isset(array_values($value)[0])) {
$isValid = true;
foreach ($value as $key => $arrayValue) {
if (!($arrayValue instanceof TemporaryUploadedFile) || !is_numeric($key)) {
$isValid = false;
break;
}
}
if ($isValid) {
return array_values($value)[0]::serializeMultipleForLivewireResponse($value);
}
}
if (is_array($value)) {
foreach ($value as $key => $item) {
$value[$key] = $this->dehydratePropertyFromWithFileUploads($item);
}
}
if ($value instanceof \Livewire\Wireable) {
$keys = array_keys(get_object_vars($value));
foreach ($keys as $key) {
$value->{$key} = $this->dehydratePropertyFromWithFileUploads($value->{$key});
}
}
return $value;
}
function hydrate($value) {
if (TemporaryUploadedFile::canUnserialize($value)) {
return TemporaryUploadedFile::unserializeFromLivewireRequest($value);
}
}
}