<?php

	define("TAB", chr(9));
	define("CRLF", chr(13) . chr(10));
		
	define("SITEMAPFILE", DATEIPFAD . "sitemap.xml");
	
	function GenerateSitemap() {
		
		// Daten sammeln
		
		$SitemapDataArray = array();
		
		$SitemapDataArray = array_merge($SitemapDataArray, GetStartseiteSitemapDataArray());
		$SitemapDataArray = array_merge($SitemapDataArray, GetArtikelSitemapDataArray());
		$SitemapDataArray = array_merge($SitemapDataArray, GetKategorieSitemapDataArray());
		$SitemapDataArray = array_merge($SitemapDataArray, GetCMSSitemapDataArray());
		$SitemapDataArray = array_merge($SitemapDataArray, GetInfoSitemapDataArray());
		$SitemapDataArray = array_merge($SitemapDataArray, GetNewsSitemapDataArray());
		
		// XML String erstellen
		
		$XMLString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" . CRLF;
		$XMLString .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">" . CRLF;
		
		foreach ($SitemapDataArray as $SitemapData) {
			
			$XMLString .= "<url>" . CRLF;
			$XMLString .= TAB . "<loc>" . utf8_encode(htmlentities($SitemapData["loc"])) . "</loc>" . CRLF;
			$XMLString .= TAB . "<lastmod>" . utf8_encode(htmlentities($SitemapData["lastmod"])) . "</lastmod>" . CRLF;
			$XMLString .= TAB . "<changefreq>" . utf8_encode(htmlentities($SitemapData["changefreq"])) . "</changefreq>" . CRLF;
			$XMLString .= TAB . "<priority>" . utf8_encode(htmlentities($SitemapData["priority"])) . "</priority>" . CRLF;
			$XMLString .= "</url>" . CRLF;
			
		}

		$XMLString .= "</urlset>" . CRLF;
		
		// XML Datei erstellen
		$FileHandler = @fopen(SITEMAPFILE, "w+");
		
		if (!$FileHandler) {
			
			$GenerateSitemapReturnArray["error"] = true;
			$GenerateSitemapReturnArray["error_message"] = "Die Datei " . SITEMAPFILE . " konnte nicht erstellt werden. Bitte legen sie die Datei an und geben ihr entsprechende Rechte.";
			
			return $GenerateSitemapReturnArray;

		}
			
		fwrite($FileHandler, $XMLString);
		fclose($FileHandler);

		return $GenerateSitemapReturnArray;
		
	}
	
	function GetStartseiteSitemapDataArray() {
		
		$ParameterPriority = "0.8"; 
		$ParameterChageFreq = "weekly"; 
		
		$StartseiteSitemapData["loc"] = URLPFAD . "index.php"; 
		$StartseiteSitemapData["lastmod"] = date("Y-m-d");
		$StartseiteSitemapData["priority"] = $ParameterPriority;
		$StartseiteSitemapData["changefreq"] = $ParameterChageFreq;
		
		$StartseiteSitemapDataArray[] = $StartseiteSitemapData;
		
		return $StartseiteSitemapDataArray;
		
	}
	
	function GetArtikelSitemapDataArray() {
		
		$ParameterPriority = "0.6"; 
		$ParameterChageFreq = "monthly"; 
		$ParameterStartseitePriority = "0.8"; 
		$ParameterStartseiteChageFreq = "weekly"; 
		
        $Einstellungen = GetEinstellungen('', 'seo');
        
        if ($Einstellungen->seo->sprechende_urls_aktiv) {
			
        	$SQLString = "SELECT ";
            $SQLString .= TABLE_ARTIKEL . ".id, ";
            $SQLString .= TABLE_SEOURLS . ".url, ";
            $SQLString .= TABLE_ARTIKEL . ".startseitenangebot ";
            $SQLString .= "FROM ";
            $SQLString .= TABLE_ARTIKEL . " ";
            $SQLString .= "LEFT JOIN " . TABLE_SEOURLS . " ON ";
            $SQLString .= "(";
            $SQLString .= "(" . TABLE_ARTIKEL . ".id = " . TABLE_SEOURLS . ".artikel_id) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".hersteller_id = 0) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".kategorie_id = 0) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".aktions_id = 0) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".type = '" . SEOURL_TYPE_ARTIKEL . "') AND ";
            $SQLString .= "(" . TABLE_SEOURLS . ".http_status = 0) ";
            $SQLString .= ") ";
            $SQLString .= "WHERE ";
            $SQLString .= "(";
            
            $SQLString .= "(" . TABLE_ARTIKEL . ".aktiv = 1) AND ";
            //$SQLString .= "(" . TABLE_ARTIKEL . ".merkmalkombinationparentid = 1) AND ";
            
            $SQLString .= " 1)";
            
