protected function &saveStateRecursive($needViewState = true)
{
if (isset($this->_rf[self::RF_ADAPTER])) {
$this->_rf[self::RF_ADAPTER]->saveState();
} else {
$this->saveState();
}
$needViewState = $needViewState && !($this->_flags & self::IS_DISABLE_VIEWSTATE);
$state = array();
if ($this->getHasControls()) {
foreach ($this->_rf[self::RF_CONTROLS] as $control) {
if ($control instanceof TControl) {
if (count($tmp =& $control->saveStateRecursive($needViewState))) {
$state[$control->_id] = $tmp;
}
}
}
}
if ($needViewState && !empty($this->_viewState)) {
$state[0] =& $this->_viewState;
}
if (isset($this->_rf[self::RF_CONTROLSTATE])) {
$state[1] =& $this->_rf[self::RF_CONTROLSTATE];
}
return $state;
}