/** Fabrique de modules. * @param string $module_name * @param string $block_name * @param array $params */ function make($module_name, $block_name, $params = null) { $path = MicroBuilder_ModuleBlock_Factory::_getBlockClassPath($module_name, $block_name); if ($path) { require_once $path; $modclass = "ModuleBlock_" . $module_name . "_" . $block_name; $m =& new $modclass(); return $m; } else { return null; } }
/** 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(); }