Пример #1
0
 /**
  * Execute certain hook handler
  *
  * @return void
  */
 public function executeHookHandler()
 {
     foreach (\Includes\Utils\ModulesManager::getActiveModules() as $name => $data) {
         $class = \Includes\Utils\ModulesManager::getClassNameByModuleName($name);
         $class::runBuildCacheHandler();
     }
 }
Пример #2
0
 /**
  * Get product modifier types
  *
  * @return array
  */
 protected function getProductModifierTypes()
 {
     $additional = null;
     $additionalVariants = null;
     $wholesale = null;
     if (!isset($this->productModifierTypes)) {
         if (\Includes\Utils\ModulesManager::isActiveModule('XC\\ProductVariants')) {
             // ProductVariants module detected
             $additional = \XLite\Core\Database::getRepo('XLite\\Module\\XC\\ProductVariants\\Model\\ProductVariant')->getModifierTypesByProduct($this->getProduct());
             $additionalVariants = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\Wholesale\\Model\\ProductVariantWholesalePrice')->getModifierTypesByProduct($this->getProduct());
         }
         if ((!isset($additional) || empty($additional['price'])) && (!isset($additionalVariants) || empty($additionalVariants['price']))) {
             // ProductVariants module is not detected or product has not variants
             $wholesale = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\Wholesale\\Model\\WholesalePrice')->getModifierTypesByProduct($this->getProduct());
         }
     }
     $result = parent::getProductModifierTypes();
     foreach (array($additional, $additionalVariants, $wholesale) as $modifierTypes) {
         if (isset($modifierTypes)) {
             $result += $modifierTypes;
             if (!$result['price'] && $modifierTypes['price']) {
                 $result['price'] = true;
             }
             $this->productModifierTypes = $result;
         }
     }
     return $result;
 }
Пример #3
0
 /**
  * Return info about installed modules
  *
  * @return string
  */
 protected function getModulesMessage()
 {
     $result = array();
     foreach (\Includes\Utils\ModulesManager::getActiveModules() as $data) {
         $result[] = '(' . $data['authorName'] . '): ' . $data['moduleName'] . ' (v.' . $data['majorVersion'] . '.' . $data['minorVersion'] . ')';
     }
     return 'Installed modules:' . LC_EOL . ($result ? implode(LC_EOL, $result) : static::t('None'));
 }
Пример #4
0
 /**
  * Return URL for module icon
  *
  * @return string
  */
 public static function getIconURL()
 {
     list($author, $name) = explode('\\', \Includes\Utils\ModulesManager::getModuleNameByClassName(get_called_class()));
     $path = \Includes\Utils\ModulesManager::getModuleIconFile($author, $name);
     $url = '';
     if (\Includes\Utils\FileManager::isFileReadable($path)) {
         $url = \XLite\Core\Converter::buildURL('module', null, compact('author', 'name'), 'image.php');
     }
     return $url;
 }
Пример #5
0
 /**
  * Execute certain hook handler
  *
  * @return void
  */
 public function executeHookHandler()
 {
     $modulesNames = array_keys(\Includes\Utils\ModulesManager::getActiveModules());
     $classes = array_map(function ($name) {
         return \Includes\Utils\ModulesManager::getClassNameByModuleName($name);
     }, $modulesNames);
     foreach ($classes as $class) {
         $this->runBuildCacheHandler($class);
     }
 }
Пример #6
0
 /**
  * Execute certain hook handler
  *
  * @return void
  */
 public function executeHookHandler()
 {
     // To cache data
     \Includes\Utils\ModulesManager::getActiveModules();
     // Walk through the "XLite/Module" directory
     foreach ($this->getModuleMainFileIterator()->getIterator() as $path => $data) {
         $dir = $path;
         $name = basename($dir = dirname($dir));
         $author = basename($dir = dirname($dir));
         $class = \Includes\Utils\ModulesManager::getClassNameByAuthorAndName($author, $name);
         if (!\Includes\Utils\Operator::checkIfClassExists($class)) {
             require_once $path;
         }
         \Includes\Utils\ModulesManager::switchModule($author, $name);
     }
     \Includes\Utils\ModulesManager::removeFile();
 }
Пример #7
0
 /**
  * Return path where the upgrade helper scripts are placed
  *
  * @return string
  */
 protected function getUpgradeHelperPath()
 {
     list($author, $name) = explode('\\', $this->getActualName());
     return \Includes\Utils\FileManager::getRelativePath(\Includes\Utils\ModulesManager::getAbsoluteDir($author, $name), LC_DIR_ROOT) . LC_DS;
 }
