HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
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: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Module.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Module extends Model
{
    use SoftDeletes;
    protected $dates = ['deleted_at'];

    protected $fillable = ['id', 'name', 'icon', 'route', 'order'];

    public function modules()
    {
        return $this->hasMany(Module::class)->select('id', 'name', 'icon', 'route', 'order', 'module_id', 'active')
            ->with('modules')
            ->where([['active', true]])
            ->orderBy('order', 'ASC');
    }

    public function modulesTree($data = null, $childs = null, $module = null)
    {
        if (!$data)
            $data = [];

        if ($module) {
            $modulesChild = Module::select('id', 'name')
                ->where([['active', true], ['module_id', $module]])
                ->orderBy('order')
                ->get();
            if (count($modulesChild)) {
                foreach ($modulesChild as $child) {
                    $childObject = new \stdClass();
                    $childObject->id = $child->id;
                    $childObject->text = $child->name;
                    $nodes = $this->modulesTree($data, [], $child->id);
                    if (count($nodes)) {
                        $childObject->nodes = $nodes;
                    }
                    $childs[] = $childObject;
                }
                return $childs;
            } else {
                return [];
            }
        } else {
            $modules = Module::select('id', 'name')
                ->where('active', true)
                ->whereNull('module_id')
                ->orderBy('order')
                ->get();

            foreach ($modules as $item) {
                $object = new \stdClass();
                $object->id = $item->id;
                $object->text = $item->name;
                $object->nodes = $this->modulesTree($data, [], $item->id);
                $data[] = $object;
            }
        }
        return $data;
    }

    public function modulesTreeId($data = null, $module = null)
    {
        if (!$data)
            $data = [];

        if ($module) {
            $data[] = $module;
            $modulesChild = Module::select('id')->where([['active', true], ['module_id', $module]])->get();
            if (count($modulesChild)) {
                foreach ($modulesChild as $child) {
                    $data = $this->modulesTreeId($data, $child->id);
                }
            }
        }
        return $data;
    }
}