* @param array $params
*/
protected function assignTestFK($fieldName, $fieldDef, $params) {
- $required = CRM_Utils_Array::value('required', $fieldDef);
- $FKClassName = CRM_Utils_Array::value('FKClassName', $fieldDef);
+ $required = $fieldDef['required'] ?? NULL;
+ $FKClassName = $fieldDef['FKClassName'] ?? NULL;
$dbName = $fieldDef['name'];
$daoName = str_replace('_BAO_', '_DAO_', get_class($this));
}
else {
$this->$dbName = $dbName . '_' . $counter;
- $maxlength = CRM_Utils_Array::value('maxlength', $fieldDef);
+ $maxlength = $fieldDef['maxlength'] ?? NULL;
if ($maxlength > 0 && strlen($this->$dbName) > $maxlength) {
$this->$dbName = substr($this->$dbName, 0, $fieldDef['maxlength']);
}
* that belong to this object and initialize the object with said values
*
* @param array $params
- * (reference ) associative array of name/value pairs.
- * @param bool $serializeArrays
- * Should arrays that are passed in be serialised according to the metadata.
- * Eventually this should be always true / gone, but in the interests of caution
- * it is being grandfathered in. In general an array is not valid on the DAO
- * but there may be instances where this function is called & then some handling
- * takes place on the would-be array.
+ * Array of name/value pairs to save.
*
* @return bool
* Did we copy all null values into the object
*/
- public function copyValues(&$params, $serializeArrays = FALSE) {
- $fields = $this->fields();
+ public function copyValues($params) {
$allNull = TRUE;
- foreach ($fields as $name => $value) {
- $dbName = $value['name'];
+ foreach ($this->fields() as $uniqueName => $field) {
+ $dbName = $field['name'];
if (array_key_exists($dbName, $params)) {
- $pValue = $params[$dbName];
+ $value = $params[$dbName];
$exists = TRUE;
}
- elseif (array_key_exists($name, $params)) {
- $pValue = $params[$name];
+ elseif (array_key_exists($uniqueName, $params)) {
+ $value = $params[$uniqueName];
$exists = TRUE;
}
else {
// if there is no value then make the variable NULL
if ($exists) {
- if ($pValue === '') {
+ if ($value === '') {
$this->$dbName = 'null';
}
- elseif ($serializeArrays && is_array($pValue) && !empty($value['serialize'])) {
- $this->$dbName = CRM_Core_DAO::serializeField($pValue, $value['serialize']);
+ elseif (is_array($value) && !empty($field['serialize'])) {
+ $this->$dbName = CRM_Core_DAO::serializeField($value, $field['serialize']);
$allNull = FALSE;
}
else {
- if (!$serializeArrays && is_array($pValue) && !empty($value['serialize'])) {
- Civi::log()->warning(ts('use copyParams to serialize arrays (' . __CLASS__ . '.' . $name . ')'), ['civi.tag' => 'deprecated']);
- }
- $maxLength = CRM_Utils_Array::value('maxlength', $value);
- if (!is_array($pValue) && $maxLength && mb_strlen($pValue) > $maxLength
- && empty($value['pseudoconstant'])
- ) {
- Civi::log()->warning(ts('A string for field $dbName has been truncated. The original string was %1', [CRM_Utils_Type::escape($pValue, 'String')]));
+ $maxLength = $field['maxlength'] ?? NULL;
+ if (!is_array($value) && $maxLength && mb_strlen($value) > $maxLength && empty($field['pseudoconstant'])) {
+ Civi::log()->warning(ts('A string for field $dbName has been truncated. The original string was %1', [CRM_Utils_Type::escape($value, 'String')]));
// The string is too long - what to do what to do? Well losing data is generally bad so lets' truncate
- $pValue = CRM_Utils_String::ellipsify($pValue, $maxLength);
+ $value = CRM_Utils_String::ellipsify($value, $maxLength);
}
- $this->$dbName = $pValue;
+ $this->$dbName = $value;
$allNull = FALSE;
}
}
public static function makeAttribute($field) {
if ($field) {
if (CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_STRING) {
- $maxLength = CRM_Utils_Array::value('maxlength', $field);
- $size = CRM_Utils_Array::value('size', $field);
+ $maxLength = $field['maxlength'] ?? NULL;
+ $size = $field['size'] ?? NULL;
if ($maxLength || $size) {
$attributes = [];
if ($maxLength) {
}
}
elseif (CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_TEXT) {
- $rows = CRM_Utils_Array::value('rows', $field);
+ $rows = $field['rows'] ?? NULL;
if (!isset($rows)) {
$rows = 2;
}
- $cols = CRM_Utils_Array::value('cols', $field);
+ $cols = $field['cols'] ?? NULL;
if (!isset($cols)) {
$cols = 80;
}
$object = new $class();
$fields = $object->fields();
if ($fieldName != NULL) {
- $field = CRM_Utils_Array::value($fieldName, $fields);
+ $field = $fields[$fieldName] ?? NULL;
return self::makeAttribute($field);
}
else {
* @param bool $force
* Skip use of the cache.
*
- * @return string|null
+ * @return string|int|null
* Value of $returnColumn in the retrieved record
*
* @throws \CRM_Core_Exception
$fields = $object->fields();
foreach ($fields as $fieldName => $fieldDef) {
$dbName = $fieldDef['name'];
- $FKClassName = CRM_Utils_Array::value('FKClassName', $fieldDef);
- $required = CRM_Utils_Array::value('required', $fieldDef);
+ $FKClassName = $fieldDef['FKClassName'] ?? NULL;
+ $required = $fieldDef['required'] ?? NULL;
if (CRM_Utils_Array::value($dbName, $params) !== NULL && !is_array($params[$dbName])) {
$object->$dbName = $params[$dbName];
$config->backtrace = TRUE;
$object = new $daoName();
- $object->id = CRM_Utils_Array::value('id', $params);
+ $object->id = $params['id'] ?? NULL;
// array(array(0 => $daoName, 1 => $daoParams))
$deletions = [];
$dbName = $value['name'];
- $FKClassName = CRM_Utils_Array::value('FKClassName', $value);
- $required = CRM_Utils_Array::value('required', $value);
+ $FKClassName = $value['FKClassName'] ?? NULL;
+ $required = $value['required'] ?? NULL;
if ($FKClassName != NULL
&& $object->$dbName
&& !in_array($FKClassName, CRM_Core_DAO::$_testEntitiesToSkip)
throw new Exception('Cannot call getOptionLabels on CRM_Core_DAO');
}
foreach ($fields as $field) {
- $name = CRM_Utils_Array::value('name', $field);
+ $name = $field['name'] ?? NULL;
if ($name && isset($this->$name)) {
$label = CRM_Core_PseudoConstant::getLabel(get_class($this), $name, $this->$name);
if ($label !== FALSE) {
// Support "unique names" as well as sql names
$fieldKey = $fieldName;
if (empty($fields[$fieldKey])) {
- $fieldKey = CRM_Utils_Array::value($fieldName, $fieldKeys);
+ $fieldKey = $fieldKeys[$fieldName] ?? NULL;
}
// If neither worked then this field doesn't exist. Return false.
if (empty($fields[$fieldKey])) {