clsItemDB(); $this->tablename = GetTablePrefix()."Modules"; $this->type=11; $this->BasePermission=""; $this->id_field = "Name"; $this->debuglevel=0; if(strlen($name)) $this->LoadFromDatabase($name); } function ExecuteFunction($function_name, $params) { $function_name = $this->Get('Var').'_'.$function_name; if( function_exists($function_name) ) { return $function_name($params); } else { return false; } } } class clsModList extends clsItemCollection { function clsModList() { $this->clsItemCollection(); $this->SourceTable=GetTablePrefix()."Modules"; $this->classname = "clsModule"; $this->LoadModules(); } function LoadModules() { $this->Clear(); return $this->Query_Item('SELECT * FROM '.$this->SourceTable.' WHERE Loaded = 1'); } function &FindModule($fieldname, $value) { // finds module by field specified $keys = array_keys($this->Items); foreach ($keys as $key) { $module =& $this->Items[$key]; if (strcasecmp($module->Get($fieldname), $value) == 0) { return $module; } } $false = false; return $false; } function GetModuleList() { // returns installed modules list $ret = Array(); foreach($this->Items as $module) $ret[] = $module->Get('Name'); return $ret; } function &GetModule($name) { //$this->LoadModules(); return $this->FindModule('Name', $name); } function ExecuteFunction($function, $params = Array() ) { // call specified function for each module // and returns result as array (key = module name) $result = Array(); foreach($this->Items as $module) { $result[ $module->Get('Name') ] = $module->ExecuteFunction($function, $params); } return $result; } function GetModuleByPath($path) { $ret = false; if(strlen($path)) { $parts = explode("/",$path); $modpath = $parts[0]."/"; //$this->LoadModules(); return $this->FindModule('TemplatePath',$modpath); } return $ret; } function GetModuleRoot($name) { //$this->LoadModules(); $mod = $this->FindModule('Name', $name); return is_object($mod) ? $mod->Get("RootCat") : 0; } function SetModuleRoot($name, $CatId) { $mod =& $this->FindModule('Name', $name); if( is_object($mod) ) { $mod->Set('RootCat',$CatId); $mod->Update(); } } function Refresh() { // reloads table content $this->LoadModules(); } function ModuleInstalled($name) { //$this->LoadModules(); return $this->FindModule('Name',$name); } function MergeReturn($array) { // merge results ganed with ExecuteFunction // method in a specific way $tmp = Array(); foreach($array as $mod_name => $mod_results) if (is_array($mod_results)) { foreach($mod_results as $mod_var => $mod_var_value) { $tmp[$mod_var][$mod_name] = $mod_var_value; } } return $tmp; } }