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

/**
 * Request. Uses the [Route] class to determine what
 * [Controller] to send the request to.
 *
 * @package    OSB
 * @category   Modifications
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Request extends Kohana_Request {
	/**
	 * Sets and gets the directory for the controller.
	 *
	 * We override the Kohana version, so that we can have short directory URLs.
	 * eg: admin=>a,reseller=>r.
	 *
	 * @param   string   $directory  Directory to execute the controller from
	 * @return  mixed
	 */
	public function directory($directory = NULL) {
		// If $directory is NULL, we are a getter and see if we need to expand the directory
		if ($directory === NULL AND $this->_directory)
			$this->_directory = URL::dir($this->_directory);

		return parent::directory($directory);
	}

	/**
	 * Get our Module_Method object for this request
	 */
	public function mmo() {
		static $result = FALSE;

		if (is_null($result) OR $result)
			return $result;

		$result = NULL;

		$mo = ORM::factory('Module',array('name'=>$this->_controller));

		if ($mo->loaded() AND $mo->status) {
			$method = strtolower($this->_directory ? sprintf('%s_%s',$this->_directory,$this->_action) : $this->_action);

			// Get the method number
			$mmo = $mo->module_method->where('name','=',$method)->find();

			if ($mmo->loaded())
				$result = $mmo;
		}

		return $result;
	}
}
?>