BuildTree(); } /** * Builds xml for tree in left frame in admin * * @param Array $params */ function BuildTree() { $unit_config_reader = false; $data = $this->Conn->GetRow('SELECT Data, Cached FROM '.TABLE_PREFIX.'Cache WHERE VarName = "sections_parsed"'); if ($data) { $this->Tree = unserialize($data['Data']); return ; } $this->Application->UnitConfigReader->includeConfigFiles(MODULES_PATH); $this->Application->UnitConfigReader->AfterConfigRead(); $this->Tree = Array(); if (!$unit_config_reader) { $unit_config_reader =& $this->Application->recallObject('kUnitConfigReader'); } $prefixes = array_keys($unit_config_reader->configData); foreach ($prefixes as $prefix) { $config =& $unit_config_reader->configData[$prefix]; $sections = getArrayValue($config, 'Sections'); if (!$sections) continue; // echo 'Prefix: ['.$prefix.'] has ['.count($sections).'] sections
'; foreach ($sections as $section_name => $section_params) { // we could also skip not allowed sections here in future $section_params['SectionPrefix'] = $prefix; $section_params['url']['m_opener'] = 'r'; $section_params['url']['no_pass_through'] = 1; $pass_section = getArrayValue($section_params, 'url', 'pass_section'); if ($pass_section) { unset($section_params['url']['pass_section']); $section_params['url']['section'] = $section_name; if (!isset($section_params['url']['module'])) { $module_name = $this->Application->findModule('Path', $config['ModuleFolder'].'/', 'Name'); $section_params['url']['module'] = $module_name; } } if (!isset($section_params['url']['t'])) { $section_params['url']['t'] = 'index'; } if (!isset($section_params['onclick'])) { $section_params['onclick'] = 'checkEditMode()'; } $current_data = isset($this->Tree[$section_name]) ? $this->Tree[$section_name] : Array(); $this->Tree[$section_name] = array_merge_recursive2($current_data, $section_params); $this->Tree[ $section_params['parent'] ]['children'][ "{$section_params['priority']}" ] = $section_name; if ($section_params['type'] == stTAB) { // if this is tab, then mark parent section as TabOnly $this->Tree[ $section_params['parent'] ]['tabs_only'] = true; } } } $this->Conn->Query('REPLACE '.TABLE_PREFIX.'Cache (VarName, Data, Cached) VALUES ("sections_parsed", '.$this->Conn->qstr(serialize($this->Tree)).', '.adodb_mktime().')'); } /** * Returns details information about section * * @param string $section_name * @return Array */ function &getSectionData($section_name) { if (isset($this->Tree[$section_name])) { $ret =& $this->Tree[$section_name]; } else { $ret = Array(); } return $ret; } } ?>