function yandex_metrics_reports_language_from_url in Yandex.Metrics 8.2
Same name and namespace in other branches
- 7.2 yandex_metrics_reports/yandex_metrics_reports.module \yandex_metrics_reports_language_from_url()
Identify language via URL prefix or domain.
Parameters
$url: A URL.
Return value
A valid language code.
See also
locale_language_from_url().
1 call to yandex_metrics_reports_language_from_url()
- yandex_metrics_reports_save_popular_content in yandex_metrics_reports/
yandex_metrics_reports.module - Fetch Popuplar content from Yandex.metrika and save it to the database.
File
- yandex_metrics_reports/
yandex_metrics_reports.module, line 546 - The main code of Yandex.Metrics Reports module.
Code
function yandex_metrics_reports_language_from_url($url) {
// Include necessary libraries.
require_once DRUPAL_ROOT . '/core/includes/locale.inc';
require_once DRUPAL_ROOT . '/core/includes/language.inc';
$default_language = language_default();
$url_language = $default_language->language;
if (!language_negotiation_get_any(LOCALE_LANGUAGE_NEGOTIATION_URL)) {
return $url_language;
}
$languages = language_list();
$url_parts = parse_url($url);
$host = $url_parts['host'];
$path = ltrim($url_parts['path'], '/');
switch (variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX)) {
case LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX:
list($language, $path) = language_url_split_prefix($path, $languages);
if ($language !== FALSE) {
$url_language = $language->language;
}
break;
case LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN:
foreach ($languages as $language) {
// Skip check if the language doesn't have a domain.
if ($language->domain) {
// Only compare the domains not the protocols or ports.
// Remove protocol and add http:// so parse_url works.
$language_host = 'http://' . str_replace(array(
'http://',
'https://',
), '', $language->domain);
$language_host = parse_url($language_host, PHP_URL_HOST);
if ($host == $language_host) {
$url_language = $language->language;
break;
}
}
}
break;
}
return $url_language;
}