<?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 lnApp_Request {
	/**
	 * Get our Module_Method object for this request
	 */
	public function mmo() {
		static $result = FALSE;

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

		$result = NULL;

		list($c,$x) = substr_count($this->_controller,'_') ? explode('_',$this->_controller,2) : array($this->_controller,'');

		$mo = ORM::factory('Module',array('name'=>$c));

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

			// Get the method number
			$mmo = $mo->module_method
				->where_open()
				->where('name','=',$method)
				->or_where('name','=',str_replace(':','_',$method)) // @todo This is temporary until all our method names have a colon delimiter
				->where_close()
				->find();

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

		return $result;
	}
}
?>
