<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class provides the default template controller for rendering pages.
 *
 * @package    OSB
 * @category   Controllers
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
abstract class Controller_TemplateDefault extends lnApp_Controller_TemplateDefault {
	protected $auth_required = TRUE;

	// @todo To rework
	public function after() {
		$dc = URL::link('user','welcome/index');
		$m = sprintf('%s/%s',Request::current()->directory(),Request::current()->controller());

		BreadCrumb::URL(Request::current()->directory(),sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
		BreadCrumb::URL($m,method_exists($this,'action_menu') ? $m.'/menu' : sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);

		parent::after();
	}

	protected function save(Model $o) {
		try {
			return $o->save();

		} catch (ORM_Validation_Exception $e) {
			SystemMessage::factory()
				->title('Record NOT updated')
				->type('error')
				->body(join('<br/>',array_values($e->errors('models'))));

			return FALSE;
		}
	}

	protected function setup(array $config_items=array()) {
		$mo = ORM::factory('Module',array('name'=>Request::current()->controller()));
		if (! $mo->loaded())
			throw HTTP_Exception::factory(501,'Unknown module :module',array(':module'=>Request::current()->controller()));

		if ($_POST AND isset($_POST['module_config'][$mo->id]))
			Config::instance()->module_config($mo->name,$_POST['module_config'][$mo->id])->save();

		if ($config_items) {
			Block::factory()
				->title('Update Module Configuration')
				->title_icon('icon-wrench')
				->type('form-horizontal')
				->body(View::factory('setup/admin/module')->set('o',Company::instance()->so())->set('mid',$mo->id));
		}
	}
}
?>
