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;
}