<?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(''=>' '),$table); return Form::Select($name,$table,$default); } } ?>