[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/xmlsitemap/xmlsitemap_i18n/ -> xmlsitemap_i18n.module (source)

   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  }


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7