module_srl = $module_srl; } /** * Register a key of extra variable * * @param object[] $extra_keys Array of extra variable. A value of array is object that contains module_srl, idx, name, default, desc, is_required, search, value, eid. * @return void */ function setExtraVarKeys($extra_keys) { if(!is_array($extra_keys) || !count($extra_keys)) return; foreach($extra_keys as $key => $val) { $obj = null; $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $this->keys[$val->idx] = $obj; } } /** * Returns an array of ExtraItem * * @return ExtraItem[] */ function getExtraVars() { return $this->keys; } } /** * Each value of the extra vars * * @author NHN (developers@xpressengine.com) */ class ExtraItem { /** * Sequence of module * @var int */ var $module_srl = 0; /** * Index of extra variable * @var int */ var $idx = 0; /** * Name of extra variable * @var string */ var $name = 0; /** * Type of extra variable * @var string text, homepage, email_address, tel, textarea, checkbox, date, select, radio, kr_zip */ var $type = 'text'; /** * Default values * @var string[] */ var $default = null; /** * Description * @var string */ var $desc = ''; /** * Whether required or not requred this extra variable * @var string Y, N */ var $is_required = 'N'; /** * Whether can or can not search this extra variable * @var string Y, N */ var $search = 'N'; /** * Value * @var string */ var $value = null; /** * Unique id of extra variable in module * @var string */ var $eid = ''; /** * Constructor * * @param int $module_srl Sequence of module * @param int $idx Index of extra variable * @param string $type Type of extra variable. text, homepage, email_address, tel, textarea, checkbox, date, sleect, radio, kr_zip * @param string[] $default Default values * @param string $desc Description * @param string $is_required Whether required or not requred this extra variable. Y, N * @param string $search Whether can or can not search this extra variable * @param string $value Value * @param string $eid Unique id of extra variable in module * @return void */ function ExtraItem($module_srl, $idx, $name, $type = 'text', $default = null, $desc = '', $is_required = 'N', $search = 'N', $value = null, $eid = '') { if(!$idx) return; $this->module_srl = $module_srl; $this->idx = $idx; $this->name = $name; $this->type = $type; $this->default = $default; $this->desc = $desc; $this->is_required = $is_required; $this->search = $search; $this->value = $value; $this->eid = $eid; } /** * Sets Value * * @param string $value The value to set * @return void */ function setValue($value) { $this->value = $value; } /** * Returns a given value converted based on its type * * @param string $type Type of variable * @param string $value Value * @return string Returns a converted value */ function _getTypeValue($type, $value) { $value = trim($value); if(!isset($value)) return; switch($type) { case 'homepage' : if($value && !preg_match('/^([a-z]+):\/\//i',$value)) $value = 'http://'.$value; return htmlspecialchars($value); break; case 'tel' : if(is_array($value)) $values = $value; elseif(strpos($value,'|@|')!==false) $values = explode('|@|', $value); elseif(strpos($value,',')!==false) $values = explode(',', $value); $values[0] = $values[0]; $values[1] = $values[1]; $values[2] = $values[2]; return $values; break; break; case 'checkbox' : case 'radio' : case 'select' : if(is_array($value)) $values = $value; elseif(strpos($value,'|@|')!==false) $values = explode('|@|', $value); elseif(strpos($value,',')!==false) $values = explode(',', $value); else $values = array($value); for($i=0;$i_getTypeValue($this->type, $this->value); switch($this->type) { case 'homepage' : return ($value)?(sprintf('%s', $value, strlen($value)>60?substr($value,0,40).'...'.substr($value,-10):$value)):""; case 'email_address' : return ($value)?sprintf('%s', $value, $value):""; break; case 'tel' : return sprintf('%s - %s - %s', $value[0],$value[1],$value[2]); break; case 'textarea' : return nl2br($value); break; case 'checkbox' : if(is_array($value)) return implode(', ',$value); else return $value; break; case 'date' : return zdate($value,"Y-m-d"); break; case 'select' : case 'radio' : if(is_array($value)) return implode(', ',$value); else return $value; break; case 'kr_zip' : if(is_array($value)) return implode(' ',$value); else return $value; break; // case 'text' : default : return $value; } } /** * Returns a form based on its type * * @return string Returns a form html. */ function getFormHTML() { static $id_num = 1000; $type = $this->type; $name = $this->name; $value = $this->_getTypeValue($this->type, $this->value); $default = $this->_getTypeValue($this->type, $this->default); $column_name = 'extra_vars'.$this->idx; $tmp_id = $column_name.'-'.$id_num++; $buff = ''; switch($type) { // Homepage case 'homepage' : $buff .= ''; break; // Email Address case 'email_address' : $buff .= ''; break; // Phone Number case 'tel' : $buff .= ''. ''. ''; break; // textarea case 'textarea' : $buff .= ''; break; // multiple choice case 'checkbox' : $buff .= ''; break; // single choice case 'select' : $buff .= ''; break; // radio case 'radio' : $buff .= ''; break; // date case 'date' : // datepicker javascript plugin load Context::loadJavascriptPlugin('ui.datepicker'); $buff .= ''. ' '."\n". ''; break; // address case "kr_zip" : // krzip address javascript plugin load Context::loadJavascriptPlugin('ui.krzip'); $buff .= '
'. ''. ''.Context::getLang('cmd_cancel').''. '
'. ''. '
'. ''. ''.Context::getLang('cmd_search').''. '
'. ''. ''; break; // General text default : $buff .=' '; break; } if($this->desc) $buff .= '

'.$this->desc.'

'; return $buff; } } /* End of file ExtraVar.class.php */ /* Location: ./classes/extravar/ExtraVar.class.php */