Newscoop\NewscoopBundle\Menu\Builder::preparePluginsMenu PHP Метод

preparePluginsMenu() публичный Метод

public preparePluginsMenu ( $menu )
    public function preparePluginsMenu($menu)
    {
        $translator = $this->container->get('translator');
        $rootMenu = false;
        $pluginInfos = \CampPlugin::GetPluginsInfo(true);
        if ($this->user->hasPermission('plugin_manager')) {
            $rootMenu = true;
        }
        foreach ($pluginInfos as $info) {
            if (isset($info['menu']['permission']) && $this->user->hasPermission($info['menu']['permission'])) {
                $rootMenu = true;
            } elseif (isset($info['menu']['sub']) && is_array($info['menu']['sub'])) {
                foreach ($info['menu']['sub'] as $menuInfo) {
                    if ($this->user->hasPermission($menuInfo['permission'])) {
                        $rootMenu = true;
                    }
                }
            }
        }
        $menu->addChild($translator->trans('Plugins'), array('uri' => '#'))->setAttribute('dropdown', true)->setLinkAttribute('data-toggle', 'dropdown');
        if (!$rootMenu) {
            $menu[$translator->trans('Plugins')]->setDisplay(false);
            return;
        }
        if ($this->user->hasPermission('plugin_manager')) {
            $this->addChild($menu[$translator->trans('Plugins')], $translator->trans('Manage Plugins'), array('uri' => $this->container->get('router')->generate('newscoop_newscoop_plugins_index')));
        }
        $enabled = \CampPlugin::GetEnabled();
        $enabledIds = array();
        foreach ($enabled as $plugin) {
            $enabledIds[] = $plugin->getName();
        }
        foreach ($pluginInfos as $info) {
            if (in_array($info['name'], $enabledIds)) {
                $parentMenu = false;
                if (isset($info['menu']['permission']) && $this->user->hasPermission($info['menu']['permission'])) {
                    $parentMenu = true;
                } elseif (isset($info['menu']['sub']) && is_array($info['menu']['sub'])) {
                    foreach ($info['menu']['sub'] as $menuInfo) {
                        if ($this->user->hasPermission($menuInfo['permission'])) {
                            $parentMenu = true;
                        }
                    }
                }
                if ($parentMenu && isset($info['menu'])) {
                    $uri = '#';
                    if (isset($info['menu']['path'])) {
                        $uri = $this->generateZendRoute('admin') . '/' . $info['menu']['path'];
                    }
                    $this->addChild($menu[$translator->trans('Plugins')], $translator->trans($info['menu']['label']), array('uri' => $uri))->setLinkAttribute('data-toggle', 'rightdrop');
                }
                if (isset($info['menu']['sub']) && is_array($info['menu']['sub'])) {
                    foreach ($info['menu']['sub'] as $menuInfo) {
                        if ($this->user->hasPermission($menuInfo['permission'])) {
                            $uri = '#';
                            if (isset($menuInfo['path'])) {
                                $uri = $this->generateZendRoute('admin') . '/' . $menuInfo['path'];
                            }
                            $this->addChild($menu[$translator->trans('Plugins')][$translator->trans($info['menu']['label'])], $translator->trans($menuInfo['label']), array('uri' => $uri));
                        }
                    }
                }
            }
        }
        return $menu;
    }