Esempio n. 1
0
 /**
  * Determine whether provided name begins from any available modules, according to namespaces priority
  * If matched, returns as the matched module "factory" name or a fully qualified module name
  *
  * @param string $name
  * @param bool $asFullModuleName
  * @return string
  */
 public function determineOmittedNamespace($name, $asFullModuleName = false)
 {
     if (null === $this->_moduleNamespaces) {
         $this->_moduleNamespaces = array();
         foreach ($this->_moduleList->getModules() as $module) {
             $moduleName = $module['name'];
             $module = strtolower($moduleName);
             $this->_moduleNamespaces[substr($module, 0, strpos($module, '_'))][$module] = $moduleName;
         }
     }
     $explodeString = strpos($name, \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR) === false ? '_' : \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR;
     $name = explode($explodeString, strtolower($name));
     $partsNum = count($name);
     $defaultNamespaceFlag = false;
     foreach ($this->_moduleNamespaces as $namespaceName => $namespace) {
         // assume the namespace is omitted (default namespace only, which comes first)
         if ($defaultNamespaceFlag === false) {
             $defaultNamespaceFlag = true;
             $defaultNS = $namespaceName . '_' . $name[0];
             if (isset($namespace[$defaultNS])) {
                 return $asFullModuleName ? $namespace[$defaultNS] : $name[0];
                 // return omitted as well
             }
         }
         // assume namespace is qualified
         if (isset($name[1])) {
             $fullNS = $name[0] . '_' . $name[1];
             if (2 <= $partsNum && isset($namespace[$fullNS])) {
                 return $asFullModuleName ? $namespace[$fullNS] : $fullNS;
             }
         }
     }
     return '';
 }
Esempio n. 2
0
 /**
  * Retrieve fully-qualified module name, path belongs to
  *
  * @param string $path Full path to file or directory
  * @return string|null
  */
 public function getModuleName($path)
 {
     $path = str_replace('\\', '/', $path);
     foreach (array_keys($this->_moduleList->getModules()) as $moduleName) {
         $moduleDir = $this->_moduleDirs->getDir($moduleName);
         $moduleDir = str_replace('\\', '/', $moduleDir);
         if ($path == $moduleDir || strpos($path, $moduleDir . '/') === 0) {
             return $moduleName;
         }
     }
     return null;
 }
Esempio n. 3
0
 /**
  * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  * @return string
  */
 public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
 {
     $html = $this->_getHeaderHtml($element);
     $modules = array_keys($this->_moduleList->getModules());
     $dispatchResult = new \Magento\Framework\Object($modules);
     $this->_eventManager->dispatch('adminhtml_system_config_advanced_disableoutput_render_before', array('modules' => $dispatchResult));
     $modules = $dispatchResult->toArray();
     sort($modules);
     foreach ($modules as $moduleName) {
         if ($moduleName === 'Magento_Adminhtml' || $moduleName === 'Magento_Backend') {
             continue;
         }
         $html .= $this->_getFieldHtml($element, $moduleName);
     }
     $html .= $this->_getFooterHtml($element);
     return $html;
 }
Esempio n. 4
0
 /**
  * Apply database data updates whenever needed
  *
  * @return void
  */
 public function updateData()
 {
     foreach (array_keys($this->_moduleList->getModules()) as $moduleName) {
         foreach ($this->_resourceResolver->getResourceList($moduleName) as $resourceName) {
             if (!$this->_moduleManager->isDbDataUpToDate($moduleName, $resourceName)) {
                 $this->_setupFactory->create($resourceName, $moduleName)->applyDataUpdates();
             }
         }
     }
 }
Esempio n. 5
0
 /**
  * Apply database data updates whenever needed
  *
  * @return void
  */
 public function updateData()
 {
     if (!$this->_isUpdatedSchema) {
         return;
     }
     foreach (array_keys($this->_moduleList->getModules()) as $moduleName) {
         foreach ($this->_resourceResolver->getResourceList($moduleName) as $resourceName) {
             $this->_setupFactory->create($resourceName, $moduleName)->applyDataUpdates();
         }
     }
 }
 /**
  * Check if DB is up to date
  *
  * @return bool
  */
 private function isDbUpToDate()
 {
     foreach (array_keys($this->moduleList->getModules()) as $moduleName) {
         foreach ($this->resourceResolver->getResourceList($moduleName) as $resourceName) {
             $isSchemaUpToDate = $this->moduleManager->isDbSchemaUpToDate($moduleName, $resourceName);
             $isDataUpToDate = $this->moduleManager->isDbDataUpToDate($moduleName, $resourceName);
             if (!$isSchemaUpToDate || !$isDataUpToDate) {
                 return false;
             }
         }
     }
     return true;
 }
Esempio n. 7
0
 /**
  * Retrieve priority of a module relatively to other modules in the system
  *
  * @param string $moduleName
  * @return int
  */
 protected function getModulePriority($moduleName)
 {
     if ($this->orderedModules === null) {
         $this->orderedModules = array();
         foreach ($this->moduleList->getModules() as $module) {
             $this->orderedModules[] = $module['name'];
         }
     }
     $result = array_search($moduleName, $this->orderedModules);
     // Assume unknown modules have the same priority, distinctive from known modules
     if ($result === false) {
         return -1;
     }
     return $result;
 }
Esempio n. 8
0
 /**
  * Retrieve list of module action files
  *
  * @return array
  */
 public function getActionFiles()
 {
     $actions = array();
     foreach (array_keys($this->modulesList->getModules()) as $moduleName) {
         $actionDir = $this->getModuleDir('Controller', $moduleName);
         if (!file_exists($actionDir)) {
             continue;
         }
         $dirIterator = new \RecursiveDirectoryIterator($actionDir, \RecursiveDirectoryIterator::SKIP_DOTS);
         $recursiveIterator = new \RecursiveIteratorIterator($dirIterator, \RecursiveIteratorIterator::LEAVES_ONLY);
         /** @var \SplFileInfo $actionFile */
         foreach ($recursiveIterator as $actionFile) {
             $actions[] = $this->modulesDirectory->getRelativePath($actionFile->getPathname());
         }
     }
     return $actions;
 }
Esempio n. 9
0
 /**
  * Check all necessary extensions are loaded and available
  *
  * @return void
  * @throws \Exception
  */
 protected function checkExtensionsLoaded()
 {
     try {
         foreach ($this->moduleList->getModules() as $moduleData) {
             $this->dependencyManager->checkModuleDependencies($moduleData);
         }
     } catch (\Exception $exception) {
         $this->messageManager->addError($exception->getMessage());
         throw new \Exception($exception->getMessage());
     }
 }