public static function formatName(Turba_Object $ob, $name_format = null)
{
if (!$name_format) {
if (!isset(self::$_cache['defaultFormat'])) {
self::$_cache['defaultFormat'] = $GLOBALS['prefs']->getValue('name_format');
}
$name_format = self::$_cache['defaultFormat'];
}
/* If no formatting, return original name. */
if (!in_array($name_format, array('first_last', 'last_first'))) {
return $ob->getValue('name');
}
/* See if we have the name fields split out explicitly. */
if ($ob->hasValue('firstname') && $ob->hasValue('lastname')) {
return $name_format == 'last_first' ? $ob->getValue('lastname') . ', ' . $ob->getValue('firstname') : $ob->getValue('firstname') . ' ' . $ob->getValue('lastname');
}
/* One field, we'll have to guess. */
$name = $ob->getValue('name');
$lastname = self::guessLastname($name);
if ($name_format == 'last_first' && !is_int(strpos($name, ',')) && Horde_String::length($name) > Horde_String::length($lastname)) {
return $lastname . ', ' . preg_replace('/\\s+' . preg_quote($lastname, '/') . '/', '', $name);
}
if ($name_format == 'first_last' && is_int(strpos($name, ',')) && Horde_String::length($name) > Horde_String::length($lastname)) {
return preg_replace('/' . preg_quote($lastname, '/') . ',\\s*/', '', $name) . ' ' . $lastname;
}
return $name;
}