/** * @param CRM_Core_DAO $dao * @param $xml * @param bool $save * @param null $keyName * * @return bool */ public function copyData(&$dao, &$xml, $save = FALSE, $keyName = NULL) { if ($keyName) { if (isset($xml->{$keyName})) { $dao->{$keyName} = (string) $xml->{$keyName}; if ($dao->find(TRUE)) { CRM_Core_Session::setStatus(ts("Found %1, %2, %3", array(1 => $keyName, 2 => $dao->{$keyName}, 3 => $dao->__table)), '', 'info'); return FALSE; } } } $fields =& $dao->fields(); foreach ($fields as $name => $dontCare) { if (isset($xml->{$name})) { $value = (string) $xml->{$name}; $value = str_replace(CRM_Utils_Migrate_Export::XML_VALUE_SEPARATOR, CRM_Core_DAO::VALUE_SEPARATOR, $value); $dao->{$name} = $value; } } if ($save) { $dao->save(); } return TRUE; }