Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
da55db28
Commit
da55db28
authored
Jan 05, 2007
by
Dries Buytaert
Browse files
- Patch
#24023
by dww: rename form_get_option_key() and fix its behavior.
parent
2d7ab225
Changes
1
Hide whitespace changes
Inline
Side-by-side
includes/form.inc
View file @
da55db28
...
...
@@ -942,24 +942,53 @@ function form_select_options($element, $choices = NULL) {
}
/**
* Traverses a select element's #option array looking for the object that
* holds the given key. Returns FALSE if not found. As usual with functions
* that can return 0 or FALSE do not forget to use === and !== if needed.
* Traverses a select element's #option array looking for any values
* that hold the given key. Returns an array of indexes that match.
*
* This function is useful if you need to modify the options that are
* already in a form element, for example, to remove choices which are
* not valid because of additional filters imposed by another module.
* One example might be altering the choices in a taxonomy selector.
* To correctly handle the case of a multiple hierarchy taxonomy,
* #options arrays can now hold an array of objects, instead of a
* direct mapping of keys to labels, so that multiple choices in the
* selector can have the same key (and label). This makes it difficult
* to manipulate directly, which is why this helper function exists.
*
* This function does not support optgroups (when the elements of the
* #options array are themselves arrays), and will return FALSE if
* arrays are found. The caller must either flatten/restore or
* manually do their manipulations in this case, since returning the
* index is not sufficient, and supporting this would make the
* "helper" too complicated and cumbersome to be of any help.
*
* As usual with functions that can return array() or FALSE, do not
* forget to use === and !== if needed.
*
* @param $element
* The select element.
* The select element
to search
.
* @param $key
* The key to look for.
* @return
* The index of the object that held the $key with some value, or FALSE.
* An array of indexes that match the given $key. Array will be
* empty if no elements were found. FALSE if optgroups were found.
*/
function
form_get_option_key
(
$element
,
$key
)
{
foreach
(
$element
[
'#options'
]
as
$index
=>
$object
)
{
if
(
isset
(
$object
->
option
[
$key
]))
{
return
$index
;
function
form_get_options
(
$element
,
$key
)
{
$keys
=
array
();
foreach
(
$element
[
'#options'
]
as
$index
=>
$choice
)
{
if
(
is_array
(
$choice
))
{
return
FALSE
;
}
else
if
(
is_object
(
$choice
))
{
if
(
isset
(
$choice
->
option
[
$key
]))
{
$keys
[]
=
$index
;
}
}
else
if
(
$index
==
$key
)
{
$keys
[]
=
$index
;
}
}
return
FALSE
;
return
$keys
;
}
/**
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment