HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/limestate-admin/app/Repositories/ElasticRepository.php
<?php

declare(strict_types=1);

namespace App\Repositories;

use App\Collections\AttachmentThumbCollection;
use App\Models\Attachment\AttachmentThumb;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;

class ElasticRepository
{

    public static function getAllAttachments(Model $entity): Collection
    {
        /** @var Collection $attachments */
        $attachments = $entity->attachment;
        if (!empty($entity->plan_id ?? null) && !empty($entity->plan)) {
            $attachments = $attachments->add($entity->plan);
        }

        return $attachments;
    }

    public static function fillGallery(Collection $attachments, array &$data, ?int $planId = null, bool $skipPlan = false): void
    {
        $attachmentsIds = $attachments->map(fn($attachment) => $attachment->id)->toArray();

        $attachmentsThumbs = [];
        if (!empty($attachmentsIds)) {
            $attachmentsThumbsByAttachmentId = [];
            /** @var AttachmentThumbCollection $attachmentsThumbs */
            $attachmentsThumbs = AttachmentThumb::query()->whereIn('attachment_id', $attachmentsIds)->get();
            foreach ($attachmentsThumbs as $attachmentThumb) {
                $attachmentsThumbsByAttachmentId[$attachmentThumb->attachment_id][$attachmentThumb->type] = $attachmentThumb;
            }
            $attachmentsThumbs = $attachmentsThumbsByAttachmentId;
        }

        foreach ($attachments as $attachment) {
            if ($skipPlan && $attachment->id == $planId) {
                continue;
            }

            $url = $attachment?->url();
            if (empty($url)) {
                continue;
            }

            /** @var AttachmentThumb $attachmentsThumb */
            $attachmentsThumb = $attachmentsThumbs[$attachment->id] ?? null;

            if (isset($planId) && $attachment->id == $planId) {
                $data['plan'] = $url;
                $data['plan_thumb'] = empty($attachmentsThumb['medium_large']) ? null : $attachmentsThumb['medium_large']->url() ?? '';
            } else {
                $data['gallery'][] = ['url' => $url];
                if (empty($attachmentsThumb)) {
                    $data['gallery_thumbs'][] = [];
                    $data['full_thumbs'][] = [];
                } else {
                    $data['gallery_thumbs'][] = ['url' => $attachmentsThumb['medium_large']?->url() ?? ''];
                    $data['full_thumbs'][] = [
                        'thumbnail' => $attachmentsThumb['thumbnail']?->url() ?? '',
                        'medium' => $attachmentsThumb['medium']?->url() ?? '',
                        'medium_large' => $attachmentsThumb['medium_large']?->url() ?? '',
                        'large' => $attachmentsThumb['large']?->url() ?? '',
                        'origin' => $url,
                    ];
                }
            }
        }
    }

}