function render($return = false) { $selected = $this->extractAttrib('selected'); $value = $this->extractAttrib('value'); $key = $this->extractAttrib('key'); $items = $this->extractAttrib('items'); $caption = $this->extractAttrib('caption'); $no_keys = $this->extractAttrib('no_keys'); if (strlen($value) && strlen($selected) == 0) { $selected = $value; } if (substr($selected, 0, 1) == ':') { $selected = intval(substr($selected, 1)); $selected_by_index = true; } else { $selected_by_index = false; } $out = '<select '; $out .= QUI::renderIdAndName($this); $out .= QUI::renderDisabled($this); $out .= QUI::renderAttribs($this); $out .= ">\n"; $items = (array) $items; if ($no_keys) { $items = array_combine($items, $items); } elseif ($key) { QUI::splitMultiDimArray($items, $key, $caption); } $ix = 0; foreach ($items as $caption => $value) { $out .= '<option value="' . htmlspecialchars($value) . '" '; if ($selected_by_index) { if ($ix == $selected) { $out .= 'selected="selected" '; } } else { if ($value == $selected) { $out .= 'selected="selected" '; } } $out .= '>'; $out .= htmlspecialchars($caption); $out .= "</option>\n"; $ix++; } $out .= "</select>\n"; if ($return) { return $out; } else { echo $out; return null; } }