HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/uren-registratie.blankevoort.net/public_html/src/Widget/WidgetService.php
<?php

/*
 * This file is part of the Kimai time-tracking app.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace App\Widget;

/**
 * @final
 */
class WidgetService
{
    private array $widgets = [];

    public function hasWidget(string $id): bool
    {
        return \array_key_exists($id, $this->widgets);
    }

    public function registerWidget(WidgetInterface $widget): void
    {
        $id = trim($widget->getId());
        if ($id === '') {
            throw new \InvalidArgumentException('Widget needs a non-empty ID');
        }
        $this->widgets[$id] = $widget;
    }

    /**
     * @return array<string, WidgetInterface>
     */
    public function getAllWidgets(): array
    {
        return $this->widgets;
    }

    public function getWidget(string $id): WidgetInterface
    {
        if (!$this->hasWidget($id)) {
            throw new \InvalidArgumentException(\sprintf('Cannot find widget: %s', $id));
        }

        return $this->widgets[$id];
    }
}