| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: xmlsitemap_i18n.module,v 1.1.2.15 2010/04/29 16:22:15 davereid Exp $ 3 4 /** 5 * Implements hook_xmlsitemap_context_info(). 6 */ 7 function xmlsitemap_i18n_xmlsitemap_context_info() { 8 $context['language'] = array( 9 'label' => t('Language'), 10 'summary callback' => 'locale_language_name', 11 'settings callback' => 'xmlsitemap_i18n_xmlsitemap_language_context_settings', 12 'default' => language_default('language'), 13 ); 14 return $context; 15 } 16 17 /** 18 * Implements hook_xmlsitemap_context(). 19 */ 20 function xmlsitemap_i18n_xmlsitemap_context() { 21 $context['language'] = $GLOBALS['language']->language; 22 return $context; 23 } 24 25 /** 26 * Implements xmlsitemap_context_url_options(). 27 */ 28 function xmlsitemap_i18n_xmlsitemap_context_url_options(array $context) { 29 $options = array(); 30 if (isset($context['language'])) { 31 $options['language'] = xmlsitemap_language_load($context['language']); 32 } 33 return $options; 34 } 35 36 /** 37 * Implements hook_form_FORM_ID_alter(). 38 */ 39 function xmlsitemap_i18n_form_xmlsitemap_sitemap_edit_form_alter(&$form, $form_state) { 40 $form['context']['language'] = array( 41 '#type' => 'select', 42 '#title' => t('Language'), 43 '#options' => locale_language_list(), 44 '#default_value' => isset($form['#sitemap']['context']['language']) ? $form['#sitemap']['context']['language'] : '', 45 ); 46 } 47 48 /** 49 * Implements hook_form_FORM_ID_alter(). 50 * 51 * Set the regeneration needed flag if settings are changed. 52 */ 53 function xmlsitemap_form_locale_languages_overview_form_alter(&$form, $form_state) { 54 array_unshift($form['#submit'], 'xmlsitemap_form_submit_flag_regenerate'); 55 } 56 57 /** 58 * Implements hook_form_FORM_ID_alter(). 59 * 60 * Set the regeneration needed flag if multilingual settings are changed. 61 */ 62 function xmlsitemap_i18n_form_i18n_admin_settings_alter(&$form, $form_state) { 63 array_unshift($form['#submit'], 'xmlsitemap_form_submit_flag_regenerate'); 64 } 65 66 /** 67 * Implements hook_query_xmlsitemap_generate_alter(). 68 * 69 * @see i18n_db_rewrite_where() 70 */ 71 function xmlsitemap_i18n_query_xmlsitemap_generate_alter(array &$query, array &$args, array $sitemap) { 72 $mode = variable_get('i18n_selection_mode', 'simple'); 73 74 if (!isset($sitemap['context']['language']) || $mode == 'off') { 75 return; 76 } 77 78 // Get languages to simplify query building. 79 $current = $sitemap['context']['language']; 80 $default = i18n_default_language(); 81 82 if ($mode == 'mixed' && $current == $default) { 83 // If mode is mixed but current = default, is the same as 'simple'. 84 $mode = 'simple'; 85 } 86 87 switch ($mode) { 88 case 'simple': 89 // Current language and language neutral. 90 $query['WHERE'] .= " AND x.language IN ('%s', '')"; 91 $args[] = $current; 92 break; 93 case 'mixed': 94 // Mixed current language (if available) or default language (if not) and language neutral. 95 $query['WHERE'] .= " AND x.language IN ('%s', '%s', '')"; 96 $args[] = $current; 97 $args[] = $default; 98 break; 99 case 'default': 100 // Only default language and language neutral. 101 $query['WHERE'] .= " AND x.language IN ('%s', '')"; 102 $args[] = $default; 103 break; 104 case 'strict': 105 // Only current language (for nodes), simple for all other types. 106 $query['WHERE'] .= " AND ((x.type = 'node' AND x.language = '%s') OR (x.type <> 'node' AND x.language IN ('%s', '')))"; 107 $args[] = $current; 108 $args[] = $current; 109 break; 110 case 'off': 111 // All content. No language conditions apply. Handled by if statement 112 // above. 113 break; 114 } 115 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |