Index: trunk/core/units/general/helpers/sections_helper.php =================================================================== diff -u -N --- trunk/core/units/general/helpers/sections_helper.php (revision 7391) +++ trunk/core/units/general/helpers/sections_helper.php (revision 0) @@ -1,165 +0,0 @@ -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'); - } - - // 1. build base tree (don't update parent with children list yet) - $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 - if ( isset($section_params['SectionPrefix']) ) { - $section_prefix = $section_params['SectionPrefix']; - } - elseif ( $this->Application->getUnitOption($prefix, 'SectionPrefix') ) { - $section_prefix = $this->Application->getUnitOption($prefix, 'SectionPrefix'); - } - else { - $section_prefix = $prefix; - } - $section_params['SectionPrefix'] = $section_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); - } - } - - // 2. apply section ajustments - foreach ($prefixes as $prefix) { - $config =& $unit_config_reader->configData[$prefix]; - $section_ajustments = getArrayValue($config, 'SectionAdjustments'); - if (!$section_ajustments) continue; - - foreach ($section_ajustments as $section_name => $ajustment_params) { - if (is_array($ajustment_params)) { - $this->Tree[$section_name] = array_merge_recursive2($this->Tree[$section_name], $ajustment_params); - } - else { - // then remove section - unset($this->Tree[$section_name]); - } - } - } - - // 3. - foreach ($this->Tree as $section_name => $section_params) { - // 3.1. update parent -> children references - $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; - } - - // 3.2. process icons here, because they also can be ajusted - if (isset($section_params['icon']) && preg_match('/([^:]+):(.*)/', $section_params['icon'], $regs)) { - $this->Tree[$section_name]['icon'] = $regs[2]; - $this->Tree[$section_name]['icon_module'] = $regs[1]; - $module_folder = trim( $this->Application->findModule('Name', $regs[1], 'Path'), '/'); - if ($module_folder == '') $module_folder = 'core'; - } - else { - $module_folder = $this->Application->getUnitOption($section_params['SectionPrefix'], 'ModuleFolder'); - } - - // this is to display HELP icon instead of missing one.. can be replaced with some other icon to draw attention - $icon_file = $module_folder.'/admin_templates/img/icons/icon24_'.$this->Tree[$section_name]['icon']; - if (!file_exists(FULL_PATH.'/'.$icon_file.'.gif')) { - $this->Tree[$section_name]['icon'] = 'help'; - $this->Tree[$section_name]['icon_module'] = 'core'; - } - } - $this->Application->HandleEvent( new kEvent('adm:OnAfterBuildTree') ); - - $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; - } - } - -?> \ No newline at end of file