﻿<?php
//ob_start();

//$cookie_expireTime = 30; // 30 minutes
//ini_set("session.gc_maxlifetime",60*$cookie_expireTime);
//ini_set("session.cache_limiter","private_no_expire, must-revalidate"); // private_no_expire | nocache
//ini_set("session.cache_expire",$cookie_expireTime);
//ini_set("session.gc_probability",1);
//ini_set("session.gc_divisor",10000);
//session_start();

include("inc/defs.inc.php");
//include("cms/cms.getlinkname.php");
include("cms/cms.inc.php");
include("adodb/adodb.inc.php");

//if(isset($_SESSION["ulid".virt])) $lid=$_SESSION["ulid".virt]; else $lid=0;
//$lid=is_numeric($lid)?intval($lid):0;	if($lid<1) $lid=1;

//-----------------------------------------------------------
$ADODB_FETCH_MODE=ADODB_FETCH_ASSOC;
$ADODB_COUNTRECS=false;
$cn=NewADOConnection($dbcons); $cn->debug=false;
if($cn->_Execute("SET NAMES utf8")===false) die("ERROR: ".$cn->ErrorMsg()."<BR>\n");
if($cn->_Execute("SET character_set_results=NULL;")===false) die("ERROR: ".$cn->ErrorMsg()."<BR>\n");
//-----------------------------------------------------------
$rep="";

$dom=isset($_SERVER["HTTP_HOST"])?$_SERVER["HTTP_HOST"]:"";
$basescript=$_SERVER["PHP_SELF"];
//$baseref="http://".$_SERVER["SERVER_NAME"];
$baseref="http://".$dom;

$sql="SELECT t1.prj AS prj,t1.ver AS ver,t1.pub_type AS ptype,t1.pub_folder AS pfolder,t1.start_frs AS sfrs,t1.start_mid AS smid,t1.start_tid AS stid,t1.start_pid AS spid,t1.start_lid AS slid,t1.start_url AS surl,".
		 "t1.doc_type AS dtype,t1.authgrp AS authgrp,t1.authuid AS authuid,t1.cache AS cache FROM domains AS t1,projects AS t2 WHERE (t1.domain01='".$dom."' OR t1.domain02='".$dom."' OR t1.domain03='".$dom."' OR t1.domain04='".$dom."') ".
		 "AND t1.prj=t2.id AND t1.ver=t2.ver_user ORDER BY t1.prj,t1.ver;";
		 
$rs=$cn->_Execute($sql); if($rs===false) die("ERROR: ".$cn->ErrorMsg()."<BR>\n");	
if(!$rs->EOF) {
  $prj=$rs->fields["prj"];
  $ver=$rs->fields["ver"];
  $pubtyp=$rs->fields["ptype"];
  $pubfolder=$rs->fields["pfolder"];
  $startframe=$rs->fields["sfrs"];
  $startmenu=$rs->fields["smid"];
  $starttemplate=$rs->fields["stid"];
  $startpage=$rs->fields["spid"];
  $startlid=$rs->fields["slid"];
  $starturl=$rs->fields["surl"];
  $doctype=$rs->fields["dtype"];

  $rs=$cn->_Execute("SELECT id,iso,charset FROM lng WHERE active=".dbTrue." AND visible=".dbTrue." AND prj=".$prj." AND ver=".$ver." ORDER BY id;"); if($rs===false) die("ERROR: ".$cn->ErrorMsg()."<BR>\n");	
  while(!$rs->EOF) {
    $lid=$rs->fields["id"];
		$lisiso=$rs->fields["iso"];
    $charset=$rs->fields["charset"];
		$cond=" AND prj=".$prj." AND ver=".$ver." AND lid=".$lid;    
		$rep.=Sitemap_DrawIndex();
    $rs->MoveNext();
  }
}
ob_clean();
if($rep) {
  echo  "<?xml version='1.0' encoding='UTF-8'?>\r\n".
        "<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n".
        "				 xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\"\r\n".
        "				 xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n";
  echo  $rep;
	echo  "</urlset>\r\n";
} else echo chr(0);
ob_flush();

