87 lines
2.5 KiB
PHP
87 lines
2.5 KiB
PHP
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
/**
|
|
* This is class is renders standard values based on DB table row values.
|
|
*
|
|
* @package OSB
|
|
* @subpackage Utilities
|
|
* @category Helpers
|
|
* @author Deon George
|
|
* @copyright (c) 2010 Deon George
|
|
* @license http://dev.leenooks.net/license.html
|
|
*/
|
|
abstract class StaticListModule extends StaticList {
|
|
protected static $record = array();
|
|
|
|
/**
|
|
* Display a static name for a value
|
|
*/
|
|
public static function display($id) {
|
|
// Override our argument list as defined in parent
|
|
list($table,$key,$skey,$value) = func_get_args();
|
|
$db = DB::select($key)->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();
|
|
|
|
// @todo - our query type should come from our configuration?
|
|
$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);
|
|
}
|
|
}
|
|
?>
|