context); $module_path = (MODPATH . "{$context['name']}"); switch ($context["step"]) { case 0: // Create directory tree foreach (array("", "controllers", "helpers", "js", "views") as $dir) { $path = "$module_path/$dir"; if (!file_exists($path)) { mkdir($path, 0774); } } break; case 1: // Generate installer ob_start(); $v = new View("installer.txt"); $v->module_name = $context['name']; $v->callbacks = $context["theme"]; print $v->render(); file_put_contents("$module_path/helpers/{$context['name']}_installer.php", ob_get_contents()); ob_end_clean(); break; case 2: // Generate theme helper self::_render_helper_file($context, "theme"); break; case 3: // Generate block helper self::_render_helper_file($context, "block"); break; case 4: // Generate menu helper self::_render_helper_file($context, "menu"); break; case 5: // Generate event helper self::_render_helper_file($context, "event"); break; case 6: // Generate module.info (do last) ob_start(); $v = new View("module_info.txt"); $v->module_name = $context['name']; $v->module_description = $context["description"]; print $v->render(); file_put_contents("$module_path/module.info", ob_get_contents()); ob_end_clean(); break; } $task->done = (++$context["step"]) >= 7; $task->context = serialize($context); $task->state = "success"; $task->percent_complete = ($context["step"] / 7.0) * 100; } private static function _render_helper_file($context, $helper) { if (!empty($context[$helper])) { $config = Kohana::config("developer.methods"); ob_start(); $v = new View("helpers.txt"); $v->helper = $helper; $v->module_name = $context['name']; $v->callbacks = array(); foreach ($context[$helper] as $callback) { $v->callbacks[$callback] = $config[$helper][$callback]; } print $v->render(); file_put_contents(MODPATH . "{$context['name']}/helpers/{$context['name']}_{$helper}.php", ob_get_contents()); ob_end_clean(); } } }