Esempio n. 1
0
 /** Fabrique de modules. 
  * @param      string      $module_name */
 function make($module_name, $params = null)
 {
     $path = MicroBuilder_Module_Factory::_getModuleClassPath($module_name);
     if ($path) {
         require_once $path;
         $modclass = "Module_{$module_name}";
         $m =& new $modclass();
         return $m;
     }
 }
 /** Exécution du contrôleur. 
  */
 function start()
 {
     // Parse request data
     $req_data = $this->_parseRequestData($_GET);
     // Instanciate requested module
     $module =& MicroBuilder_Module_Factory::make($req_data['module']);
     // Check if anything went wrong during module creation
     if ($this->err->hasErrors()) {
         $err = $this->err->pop();
         $msg = '<p class="error">Error while loading module \'' . $req_data['module'] . '\': ' . $err['message'] . '</p>';
         $this->theme->addToMain($msg);
     } else {
         // Execute requested action
         $module->executeAction($req_data['action'], $req_data);
         // If something went wrong, display error message.
         if ($module->err->hasErrors()) {
             $err =& $module->err->pop();
             $this->theme->addToMain('<p class="error">Module error: ' . $err['message'] . '</p>');
         } else {
             $this->theme->addToMain($module);
         }
     }
     // Navigation menu
     // TODO -- use accessor
     $this->theme->_navItems = $this->ui->getNavItems();
     // Blocks
     foreach ($this->ui->getBlocks() as $module => $blocks) {
         foreach ($blocks as $block) {
             $b_obj =& MicroBuilder_ModuleBlock_Factory::make($module, $block);
             // Check for errors and display error in place of block if any
             if ($this->err->hasErrors()) {
                 $err_block =& MicroBuilder_ModuleBlock_Factory::makeCoreBlock('ErrorBlock');
                 $err_block->setError($this->err->pop());
                 $err_block->setName($block);
                 $this->theme->addBlock($err_block);
             } else {
                 $this->theme->addBlock($b_obj);
             }
         }
     }
     // Build & display page
     $this->theme->build();
     $this->theme->display();
 }