diff options
author | Dries Buytaert <dries@buytaert.net> | 2007-10-19 16:59:28 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2007-10-19 16:59:28 +0000 |
commit | 8d526b10e58fa9cf3bb4eee53a7ec2310b8a595a (patch) | |
tree | a1f4c062612110fc6d8f7f01a9b62d2340bd3a83 /includes | |
parent | 3742d7428ee114371b5765119a096346a9e37361 (diff) | |
download | brdo-8d526b10e58fa9cf3bb4eee53a7ec2310b8a595a.tar.gz brdo-8d526b10e58fa9cf3bb4eee53a7ec2310b8a595a.tar.bz2 |
- Patch #111719 by dvessel et al: ensure clean form IDs.
Diffstat (limited to 'includes')
-rw-r--r-- | includes/form.inc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/includes/form.inc b/includes/form.inc index 9c1062ef4..f5f224265 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -2002,7 +2002,8 @@ function _form_set_class(&$element, $class = array()) { } /** - * Remove invalid characters from an HTML ID attribute string. + * Prepare an HTML ID attribute string by removing invalid characters and + * guaranteeing uniqueness. * * @param $id * The ID to clean. @@ -2010,7 +2011,19 @@ function _form_set_class(&$element, $class = array()) { * The cleaned ID. */ function form_clean_id($id = NULL) { + static $seen_ids = array(); + $id = str_replace(array('][', '_', ' '), '-', $id); + + // Ensure id's are unique. The first occurrence is held but left alone. + // Subsequent occurrences get a number appended to them. + if (isset($seen_ids[$id])) { + $id = $id .'-'. $seen_ids[$id]++; + } + else { + $seen_ids[$id] = 1; + } + return $id; } |