/** Load application modules @private **/ private function _loadModules() { // extract module tag preg_match_all('|<site:modules\\[(.*?)\\]\\/>|', self::$global['RESPONSE'], $matches); // load module files if (isset($matches[1]) && count($matches[1]) > 0) { foreach ($matches[1] as $mtxt) { $html = ''; $modules = explode('|', $mtxt); if (count($modules) > 0) { foreach ($modules as $module) { // get params preg_match('/\\{(.*)\\}/', $module, $mparams); if (!empty($mparams)) { $module = str_replace($mparams[0], '', $module); $mparams = json_decode($mparams[0]); } // get from storage $list = ModuleHelper::_('position', $module); if ($list) { foreach ($list as $module_item) { $is_custom = $module_item->name == 'custom'; if (!$is_custom) { $module_item->params = new Parameter($module_item->params); } $html .= ModuleHelper::render($module_item, $is_custom); } } else { // file-based $module_item = array('name' => $module, 'params' => $mparams); $html .= ModuleHelper::render((object) $module_item, false); } } } // display self::$global['RESPONSE'] = str_replace('<site:modules[' . $mtxt . ']/>', $html, self::$global['RESPONSE']); } // foreach } }