HEX
Server: Apache
System: Linux server1.ariadata.co 4.18.0-553.120.1.el8_10.x86_64 #1 SMP Mon Apr 20 18:04:27 EDT 2026 x86_64
User: nepi (1051)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,show_source,popen,proc_open
Upload Files
File: /home/nepi/file.nepi.ir/app/Http/Controllers/FileEntryTagsController.php
<?php

namespace App\Http\Controllers;

use App\FileEntry;
use Common\Core\BaseController;
use Common\Tags\Tag;
use Illuminate\Support\Facades\Auth;

class FileEntryTagsController extends BaseController
{
    public function index()
    {
        $this->authorize('index', Tag::class);

        $query = request('query');
        $model = app(Tag::class);
        if ($query) {
            $model = $model->search($query);
        }

        $results = $model
            ->take(15)
            ->get()
            ->where('type', 'custom')
            ->where('user_id', Auth::id())
            ->map(fn(Tag $model) => $model->toNormalizedArray())
            ->values();

        return $this->success(['results' => $results]);
    }

    public function sync(FileEntry $fileEntry)
    {
        $this->authorize('update', $fileEntry);

        $tagNames = request('tags', []);

        $tagIds = app(Tag::class)
            ->insertOrRetrieve($tagNames, 'custom', Auth::id())
            ->pluck('id');

        $fileEntry->tags()->sync(
            $tagIds->mapWithKeys(function ($id) {
                return [$id => ['user_id' => Auth::id()]];
            }),
        );

        return $this->success();
    }
}