//            echo '$SQLString: ' . $SQLString . '<br>';
    
            $MySQLQueryReference = mysql_query($SQLString);
            
            $ArtikelSitemapDataArray = array();
            
            while ($ArtikelRow = mysql_fetch_array($MySQLQueryReference)) {
                
                if ($ArtikelRow["startseitenangebot"]) {
                
                    $ArtikelSitemapData["loc"] = URLPFAD . $ArtikelRow["url"]; 
                    $ArtikelSitemapData["lastmod"] = date("Y-m-d");
                    $ArtikelSitemapData["priority"] = $ParameterStartseitePriority;
                    $ArtikelSitemapData["changefreq"] = $ParameterStartseiteChageFreq;
                    
                } else {
                    
                    $ArtikelSitemapData["loc"] = URLPFAD . $ArtikelRow["url"]; 
                    $ArtikelSitemapData["lastmod"] = date("Y-m-d");
                    $ArtikelSitemapData["priority"] = $ParameterPriority;
                    $ArtikelSitemapData["changefreq"] = $ParameterChageFreq;
                
                }
                
                $ArtikelSitemapDataArray[] = $ArtikelSitemapData;
                
            }
            
            
        } else {
            
    		$SQLString = "SELECT ";
    		$SQLString .= TABLE_ARTIKEL . ".id, ";
    		$SQLString .= TABLE_ARTIKEL . ".startseitenangebot ";
    		$SQLString .= "FROM ";
    		$SQLString .= TABLE_ARTIKEL . " ";
    		$SQLString .= "WHERE ";
    		$SQLString .= "(";
    		
    		$SQLString .= "(" . TABLE_ARTIKEL . ".aktiv = 1) AND ";
    		
    		$SQLString .= " 1)";
    
    		$MySQLQueryReference = mysql_query($SQLString);
    		
    		$ArtikelSitemapDataArray = array();
    		
    		while ($ArtikelRow = mysql_fetch_array($MySQLQueryReference)) {
    			
    			if ($ArtikelRow["startseitenangebot"]) {
    			
    				$ArtikelSitemapData["loc"] = URLPFAD . "themes/kategorie/detail.php?artikelid=" . $ArtikelRow["id"]; 
    				$ArtikelSitemapData["lastmod"] = date("Y-m-d");
    				$ArtikelSitemapData["priority"] = $ParameterStartseitePriority;
    				$ArtikelSitemapData["changefreq"] = $ParameterStartseiteChageFreq;
    				
    			} else {
    				
    				$ArtikelSitemapData["loc"] = URLPFAD . "themes/kategorie/detail.php?artikelid=" . $ArtikelRow["id"]; 
    				$ArtikelSitemapData["lastmod"] = date("Y-m-d");
    				$ArtikelSitemapData["priority"] = $ParameterPriority;
    				$ArtikelSitemapData["changefreq"] = $ParameterChageFreq;
    			
    			}
    			
    			$ArtikelSitemapDataArray[] = $ArtikelSitemapData;
    			
    		}
    		
        }
		
		return $ArtikelSitemapDataArray;
		
	}

	function GetKategorieSitemapDataArray() {
		
		$ParameterPriority = "0.6"; 
		$ParameterChageFreq = "monthly"; 
		
        $Einstellungen = GetEinstellungen('', 'seo');
        
        if ($Einstellungen->seo->sprechende_urls_aktiv) {
        
            $SQLString = "SELECT ";
            $SQLString .= TABLE_KATEGORIE . ".id, ";
            $SQLString .= TABLE_SEOURLS . ".url ";
            $SQLString .= "FROM ";
            $SQLString .= TABLE_KATEGORIE . " ";
            $SQLString .= "LEFT JOIN " . TABLE_SEOURLS . " ON ";
            $SQLString .= "(";
            $SQLString .= "(" . TABLE_KATEGORIE . ".id = " . TABLE_SEOURLS . ".kategorie_id) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".type = '" . SEOURL_TYPE_KATEGORIE . "') AND ";
            $SQLString .= "(" . TABLE_SEOURLS . ".http_status = 0) ";
            $SQLString .= ") ";
            $SQLString .= "WHERE ";
            $SQLString .= "(";
            
            $SQLString .= "(" . TABLE_KATEGORIE . ".aktiv = 1) AND ";
            
            $SQLString .= " 1)";
            
//            echo '$SQLString: ' . $SQLString . '<br>';
    
            $MySQLQueryReference = mysql_query($SQLString);
		
            $KategorieSitemapDataArray = array();
            
            while ($KategorieRow = mysql_fetch_array($MySQLQueryReference)) {
                
                $KategorieSitemapData["loc"] = URLPFAD . $KategorieRow["url"]; 
                $KategorieSitemapData["lastmod"] = date("Y-m-d");
                $KategorieSitemapData["priority"] = $ParameterPriority;
                $KategorieSitemapData["changefreq"] = $ParameterChageFreq;
                
                $KategorieSitemapDataArray[] = $KategorieSitemapData;
                
            }
            
        } else {
            
            $SQLString = "SELECT ";
            $SQLString .= TABLE_KATEGORIE . ".id ";
            $SQLString .= "FROM ";
            $SQLString .= TABLE_KATEGORIE . " ";
            $SQLString .= "WHERE ";
            $SQLString .= "(";
            
            $SQLString .= "(" . TABLE_KATEGORIE . ".aktiv = 1) AND ";
            
            $SQLString .= " 1)";
    
            $MySQLQueryReference = mysql_query($SQLString);
            
            $KategorieSitemapDataArray = array();
            
            while ($KategorieRow = mysql_fetch_array($MySQLQueryReference)) {
                
                $KategorieSitemapData["loc"] = URLPFAD . "themes/kategorie/index.php?kategorieid=" . $KategorieRow["id"]; 
                $KategorieSitemapData["lastmod"] = date("Y-m-d");
                $KategorieSitemapData["priority"] = $ParameterPriority;
                $KategorieSitemapData["changefreq"] = $ParameterChageFreq;
                
                $KategorieSitemapDataArray[] = $KategorieSitemapData;
                
            }
            
        }
		
		return $KategorieSitemapDataArray;
		
	}
	
	function GetCMSSitemapDataArray() {
		
		$ParameterPriority = "0.4"; 
		$ParameterChageFreq = "yearly"; 
		
        $Einstellungen = GetEinstellungen('', 'seo');
        
        if ($Einstellungen->seo->sprechende_urls_aktiv) {
        
            $SQLString = "SELECT ";
            $SQLString .= TABLE_CMS_KATEGORIE . ".id, ";
            $SQLString .= TABLE_SEOURLS . ".url ";
            $SQLString .= "FROM ";
            $SQLString .= TABLE_CMS_KATEGORIE . " ";
            $SQLString .= "LEFT JOIN " . TABLE_SEOURLS . " ON ";
            $SQLString .= "(";
            $SQLString .= "(" . TABLE_CMS_KATEGORIE . ".id = " . TABLE_SEOURLS . ".kategorie_id) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".type = '" . SEOURL_TYPE_CMS_KATEGORIE . "') AND ";
            $SQLString .= "(" . TABLE_SEOURLS . ".http_status = 0) ";
            $SQLString .= ") ";
            $SQLString .= "WHERE ";
            $SQLString .= "(";
            
            $SQLString .= "(" . TABLE_CMS_KATEGORIE . ".aktiv = 1) AND ";
            
            $SQLString .= " 1)";
            
//            echo '$SQLString: ' . $SQLString . '<br>';
    
            $MySQLQueryReference = mysql_query($SQLString);
            
            $CMSSitemapDataArray = array();
            
            while ($CMSRow = mysql_fetch_array($MySQLQueryReference)) {
                
                $CMSSitemapData["loc"] = URLPFAD . $CMSRow["url"]; 
                $CMSSitemapData["lastmod"] = date("Y-m-d");
                $CMSSitemapData["priority"] = $ParameterPriority;
                $CMSSitemapData["changefreq"] = $ParameterChageFreq;
                
                $CMSSitemapDataArray[] = $CMSSitemapData;
                
            }
            
        } else {
		
    		$SQLString = "SELECT ";
    		$SQLString .= TABLE_CMS_KATEGORIE . ".id ";
    		$SQLString .= "FROM ";
    		$SQLString .= TABLE_CMS_KATEGORIE . " ";
    		$SQLString .= "WHERE ";
    		$SQLString .= "(";
    		
    		$SQLString .= "(" . TABLE_CMS_KATEGORIE . ".aktiv = 1) AND ";
    		
    		$SQLString .= " 1)";
    
    		$MySQLQueryReference = mysql_query($SQLString);
    		
    		$CMSSitemapDataArray = array();
    		
    		while ($CMSRow = mysql_fetch_array($MySQLQueryReference)) {
    			
    			$CMSSitemapData["loc"] = URLPFAD . "cms/kategorie/index.php?cms=1&kategorieid=" . $CMSRow["id"]; 
    			$CMSSitemapData["lastmod"] = date("Y-m-d");
    			$CMSSitemapData["priority"] = $ParameterPriority;
    			$CMSSitemapData["changefreq"] = $ParameterChageFreq;
    			
    			$CMSSitemapDataArray[] = $CMSSitemapData;
    			
    		}

        }
		
		return $CMSSitemapDataArray;
		
	}	
	
	function GetInfoSitemapDataArray() {
		
		$ParameterPriority = "0.4"; 
		$ParameterChageFreq = "yearly"; 
		
        $Einstellungen = GetEinstellungen('', 'seo');
        
        if ($Einstellungen->seo->sprechende_urls_aktiv) {
        
            $SQLString = "SELECT ";
            $SQLString .= TABLE_NAVI . ".id, ";
            $SQLString .= TABLE_SEOURLS . ".url ";
            $SQLString .= "FROM ";
            $SQLString .= TABLE_NAVI . " ";
            $SQLString .= "LEFT JOIN " . TABLE_SEOURLS . " ON ";
            $SQLString .= "(";
            $SQLString .= "(" . TABLE_NAVI . ".id = " . TABLE_SEOURLS . ".menue_id) AND "; 
            $SQLString .= "(" . TABLE_SEOURLS . ".type = '" . SEOURL_TYPE_MENUE . "') AND ";
            $SQLString .= "(" . TABLE_SEOURLS . ".http_status = 0) ";
            $SQLString .= ") ";
            $SQLString .= "WHERE ";
            $SQLString .= "(";
            
            $SQLString .= "(" . TABLE_NAVI . ".aktiv = 1) AND ";
            
            $SQLString .= " 1)";
            
//            echo '$SQLString: ' . $SQLString . '<br>';
    
            $MySQLQueryReference = mysql_query($SQLString);
            
            $InfoSitemapDataArray = array();
            
            while ($InfoRow = mysql_fetch_array($MySQLQueryReference)) {
                
                $InfoSitemapData["loc"] = URLPFAD . $InfoRow["url"]; 
                $InfoSitemapData["lastmod"] = date("Y-m-d");
                $InfoSitemapData["priority"] = $ParameterPriority;
                $InfoSitemapData["changefreq"] = $ParameterChageFreq;
                
                $InfoSitemapDataArray[] = $InfoSitemapData;
                
            }
            
        } else {
		
    		$SQLString = "SELECT ";
    		$SQLString .= TABLE_NAVI . ".id ";
    		$SQLString .= "FROM ";
    		$SQLString .= TABLE_NAVI . " ";
    		$SQLString .= "WHERE ";
    		$SQLString .= "(";
    		
    		$SQLString .= "(" . TABLE_NAVI . ".aktiv = 1) AND ";
    		
    		$SQLString .= " 1)";
    
    		$MySQLQueryReference = mysql_query($SQLString);
    		
    		$InfoSitemapDataArray = array();
    		
    		while ($InfoRow = mysql_fetch_array($MySQLQueryReference)) {
    			
    			$InfoSitemapData["loc"] = URLPFAD . "themes/topnavi/index.php?id=" . $InfoRow["id"]; 
    			$InfoSitemapData["lastmod"] = date("Y-m-d");
    			$InfoSitemapData["priority"] = $ParameterPriority;
    			$InfoSitemapData["changefreq"] = $ParameterChageFreq;
    			
    			$InfoSitemapDataArray[] = $InfoSitemapData;
    			
    		}

        }
    		
		return $InfoSitemapDataArray;
		
	}
		
	function GetNewsSitemapDataArray() {
		
		$ParameterPriority = "0.8"; 
		$ParameterChageFreq = "weekly"; 
		
		$SQLString = "SELECT ";
		$SQLString .= TABLE_NEWS . ".id, ";
        $SQLString .= "DATE_FORMAT(" . TABLE_NEWS . ".datum, '%Y-%m-%d') AS datum_format ";
		$SQLString .= "FROM ";
		$SQLString .= TABLE_NEWS . " ";
		$SQLString .= "WHERE ";
		$SQLString .= "(";
		
		$SQLString .= "(" . TABLE_NEWS . ".aktiv = 1) AND ";
		
		$SQLString .= " 1)";

		$MySQLQueryReference = mysql_query($SQLString);
		
		$NewsSitemapDataArray = array();
		
		while ($NewsRow = mysql_fetch_array($MySQLQueryReference)) {
			
			$NewsSitemapData["loc"] = URLPFAD . "themes/news/index.php?id=" . $NewsRow["id"]; 
			$NewsSitemapData["lastmod"] = $NewsRow["datum_format"];
			$NewsSitemapData["priority"] = $ParameterPriority;
			$NewsSitemapData["changefreq"] = $ParameterChageFreq;
			
			$NewsSitemapDataArray[] = $NewsSitemapData;
			
		}
		
		return $NewsSitemapDataArray;
		
	}	
	?>