function cloneUTable($attr) { //--------------------------------------------------------------------- // destination table must exist prior to call //--------------------------------------------------------------------- $csrcTable = new muser_fields_create(); $cdestTable = new muser_fields_create(); // load source table record $csrcTable->lTableID = $attr->lSrcTableID; $csrcTable->loadTableViaTableID(false); $srcTable =& $csrcTable->userTables[0]; // load source table fields $csrcTable->loadTableFields(true); $srcFields =& $csrcTable->fields; if ($csrcTable->lNumFields == 0) { return; } // nothing to clone // the destination table $cdestTable->lTableID = $attr->lDestTableID; $cdestTable->strENPTableName = $cdestTable->strGenUF_TableName($attr->lDestTableID); $cdestTable->fields = array(); $cdestTable->fields[0] = new stdClass(); $destField =& $cdestTable->fields[0]; foreach ($csrcTable->fields as $sfield) { $lSrcFieldID = $sfield->pff_lKeyID; $destField->enumFieldType = $enumFieldType = $sfield->enumFieldType; $destField->pff_strFieldNameUser = $sfield->pff_strFieldNameUser; $destField->pff_bCheckDef = $sfield->pff_bCheckDef; $destField->pff_curDef = $sfield->pff_curDef; $destField->pff_strTxtDef = $sfield->pff_strTxtDef; $destField->pff_lDef = $sfield->pff_lDef; $destField->pff_lCurrencyACO = $sfield->pff_lCurrencyACO; $destField->pff_bHidden = $sfield->pff_bHidden; $destField->pff_bRequired = $sfield->pff_bRequired; $destField->bPrefilled = $sfield->bPrefilled; $destField->strFieldNotes = $sfield->strFieldNotes; $lDestFieldID = $cdestTable->addNewField(); // map the sort order $cdestTable->setUFieldSortIDX($lDestFieldID, $sfield->lSortIDX); // clone the drop-down list entries if ($enumFieldType == CS_FT_DDL || $enumFieldType == CS_FT_DDLMULTI) { $this->cloneUFDDL($lSrcFieldID, $lDestFieldID); $cdestTable->setDDL_asConfigured($lDestFieldID); } } }