Include/form/select.php

From Genitura

Jump to: navigation, search
<?php


/**
 * Select 
 * 
 * manage HTML select
 * 
 * @package form
 * @author Julien Halle <julienhalle@heptacube.com> 
 * @version Genitura - 05/01/2009
 */
class Select {

	var $name;
	var $case;
	var $class;
	var $on_change;
	var $default = Array();
	var $str;
	var $size;
	var $multiple;

	function Select($name, $case, $value="---",$default="---") {
		$this->name = $name;
		$this->case = $case;
		$this->set_default($value,$default);
	} // constructor

	function set_default($value = "---", $default = "---" ) {
		($value=='')?($value='---'):($value);
		if ( $value != '---' && $default == '---' ) {
			$arr = $this->get_values();
			$default = $arr[$value];
		}
		if($this->multiple)
			$this->default[$value] = $default;
		else
			$this->default = array($value=>$default);
	}

	function set_class($class){
		$this->class = $class;
	}

	function set_on_change($script){
		$this->on_change = $script;
	}

	function set_multiple($bool = "true"){
		$this->multiple = $bool;
	}

	function set_size($size){
		if (is_numeric($size)) {
			$this->size = $size;
		} else {
			die('invalid call to set_size($int)');
		}
	}

	function get_html() {
		$str = '<select name="'.$this->name.'" id="'.$this->name.'" ';
		if ($this->on_change) {
			$str .= 'onChange="'.$this->on_change.'" ';
		}
		if ($this->class) {
			$str .= 'class="'.$this->class.'" ';
		}
		if ($this->size) {
			$str .= 'size="'.$this->size.'" ';
		}
		if ($this->multiple) {
			$str .= 'multiple ';
		}
		$str .= '>';
		if ( array_search('---',$this->default) ) {
			$str .= $this->make_option('---');
		}
		$str .= $this->add_options();
		$str .= '</select>';
		return $str;
	}

	function add_options() {
		$arr = $this->get_values(); 
		foreach ($arr as $value => $string ) 
			$str .= $this->make_option($value,$string);
		return $str;
	}

	function make_option( $value, $string = '' ) {
		($string)?$string:($string = $value);
		($this->default[$value] == $string )?($selected='selected="selected" '):($selected="");
		return '<option value="'.$value.'" '.$selected.'>'.$string.'</option>';
		//return '<option value="'.htmlentities($value).'" '.$selected.' >'.htmlentities($string).'</option>';
	}

	function get_values() {
		if (is_array($this->case))
			return $this->case;
		$arr = array();
		$dbh = new SQL_Class('metaphore');
		$sql = $dbh->execute("SELECT id, ch_fr FROM filter_question_choice WHERE fk_filter_question_id=".addslashes($this->case));
		while ($row = $sql->fetch_assoc())
			$arr[$row['id']]=$row['ch_fr'];
		return $arr;
	}
}
?>
Personal tools