protected function renameChild(HTML_QuickForm2_Node $element) { $tokens = explode('[', str_replace(']', '', $element->getName())); if ($this === $element->getContainer()) { // Child has already been renamed by its group before if (!is_null($this->previousName) && $this->previousName !== '') { $gtokens = explode('[', str_replace(']', '', $this->previousName)); $pos = array_search(end($gtokens), $tokens); if (!is_null($pos)) { $tokens = array_slice($tokens, $pos + 1); } } } if (is_null($this->name) || $this->name === '') { if (is_null($this->previousName) || $this->previousName === '') { return $element; } else { $elname = $tokens[0]; unset($tokens[0]); foreach ($tokens as $v) { $elname .= '[' . $v . ']'; } } } else { $elname = $this->getName() . '[' . implode('][', $tokens) . ']'; } $element->setName($elname); return $element; }
/** * Prepends group's name to contained element's name * * Used when adding an element to the group or changing group's name * * @param HTML_QuickForm2_Node $element * * @return HTML_QuickForm2_Node */ protected function renameChild(HTML_QuickForm2_Node $element) { $tokens = explode('[', str_replace(']', '', $element->getName())); // Child has already been renamed by its group before if ($this === $element->getContainer() && strlen($this->previousName)) { $gtokens = explode('[', str_replace(']', '', $this->previousName)); if ($gtokens === array_slice($tokens, 0, count($gtokens))) { array_splice($tokens, 0, count($gtokens)); } } if (strlen($this->name)) { $element->setName($this->name . '[' . implode('][', $tokens) . ']'); } elseif (strlen($this->previousName)) { $elname = array_shift($tokens); foreach ($tokens as $token) { $elname .= '[' . $token . ']'; } $element->setName($elname); } return $element; }