From e4deabd043b618b0d512398b57fa12a355ca1257 Mon Sep 17 00:00:00 2001 From: deadlybutter Date: Mon, 28 Sep 2015 10:24:32 -0400 Subject: [PATCH 1/5] Fixes language register logic --- .../dosomething_user/dosomething_user.module | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/modules/dosomething/dosomething_user/dosomething_user.module b/lib/modules/dosomething/dosomething_user/dosomething_user.module index 8bc65f521..3185ee643 100644 --- a/lib/modules/dosomething/dosomething_user/dosomething_user.module +++ b/lib/modules/dosomething/dosomething_user/dosomething_user.module @@ -467,10 +467,15 @@ function dosomething_user_new_user($form, &$form_state) { if (module_exists('dosomething_global')) { // Adjust language based on location $user_country_code = dosomething_settings_get_geo_country_code(); - $language = dosomething_global_convert_country_to_language($user_country_code); + $coverted_language = dosomething_global_convert_country_to_language($user_country_code); $system_languages = language_list(); - if (!in_array($langauge, $system_languages)) { - $language = 'en-global'; + $language = 'en-global'; + + foreach ($system_languages as $lang_key => $system_lang) { + if ($coverted_language == $lang_key) { + $language = $coverted_language; + break; + } } user_save($account, ['language' => $language]); } From bb45b8ee3ddac89c07514bd3131766df09875f98 Mon Sep 17 00:00:00 2001 From: deadlybutter Date: Mon, 28 Sep 2015 10:37:17 -0400 Subject: [PATCH 2/5] Moves into new function --- .../dosomething_user/dosomething_user.module | 52 ++++++++++++++----- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/lib/modules/dosomething/dosomething_user/dosomething_user.module b/lib/modules/dosomething/dosomething_user/dosomething_user.module index 3185ee643..0a12aba2e 100644 --- a/lib/modules/dosomething/dosomething_user/dosomething_user.module +++ b/lib/modules/dosomething/dosomething_user/dosomething_user.module @@ -465,19 +465,7 @@ function dosomething_user_new_user($form, &$form_state) { $account = $user; if (module_exists('dosomething_global')) { - // Adjust language based on location - $user_country_code = dosomething_settings_get_geo_country_code(); - $coverted_language = dosomething_global_convert_country_to_language($user_country_code); - $system_languages = language_list(); - $language = 'en-global'; - - foreach ($system_languages as $lang_key => $system_lang) { - if ($coverted_language == $lang_key) { - $language = $coverted_language; - break; - } - } - user_save($account, ['language' => $language]); + dosomething_user_set_global_attributes(); } // Should we sign this kid up for messages? @@ -528,6 +516,44 @@ function dosomething_user_new_user($form, &$form_state) { dosomething_mbp_request('user_register', $params); } +/** + * Sets the user global attributes and sends them to Northstar. + * + * @param object $account + * The account to return value for. If NULL, uses global $user. + * @param string $country_code + * The country code where the user currently resides. If NULL, uses + * the headers in current request. + * @param string $language + * The new language to set on the user. If NULL, gets the matching + * language or defaults to global-en. + */ +function dosomething_user_set_global_attributes($user = NULL, $country_code = NULL, $language = NULL) { + if ($user == NULL) { + global $user; + } + if ($country_code == NULL) { + $country_code = dosomething_settings_get_geo_country_code(); + } + if ($language == NULL) { + $coverted_language = dosomething_global_convert_country_to_language($country_code); + $language = 'en-global'; + $system_languages = language_list(); + + // Verify the language is installed on the system, + // if not default to global en + foreach ($system_languages as $lang_key => $system_lang) { + if ($coverted_language == $lang_key) { + $language = $coverted_language; + break; + } + } + } + + user_save($account, ['language' => $language]); + //TODO: (#5263) Send $language and $country_code to NorthStar +} + /** * Checks that user is over 13. * From bf9f2c445dfe6876240ee64fef30b9062e0efe6f Mon Sep 17 00:00:00 2001 From: deadlybutter Date: Mon, 28 Sep 2015 11:37:26 -0400 Subject: [PATCH 3/5] Updates global attrb logic and convert country to lang defaults null --- .../dosomething_global.module | 4 +-- .../dosomething_user/dosomething_user.module | 27 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/modules/dosomething/dosomething_global/dosomething_global.module b/lib/modules/dosomething/dosomething_global/dosomething_global.module index ded5fb8bc..d15639781 100644 --- a/lib/modules/dosomething/dosomething_global/dosomething_global.module +++ b/lib/modules/dosomething/dosomething_global/dosomething_global.module @@ -211,7 +211,7 @@ function dosomething_global_convert_language_to_country($language) { * The country Code * * @return - * The language mapped to this country + * The language mapped to this country or NULL */ function dosomething_global_convert_country_to_language($country) { $lang_map = variable_get('dosomething_global_language_map', ''); @@ -220,7 +220,7 @@ function dosomething_global_convert_country_to_language($country) { return $lang_key; } } - return 'en'; + return NULL; } /* diff --git a/lib/modules/dosomething/dosomething_user/dosomething_user.module b/lib/modules/dosomething/dosomething_user/dosomething_user.module index 0a12aba2e..e0abddc2a 100644 --- a/lib/modules/dosomething/dosomething_user/dosomething_user.module +++ b/lib/modules/dosomething/dosomething_user/dosomething_user.module @@ -526,7 +526,7 @@ function dosomething_user_new_user($form, &$form_state) { * the headers in current request. * @param string $language * The new language to set on the user. If NULL, gets the matching - * language or defaults to global-en. + * language or defaults. */ function dosomething_user_set_global_attributes($user = NULL, $country_code = NULL, $language = NULL) { if ($user == NULL) { @@ -534,23 +534,30 @@ function dosomething_user_set_global_attributes($user = NULL, $country_code = NU } if ($country_code == NULL) { $country_code = dosomething_settings_get_geo_country_code(); + // If no Fastly headers set, use US EN + if ($country_code == NULL) { + $language = 'en'; + } } if ($language == NULL) { - $coverted_language = dosomething_global_convert_country_to_language($country_code); + $converted_language = dosomething_global_convert_country_to_language($country_code); $language = 'en-global'; - $system_languages = language_list(); - // Verify the language is installed on the system, - // if not default to global en - foreach ($system_languages as $lang_key => $system_lang) { - if ($coverted_language == $lang_key) { - $language = $coverted_language; - break; + // If the country in the headers matched to a language in our strongarm + if ($converted_language != NULL) { + + // Verify the language is installed on the system, + $system_languages = language_list(); + foreach ($system_languages as $lang_key => $system_lang) { + if ($converted_language == $lang_key) { + $language = $converted_language; + break; + } } } } - user_save($account, ['language' => $language]); + user_save($user, ['language' => $language]); //TODO: (#5263) Send $language and $country_code to NorthStar } From fcb072ac5dfd92b3d1067f23bada0bc09c9810ed Mon Sep 17 00:00:00 2001 From: deadlybutter Date: Mon, 28 Sep 2015 13:02:02 -0400 Subject: [PATCH 4/5] Documentation updates --- .../dosomething/dosomething_global/dosomething_global.module | 3 ++- .../dosomething/dosomething_user/dosomething_user.module | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/modules/dosomething/dosomething_global/dosomething_global.module b/lib/modules/dosomething/dosomething_global/dosomething_global.module index d15639781..1df6ff081 100644 --- a/lib/modules/dosomething/dosomething_global/dosomething_global.module +++ b/lib/modules/dosomething/dosomething_global/dosomething_global.module @@ -205,7 +205,7 @@ function dosomething_global_convert_language_to_country($language) { } /** - * Converts the given country into its assigned language + * Converts the given country into its assigned language. * * @param string country * The country Code @@ -220,6 +220,7 @@ function dosomething_global_convert_country_to_language($country) { return $lang_key; } } + // It is not the job of this function to determine a default language return NULL; } diff --git a/lib/modules/dosomething/dosomething_user/dosomething_user.module b/lib/modules/dosomething/dosomething_user/dosomething_user.module index e0abddc2a..e8c90fc38 100644 --- a/lib/modules/dosomething/dosomething_user/dosomething_user.module +++ b/lib/modules/dosomething/dosomething_user/dosomething_user.module @@ -539,6 +539,7 @@ function dosomething_user_set_global_attributes($user = NULL, $country_code = NU $language = 'en'; } } + // If the language wasn't specified in the function call, determine the user language if ($language == NULL) { $converted_language = dosomething_global_convert_country_to_language($country_code); $language = 'en-global'; From d6c9cf16d4d97b16708ef1830071755a9abf5276 Mon Sep 17 00:00:00 2001 From: deadlybutter Date: Mon, 28 Sep 2015 13:57:41 -0400 Subject: [PATCH 5/5] Makes it more drupal-y --- .../dosomething_user/dosomething_user.module | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/modules/dosomething/dosomething_user/dosomething_user.module b/lib/modules/dosomething/dosomething_user/dosomething_user.module index e8c90fc38..c4de7b063 100644 --- a/lib/modules/dosomething/dosomething_user/dosomething_user.module +++ b/lib/modules/dosomething/dosomething_user/dosomething_user.module @@ -250,6 +250,9 @@ function dosomething_user_form_alter(&$form, $form_state, $form_id) { if ($form_id == 'user_register_form' && $_SERVER['REQUEST_URI'] != '/admin/people/create') { $form['#action'] = '/user/register'; $form['#submit'][] = 'dosomething_user_new_user'; + if (module_exists('dosomething_global')) { + $form['#submit'][] = 'dosomething_user_new_user_attributes'; + } // Unsets relevant register form fields based on configuration variables. _dosomething_user_register_display_fields($form); // Add campaign data, if needed. @@ -464,10 +467,6 @@ function dosomething_user_new_user($form, &$form_state) { global $user; $account = $user; - if (module_exists('dosomething_global')) { - dosomething_user_set_global_attributes(); - } - // Should we sign this kid up for messages? if (dosomething_user_is_under_thirteen()) { return; @@ -516,6 +515,10 @@ function dosomething_user_new_user($form, &$form_state) { dosomething_mbp_request('user_register', $params); } +function dosomething_user_new_user_attributes($form, &$form_state) { + dosomething_user_set_global_attributes(); +} + /** * Sets the user global attributes and sends them to Northstar. * @@ -531,6 +534,7 @@ function dosomething_user_new_user($form, &$form_state) { function dosomething_user_set_global_attributes($user = NULL, $country_code = NULL, $language = NULL) { if ($user == NULL) { global $user; + $account = $user; } if ($country_code == NULL) { $country_code = dosomething_settings_get_geo_country_code(); @@ -557,8 +561,7 @@ function dosomething_user_set_global_attributes($user = NULL, $country_code = NU } } } - - user_save($user, ['language' => $language]); + user_save($account, ['language' => $language]); //TODO: (#5263) Send $language and $country_code to NorthStar }