You are here

function yandex_metrics_reports_language_from_url in Yandex.Metrics 8.2

Same name and namespace in other branches
  1. 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;
}