/** Returns Themes instances.
  * @param      string      $theme_name
  * @param      array       $params
  * @return     object      MicroBuilder_Theme
  */
 function make($theme_name, $params = null)
 {
     $path = MicroBuilder_Theme_Factory::_getThemeClassPath($theme_name);
     require_once $path;
     $themeclass = "Theme_{$theme_name}";
     $t =& new $themeclass();
     return $t;
 }
 /** Initialisation.
  *   - setup error handling
  *   - load configuration data
  *   - set up theme
  */
 function __init()
 {
     // Load config
     $conf =& new Config();
     $conf->parseConfig('/home/mbertier/dev/htdocs/mb/conf/microbuilder-conf.ini', 'GenericConf');
     //        $conf->parseConfig( '/var/www/localhost/mb/conf/microbuilder-conf.ini', 'GenericConf' );
     $confroot =& $conf->getRoot();
     $confarray = $confroot->toArray();
     $this->conf =& $confarray['root'];
     // Error Handling
     $this->err =& PEAR_ErrorStack::singleton('MicroBuilder');
     // -- Callback
     $errcallback =& new MicroBuilder_ErrorCallback();
     $this->err->setDefaultCallback(array(&$errcallback, 'errorCallback'));
     // -- Error messages templates
     $msg = array(MB_NONEXISTENT_THEME => "Requested theme '%theme%' could not be found.", MB_NONEXISTENT_MODULE => "Requested module '%module%' could not be found.", MB_NONEXISTENT_BLOCK => "Requested block '%module%::%block%' could not be found.");
     $this->err->setErrorMessageTemplate($msg);
     $msgcallback =& new MicroBuilder_MessageCallback();
     $msgcallback->verbosity = $this->conf['error_verbosity'];
     $this->err->setMessageCallback(array(&$msgcallback, 'messageCallback'));
     // -- Logger
     $logpath = $this->conf['prefix'] . '/logs/' . $this->conf['log_file'];
     $log =& Log::singleton('file', $logpath, 'MicroBuilder error log');
     PEAR_ErrorStack::setDefaultLogger($log);
     // Constants
     // -- this conf constants are needed by factories to access conf (factories are static)
     define("MB_CONF_PREFIX", $this->conf['prefix']);
     define("MB_ERROR_VERBOSITY", $this->conf['error_verbosity']);
     // Theme
     // -- UI description
     $this->ui =& new MicroBuilder_UI();
     // -- Theme object
     $this->theme =& MicroBuilder_Theme_Factory::make($this->conf['default_theme']);
     $this->theme->setTitle($this->conf['site_name']);
 }