//=====================================================================================
function Sitemap_DrawIndex() {
  global $cn,$cond,$lid,$pubtyp,$dom,$baseref,$basescript;
//echo "<!-- DEBUG: ModSitemap_DrawIndex($pro) -->\r\n"; flush();
	
	$rep="";	
  $rs=$cn->_Execute("SELECT id,title,mtxt FROM menu WHERE parent=-1".$cond." AND active=".dbTrue." ORDER BY title;"); if ($rs===false) die("ERROR: ".$cn->ErrorMsg()."<BR>\n");
  while(!$rs->EOF) {
    $menuid=$rs->fields["id"];
    $lnk="<a href=\"".$baseref.virt."/".$basescript."?lid=".$lid."&amp;mid=".$menuid."\">";
//    title = "ROOT """ & rs(title) & """"
		//--------------------------
    $parent=$menuid;
    $tab=0;
    $rep.=Sitemap_DoMenu($parent,0,$tab);
		//--------------------------
    $rs->MoveNext();
  } 

	return $rep;
}

//=====================================================================================
function Sitemap_DoMenu($parent,$clpar,$tab) {
  global $cn,$cond,$lid,$pubtyp,$dom,$baseref,$basescript;
	
	$rep="";
	$condx=($tab) ? " AND parent=".$parent : " AND (parent=".$parent." OR id=".$parent.")";
  $rs=$cn->_Execute("SELECT id,lid,url,project,layout,menu,page,template,mtxt,target,anchor,changefreq,priority,created,modified FROM menu WHERE smhidden=".dbFalse." AND active=".dbTrue.$condx." AND (clpar=0 OR clpar=".$clpar.")".$cond." ORDER BY oid;"); if($rs===false) die("ERROR: ".$cn->ErrorMsg()."<BR>\n");
  while(!$rs->EOF) {
		$id=$rs->fields["id"];
		$olid=$rs->fields["lid"]; if(!$olid) $olid=$lid;
		$url=$rs->fields["url"];
		$project=$rs->fields["project"];
		$frs=$rs->fields["layout"];
		$page=$rs->fields["page"];
		$template=$rs->fields["template"];
		$target=$rs->fields["target"];
		$menu=$rs->fields["menu"];
		if($url) { 
			$lnk="";
		} elseif($project>0) {
			$lnk="?setprj=".$project;
		} elseif($frs>0) {
			$lnk="?frs=".$frs."&amp;lid=".$lid;
		} elseif($menu>0) {
			$lnk="?mid=".$menu."&amp;lid=".$lid;
		} elseif($page>0 || $template>0) {
			$lnk="?mid=".$id."&amp;lid=".$lid;
		} else {
			$lnk="";
		}
		$mtxt=str_replace("\n","",$rs->fields["mtxt"]);
		$modified=$rs->fields["modified"]; if(!$modified) $modified=$rs->fields["created"];
		if($modified) $modified=str_replace(" ","T",$modified)."+01:00";
		$priority=$rs->fields["priority"];
		$changefreq="";
		switch($rs->fields["changefreq"]) {
			case 0: $changefreq="never"; break;
			case 1: $changefreq="yearly"; break;
			case 2: $changefreq="monthly"; break;
			case 3: $changefreq="weekly"; break;
			case 4: $changefreq="daily"; break;
			case 5: $changefreq="hourly"; break;
			case 6: $changefreq="always"; break;
		}
		if($lnk) {
//				$lnkname=GetLinkName($project,$frs,(($menu)?$menu:$id),$page,$template,$olid,"");
			$lnk = ChangeLink($pubtyp,$lnk);
if($lnk=="de") $lnk="";
			$url = rtrim($baseref.str_replace("//","/",virt."/".( ($pubtyp==1)?"/":"" ).$lnk),"/");
			$rep.= "\t<url>\r\n".
			      "\t\t<loc>".$url."</loc>\r\n";
			if($modified)   $rep.="\t\t<lastmod>".$modified."</lastmod>\r\n";
			if($changefreq) $rep.="\t\t<changefreq>".$changefreq."</changefreq>\r\n";
			if($priority>0) $rep.="\t\t<priority>".number_format($priority,1,".","")."</priority>\r\n";
			$rep.="\t</url>\r\n"; 			
		}
		if($id!=$parent) $rep.=Sitemap_DoMenu($id,$clpar,$tab+1);
		$rs->MoveNext();
	}
	return $rep;
} 


?>



