You are here

function _googlenews_getgooglenews in Google News sitemap 5

Same name and namespace in other branches
  1. 6 googlenews.module \_googlenews_getgooglenews()

Generate the news feed.

1 string reference to '_googlenews_getgooglenews'
googlenews_menu in ./googlenews.module
Implementation of hook_menu().

File

./googlenews.module, line 44
Provides a Google News sitemap within your site using the url: http://www.yoursite.com/googlenews.xml

Code

function _googlenews_getgooglenews() {
  global $locale;
  $content = '<?xml version="1.0" encoding="UTF-8"?>';
  $content .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"';
  $content .= '  xmlns:n="http://www.google.com/schemas/sitemap-news/0.9">';
  $node_types = variable_get('googlenews_node_types', array_keys(node_get_types()));
  $args = array_merge($node_types, array(
    time() - 172800,
  ));
  $sql = "SELECT n.nid, n.created, n.title FROM {node} n WHERE n.type IN (" . implode(',', array_fill(0, count($node_types), "'%s'")) . ") AND n.status = 1 AND n.created >= %d ORDER BY n.created DESC";
  $query = db_query_range(db_rewrite_sql($sql), $args, 0, 1000);
  while ($node = db_fetch_object($query)) {
    $content .= '<url>';
    $content .= '<loc>' . url('node/' . $node->nid, NULL, NULL, TRUE) . '</loc>';
    $content .= '<n:news>';
    $content .= '<n:publication>';
    $content .= '<n:name>' . check_plain(variable_get('site_name', 'Drupal')) . '</n:name>';
    $content .= '<n:language>' . check_plain($locale) . '</n:language>';
    $content .= '</n:publication>';
    $content .= '<n:title>' . check_plain($node->title) . '</n:title>';
    $content .= '<n:publication_date>' . gmdate(DATE_W3C, $node->created) . '</n:publication_date>';
    $content .= '</n:news>';
    $content .= '</url>';
  }
  $content .= '</urlset>';
  drupal_set_header('Content-Type: text/xml');
  print $content;
}