/** * This will save this object's <%= $objTable->ClassName; %> instance, * updating only the fields which have had a control created for it. */ public function Save<%= $objTable->ClassName; %>() { try { // Update any fields for controls that have been created <% foreach ($objTable->ColumnArray as $objColumn) { %><% if ((!$objColumn->Identity) && (!$objColumn->Timestamp)) { // Use the "control_create_" subtemplates to generate the code // required to create/setup the control. $mixArguments = array( 'objColumn' => $objColumn, 'strObjectName' => $objCodeGen->VariableNameFromTable($objTable->Name), 'strClassName' => $objTable->ClassName, 'strControlId' => $objCodeGen->FormControlVariableNameForColumn($objColumn) ); // Figure out WHICH "control_create_" to use if ($objColumn->Reference) { if ($objColumn->Reference->IsType) $strTemplateFilename = 'type'; else $strTemplateFilename = 'reference'; } else switch ($objColumn->VariableType) { case QType::Boolean: $strTemplateFilename = 'checkbox'; break; case QType::DateTime: $strTemplateFilename = 'calendar'; break; default: $strTemplateFilename = 'textbox'; break; } // Get the subtemplate and evaluate return $objCodeGen->EvaluateSubTemplate(sprintf('control_update_%s.tpl', $strTemplateFilename), $strModuleName, $mixArguments) . "\n"; } else return null; %><% } %> // Update any UniqueReverseReferences (if any) for controls that have been created for it <% foreach ($objTable->ReverseReferenceArray as $objReverseReference) { %><% if ($objReverseReference->Unique) { // Use the "control_update_unique_reversereference" subtemplate to generate the code // required to create/setup the control. $mixArguments = array( 'objReverseReference' => $objReverseReference, 'strObjectName' => $objCodeGen->VariableNameFromTable($objTable->Name), 'strClassName' => $objTable->ClassName, 'strControlId' => $objCodeGen->FormControlVariableNameForUniqueReverseReference($objReverseReference) ); // Get the subtemplate and evaluate return $objCodeGen->EvaluateSubTemplate('control_update_unique_reversereference.tpl', $strModuleName, $mixArguments) . "\n"; } else return null; %><% } %> // Save the <%= $objTable->ClassName; %> object $this-><%= $objCodeGen->VariableNameFromTable($objTable->Name); %>->Save(); // Finally, update any ManyToManyReferences (if any) <% foreach ($objTable->ManyToManyReferenceArray as $objManyToManyReference) { %> $this-><%= $objCodeGen->FormControlVariableNameForManyToManyReference($objManyToManyReference); %>_Update(); <% } %> } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } }