HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
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: //home/marketing.cfbon.ru/public_html/app/Http/Controllers/Profile/SocialNetworkController.php
<?php

namespace App\Http\Controllers\Profile;

use App\Http\Controllers\Controller;
use App\Http\Requests\Profile\SocialNetworkRequest;
use App\Models\ProfileInfo;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;

class SocialNetworkController extends Controller
{
    public function create() : View
    {
        return view('profile.social-networks.create');
    }
    public function store(SocialNetworkRequest $request) : RedirectResponse
    {
        $optionData = ProfileInfo::getOption('social_networks');
        $requestData = $request->validated();

        $socialNetworks = $optionData ? json_decode($optionData->value, true) : [];
        $socialNetworks[$this->getNewId($socialNetworks)] =
            [
                'id' => $this->getNewId($socialNetworks),
                'label' => $requestData['label'],
                'link' => $requestData['link'],
            ];

        if ($optionData) {
            $optionData->update(['value' => json_encode($socialNetworks, JSON_UNESCAPED_UNICODE)]);
        } else {
            ProfileInfo::create([
                'title' => 'social_networks',
                'value' => json_encode($socialNetworks, JSON_UNESCAPED_UNICODE),
            ]);
        }

        return redirect()->route('profile.index')->with('success', 'Запись добавлена');

    }
    public function edit(string $id)
    {
        $optionData = json_decode(ProfileInfo::getOption('social_networks')->value, true);

        return view('profile.social-networks.edit', ['network' => (object)$optionData[$id]]);
    }
    public function update(SocialNetworkRequest $request, string $id)
    {
        $requestData = $request->validated();
        $optionData = ProfileInfo::getOption('social_networks');

        $socialNetworks = json_decode($optionData->value, true);
        $socialNetworks[$id] =
            [
                'id' => $id,
                'label' => $requestData['label'],
                'link' => $requestData['link'],
            ];
        $optionData->update(['value' => json_encode($socialNetworks, JSON_UNESCAPED_UNICODE)]);

        return redirect()->back()->with('success', 'Запись изменена');
    }
    public function destroy(string $id)
    {
        $optionData = ProfileInfo::getOption('social_networks');
        $socialNetworks = json_decode($optionData?->value, true) ?? [];

        if ($socialNetworks[$id]) unset($socialNetworks[$id]);
        $optionData->update(['value' => json_encode($socialNetworks, JSON_UNESCAPED_UNICODE)]);

        return redirect()->route('profile.index')->with('success', 'Запись удалена');
    }
    private function getNewId(array $data) : int
    {
        return count($data) > 0 ? max(array_column($data, 'id')) + 1 : 1;
    }
}