This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/application/classes/staticlist.php

73 lines
1.7 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This is class renders standard lists and their values
*
* @package OSB
* @subpackage Utilities
* @category Helpers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
abstract class StaticList {
// This is our list of items that will be rendered
protected $list = array();
/**
* Each static list type must provide the table function that contains
* the table of list and values.
*/
abstract protected function table();
public static function factory() {
throw new Kohana_Exception(':class is calling :method, when it should have its own method',
array(':class'=>get_called_class(),':method'=>__METHOD__));
}
/**
* Display a static name for a value
*
* @param key $id value to render
* @see _display()
*/
public static function display($value) {
return static::_display($value);
}
// Due to static scope, sometimes we need to call this function from the child class.
protected static function _display($id) {
$table = static::factory()->table();
if (! $table)
return 'No Table';
elseif (empty($table[$id]))
return sprintf('No Value (%s)',$id);
else
return $table[$id];
}
/**
* Lists our available keys
*/
public static function keys() {
return array_keys(static::factory()->table());
}
/**
* Renders form input
*
* @param string Form name to render
* @param string Default value to populate in the Form input.
*/
public static function form($name,$default='',$addblank=FALSE) {
$table = static::factory()->table();
if ($addblank)
$table = array_merge(array(''=>'&nbsp;'),$table);
return Form::Select($name,$table,$default);
}
}
?>