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

/**
 * OSB Application Module Model
 *
 * This module must remain in applications/ as it is used very early in the
 * OSB initialisation.
 *
 * @package    OSB
 * @category   Models
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Model_Module extends ORM_OSB {
	// Relationships
	protected $_has_one = array(
		'record_id'=>array('model'=>'Record_ID','far_key'=>'id'),
	);
	protected $_has_many = array(
		'module_method'=>array('far_key'=>'id'),
	);
	protected $_sorting = array(
		'name'=>'ASC',
	);

	protected $_display_filters = array(
		'external'=>array(
			array('StaticList_YesNo::get',array(':value',TRUE)),
		),
		'name'=>array(
			array('strtoupper',array(':value')),
		),
		'status'=>array(
			array('StaticList_YesNo::get',array(':value',TRUE)),
		),
	);

	/**
	 * Return an instance of this Module's Model
	 *
	 * @param $id PK of Model
	 */
	public function instance($id=NULL) {
		if (! $this->loaded())
			throw new Kohana_Exception('Cant call an instance of a model when it is not loaded');

		return ORM::factory(Kohana::classname($this->name),$id);
	}

	public function list_external() {
		return $this->_where_active()->where('external','=',TRUE)->find_all();
	}
}
?>
