/** * @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; }
/** * Converts an DAO object to an array. * * @param CRM_Core_DAO $dao * Object to convert. * @param array $params * @param bool $uniqueFields * @param string $entity * @param bool $autoFind * * @return array */ function _civicrm_api3_dao_to_array($dao, $params = NULL, $uniqueFields = TRUE, $entity = "", $autoFind = TRUE) { $result = array(); if (isset($params['options']) && !empty($params['options']['is_count'])) { return $dao->count(); } if (empty($dao)) { return array(); } if ($autoFind && !$dao->find()) { return array(); } if (isset($dao->count)) { return $dao->count; } $fields = array_keys(_civicrm_api3_build_fields_array($dao, $uniqueFields)); while ($dao->fetch()) { $tmp = array(); foreach ($fields as $key) { if (array_key_exists($key, $dao)) { // not sure on that one if ($dao->{$key} !== NULL) { $tmp[$key] = $dao->{$key}; } } } $result[$dao->id] = $tmp; if (_civicrm_api3_custom_fields_are_required($entity, $params)) { _civicrm_api3_custom_data_get($result[$dao->id], $entity, $dao->id); } } return $result; }