protected function getOptions()
{
$arrOptions = array();
$blnHasGroups = false;
// Add empty option if there are none
if (empty($this->arrOptions)) {
$this->arrOptions = array(array('value' => '', 'label' => '-'));
}
// Generate options
foreach ($this->arrOptions as $arrOption) {
if ($arrOption['group']) {
if ($blnHasGroups) {
$arrOptions[] = array('type' => 'group_end');
}
$arrOptions[] = array('type' => 'group_start', 'label' => \StringUtil::specialchars($arrOption['label']));
$blnHasGroups = true;
} else {
$arrOptions[] = array_replace($arrOption, array('type' => 'option', 'value' => $arrOption['value'], 'selected' => $this->isSelected($arrOption), 'label' => $arrOption['label']));
}
}
if ($blnHasGroups) {
$arrOptions[] = array('type' => 'group_end');
}
return $arrOptions;
}