N98\Magento\Command\Developer\Ide\PhpStorm\MetaCommand::getClassMapForGroup PHP Method

getClassMapForGroup() protected method

protected getClassMapForGroup ( string $group, Symfony\Component\Console\Output\OutputInterface $output ) : array
$group string
$output Symfony\Component\Console\Output\OutputInterface
return array
    protected function getClassMapForGroup($group, OutputInterface $output)
    {
        /**
         * Generate resource helper only for Magento >= EE 1.11 or CE 1.6
         */
        if ($group == 'resource helpers') {
            return $this->getResourceHelperMap();
        }
        $classes = array();
        foreach ($this->getGroupXmlDefinition($group) as $prefix => $modelDefinition) {
            if ($group == 'resource models') {
                if (empty($modelDefinition->resourceModel)) {
                    continue;
                }
                $resourceModelNodePath = 'global/models/' . strval($modelDefinition->resourceModel);
                $resourceModelConfig = \Mage::getConfig()->getNode($resourceModelNodePath);
                if ($resourceModelConfig) {
                    $classPrefix = strval($resourceModelConfig->class);
                }
            } else {
                $classPrefix = strval($modelDefinition->class);
            }
            if (empty($classPrefix)) {
                continue;
            }
            $classBaseFolder = str_replace('_', '/', $classPrefix);
            $searchFolders = array(\Mage::getBaseDir('code') . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . $classBaseFolder, \Mage::getBaseDir('code') . DIRECTORY_SEPARATOR . 'community' . DIRECTORY_SEPARATOR . $classBaseFolder, \Mage::getBaseDir('code') . DIRECTORY_SEPARATOR . 'local' . DIRECTORY_SEPARATOR . $classBaseFolder);
            foreach ($searchFolders as $key => $folder) {
                if (!is_dir($folder)) {
                    unset($searchFolders[$key]);
                }
            }
            if (empty($searchFolders)) {
                continue;
            }
            $finder = Finder::create();
            $finder->files()->in($searchFolders)->followLinks()->ignoreUnreadableDirs(true)->name('*.php')->notName('install-*')->notName('upgrade-*')->notName('mysql4-*')->notName('mssql-*')->notName('oracle-*');
            foreach ($finder as $file) {
                $classIdentifier = $this->getClassIdentifier($file, $prefix, $group);
                $classNameByPath = $this->getRealClassname($file, $classPrefix);
                switch ($group) {
                    case 'blocks':
                        $classNameAfterRewrites = \Mage::getConfig()->getBlockClassName($classIdentifier);
                        break;
                    case 'helpers':
                        $classNameAfterRewrites = \Mage::getConfig()->getHelperClassName($classIdentifier);
                        break;
                    case 'models':
                        $classNameAfterRewrites = \Mage::getConfig()->getModelClassName($classIdentifier);
                        break;
                    case 'resource models':
                    default:
                        $classNameAfterRewrites = \Mage::getConfig()->getResourceModelClassName($classIdentifier);
                        break;
                }
                if ($classNameAfterRewrites) {
                    $addToList = true;
                    if ($classNameAfterRewrites === $classNameByPath && !$this->isClassDefinedInFile($file, $classNameByPath, $output)) {
                        $addToList = false;
                    }
                    if ($addToList) {
                        $classes[$classIdentifier] = $classNameAfterRewrites;
                        if ($group == 'helpers' && strpos($classIdentifier, '/') === false) {
                            $classes[$classIdentifier . '/data'] = $classNameAfterRewrites;
                        }
                    }
                }
            }
        }
        return $classes;
    }