|
7 | 7 | use Illuminate\Database\Eloquent\Model; |
8 | 8 | use Illuminate\Support\Collection; |
9 | 9 | use Illuminate\Support\Facades\Storage; |
| 10 | +use Illuminate\Support\Str; |
10 | 11 |
|
11 | 12 | trait HandleRepeatableUploads |
12 | 13 | { |
@@ -91,6 +92,20 @@ private function retrieveRepeatableFiles(Model $entry): Model |
91 | 92 | return $this->retrieveFiles($entry); |
92 | 93 | } |
93 | 94 |
|
| 95 | + $repeatableUploaders = app('UploadersRepository')->getRepeatableUploadersFor($this->getRepeatableContainerName()); |
| 96 | + |
| 97 | + $values = $entry->{$this->getRepeatableContainerName()}; |
| 98 | + $values = is_string($values) ? json_decode($values, true) : $values; |
| 99 | + $values = array_map(function ($item) use ($repeatableUploaders) { |
| 100 | + foreach ($repeatableUploaders as $upload) { |
| 101 | + $item[$upload->getName()] = $this->getValuesWithPathStripped($item, $upload); |
| 102 | + } |
| 103 | + |
| 104 | + return $item; |
| 105 | + }, $values); |
| 106 | + |
| 107 | + $entry->{$this->getRepeatableContainerName()} = $values; |
| 108 | + |
94 | 109 | return $entry; |
95 | 110 | } |
96 | 111 |
|
@@ -172,4 +187,16 @@ private function getPreviousRepeatableValues(Model $entry, UploaderInterface $up |
172 | 187 |
|
173 | 188 | return $previousValues ?? []; |
174 | 189 | } |
| 190 | + |
| 191 | + private function getValuesWithPathStripped(array|string|null $item, UploaderInterface $upload) |
| 192 | + { |
| 193 | + $uploadedValues = $item[$upload->getName()] ?? null; |
| 194 | + if (is_array($uploadedValues)) { |
| 195 | + return array_map(function ($value) use ($upload) { |
| 196 | + return Str::after($value, $upload->getPath()); |
| 197 | + }, $uploadedValues); |
| 198 | + } |
| 199 | + |
| 200 | + return isset($uploadedValues) ? Str::after($uploadedValues, $upload->getPath()) : null; |
| 201 | + } |
175 | 202 | } |
0 commit comments