public static function CreatePersistent($strClassName, $objParentObject, $strControlId)
{
if ($objParentObject instanceof QForm) {
$objForm = $objParentObject;
$objParentControl = null;
} else {
if ($objParentObject instanceof QControl) {
$objForm = $objParentObject->Form;
$objParentControl = $objParentObject;
} else {
throw new QCallerException('Parent Object must be a QForm or QControl');
}
}
if (array_key_exists($objForm->FormId . '_' . $strControlId, $_SESSION) && $_SESSION[$objForm->FormId . '_' . $strControlId]) {
$objToReturn = unserialize($_SESSION[$objForm->FormId . '_' . $strControlId]);
$objToReturn->objParentControl = $objParentControl;
$objToReturn->objForm = $objForm;
try {
$objToReturn->objForm->AddControl($objToReturn);
if ($objToReturn->objParentControl) {
$objToReturn->objParentControl->AddChildControl($objToReturn);
}
} catch (QCallerException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
} else {
$objToReturn = new $strClassName($objParentObject, $strControlId);
}
$objForm->PersistControl($objToReturn);
return $objToReturn;
}