xmlsitemap_node_views_query_alter

Definition

xmlsitemap_node_views_query_alter(&$query, &$view, $summary = NULL, $level = NULL)
contributions/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module, line 354

Description

Implementation of hook_views_query_alter().

Related topics

Namesort iconDescription
XML SitemapNotify search engines of site updates.

Code

function xmlsitemap_node_views_query_alter(&$query, &$view, $summary = NULL, $level = NULL) {
  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      $cast = 'CHAR';
      break;
    case 'pgsql':
      $cast = 'VARCHAR';
      break;
  }
  switch ($view->page_type) {
    case 'xmlsitemap_news':
      $query->add_field('created', 'node');
    case 'xmlsitemap_sitemap':
      $xn_join = array(
        'left' => array(
          'table' => 'node',
          'field' => 'nid',
        ),
        'right' => array(
          'field' => 'nid',
        ),
      );
      $ua_join = array(
        'left' => array(
          'table' => 'url_alias',
          'field' => 'pid',
        ),
        'right' => array(
          'field' => 'pid',
        ),
        'extra' => array(
          "src = CONCAT('node/', CAST(node.nid AS $cast))" => NULL,
        ),
      );
      $query->add_table('xmlsitemap_node', FALSE, 1, $xn_join);
      $query->add_table('url_alias', FALSE, 1, $ua_join);
      if (module_exists('comment')) {
        $query->add_table('node_comment_statistics');
        $query->add_field('comment_count', 'node_comment_statistics');
        $query->add_field('last_comment_timestamp', 'node_comment_statistics');
        $query->add_field('previous_comment', 'xmlsitemap_node');
      }
      $query->add_field('type', 'node');
      $query->add_field('promote', 'node');
      $query->add_field('changed', 'node');
      $query->add_field('previously_changed', 'xmlsitemap_node');
      $query->add_field('priority_override', 'xmlsitemap_node');
      $query->add_field('dst', 'url_alias', 'alias');
      break;
  }
}