Beispiel #1
0
 /**
  * @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);
                 }
             }
         }
     }
 }
Beispiel #2
0
 /**
  * @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));
 }
Beispiel #3
0
 /**
  * @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;
 }
Beispiel #4
0
 /**
  * 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();
     }
 }