PHP 8.3.30
Preview: SettingController.php Size: 8.60 KB
/home/getspomw/royalsquad.us/app/Http/Controllers/SettingController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;
use App\Models\Setting;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;

class SettingController extends Controller
{
    /**
     * Display the settings index page.
     *
     * @return \Illuminate\View\View
     */


    public function index()
    {
        $descriptionsettings = Setting::where('type', 'like', 'description_%')->get();
        $titlesettings = Setting::where('type', 'like', 'title_%')->get();
        $keywordsettings = Setting::where('type', 'like', 'keyword_%')->get();

        $contact = Setting::all();
        $sett = Setting::where('type', 'like', 'fields%')
            ->orWhere('type', 'like', 'links%')
            ->get();

        return view("admin.setting.index", compact('descriptionsettings', 'titlesettings', 'keywordsettings', 'sett', 'contact'));
    }

    /**
     * Handle image upload and save metadata.
     *
     * @param \Illuminate\Http\UploadedFile $file
     * @return int
     */
    protected function handleImage($file)
    {
        $arr = explode('.', $file->getClientOriginalName());

        $upload = new Upload();
        $upload->file_original_name = $arr[0];
        $upload->file_name = $file->store('images', 'public');
        $upload->user_id = auth()->id();
        $upload->extension = $file->getClientOriginalExtension();
        $upload->type = 'image';
        $upload->file_size = $file->getSize();
        $upload->save();

        return $upload->id;
    }

    /**
     * Check if the field is an image field.
     *
     * @param string $fieldName
     * @param \Illuminate\Http\Request $request
     * @return bool
     */
    protected function isImageField($fieldName, $request)
    {
        $imageFields = ['header_logo', 'footer_logo', 'user_image', 'profile_image', 'testimonial_image'];
        return in_array($fieldName, $imageFields) && $request->hasFile($fieldName);
    }

    /**
     * Update settings based on request data.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function update(Request $request)
    {
        foreach ($request->types as $key => $type) {
            if ($type == 'site_name') {
                $this->overWriteEnvFile('APP_NAME', $request[$type]);
            } elseif ($type == 'timezone') {
                $this->overWriteEnvFile('APP_TIMEZONE', $request[$type]);
            } else {
                if ($this->isImageField($type, $request)) {
                    $file = $request->file($type);
                    $uploadId = $this->handleImage($file);
                    $request[$type] = $uploadId;
                }

                $settings = Setting::where('type', $type)->first();

                if ($settings) {
                    $settings->value = gettype($request[$type]) == 'array'
                        ? json_encode($request[$type])
                        : $request[$type];
                    $settings->save();
                } else {
                    $settings = new Setting();
                    $settings->type = $type;
                    $settings->value = gettype($request[$type]) == 'array'
                        ? json_encode($request[$type])
                        : $request[$type];
                    $settings->save();
                }
            }
        }

        return back()->with('success', 'Settings updated successfully');
    }

    /**
     * Add a new setting.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function aboutt(Request $request)
    {
        $request->validate([
            'metaselect' => 'string|in:description_,title_,keyword_',
            'type' => 'string',
            'value' => 'string',
        ]);

        $prefix = $request->input('metaselect');
        $name = str_replace(' ', '_', $request->type);
        $prefixedName = $prefix . $name;
        $file_value = $request->value;

        $settings = new Setting();
        $settings->type = $prefixedName;
        $settings->value = $file_value;
        $settings->save();

        return redirect()->back()->with('success', 'Setting added successfully.');
    }

    /**
     * Update a specific setting by ID.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\RedirectResponse
     */
    public function updateSettingForm(Request $request, $id)
    {
        $request->validate([
            'value' => 'string',
        ]);

        $setting = Setting::findOrFail($id);
        $setting->value = $request->value;
        $setting->save();

        return redirect()->route('setting.index')->with('success', 'Setting updated successfully');
    }

