/**
* Split an array into human readable text (Item, Item, and Item)
*
* @param array $value
* @param string $field
* @param array $fields
* @param string $and
* @param string $field_index
*
* @return string
*
* @since 2.0
*/
function pods_serial_comma($value, $field = null, $fields = null, $and = null, $field_index = null)
{
if (is_object($value)) {
$value = get_object_vars($value);
}
$defaults = array('field' => $field, 'fields' => $fields, 'and' => $and, 'field_index' => $field_index, 'separator' => ',', 'serial' => true);
if (is_array($field)) {
$defaults['field'] = null;
$params = array_merge($defaults, $field);
} else {
$params = $defaults;
}
$params = (object) $params;
$simple = false;
if (!empty($params->fields) && is_array($params->fields) && isset($params->fields[$params->field])) {
$params->field = $params->fields[$params->field];
$simple_tableless_objects = PodsForm::simple_tableless_objects();
if (!empty($params->field) && is_array($params->field) && in_array($params->field['type'], PodsForm::tableless_field_types())) {
if (in_array($params->field['type'], PodsForm::file_field_types())) {
if (null === $params->field_index) {
$params->field_index = 'guid';
}
} elseif (in_array($params->field['pick_object'], $simple_tableless_objects)) {
$simple = true;
} else {
$table = pods_api()->get_table_info($params->field['pick_object'], $params->field['pick_val'], null, null, $params->field);
if (!empty($table)) {
if (null === $params->field_index) {
$params->field_index = $table['field_index'];
}
}
}
}
} else {
$params->field = null;
}
if ($simple && is_array($params->field) && !is_array($value) && '' !== $value && null !== $value) {
$value = PodsForm::field_method('pick', 'simple_value', $params->field['name'], $value, $params->field);
}
if (!is_array($value)) {
return $value;
}
if (null === $params->and) {
$params->and = ' ' . __('and', 'pods') . ' ';
}
$last = '';
$original_value = $value;
if (!empty($value)) {
$last = array_pop($value);
}
if ($simple && is_array($params->field) && !is_array($last) && '' !== $last && null !== $last) {
$last = PodsForm::field_method('pick', 'simple_value', $params->field['name'], $last, $params->field);
}
if (is_array($last)) {
if (null !== $params->field_index && isset($last[$params->field_index])) {
$last = $last[$params->field_index];
} elseif (isset($last[0])) {
$last = $last[0];
} elseif ($simple) {
$last = current($last);
} else {
$last = '';
}
}
if (!empty($value)) {
if (null !== $params->field_index && isset($original_value[$params->field_index])) {
return $original_value[$params->field_index];
} elseif (null !== $params->field_index && isset($value[$params->field_index])) {
return $value[$params->field_index];
} elseif (!isset($value[0])) {
$value = array($value);
}
foreach ($value as $k => $v) {
if ($simple && is_array($params->field) && !is_array($v) && '' !== $v && null !== $v) {
$v = PodsForm::field_method('pick', 'simple_value', $params->field['name'], $v, $params->field);
}
if (is_array($v)) {
if (null !== $params->field_index && isset($v[$params->field_index])) {
$v = $v[$params->field_index];
} elseif ($simple) {
$v = trim(implode($params->separator . ' ', $v), $params->separator . ' ');
} else {
unset($value[$k]);
continue;
}
}
$value[$k] = $v;
}
if (1 == count($value) || !$params->serial) {
$value = trim(implode($params->separator . ' ', $value), $params->separator . ' ');
} else {
$value = trim(implode($params->separator . ' ', $value), $params->separator . ' ') . apply_filters('pods_serial_comma', $params->separator . ' ', $value, $original_value, $params);
}
$value = trim($value);
$last = trim($last);
if (0 < strlen($value) && 0 < strlen($last)) {
$value = $value . $params->and . $last;
} elseif (0 < strlen($last)) {
$value = $last;
} else {
$value = '';
}
} else {
$value = $last;
}
$value = trim($value, $params->separator . ' ');
$value = apply_filters('pods_serial_comma_value', $value, $original_value, $params);
return (string) $value;
}