<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?

$GLOBALS['pageTable'] = new PageTable();

//main site (splash page)
$splash = getPages( 0 );


//intrustrieel ontwerp
$io = getPages( 0, 2 );

//technische documentatie
$td = getPages( 0, 3 );


$structure = array_merge( $splash, $io, $td );

echo toList( $structure, $GLOBALS['cfg']['siteurl'] );



?>   
</urlset> 
<?


function getPages( $parentID, $siteID = 1 ) {

  $pages = $GLOBALS['pageTable']->selectSitemap( $parentID, $siteID );
  
  $ret = array();
  if( is_array( $pages ) && count( $pages ) > 0 ) {
    foreach( $pages as $page ) {
      
      $children = getPages( $page['pageID'], $siteID );        
      
      if( $page['pageID'] == 2 || $page['pageID'] == 3 ) {        
        $pathinfo = pathinfo( $GLOBALS['cfg']['sites'][$page['Sites_siteID']]['url'] );
        
        $page['menuTitle'] = $GLOBALS['cfg']['sites'][$page['Sites_siteID']]['title'];
        $page['call'] = $pathinfo['filename'];
        
        $posts = getPosts( $siteID );
        $children = array_merge( $children, $posts );
      }
      
      $ret[] = array( 'pageID' => $page['pageID'], 'menuTitle' => $page['menuTitle'], 'call' => $page['call'], 'children' => $children );
    }
    
  }
  return $ret;
}

function getPosts( $siteID ) {
  $nt = new PostTable();
  $items = $nt->selectSitemap( $siteID );
  
  $ret = array();
  if( is_array( $items ) && count( $items ) > 0 )
    foreach( $items as $item ) {
    
      //$url = $item['newsID'] . '/' . $item['call'];          
      $url = $item['call'] . '-' . $item['postID'];
      $ret[] = array( 'call' => $url );      
    }
  
  return $ret;  
}



function toList( $pages = array(), $baseurl = '' ) {
  
  $ret = '';
  
  $priority = 1 - round( ( ( substr_count( $baseurl, '/' ) - 3 ) * 0.2 ), 1 );  
  foreach( $pages as $page ) {
    $ret.= '<url>
     <loc>' . $baseurl . $page['call'] . '</loc>     
    </url>';
    
    if( count( $page['children'] ) > 0 )
      $ret.= toList( $page['children'], $baseurl . $page['call'] . ( $page['call'] != '' ? '/' : '' ) ) ;
    
  }
  
  return $ret;
}

function makeSitemap( $parentID, $level, $hrefurl = '' ) {
  load( 'PageTable' );
  $t = new PageTable();
  
  //retrieve all children of paren
  $rs = $t->select( 'parentID = "' . $parentID . '"' );

  if( $hrefurl != '' )
    $hrefurl.= '/';
    
  
  //loop through children
  foreach( $rs as $r ) {
    //call self to get this cats children
    $item = $r->getValues();

    $priority = round( ( 5 / ( 4 + $level ) ), 1 );
    

    $loc = $GLOBALS['cfg']['siteurl'] . $hrefurl . $item['call'];
    //$loc = ereg_replace( '$//', '/', $loc );
    
    $ret.= '
     <url>
      <loc>' . $loc . '</loc>
      <priority>' . $priority . '</priority>
     </url>
    '; 
    $ret.= makeSitemap( $r->getValue( $r->getID() ), ($level+1), $item['call'] . '' );
    
  }
  return $ret;
  
}

?>