    /**
     * Delete a specific setting by ID.
     *
     * @param int $id
     * @return \Illuminate\Http\RedirectResponse
     */
    public function deleteSettingForm($id)
    {
        $setting = Setting::findOrFail($id);
        $setting->delete();

        return redirect()->back()->with('success', 'Setting has been deleted');
    }

    /**
     * Update footer settings.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function set_footer(Request $request)
    {
        $fields = $request->input('fields');
        $links = $request->input('links');

        foreach ($fields as $key => $value) {
            Setting::updateOrCreate(
                ['type' => "fields[$key]"],
                ['value' => $value]
            );
        }

        foreach ($links as $key => $value) {
            Setting::updateOrCreate(
                ['type' => "links[$key]"],
                ['value' => $value]
            );
        }

        return redirect()->route('setting.index')->with('success', 'Footer updated successfully');
    }

    /**
     * Display the case studies page.
     *
     * @return \Illuminate\View\View
     */
    public function case_study()
    {
        return view('frontend.case_studies');
    }

    /**
     * Show the edit setting form.
     *
     * @param int $id
     * @return \Illuminate\View\View|\Illuminate\Http\RedirectResponse
     */
    public function editSettingForm($id)
    {
        $setting = Setting::find($id);

        if (!$setting) {
            return redirect()->route('metapage')->with('error', 'Setting not found');
        }

        return view('admin.settings.edit', ['setting' => $setting]);
    }

    /**
     * Update a setting by ID.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function updateSetting(Request $request)
    {
        $request->validate([
            'id' => 'required|integer',
            'type' => 'required|string',
            'value' => 'required|string',
        ]);

        $setting = Setting::find($request->input('id'));

        if (!$setting) {
            return redirect()->route('settings.index')->with('error', 'Setting not found');
        }

        $setting->value = $request->input('value');
        $setting->save();

        return redirect()->route('metaPage')->with('success', 'Setting updated successfully');
    }

    /**
     * Add a new meta setting.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function new_meta_add(Request $request)
    {
        $request->validate([
            'metaselect' => 'string|in:description_,title_,keyword_',
            'type' => 'string',
            'value' => 'string',
        ]);

        $prefix = $request->input('metaselect');
        $name = str_replace(' ', '_', $request->type);
        $prefixedName = $prefix . $name;

        $settings = new Setting();
        $settings->type = $prefixedName;
        $settings->value = $request->value;
        $settings->save();

        return redirect()->back()->with('success', 'Setting added successfully.');
    }

    /**
     * Display the meta page with settings.
     *
     * @return \Illuminate\View\View
     */
    public function metapage()
    {
        $descriptionsettings = Setting::where('type', 'like', 'description_%')->get();
        $titlesettings = Setting::where('type', 'like', 'title_%')->get();
        $keywordsettings = Setting::where('type', 'like', 'keyword_%')->get();

        $sett = Setting::where('type', 'like', 'fields%')
            ->orWhere('type', 'like', 'links%')
            ->get();

        $settings = Setting::all();

        return view("admin.settings.index", compact('descriptionsettings', 'titlesettings', 'keywordsettings', 'sett', 'settings'));
    }
}

Directory Contents

Dirs: 0 × Files: 12

Name Size Perms Modified Actions
2.85 KB lrw-rw-rw- 2025-09-18 05:50:45
Edit Download
315 B lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
2.74 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
6.83 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
4.65 KB lrw-rw-rw- 2026-02-09 06:01:39
Edit Download
77 B lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
2.80 KB lrw-rw-rw- 2025-09-18 05:51:38
Edit Download
616 B lrw-r--r-- 2026-04-19 15:59:24
Edit Download
3.58 KB lrw-rw-rw- 2025-09-18 05:56:23
Edit Download
1.48 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
8.60 KB lrw-rw-rw- 2025-09-18 05:56:47
Edit Download
8.22 KB lrw-rw-rw- 2026-02-09 07:03:26
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).