xmlsitemap_i18n.module in XML sitemap 6.2
File
xmlsitemap_i18n/xmlsitemap_i18n.module
View source
<?php
function xmlsitemap_i18n_xmlsitemap_context_info() {
$context['language'] = array(
'label' => t('Language'),
'summary callback' => 'locale_language_name',
'default' => language_default('language'),
);
return $context;
}
function xmlsitemap_i18n_xmlsitemap_context() {
$context['language'] = $GLOBALS['language']->language;
return $context;
}
function xmlsitemap_i18n_xmlsitemap_context_url_options(array $context) {
$options = array();
if (isset($context['language'])) {
$options['language'] = xmlsitemap_language_load($context['language']);
}
return $options;
}
function xmlsitemap_i18n_form_xmlsitemap_sitemap_edit_form_alter(&$form, $form_state) {
$form['context']['language'] = array(
'#type' => 'select',
'#title' => t('Language'),
'#options' => locale_language_list(),
'#default_value' => isset($form['#sitemap']->context['language']) ? $form['#sitemap']->context['language'] : '',
);
}
function xmlsitemap_form_locale_languages_overview_form_alter(&$form, $form_state) {
array_unshift($form['#submit'], 'xmlsitemap_form_submit_flag_regenerate');
}
function xmlsitemap_i18n_form_i18n_admin_settings_alter(&$form, $form_state) {
array_unshift($form['#submit'], 'xmlsitemap_form_submit_flag_regenerate');
}
function xmlsitemap_i18n_query_xmlsitemap_generate_alter(array &$query, array &$args, stdClass $sitemap) {
$mode = variable_get('i18n_selection_mode', 'simple');
if (!isset($sitemap->context['language']) || $mode == 'off') {
return;
}
$current = $sitemap->context['language'];
$default = i18n_default_language();
if ($mode == 'mixed' && $current == $default) {
$mode = 'simple';
}
switch ($mode) {
case 'simple':
$query['WHERE'] .= " AND x.language IN ('%s', '')";
$args[] = $current;
break;
case 'mixed':
$query['WHERE'] .= " AND x.language IN ('%s', '%s', '')";
$args[] = $current;
$args[] = $default;
break;
case 'default':
$query['WHERE'] .= " AND x.language IN ('%s', '')";
$args[] = $default;
break;
case 'strict':
$query['WHERE'] .= " AND ((x.type = 'node' AND x.language = '%s') OR (x.type <> 'node' AND x.language IN ('%s', '')))";
$args[] = $current;
$args[] = $current;
break;
case 'off':
break;
}
}