Index: branches/5.3.x/core/kernel/db/db_tag_processor.php =================================================================== diff -u -N -r16600 -r16718 --- branches/5.3.x/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 16600) +++ branches/5.3.x/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 16718) @@ -1,6 +1,6 @@ getSelectedOptions($options, $selected_option_keys); } + elseif ( isset($params['unselected_only']) && $params['unselected_only'] ) { + $options = $this->getUnselectedOptions($options, $selected_option_keys); + } $column_changed = false; $option_number = $column_number = 1; @@ -1279,6 +1282,27 @@ } /** + * Returns only options, that have not been selected. + * + * @param array $options All options. + * @param array $selected_option_keys Selected options. + * + * @return array + */ + protected function getUnselectedOptions(array $options, array $selected_option_keys) + { + $ret = array(); + + foreach ( $options as $option_key => $option_title ) { + if ( !$this->isOptionSelected($option_key, $selected_option_keys) ) { + $ret[$option_key] = $option_title; + } + } + + return $ret; + } + + /** * Determines if given option is among selected ones. * * @param mixed $option_key Option key. @@ -2157,6 +2181,7 @@ case 'select': case 'multiselect': case 'radio': + case 'picker': if ($object->GetDBField('DirectOptions')) { // used for custom fields $options = $object->GetDBField('DirectOptions');