diff --git a/booking.helper.inc b/booking.helper.inc index 76e0e69..83acfd1 100644 --- a/booking.helper.inc +++ b/booking.helper.inc @@ -31,13 +31,41 @@ function _booking_remove_emoji($text) { * Taken from http://php.net/manual/en/function.ucwords.php */ function _booking_ucname($string) { - $string = ucwords(strtolower($string)); + $all_uppercase = ''; + $all_lowercase = 'De La|De Las|Der|Van De|Van Der|Vit De|Von|Or|And'; + $prefixes = 'Mc'; + $suffixes = "'S"; + + // captialize all first letters + $string = preg_replace('/\\b(\\w)/e', 'strtoupper("$1")', strtolower(trim($string))); + if ($all_uppercase) { + // capitalize acronymns and initialisms e.g. PHP + $string = preg_replace("/\\b($all_uppercase)\\b/e", 'strtoupper("$1")', $string); + } + if ($all_lowercase) { + // decapitalize short words e.g. and + // all occurences will be changed to lowercase + $string = preg_replace("/\\b($all_lowercase)\\b/e", 'strtolower("$1")', $string); + } + + if ($prefixes) { + // capitalize letter after certain name prefixes e.g 'Mc' + $string = preg_replace("/\\b($prefixes)(\\w)/e", '"$1".strtoupper("$2")', $string); + } + if ($suffixes) { + // decapitalize certain word suffixes e.g. 's + $string = preg_replace("/(\\w)($suffixes)\\b/e", '"$1".strtolower("$2")', $string); + } + + /* + $string = ucwords(strtolower($string)); foreach (array('-', '\'') as $delimiter) { - if (strpos($string, $delimiter)!==false) { - $string =implode($delimiter, array_map('ucfirst', explode($delimiter, $string))); + if (strpos($string, $delimiter) !== false) { + $string = implode($delimiter, array_map('ucfirst', explode($delimiter, $string))); } } + */ return $string; } diff --git a/booking.regn_node.inc b/booking.regn_node.inc index dcf622d..cd2eca9 100644 --- a/booking.regn_node.inc +++ b/booking.regn_node.inc @@ -7,7 +7,9 @@ function booking_node_presave($node) { if($node->type == 'booking') { $title = t('!event registration: !name', array( '!event' => $event->booking_eventname, - '!name' => _booking_ucname($node->booking_firstname . ' ' . $node->booking_lastname), + // no longer needed since applied at node creation + //'!name' => _booking_ucname($node->booking_firstname . ' ' . $node->booking_lastname), + '!name' => $node->booking_firstname . ' ' . $node->booking_lastname, )); //strip any emojis from user input if that feature is enabled