Пример #8
0
 * @link      http://www.x-cart.com/
 */
// To avoid superflous checks
define('XLITE_INSTALL_MODE', true);
define('LC_DO_NOT_REBUILD_CACHE', true);
require_once __DIR__ . DIRECTORY_SEPARATOR . 'top.inc.php';
if (isset($_REQUEST['target'])) {
    $path = null;
    switch ($_REQUEST['target']) {
        case 'module':
            if (!empty($_REQUEST['author']) && !empty($_REQUEST['name'])) {
                $image = isset($_REQUEST['image']) ? $_REQUEST['image'] : null;
                switch ($image) {
                    case 'icon.png':
                    default:
                        $path = \Includes\Utils\ModulesManager::getModuleIconFile($_REQUEST['author'], $_REQUEST['name']);
                        break;
                }
            }
            break;
        default:
            // ...
    }
    if (!empty($path)) {
        $type = 'png';
        $data = \Includes\Utils\FileManager::read($path);
        $length = strlen($data);
        header('Content-Type: image/' . $type);
        header('Content-Length: ' . $length);
        echo $data;
    }
Пример #9
0
 /**
  * Method to access module main class methods
  *
  * @param string $method Method to call
  * @param array  $args   Call arguments OPTIONAL
  *
  * @return mixed
  */
 protected function callModuleMethod($method, array $args = array())
 {
     return \Includes\Utils\ModulesManager::callModuleMethod($this->getActualName(), $method, $args);
 }
Пример #10
0
 /**
  * Return info about installed modules
  *
  * @return string
  */
 protected function getModulesMessage()
 {
     $result = array();
     foreach (\Includes\Utils\ModulesManager::getActiveModules() as $data) {
         $result[] = array($data['authorName'], $data['moduleName'], $data['majorVersion'], $data['minorVersion']);
     }
     usort($result, function ($a, $b) {
         return strcasecmp($a[1], $b[1]);
     });
     $list = array_map(function ($a) {
         return vsprintf('(%s): %s (v.%s.%s)', $a);
     }, $result);
     return 'Installed modules:' . LC_EOL . ($list ? implode(LC_EOL, $list) : static::t('None'));
 }
Пример #11
0
 function widgetDisplayCode(array $attrs, $target, $module, $name)
 {
     $result = '';
     if (!isset($module) || \Includes\Utils\ModulesManager::isActiveModule($module)) {
         $class = isset($attrs['class']) ? $this->flexyAttribute($attrs['class'], false) : null;
         $arguments = isset($class) ? $this->flexyAttribute($attrs['class']) : (isset($name) ? 'null' : '');
         $arguments .= isset($name) ? ', ' . $this->flexyAttribute($name) : '';
         $conditions = array();
         if (isset($target)) {
             $target = str_replace(',', '\',\'', preg_replace('/[^\\w,]+/', '', $target));
         } elseif (isset($class) && preg_match('/^\\\\?XLite\\\\/i', $class)) {
             $target = implode('\',\'', $class::getAllowedTargets());
         }
         if (!empty($target)) {
             $conditions[] = '$this->isDisplayRequired(array(\'' . $target . '\'))';
         }
         if (!empty($attrs['mode'])) {
             $modes = str_replace(',', '\',\'', preg_replace('/[^\\w,]+/', '', $attrs['mode']));
             $conditions[] = '$this->isDisplayRequiredForMode(array(\'' . $modes . '\'))';
         }
         if (isset($attrs['IF'])) {
             $attrs['IF'] = $this->flexyCondition($attrs['IF']);
             if (!empty($conditions)) {
                 $attrs['IF'] = '(' . $attrs['IF'] . ')';
             }
             $conditions[] = $attrs['IF'];
         }
         $this->unsetAttributes($attrs, array('IF', 'FOREACH', 'class', 'mode'));
         if (empty($arguments) && 1 == count($attrs) && isset($attrs['template'])) {
             $result .= '$this->display(' . $this->flexyAttribute($attrs['template']) . ');';
         } else {
             $result .= '$this->getWidget(' . (empty($attrs) ? empty($arguments) ? '' : 'array()' : $this->getAttributesList($attrs)) . (empty($arguments) ? '' : ', ' . $arguments) . ')->display();';
         }
         if (!empty($conditions)) {
             $result = 'if (' . implode(' && ', $conditions) . '):' . "\n" . '  ' . $result . "\n" . 'endif;';
         }
     }
     return $result;
 }
Пример #12
0
 /**
  * Update module registry
  *
  * @return void
  */
 public function updateModuleRegistry()
 {
     $calculatedHash = \XLite\Core\Database::getRepo('XLite\\Model\\Module')->calculateEnabledModulesRegistryHash();
     if (\Includes\Utils\ModulesManager::getEnabledStructureHash() != $calculatedHash) {
         \XLite\Core\Database::getRepo('XLite\\Model\\Module')->addEnabledModulesToRegistry();
         \Includes\Utils\ModulesManager::saveEnabledStructureHash($calculatedHash);
     }
 }
Пример #13
0
 /**
  * Check if module will be disabled after upgrade
  *
  * :TRICKY: check if the "getMajorVersion" is not declared in the main module class
  *
  * @param \XLite\Model\Module $module Module to check
  *
  * @return boolean
  */
 protected function isModuleToDisable(\XLite\Model\Module $module)
 {
     $versionCore = \XLite\Upgrade\Cell::getInstance()->getCoreMajorVersion();
     $versionModule = $module->getMajorVersion();
     $classModule = \Includes\Utils\ModulesManager::getClassNameByModuleName($module->getActualName());
     $reflection = new \ReflectionMethod($classModule, 'getMajorVersion');
     $classModule = \Includes\Utils\Converter::prepareClassName($classModule);
     $classActual = \Includes\Utils\Converter::prepareClassName($reflection->getDeclaringClass()->getName());
     return version_compare($versionModule, $versionCore, '<') || $classModule !== $classActual;
 }
Пример #14
0
 /**
  * Get module
  *
  * @return string
  */
 public function getValidModule()
 {
     $result = null;
     $module = $this->getModule();
     if (!empty($module) && preg_match('/\\w+\\\\\\w+/', $module)) {
         $class = \Includes\Utils\ModulesManager::getClassNameByModuleName($module);
         if (class_exists($class)) {
             $result = $module;
         }
     }
     return $result;
 }
Пример #15
0
 /**
  * Add all enabled modules to ENABLED registry
  *
  * @return void
  */
 public function addEnabledModulesToRegistry()
 {
     foreach ($this->findBy(array('enabled' => true)) as $module) {
         \XLite\Core\Database::getInstance()->registerModuleToEnabledRegistry($module->getActualName(), \Includes\Utils\ModulesManager::getModuleProtectedStructures($module->getAuthor(), $module->getName()));
     }
 }
Пример #16
0
/**
 * Prepare the fixtures: the list of yaml files for uploading to the database
 *
 * @param array  $params     Database access data and other parameters
 * @param bool   $silentMode Do not display any output during installing
 *
 * @return bool
 */
function doPrepareFixtures(&$params, $silentMode = false)
{
    global $lcSettings;
    $result = true;
    if (!$silentMode) {
        echo '<div style="text-align: left; margin-bottom: 20px;">' . xtr('Preparing data for cache generation...');
    }
    $enabledModules = array();
    $moduleYamlFiles = array();
    foreach ((array) glob(LC_DIR_MODULES . '*', GLOB_ONLYDIR) as $authorDir) {
        $author = basename($authorDir);
        foreach ((array) glob(LC_DIR_MODULES . $author . '/*/Main.php') as $f) {
            $moduleName = basename(dirname($f));
            $enabledModules[$author][$moduleName] = intval(!empty($lcSettings['enable_modules'][$author]) && in_array($moduleName, $lcSettings['enable_modules'][$author]));
            $dir = 'classes' . LC_DS . 'XLite' . LC_DS . 'Module' . LC_DS . $author . LC_DS . $moduleName;
            $moduleFile = $dir . LC_DS . 'install.yaml';
            if (file_exists(LC_DIR_ROOT . $moduleFile)) {
                $moduleYamlFiles[] = $moduleFile;
            }
            foreach ((array) glob(LC_DIR_ROOT . $dir . LC_DIR . 'install_*.yaml') as $translationFile) {
                if (file_exists(LC_DIR_ROOT . $translationFile) && is_file(LC_DIR_ROOT . $translationFile)) {
                    $moduleYamlFiles[] = $translationFile;
                }
            }
        }
    }
    sort($moduleYamlFiles, SORT_STRING);
    \Includes\Utils\ModulesManager::saveModulesToFile($enabledModules);
    // Generate fixtures list
    $yamlFiles = $lcSettings['yaml_files']['base'];
    foreach ($moduleYamlFiles as $f) {
        // Add module fixtures
        $yamlFiles[] = $f;
    }
    if (!empty($params['demo'])) {
        // Add demo dump to the fixtures
        foreach ($lcSettings['yaml_files']['demo'] as $f) {
            $yamlFiles[] = $f;
        }
    }
    // Remove fixtures file (if exists)
    \Includes\Decorator\Plugin\Doctrine\Utils\FixturesManager::removeFixtures();
    // Add fixtures list
    foreach ($yamlFiles as $file) {
        \Includes\Decorator\Plugin\Doctrine\Utils\FixturesManager::addFixtureToList($file);
    }
    if (!$silentMode) {
        echo status($result) . '</div>';
    }
    return $result;
}
Пример #17
0
 /**
  * Get iterator for class files
  *
  * @return \Includes\Utils\FileFilter
  */
 protected function getFileIterator()
 {
     return new \Includes\Utils\FileFilter(LC_DIR_SKINS, \Includes\Utils\ModulesManager::getPathPatternForTemplates());
 }
Пример #18
0
 /**
  * Get specific language help message
  *
  * @param \XLite\Model\AEntity $entity Language object
  *
  * @return string
  */
 protected function getLanguageHelpMessage(\XLite\Model\AEntity $entity)
 {
     $message = null;
     if ($entity->getValidModule()) {
         $moduleClass = \Includes\Utils\ModulesManager::getClassNameByModuleName($entity->getModule());
         $moduleName = sprintf('%s (%s)', $moduleClass::getModuleName(), $moduleClass::getAuthorName());
         $message = static::t('This language is added by module and cannot be removed.', array('module' => $moduleName));
     } elseif ('en' == $entity->getCode()) {
         $message = 'English language cannot be removed as it is primary language for all texts.';
     }
     return $message;
 }
Пример #19
0
 /**
  * Get yaml files name to run common helper 'add_labels'
  *
  * @return string
  */
 protected function getCommonHelperAddLabelsFiles()
 {
     list($author, $name) = explode('\\', $this->getActualName());
     $result = array();
     $dir = \Includes\Utils\ModulesManager::getAbsoluteDir($author, $name);
     $file = $dir . 'install.yaml';
     if (\Includes\Utils\FileManager::isExists($file)) {
         $result[] = $file;
     }
     foreach ((array) glob($dir . 'install_*.yaml') as $translationFile) {
         if (\Includes\Utils\FileManager::isExists($translationFile)) {
             $result[] = $translationFile;
         }
     }
     return $result;
 }
Пример #20
0
 /**
  * Lifecycle callback
  *
  * @return void
  *
  * @PreUpdate
  */
 public function prepareBeforeUpdate()
 {
     $changeSet = \XLite\Core\Database::getEM()->getUnitOfWork()->getEntityChangeSet($this);
     if (!empty($changeSet['enabled'])) {
         \XLite\Core\Database::getInstance()->setDisabledStructures($this->getActualName(), $this->getEnabled() ? array() : \Includes\Utils\ModulesManager::getModuleProtectedStructures($this->getAuthor(), $this->getName()));
         $this->switchLinkedModels($this->getEnabled());
     }
 }
Пример #21
0
 /**
  * Initialization
  *
  * @return void
  */
 public static function initialize()
 {
     if (static::isDropCacheRequested()) {
         // Drop classes cache
         \Includes\Decorator\Utils\CacheManager::cleanupCacheIndicators();
         // Redirect to avoid loop
         \Includes\Utils\Operator::redirect(\XLite::getAdminScript() . '?target=main');
     } elseif (static::isSafeModeRequested() && !static::isSafeModeStarted()) {
         $restorePoint = null;
         if (static::isRestoreDateSet()) {
             $restorePoint = \Includes\Utils\ModulesManager::getRestorePoint(static::getRestoreDate());
         }
         if (static::isSoftwareResetEnabled()) {
             if (!($restorePoint != null ^ static::isRestoreDateSet())) {
                 // Put safe mode indicator
                 \Includes\Utils\FileManager::write(static::getIndicatorFileName(), static::getIndicatorFileContent());
                 // Clean cache indicators to force cache generation
                 \Includes\Decorator\Utils\CacheManager::cleanupCacheIndicators();
             } else {
                 $date = \DateTime::createFromFormat(\Includes\Utils\ModulesManager::RESTORE_DATE_FORMAT, static::getRestoreDate());
                 \Includes\Decorator\Utils\PersistentInfo::set('restoreFailed', $date->getTimestamp());
             }
         }
         // Redirect to avoid loop
         \Includes\Utils\Operator::redirect(\XLite::getAdminScript() . '?target=main');
     }
 }
Пример #22
0
 /**
  * Return name of the module where the class defined
  *
  * @return string
  */
 public function getModuleName()
 {
     return \Includes\Utils\ModulesManager::getModuleNameByClassName($this->getClass());
 }
Пример #23
0
 /**
  * Check if module is active
  *
  * @param string $file File name
  *
  * @return boolean
  */
 protected static function checkFile($file)
 {
     $module = \Includes\Utils\ModulesManager::getFileModule($file);
     return !isset($module) || \Includes\Utils\ModulesManager::isActiveModule($module);
 }
Пример #24
0
 /**
  * Return list of mutually exclusive modules
  *
  * @return array
  */
 public function getMutualModulesList()
 {
     return \Includes\Utils\ModulesManager::callModuleMethod($this->getActualName(), 'getMutualModulesList');
 }
Пример #25
0
 /**
  * Return list of module directories which contain templates
  *
  * @return array
  */
 protected function getSkinDirs()
 {
     $result = array();
     foreach (\XLite\Core\Layout::getInstance()->getSkinsAll() as $interface => $tmp) {
         $result = array_merge($result, \XLite\Core\Layout::getInstance()->getSkinPaths($interface));
     }
     foreach ($result as $key => &$data) {
         $path = \Includes\Utils\ModulesManager::getRelativeDir($this->module->getAuthor(), $this->module->getName());
         $path = $data['fs'] . LC_DS . 'modules' . LC_DS . $path;
         if (\Includes\Utils\FileManager::isDirReadable($path)) {
             $data = $path;
         } else {
             unset($result[$key]);
         }
     }
     return array_values(array_unique($result));
 }
Пример #26
0
 /**
  * Uninstall module
  *
  * @param \XLite\Model\Module $module    Module object
  * @param array               &$messages Messages list
  *
  * @return boolean
  */
 public function uninstallModule(\XLite\Model\Module $module, &$messages)
 {
     $result = false;
     // Get module pack
     $pack = new \XLite\Core\Pack\Module($module);
     $dirs = $pack->getDirs();
     $nonWritableDirs = array();
     // Check module directories permissions
     foreach ($dirs as $dir) {
         if (\Includes\Utils\FileManager::isExists($dir) && !\Includes\Utils\FileManager::isDirWriteable($dir)) {
             $nonWritableDirs[] = \Includes\Utils\FileManager::getRelativePath($dir, LC_DIR_ROOT);
         }
     }
     $params = array('name' => sprintf('%s v%s (%s)', $module->getModuleName(), $module->getVersion(), $module->getAuthorName()));
     if (empty($nonWritableDirs)) {
         $yamlData = array();
         $yamlFiles = \Includes\Utils\ModulesManager::getModuleYAMLFiles($module->getAuthor(), $module->getName());
         foreach ($yamlFiles as $yamlFile) {
             $yamlData[] = \Includes\Utils\FileManager::read($yamlFile);
         }
         if (!$module->checkModuleMainClass()) {
             $classFile = LC_DIR_CLASSES . \Includes\Utils\Converter::getClassFile($module->getMainClass());
             if (\Includes\Utils\FileManager::isFileReadable($classFile)) {
                 require_once $classFile;
             }
         }
         // Call uninstall event method
         $r = $module->callModuleMethod('callUninstallEvent', 111);
         if (111 == $r) {
             \XLite\Logger::getInstance()->log($module->getActualName() . ': Method callUninstallEvent() was not called');
         }
         // Remove from FS
         foreach ($dirs as $dir) {
             \Includes\Utils\FileManager::unlinkRecursive($dir);
         }
         \Includes\Utils\ModulesManager::disableModule($module->getActualName());
         \Includes\Utils\ModulesManager::removeModuleFromDisabledStructure($module->getActualName());
         // Remove module from DB
         try {
             // Refresh module entity as it was changed by disableModule() method above
             $module = $this->find($module->getModuleID());
             $this->delete($module);
         } catch (\Exception $e) {
             $messages[] = $e->getMessage();
         }
         if ($module->getModuleID()) {
             $messages[] = \XLite\Core\Translation::getInstance()->translate('A DB error occured while uninstalling the module X', $params);
         } else {
             if (!empty($yamlData)) {
                 foreach ($yamlData as $yaml) {
                     \XLite\Core\Database::getInstance()->unloadFixturesFromYaml($yaml);
                 }
             }
             $messages[] = \XLite\Core\Translation::getInstance()->translate('The module X has been uninstalled successfully', $params);
             $result = true;
         }
     } else {
         $messages[] = \XLite\Core\Translation::getInstance()->translate('Unable to delete module X files: some dirs have no writable permissions: Y', $params + array('dirs' => implode(', ', $nonWritableDirs)));
     }
     return $result;
 }
Пример #27
0
 /**
  * Uninstall module
  *
  * @return void
  */
 protected function doActionUninstall()
 {
     $module = $this->getModule();
     if ($module) {
         $pack = new \XLite\Core\Pack\Module($module);
         $dirs = $pack->getDirs();
         $nonWritableDirs = array();
         // Check permissions
         foreach ($dirs as $dir) {
             if (!\Includes\Utils\FileManager::isDirWriteable($dir)) {
                 $nonWritableDirs[] = \Includes\Utils\FileManager::getRelativePath($dir, LC_DIR_ROOT);
             }
         }
         $params = array('name' => $module->getActualName());
         if (empty($nonWritableDirs)) {
             $yaml = \Includes\Utils\FileManager::read(\Includes\Utils\ModulesManager::getModuleYAMLFile($module->getAuthor(), $module->getName()));
             // Remove from FS
             foreach ($dirs as $dir) {
                 \Includes\Utils\FileManager::unlinkRecursive($dir);
             }
             // Disable this and depended modules
             \Includes\Utils\ModulesManager::disableModule($module->getActualName());
             \Includes\Utils\ModulesManager::removeModuleFromDisabledStructure($module->getActualName());
             // Remove from DB
             \XLite\Core\Database::getRepo('\\XLite\\Model\\Module')->delete($module);
             if ($module->getModuleID()) {
                 $message = 'A DB error occured while uninstalling the module "{{name}}"';
                 $this->showError(__FUNCTION__, $message, $params);
             } else {
                 if (!empty($yaml)) {
                     \XLite\Core\Database::getInstance()->unloadFixturesFromYaml($yaml);
                 }
                 $message = 'The module "{{name}}" has been uninstalled successfully';
                 $this->showInfo(__FUNCTION__, $message, $params);
             }
             // To restore previous state
             \XLite\Core\Marketplace::getInstance()->saveAddonsList(0);
             // Flag to rebuild cache
             \XLite::setCleanUpCacheFlag(true);
         } else {
             $message = 'Unable to delete module "{{name}}" files: some dirs have no writable permissions: {{dirs}}';
             $this->showError(__FUNCTION__, $message, $params + array('dirs' => implode(', ', $nonWritableDirs)));
         }
     }
 }
Пример #28
0
 /**
  * Check if the module can be enabled
  *
  * @param \XLite\Model\Module $module Module
  *
  * @return boolean
  */
 protected function canEnable(\XLite\Model\Module $module)
 {
     $result = $this->isModuleCompatible($module);
     if ($result) {
         $dependencies = $module->getDependencies();
         if ($dependencies) {
             $modules = array_keys(\Includes\Utils\ModulesManager::getActiveModules());
             $result = !(bool) array_diff($dependencies, $modules);
         }
     }
     return $result;
 }
Пример #29
0
 /**
  * Get all active modules and return plain array with the module descriptors
  *
  * @return array
  */
 protected static function getModulesGraphIndex()
 {
     $index = array();
     // Fetch all active modules from database.
     // Dependencies are checked and corrected by the ModulesManager
     foreach (\Includes\Utils\ModulesManager::getActiveModules() as $module => $tmp) {
         // Unconditionally add module to the index (since its dependencies are already checked)
         $index[$module] = new \Includes\Decorator\DataStructure\Graph\Modules($module);
     }
     return $index;
 }
Пример #30
0
 /**
  * Hook "init"
  *
  * @return void
  */
 public function invokeHookInit()
 {
     include_once \Includes\Utils\ModulesManager::getAbsoluteDir('CDev', 'DrupalConnector') . 'Drupal' . LC_DS . 'Include' . LC_DS . 'Callbacks.php';
     if (defined('DRUPAL_ROOT') && !\XLite\Core\Config::getInstance()->CDev->DrupalConnector->drupal_root_path) {
         \XLite\Core\Database::getRepo('XLite\\Model\\Config')->createOption(array('name' => 'drupal_root_path', 'category' => 'CDev\\DrupalConnector', 'value' => DRUPAL_ROOT));
     }
 }