/** retrieve data for sidebar 
  *
  * this retrieves the content of the various sidebar blocks (if any)
  * currently only the htmlpage module is supported.
  * 
  * @param array $sidebar_nodes contains node-module pairs to show
  * @param string $m add to human readability
  * @return string ready-to-use HTML-code
  */
 function cornelia_get_sidebar($sidebar_nodes, $m = '')
 {
     $s = '';
     $modules = get_module_records();
     if (!empty($sidebar_nodes)) {
         $index = 0;
         foreach ($sidebar_nodes as $node_id => $module_id) {
             ++$index;
             switch ($modules[$module_id]['name']) {
                 case 'htmlpage':
                     $s .= $this->cornelia_get_sidebar_htmlpage($index, $node_id, $m);
                     break;
             }
         }
     }
     return $s;
 }
 /** load the admin interface of a module in core
  *
  * this includes the 'admin'-part of a module via 'require_once()'. This routine
  * first figures out if the admin-script file actually exists before the
  * file is included. Also, we look at a very specific location, namely:
  * /program/modules/<modulename>/<module_admin_script> where <modulename> is retrieved
  * from the modules table in the database.
  *
  * Note that if modulename would somehow be something like "../../../../../../etc/passwd\x00",
  * we could be in trouble...
  *
  * @param int $module_id indicates which module to load
  * @return bool|array FALSE on error or an array with the module record from the modules table
  * @todo should we sanitise the modulename here? It is not user input, but it comes from the modules
  *       table in the database. However, if a module name would contain sequences of "../" we might
  *       be in trouble
  */
 function module_load_admin($module_id)
 {
     global $CFG;
     $modules = get_module_records();
     if (!isset($modules[$module_id])) {
         logger(__FUNCTION__ . "(): weird: module '{$module_id}' is not there. Is it de-activated?");
         return FALSE;
     }
     $module = $modules[$module_id];
     unset($modules);
     $module_admin_script = $CFG->progdir . '/modules/' . $module['name'] . '/' . $module['admin_script'];
     if (!file_exists($module_admin_script)) {
         logger(__FUNCTION__ . "(): weird: file '{$module_admin_script}' does not exist. Huh?");
         return FALSE;
     }
     require_once $module_admin_script;
     return $module;
 }