public function copyFrom(DeploymentSurvey $oldSurvey) { // copy properties foreach (DeploymentSurvey::$db as $field => $type) { if (in_array($field, DeploymentSurveyMigrationOptions::$blank_fields)) { continue; } $new_value = ''; if (array_key_exists($field, DeploymentSurveyMigrationOptions::$migration_fields)) { $new_value = $oldSurvey->getField($field); if (empty($new_value)) { continue; } $table = DeploymentSurveyMigrationOptions::$migration_fields[$field]; foreach ($table as $old => $new) { $new_value = str_replace($old, $new, $new_value); } } else { $new_value = $oldSurvey->getField($field); } $this->setField($field, $new_value); } $this->setField('OrgID', $oldSurvey->getField('OrgID')); $this->setField('MemberID', $oldSurvey->getField('MemberID')); foreach ($oldSurvey->Deployments() as $oldDeployment) { $newDeployment = new Deployment(); $newDeployment->copyFrom($oldDeployment); $newDeployment->write(); $this->Deployments()->add($newDeployment); } foreach ($oldSurvey->AppDevSurveys() as $oldAppDev) { $newAppDev = new AppDevSurvey(); $newAppDev->copyFrom($oldAppDev); $newAppDev->write(); $this->AppDevSurveys()->add($newAppDev); } }