Skip to content

Commit 6f7993c

Browse files
author
Vladimir Mikhav
committed
fix: fix query grouping
1 parent 1d849ab commit 6f7993c

File tree

1 file changed

+19
-20
lines changed

1 file changed

+19
-20
lines changed

src/Model/Behaviour/FileRelations.php

+19-20
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ trait FileRelations
4444
* ],
4545
* ],
4646
* ]
47-
* </code>
47+
* </code>.
4848
*/
4949
private array $defaultParams = [
5050
'limit' => 1,
@@ -85,7 +85,7 @@ public function saving(Saving $event)
8585
public function saved(Saved $event)
8686
{
8787
foreach ($this->fileRelations ?? [] as $relationName => $params) {
88-
if (!empty($this->filesCache[$relationName])) {
88+
if (! empty($this->filesCache[$relationName])) {
8989
foreach ($this->filesCache[$relationName] as $file) {
9090
$this->processFile($file, $event->getModel(), $relationName);
9191
if ($params['limit'] === 1) {
@@ -120,7 +120,7 @@ private function validateUserData(array $data, array $params, string $relationNa
120120
}
121121
if ($params['limit'] !== 1) {
122122
foreach ($data as $item) {
123-
if (!is_array($item) || empty($item['id'])) {
123+
if (! is_array($item) || empty($item['id'])) {
124124
throw new BadRequestHttpException(
125125
"Invalid file data, {$relationName} field should contain array of files with id"
126126
);
@@ -154,20 +154,18 @@ private function checkLimitedOrRequired(Saving $event, string $relationName, arr
154154

155155
/**
156156
* @param File[] $files
157-
* @param bool $revert
158-
* @return array
159157
*/
160158
private function filterActiveFiles(array $files, bool $revert = false): array
161159
{
162160
return array_filter(array_map(function (File $file) use ($revert) {
163161
$active = empty($file->deleted_at) && empty($file->delete_it);
164-
return ($active === !$revert) ? $file->id : null;
162+
return ($active === ! $revert) ? $file->id : null;
165163
}, $files));
166164
}
167165

168166
private function processFile(File $file, Model $model, string $relationName): void
169167
{
170-
if (!$this->isAssigned($file, $model, $relationName)) {
168+
if (! $this->isAssigned($file, $model, $relationName)) {
171169
$this->assignFileToModel($file, $model, $relationName);
172170
$this->applyModelSettingsToFile($file, $this->fileRelations[$relationName]);
173171
}
@@ -188,9 +186,9 @@ private function deleteOtherActiveFiles(File $file, Model $model, string $relati
188186

189187
private function isAssigned(File $file, Model $model, string $relationName): bool
190188
{
191-
return $file->fileable_type === get_class($model) &&
192-
$file->fileable_id === $model->getKey() &&
193-
$file->field_name === $relationName;
189+
return $file->fileable_type === get_class($model)
190+
&& $file->fileable_id === $model->getKey()
191+
&& $file->field_name === $relationName;
194192
}
195193

196194
private function assignFileToModel(File $file, Model $model, string $relationName): File
@@ -240,7 +238,7 @@ private function generateImagePresets(File $file, array $params, ConfigInterface
240238

241239
private function processFileActions(File $file): File
242240
{
243-
if (!empty($file->offsetGet('delete_it'))) {
241+
if (! empty($file->offsetGet('delete_it'))) {
244242
$file->deleted_at = Carbon::now();
245243
}
246244

@@ -251,7 +249,7 @@ private function processFileActions(File $file): File
251249
private function applyActionsOnFile(File $file, array $fileData)
252250
{
253251
foreach ($this->extraActions as $action) {
254-
if (!empty($fileData[$action])) {
252+
if (! empty($fileData[$action])) {
255253
$file->offsetSet($action, $fileData[$action]);
256254
}
257255
}
@@ -270,16 +268,19 @@ private function getAllowedFileModel(Saving $event, string $relationName, array
270268

271269
$fileAllowed = function (Builder $query) use ($event, $relationName, $fileAvailableForLink) {
272270
$query
273-
->where('fileable_type', '=', get_class($event->getModel()))
274-
->where('fileable_id', '=', $event->getModel()->getKey())
275-
->where('field_name', '=', $relationName)
271+
->where(function (Builder $q) use ($event, $relationName) {
272+
$q
273+
->where('fileable_type', '=', get_class($event->getModel()))
274+
->where('fileable_id', '=', $event->getModel()->getKey())
275+
->where('field_name', '=', $relationName);
276+
})
276277
->orWhere($fileAvailableForLink);
277278
};
278279

279280
$query = File::where('id', $fileData['id'])->where($fileAllowed);
280281

281282
$mimeTypes = $this->fileRelations[$relationName]['mimeTypes'] ?? null;
282-
if (!empty($mimeTypes) && $mimeTypes != ['*']) {
283+
if (! empty($mimeTypes) && $mimeTypes != ['*']) {
283284
$query->whereIn('mime', $mimeTypes);
284285
}
285286

@@ -294,7 +295,7 @@ private function getAllowedFileModel(Saving $event, string $relationName, array
294295
throw new BadRequestHttpException(
295296
"File {$fileData['id']} can not to be assigned to {$relationName}. " .
296297
'Check you have rights to use this file, ' .
297-
"file not assigned yet and you upload one of following file types: $allowedFileTypes"
298+
"file not assigned yet and you upload one of following file types: {$allowedFileTypes}"
298299
);
299300
}
300301

@@ -315,15 +316,13 @@ private function getAllowedToLinkFileModel(Saving $event, string $relationName,
315316
}
316317
};
317318

318-
$fileAvailableForLink = function (Builder $query) use ($fileOwnOrFree) {
319+
return function (Builder $query) use ($fileOwnOrFree) {
319320
$query
320321
->whereNull('fileable_type')
321322
->whereNull('fileable_id')
322323
->whereNull('field_name')
323324
->where($fileOwnOrFree);
324325
};
325-
326-
return $fileAvailableForLink;
327326
}
328327

329328
private function getAuth(): CoreAuthenticatable|null

0 commit comments

Comments
 (0)