/** * @param ConfigureMenuEvent $event */ public function onNavigationConfigure(ConfigureMenuEvent $event) { foreach ((array) $this->settings->getSettings(SettingsProvider::DATA_PATH) as $setting) { if (!$this->state->isEntityEnabled($setting['name'])) { continue; } foreach ($setting['navigation_items'] as $item) { $navigateArray = explode('.', $item); $menu = $event->getMenu(); if ($menu->getName() !== $navigateArray[0]) { continue; } $navigateArrayCount = count($navigateArray); for ($i = 1; $i < $navigateArrayCount; $i++) { if ($menu->getChild($navigateArray[$i])) { /** redefinition of variable $menu */ $menu = $menu->getChild($navigateArray[$i]); } if ($menu && !$menu->isDisplayed()) { $menu->setDisplay(true); } } } } }
/** * @return array */ protected function getChannelEntities() { $customEntities = $this->configManager->getProvider('extend')->map(function (ConfigInterface $extendConfig) { $isCustom = $extendConfig->is('is_extend') && $extendConfig->get('owner') === ExtendScope::OWNER_CUSTOM && $extendConfig->in('state', [ExtendScope::STATE_ACTIVE, ExtendScope::STATE_UPDATED]); return $isCustom ? $extendConfig->getId()->getClassName() : false; }); $customEntities = array_filter($customEntities); $entities = array_map(function ($setting) { return $setting['name']; }, $this->settings->getSettings(SettingsProvider::DATA_PATH)); return array_unique(array_merge($customEntities, $entities)); }
/** * @param SettingsProvider $settingsProvider * @param string $integrationType * * @return bool|string */ protected function getChannelTypeForIntegration(SettingsProvider $settingsProvider, $integrationType) { $channelTypeConfigs = $settingsProvider->getSettings(SettingsProvider::CHANNEL_TYPE_PATH); foreach ($channelTypeConfigs as $channelTypeName => $config) { if ($settingsProvider->getIntegrationType($channelTypeName) == $integrationType) { return $channelTypeName; } } return false; }
/** * Warm up local data cache in order to prevent multiple queries to DB */ protected function ensureLocalCacheWarmed() { if ($this->enabledEntities === null) { if (false !== ($data = $this->tryCacheLookUp())) { $this->enabledEntities = $data; return; } $settings = $this->settingsProvider->getSettings(SettingsProvider::DATA_PATH); $qb = $this->getManager()->createQueryBuilder(); $qb->distinct(true); $qb->select('e.name')->from('OroCRMChannelBundle:Channel', 'c')->andWhere('c.status = :status')->setParameter('status', Channel::STATUS_ACTIVE)->innerJoin('c.entities', 'e'); $assignedEntityNames = $qb->getQuery()->getArrayResult(); $assignedEntityNames = array_map(function ($result) { return $result['name']; }, $assignedEntityNames); $this->enabledEntities = []; foreach ($settings as $entityName => $singleEntitySettings) { if (in_array($entityName, $assignedEntityNames, true)) { $this->enabledEntities[$entityName] = true; } } $this->persistToCache(); } }