permissions[$permission] = $definition; } /** * @param SideMenuItem $sideMenu */ public function addSideMenuItem(SideMenuItem $sideMenu) { $this->sideMenu[$sideMenu->code] = $sideMenu; } /** * @param string $code * @return SideMenuItem * @throws SystemException */ public function getSideMenuItem(string $code) { if (!array_key_exists($code, $this->sideMenu)) { throw new SystemException('No sidenavigation item available with code ' . $code); } return $this->sideMenu[$code]; } /** * @param string $code */ public function removeSideMenuItem(string $code) { unset($this->sideMenu[$code]); } /** * @param array $data * @return static */ public static function createFromArray(array $data) { $instance = new static(); $instance->code = $data['code']; $instance->owner = $data['owner']; $instance->label = $data['label']; $instance->url = $data['url']; $instance->icon = $data['icon'] ?? null; $instance->iconSvg = $data['iconSvg'] ?? null; $instance->counter = $data['counter'] ?? null; $instance->counterLabel = $data['counterLabel'] ?? null; $instance->permissions = $data['permissions'] ?? $instance->permissions; $instance->order = $data['order'] ?? $instance->order; return $instance; } }