_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->_formated AND $this->_display_filters) $this->_format(); if (isset($this->_object_formated[$column])) return $this->_object_formated[$column]; else return HTML::nbsp($value); } /** * Override KH's ORM count_relations() function, to include our site_id in the query. * * This is a copy of KH's ORM count_relations() function, with the addition of a where * clause to include the site id. */ public function count_relations($alias, $far_keys = NULL) { if ($far_keys === NULL) { return (int) DB::select(array(DB::expr('COUNT(*)'), 'records_found')) ->from($this->_has_many[$alias]['through']) ->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk()) ->where('site_id', '=', Company::instance()->site()) ->execute($this->_db)->get('records_found'); } $far_keys = ($far_keys instanceof ORM) ? $far_keys->pk() : $far_keys; // We need an array to simplify the logic $far_keys = (array) $far_keys; // Nothing to check if the model isn't loaded or we don't have any far_keys if ( ! $far_keys OR ! $this->_loaded) return 0; $count = (int) DB::select(array(DB::expr('COUNT(*)'), 'records_found')) ->from($this->_has_many[$alias]['through']) ->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk()) ->where($this->_has_many[$alias]['far_key'], 'IN', $far_keys) ->where('site_id', '=', Company::instance()->site()) ->execute($this->_db)->get('records_found'); // Rows found need to match the rows searched return (int) $count; } /** OSB SPECIFIC ENHANCEMENTS **/ // Tables that do not have a site_id column public static $no_site_id_tables = array('setup','country','currency','language','tax'); /** * Add our OSB site_id to each SELECT query * @see parent::__build() */ final protected function _build($type) { // Exclude tables without site ID's if (! in_array($this->_table_name,ORM::$no_site_id_tables)) $this->where($this->_object_name.'.site_id','=',Company::instance()->site()); return parent::_build($type); } /** * Function help to find records that are active */ public function list_active() { return $this->_where_active()->find_all(); } /** * Function help to find records that are active */ protected function _where_active() { return $this->where('status','=',TRUE); } public function where_active() { return $this->_where_active(); } } ?>