<?php defined('SYSPATH') or die('No direct access allowed.'); /** * This class overrides Kohana's ORM * * @package lnApp/Modifications * @category Classes * @category Helpers * @author Deon George * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ class ORM extends Kohana_ORM { protected $_table_names_plural = false; protected $_model_names_plural = false; private $_object_formated = array(); private $_formated = FALSE; // Our filters used to display values in a friendly format protected $_display_filters = array(); // Override check() so that it doesnt throw an exception. // @todo Need to figure out how to show the items that fail validation final public function check(Validation $extra_validation = NULL) { // Determine if any external validation failed $extra_errors = ($extra_validation AND ! $extra_validation->check()); // Always build a new validation object $this->_validation(); $array = $this->_validation; if (($this->_valid = $array->check()) === FALSE OR $extra_errors) { return FALSE; } return $this; } /** * Format fields for display purposes * * @param string column name * @return mixed */ private function _format() { foreach ($this->_display_filters as $column => $formats) $this->_object_formated[$column] = $this->run_filter($column,$this->__get($column),array($column=>$formats)); $this->_formated = TRUE; } /** * Return a formated columns, as per the model definition */ public function display($column) { // Trigger a load of the record. $value = $this->__get($column); // If some of our fields need to be formated for display purposes. if ($this->_loaded AND ! $this->_formated AND $this->_display_filters) $this->_format(); if (isset($this->_object_formated[$column])) return $this->_object_formated[$column]; else return HTML::nbsp($value); } } ?>