Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
/**
 * 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;
}