from($table)->where($skey,'=',$value)->execute(); if ($db->count() !== 1) return sprintf('No Value (%s)',$value); else return $db->get($key); } /** * This function is to return the cached value of the current active record * This is so that a follow up call to get an attribute of a value retrieved * can reuse the active record values. * This gets over a limitation where the query to form() to get a default * no longer exists (or is invalid) and you want other attributes of the * remaining active record, which may not be the default record. */ public static function record($table,$attribute,$skey,$value) { if (empty(static::$record[$table])) return static::display($table,$attribute,$skey,$value); else return static::$record[$table][$attribute]; } /** * Renders form input */ public static function form($name,$default='',$addblank=FALSE) { // Override our argument list as defined in parent list($name,$table,$default,$key,$value,$where,$addblank,$attributes) = func_get_args(); $db = DB::select()->from($table); foreach ($where as $k=>$v) { list ($op,$v) = explode(':',$v); $db->where($k,$op,$v); } $db = $db->execute(); // If we only have one record, dont make a select list if ($db->count() == 1) { static::$record[$table] = $db->as_array(); static::$record[$table] = array_shift(static::$record[$table]); return Form::hidden($name,$db->get($key)).$db->get($value); } // Else we return a select list $x = array(); if ($addblank) $x[] = ''; foreach ($db as $record) { $x[$record[$key]] = $record[$value]; // Save our static record, in case we reference this item again. if ($record[$key] == $default) static::$record[$table] = $record; } return Form::select($name,$x,$default,$attributes); } public static function get($value) { return static::factory()->_get($value); } } ?>