<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.3 |
+ | CiviCRM version 4.4 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2013 |
+--------------------------------------------------------------------+
*
* @access public
*
- * @param array $list the array to be searched
* @param string $key the key value
+ * @param array $list the array to be searched
+ * @param mixed $default
*
- * @return value if exists else null
+ * @return mixed value if exists else $default
* @static
- * @access public
- *
*/
static function value($key, $list, $default = NULL) {
if (is_array($list)) {
} else {
$keyvalue = $record->{$key};
}
- if (!is_array($node[$keyvalue])) {
+ if (isset($node[$keyvalue]) && !is_array($node[$keyvalue])) {
$node[$keyvalue] = array();
}
$node = &$node[$keyvalue];
/**
* Like explode() but assumes that the $value is padded with $delim on left and right
*
- * @param string|NULL $value
+ * @param mixed $values
* @param string $delim
* @return array|NULL
*/
- static function explodePadded($value, $delim = CRM_Core_DAO::VALUE_SEPARATOR) {
- if ($value === NULL) {
+ static function explodePadded($values, $delim = CRM_Core_DAO::VALUE_SEPARATOR) {
+ if ($values === NULL) {
return NULL;
}
- return explode($delim, trim($value, $delim));
+ // If we already have an array, no need to continue
+ if (is_array($values)) {
+ return $values;
+ }
+ return explode($delim, trim((string) $values, $delim));
}
/**
- * Like implode() but assumes that the $value is padded with $delim on left and right
+ * Like implode() but creates a string that is padded with $delim on left and right
*
- * @param string|NULL $value
+ * @param mixed $values
* @param string $delim
- * @return array|NULL
+ * @return string|NULL
*/
static function implodePadded($values, $delim = CRM_Core_DAO::VALUE_SEPARATOR) {
if ($values === NULL) {
return NULL;
}
- return $delim . implode($delim, $values) . $delim;
+ // If we already have a string, strip $delim off the ends so it doesn't get added twice
+ if (is_string($values)) {
+ $values = trim($values, $delim);
+ }
+ return $delim . implode($delim, (array) $values) . $delim;
}
/**
$elementArray = array_combine($keys, array_values($elementArray));
return $elementArray;
}
+
+ /*
+ * function to get value of first matched
+ * regex key element of an array
+ */
+ static function valueByRegexKey($regexKey, $list, $default = NULL) {
+ if (is_array($list) && $regexKey) {
+ $matches = preg_grep($regexKey, array_keys($list));
+ $key = reset($matches);
+ return ($key && array_key_exists($key, $list)) ? $list[$key] : $default;
+ }
+ return $default;
+ }
}