Normalizes a text.

E.g., transforms "about-us" to "About Us" or "About us", according to parameters.

Parameters

string $raw_text: Text to be normalized.

Return value

string normalized title.

2 calls to _easy_breadcrumb_normalize_text()
_easy_breadcrumb_obtain_page_title in ./easy_breadcrumb.module
Obtain the title of the page.
_easy_breadcrumb_obtain_segment_title in ./easy_breadcrumb.module
Obtain the title of the given segment.

File

./easy_breadcrumb.module, line 520

Code

function _easy_breadcrumb_normalize_text($raw_text) {
    // Filter the raw text against XSS.
    $normalized_text = check_url($raw_text);
    // Transforms '-hello--world_javascript-' on 'hello world javascript'.
    $normalized_text = str_replace(array(
        '-',
        '_',
    ), ' ', $normalized_text);
    $normalized_text = trim($normalized_text);
    $normalized_text = preg_replace('/\\s{2,}/', ' ', $normalized_text);
    // Gets the flag saying the capitalizator mode.
    $capitalizator_mode = variable_get(EasyBreadcrumbConstants::DB_VAR_CAPITALIZATOR_MODE, 'ucwords');
    if ($capitalizator_mode === 'ucwords') {
        // Transforms the text 'once a time' to 'Once a Time'.
        // List of words to be ignored by the capitalizator.
        $ignored_words = variable_get(EasyBreadcrumbConstants::DB_VAR_CAPITALIZATOR_IGNORED_WORDS, EasyBreadcrumbConstants::defaultIgnoredWords());
        $words_arr = explode(' ', $normalized_text);
        // Transforms the non-ignored words of the segment.
        $words_arr[0] = drupal_ucfirst($words_arr[0]);
        for ($idx_1 = 1, $words_quantity = count($words_arr); $idx_1 < $words_quantity; ++$idx_1) {
            // Transforms this word only if it is not in the list of ignored words.
            if (!isset($ignored_words[$words_arr[$idx_1]])) {
                $words_arr[$idx_1] = drupal_ucfirst($words_arr[$idx_1]);
            }
        }
        $normalized_text = implode(' ', $words_arr);
    }
    elseif ($capitalizator_mode === 'ucall') {
        // Transforms the text 'once a time' to 'ONCE A TIME'.
        $normalized_text = drupal_strtoupper($normalized_text);
    }
    elseif ($capitalizator_mode === 'ucforce') {
        // Transforms the text 'once a time' to 'once a TIME'.
        // List of words to be forced by the capitalizator.
        $forced_words = variable_get(EasyBreadcrumbConstants::DB_VAR_CAPITALIZATOR_FORCED_WORDS, '');
        // If case sensitivity is false make all the forced words
        // uncapitalized by default.
        if (!variable_get(EasyBreadcrumbConstants::DB_VAR_CAPITALIZATOR_FORCED_WORDS_CASE_SENSITIVITY, FALSE)) {
            $forced_words = array_map('drupal_strtolower', $forced_words);
        }
        $words_arr = explode(' ', $normalized_text);
        // Transforms the non-ignored words of the segment.
        if (variable_get(EasyBreadcrumbConstants::DB_VAR_CAPITALIZATOR_FORCED_WORDS_FIRST_LETTER, '')) {
            $words_arr[0] = drupal_ucfirst($words_arr[0]);
        }
        for ($idx_1 = 0, $words_quantity = count($words_arr); $idx_1 < $words_quantity; ++$idx_1) {
            // If case sensitivity is false make the compared word uncapitalized
            // in order to allow the comparison well.
            if (!variable_get(EasyBreadcrumbConstants::DB_VAR_CAPITALIZATOR_FORCED_WORDS_CASE_SENSITIVITY, FALSE)) {
                $selected_word = drupal_strtolower($words_arr[$idx_1]);
            }
            else {
                $selected_word = $words_arr[$idx_1];
            }
            // Transforms this word only if it is in the list of forced words.
            if (in_array($selected_word, $forced_words)) {
                $words_arr[$idx_1] = drupal_strtoupper($selected_word);
            }
        }
        $normalized_text = implode(' ', $words_arr);
    }
    else {
        // Transforms the text 'once a time' to 'Once a time' (ucfirst).
        $normalized_text = drupal_ucfirst($normalized_text);
    }
    return $normalized_text;
}