$parent is a optional value to indicate them inheritance. If $parent is null / not set, we simply fall back to the standard behavior, by using 'default'. $priority is an integer. Modules are sorted by priority and name. Lowest priority comes first. This property is currently ignored when dealing with themes. @param name string Module name @param desc string Module description @param author string Module author name @param version string Module version @param properties array extra properties (currently available keys : parent, priority, standalone_config, type, tplset) */ public function registerModule($name, $desc, $author, $version, $properties = array()) { # Fallback to legacy registerModule parameters if (!is_array($properties)) { $args = func_get_args(); $properties = array(); if (isset($args[4])) { $properties['parent'] = $args[4]; } if (isset($args[5])) { $properties['priority'] = (integer) $args[5]; } } # Themes specifics properties $properties = array_merge( array('parent' => null, 'tplset' => DC_DEFAULT_TPLSET), $properties, array('permissions' => 'admin') // force themes perms ); parent::registerModule($name, $desc, $author, $version, $properties); } /** Loads namespace $ns specific file for module with ID $id Note : actually, only 'public' namespace is supported with themes. @param id string Module ID @param ns string Namespace name */ public function loadNsFile($id, $ns = null) { switch ($ns) { case 'public': $parent = $this->modules[$id]['parent']; if ($parent) { // This is not a real cascade - since we don't call loadNsFile -, // thus limiting inclusion process. // TODO : See if we have to change this. $this->loadModuleFile($this->modules[$parent]['root'] . '/_public.php'); } $this->loadModuleFile($this->modules[$id]['root'] . '/_public.php'); break; } } }