<?php

include_once(DATEIPFAD . "includes/functions.language.inc.php");

define('FACETTENSUCHE_FILTER_MANUELL', 0);
define('FACETTENSUCHE_FILTER_AUTO_PREIS', 1);
define('FACETTENSUCHE_FILTER_AUTO_UNTERKATEGORIE', 2);

function getFacettenSucheFilterDataArray($languageId = "", $autoFilter = false, $onlyUserAuspraegungen = false)
{
	if(!$languageId)
	   $languageId = GetDefaultLanguageID();
	
    $SQLString = 'SELECT ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.id,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.aktiv,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.mehrfachselektion,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.nur_bild_anzeige,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.sort,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.autofilter,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER_LANGU . '.name,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER_LANGU . '.beschreibung, ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER_LANGU . '.bild';
    $SQLString .= ' FROM ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . ' LEFT JOIN ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' ON ' . TABLE_FACETTENSUCHE_FILTER . '.id = ' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.filter_id';
    $SQLString .= ' WHERE ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER_LANGU . '.langu_id = \'' . $languageId . '\'';
    if($autoFilter)
        $SQLString .= ' AND ' . TABLE_FACETTENSUCHE_FILTER . '.autofilter > 0 ';
    else
        $SQLString .= ' AND ' . TABLE_FACETTENSUCHE_FILTER . '.autofilter = 0 ';
    if($onlyUserAuspraegungen)
        $SQLString .= ' AND ' . TABLE_FACETTENSUCHE_FILTER . '.user_auspraegungen > 0 ';
    $SQLString .= ' ORDER BY ' . TABLE_FACETTENSUCHE_FILTER . '.sort';     
    
    $result = errorlogged_mysql_query($SQLString);
    $filterArray = array();
    while(NULL != ($row = mysql_fetch_assoc($result)))
    {
    	$filterArray[] = $row;
    }
    return $filterArray;
}

function saveFacettensucheFilter($id, $aktiv, $mehrfachselektion, $nur_bild_anzeige, $sort, $name, $beschreibung, $bildArray, $bildLoeschen, $languageId)
{
	if(!$languageId)
	   $languageId = GetDefaultLanguageID();
	
	if($id)
	   $SQLString = 'UPDATE ' . TABLE_FACETTENSUCHE_FILTER . ' SET ';
	else
	   $SQLString = 'INSERT INTO ' . TABLE_FACETTENSUCHE_FILTER . ' SET ';
	$SQLString .= 'aktiv = ' . ($aktiv?'1':'0') . ', ';
	$SQLString .= 'mehrfachselektion = ' . ($mehrfachselektion?'1':'0') . ', ';
	$SQLString .= 'nur_bild_anzeige = ' . ($nur_bild_anzeige?'1':'0') . ', ';
	$SQLString .= 'sort = \'' . $sort . '\'';
	if($id)
	   $SQLString .= ' WHERE id = \'' . $id . '\'';

//	echo $SQLString;
	   
    errorlogged_mysql_query($SQLString); 
    if(!$id)
        $id = mysql_insert_id();

    // Bild speichern
    if($bildArray && $bildArray['size'] > 0)
    {
        if(!file_exists(DATEIPFAD . "images/dbimages/facettensuche")) {
            mkdir(DATEIPFAD . "images/dbimages/facettensuche", 0777);
        }

	    $ImageName = "filter_" . sprintf("%07d", $id) . "_" . $languageId;
	    unlink_wc(DATEIPFAD . "images/dbimages/facettensuche/", $ImageName . ".*");
	    $bildDateiName = $ImageName . "." . substr($bildArray['name'], strrpos($bildArray['name'], '.') + 1);
	    move_uploaded_file($bildArray["tmp_name"], DATEIPFAD . "images/dbimages/facettensuche/" . $bildDateiName);
	    chmod(DATEIPFAD . "images/dbimages/facettensuche/" . $bildDateiName, 0644);
    }
    
    if($bildLoeschen)
    {
    	$ImageName = "filter_" . sprintf("%07d", $id) . "_" . $languageId;
        unlink_wc(DATEIPFAD . "images/dbimages/facettensuche/", $ImageName . ".*");
    }
    
            
    $SQLString = 'INSERT INTO ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' SET ';
    $SQLString .= 'filter_id = \'' . $id . '\', ';
    $SQLString .= 'langu_id =\'' . $languageId . '\', ';
    $SQLString .= 'name = \'' . $name . '\', ';
    $SQLString .= 'beschreibung = \'' . $beschreibung . '\'';
    if(isset($bildDateiName))
        $SQLString .= ', bild = \'' . $bildDateiName . '\' ';
    else if($bildLoeschen)
        $SQLString .= ', bild = (NULL) ';
        
    $SQLString .= 'ON DUPLICATE KEY UPDATE ';
    $SQLString .= 'name = \'' . $name . '\', ';
    $SQLString .= 'beschreibung = \'' . $beschreibung . '\'';
    if(isset($bildDateiName))
        $SQLString .= ', bild = \'' . $bildDateiName . '\' ';
    else if($bildLoeschen)
        $SQLString .= ', bild = (NULL) ';
        
//    echo $SQLString;
    
    errorlogged_mysql_query($SQLString);
    
    return $id;
}

function getFacettensucheFilter($id = false, $languageId = false, $autofilterType = false)
{
	$defaultLanguageId = GetDefaultLanguageID();
	if(!$languageId)
	   $languageId = $defaultLanguageId;
	
    $SQLString = 'SELECT ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.id,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.aktiv,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.mehrfachselektion,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.nur_bild_anzeige,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.sort,';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.autofilter,';
    $SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.name, stdLangu.name) as name,';
    $SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.beschreibung, stdLangu.beschreibung) as beschreibung,';
    $SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.bild, stdLangu.bild) as bild';
    $SQLString .= ' FROM ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . ' LEFT JOIN ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' ON ' . TABLE_FACETTENSUCHE_FILTER . '.id = ' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.filter_id AND ' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.langu_id = \'' . $languageId . '\'';
    $SQLString .= ' LEFT JOIN ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' stdLangu ON ' . TABLE_FACETTENSUCHE_FILTER . '.id = stdLangu.filter_id AND stdLangu.langu_id = \'' . $defaultLanguageId . '\'';
    if($id)
        $SQLString .= ' WHERE ' . TABLE_FACETTENSUCHE_FILTER . '.id = \'' . $id . '\'';
    else if($autofilterType)
        $SQLString .= ' WHERE ' . TABLE_FACETTENSUCHE_FILTER . '.autofilter = \'' . $autofilterType . '\'';
	   
//	echo $SQLString;
	   
    $result = errorlogged_mysql_query($SQLString);
    return mysql_fetch_assoc($result);
}

function toggleFilterAktiv($id)
{
	$SQLString = 'UPDATE ' . TABLE_FACETTENSUCHE_FILTER . ' SET aktiv = NOT aktiv WHERE id = \'' . $id . '\'';
	errorlogged_mysql_query($SQLString);  
}

function deleteFilter($id)
{
	$auspraegungen = getFacettenSucheAuspraegungenDataArray($id);
	
	foreach($auspraegungen as $auspraegung)
	   deleteAuspraegung($auspraegung['id']);
	
	$SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_FILTER . ' WHERE id = \'' . $id . '\'';
	errorlogged_mysql_query($SQLString);
	$SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' WHERE filter_id = \'' . $id . '\'';
	errorlogged_mysql_query($SQLString);
	
	$ImageName = "filter_" . sprintf("%07d", $id) . "_*";
    unlink_wc(DATEIPFAD . "images/dbimages/facettensuche/", $ImageName . ".*");
}

function getFacettenSucheAuspraegungenDataArray($filterId, $languageId = "")
{
    if(!$languageId)
       $languageId = GetDefaultLanguageID();
    
    $SQLString = 'SELECT ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.filter_id,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.aktiv,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.nur_bild_anzeige,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.sort,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_von,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_bis,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.name,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.beschreibung, ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.bild';
    $SQLString .= ' FROM ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' LEFT JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.auspraegung_id';
    $SQLString .= ' WHERE ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.langu_id = \'' . $languageId . '\'';
    $SQLString .= ' AND ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.filter_id = \'' . $filterId . '\'';
    $SQLString .= ' ORDER BY ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.sort';     
    
//    echo $SQLString;
    
    $result = errorlogged_mysql_query($SQLString);
    $filterArray = array();
    while(NULL != ($row = mysql_fetch_assoc($result)))
    {
    	if($row['preis_von'] || $row['preis_bis'])
            $row['name'] = buildNameAuspraegungPreis($row['preis_von'], $row['preis_bis'], $languageId);
        $filterArray[] = $row;
    }
    return $filterArray;
}

function saveFacettensucheAuspraegung($id, $filterId, $aktiv, $nur_bild_anzeige, $sort, $name, $beschreibung, $bildArray, $bildLoeschen, $languageId, $preis_von = false, $preis_bis = false)
{
    if(!$languageId)
       $languageId = GetDefaultLanguageID();
    
    if($id)
       $SQLString = 'UPDATE ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' SET ';
    else
       $SQLString = 'INSERT INTO ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' SET ';
    $SQLString .= 'aktiv = ' . ($aktiv?'1':'0') . ', ';
    $SQLString .= 'filter_id = \'' . $filterId . '\', ';
    $SQLString .= 'nur_bild_anzeige = ' . ($nur_bild_anzeige?'1':'0') . ', ';
    $SQLString .= 'sort = \'' . $sort . '\'';
    if(floatval($preis_von))
        $SQLString .= ', preis_von = \'' . $preis_von . '\'';
    else
        $SQLString .= ', preis_von = (NULL)';
    if(floatval($preis_bis))
        $SQLString .= ', preis_bis = \'' . $preis_bis . '\'';
    else
        $SQLString .= ', preis_bis = (NULL)';
        
    if($id)
       $SQLString .= ' WHERE id = \'' . $id . '\'';

    errorlogged_mysql_query($SQLString); 
    if(!$id)
        $id = mysql_insert_id();

    // Bild speichern
    if($bildArray && $bildArray['size'] > 0)
    {
        if(!file_exists(DATEIPFAD . "images/dbimages/facettensuche")) {
            mkdir(DATEIPFAD . "images/dbimages/facettensuche", 0777);
        }

        $ImageName = "auspraegung_" . sprintf("%07d", $id) . "_" . $languageId;
        unlink_wc(DATEIPFAD . "images/dbimages/facettensuche/", $ImageName . ".*");
        $bildDateiName = $ImageName . "." . substr($bildArray['name'], strrpos($bildArray['name'], '.') + 1);
        move_uploaded_file($bildArray["tmp_name"], DATEIPFAD . "images/dbimages/facettensuche/" . $bildDateiName);
        chmod(DATEIPFAD . "images/dbimages/facettensuche/" . $bildDateiName, 0644);
    }
    
    if($bildLoeschen)
    {
        $ImageName = "auspraegung_" . sprintf("%07d", $id) . "_" . $languageId;
        unlink_wc(DATEIPFAD . "images/dbimages/facettensuche/", $ImageName . ".*");
    }

    $SQLString = 'INSERT INTO ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' SET ';
    $SQLString .= 'auspraegung_id = \'' . $id . '\', ';
    $SQLString .= 'langu_id =\'' . $languageId . '\', ';
    $SQLString .= 'name = \'' . $name . '\', ';
    $SQLString .= 'beschreibung = \'' . $beschreibung . '\'';
    if(isset($bildDateiName))
        $SQLString .= ', bild = \'' . $bildDateiName . '\' ';
    else if($bildLoeschen)
        $SQLString .= ', bild = (NULL) ';
    $SQLString .= 'ON DUPLICATE KEY UPDATE ';
    $SQLString .= 'name = \'' . $name . '\', ';
    $SQLString .= 'beschreibung = \'' . $beschreibung . '\'';
    if(isset($bildDateiName))
        $SQLString .= ', bild = \'' . $bildDateiName . '\' ';
    else if($bildLoeschen)
        $SQLString .= ', bild = (NULL) ';
    
    errorlogged_mysql_query($SQLString);
    
    return $id;
}

function getFacettensucheAuspraegung($id, $languageId = false)
{
    $defaultLanguageId = GetDefaultLanguageID();
    if(!$languageId)
       $languageId = $defaultLanguageId;
       
    $SQLString = 'SELECT ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.aktiv,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.nur_bild_anzeige,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.sort,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_von,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_bis,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.name,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.beschreibung, ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.bild';
    $SQLString .= ' FROM ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' LEFT JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.auspraegung_id';
    $SQLString .= ' WHERE ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = \'' . $id . '\'';
    $SQLString .= ' AND (' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.langu_id = \'' . $languageId . '\'';
    $SQLString .= ' OR ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.langu_id = \'' . $defaultLanguageId . '\')';
    $SQLString .= ' ORDER BY ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.langu_id ' . ($languageId<$defaultLanguageId?'ASC':'DESC');      
       
//    echo $SQLString;
    $result = errorlogged_mysql_query($SQLString);
    $auspraegung = mysql_fetch_assoc($result);
    if($auspraegung['preis_von'] || $auspraegung['preis_bis'])
        $auspraegung['name'] = buildNameAuspraegungPreis($auspraegung['preis_von'], $auspraegung['preis_bis'], $languageId);
    return $auspraegung;
}

function buildNameAuspraegungPreis($preis_von, $preis_bis, $languageId)
{
	if($preis_von && $preis_bis)
	    return number_format($preis_von, 2, ',', '.') . ' - ' . number_format($preis_bis, 2, ',', '.');
	else if($preis_von)
	{
		$einstellung = GetEinstellungen('string_groesser_als', 'facettensuche', true, $languageId);
        return $einstellung->facettensuche->string_groesser_als . ' ' . number_format($preis_von, 2, ',', '.');		
	} 
	else if($preis_bis)
	{
        $einstellung = GetEinstellungen('string_kleiner_als', 'facettensuche', true, $languageId);
        return $einstellung->facettensuche->string_kleiner_als . ' ' . number_format($preis_bis, 2, ',', '.');     
	}
	else
	   return '';
}

function toggleAuspraegungAktiv($id)
{
    $SQLString = 'UPDATE ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' SET aktiv = NOT aktiv WHERE id = \'' . $id . '\'';
    errorlogged_mysql_query($SQLString);  
}

function deleteAuspraegung($id)
{
    $SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' WHERE id = \'' . $id . '\'';
    errorlogged_mysql_query($SQLString);
    $SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' WHERE auspraegung_id = \'' . $id . '\'';
    errorlogged_mysql_query($SQLString);
    $SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . ' WHERE auspraegung_id = \'' . $id . '\'';
    errorlogged_mysql_query($SQLString);
    
    $ImageName = "auspraegung_" . sprintf("%07d", $id) . "_*";
    unlink_wc(DATEIPFAD . "images/dbimages/facettensuche/", $ImageName . ".*");
}

function getAuspraegungenForArtikel($artikelId)
{
    $languageId = GetDefaultLanguageID();
    
    $SQLString = 'SELECT ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.filter_id,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.aktiv,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.nur_bild_anzeige,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.sort,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_von,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_bis,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.name,';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.beschreibung, ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.bild';
    $SQLString .= ' FROM ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' LEFT JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.auspraegung_id';
    $SQLString .= ' INNER JOIN ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . '.auspraegung_id';
    $SQLString .= ' WHERE ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.langu_id = \'' . $languageId . '\'';
    $SQLString .= ' AND ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . '.artikel_id = \'' . $artikelId . '\'';
    $SQLString .= ' ORDER BY ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.sort';     
	
//    echo $SQLString;
    
    $result = errorlogged_mysql_query($SQLString);
    $auspraegungenArray = array();
    while(NULL != ($row = mysql_fetch_assoc($result)))
    {
        if($row['preis_von'] || $row['preis_bis'])
            $row['name'] = buildNameAuspraegungPreis($row['preis_von'], $row['preis_bis'], $languageId);
    	$auspraegungenArray[$row['id']] = $row;
    }
    return $auspraegungenArray;
}

function setFacettensucheAuspraegungZuordnung($artikelId, $auspraegungId)
{
    $SQLString = 'INSERT INTO ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . ' SET ';
    $SQLString .= 'artikel_id = \'' . $artikelId . '\', ';
    $SQLString .= 'auspraegung_id = \'' . $auspraegungId . '\'';

    errorlogged_mysql_query($SQLString);
}

function removeFacettensucheAuspraegungZuordnung($artikelId, $auspraegungId)
{
	$SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG;
	$SQLString .= ' WHERE artikel_id = \'' . $artikelId . '\' AND auspraegung_id = \'' . $auspraegungId . '\'';

	errorlogged_mysql_query($SQLString);
}

function isFacettensucheAktiv($kategorieId)
{
	$SQLString = 'SELECT ';
	$SQLString .= TABLE_KATEGORIE . '.facettensuche_aktiv, ';
	$SQLString .= TABLE_KATEGORIE . '.parentid ';
	$SQLString .= 'FROM ' . TABLE_KATEGORIE. ' ';
    $SQLString .= 'WHERE ' . TABLE_KATEGORIE . '.id = \'' . $kategorieId . '\'';
    
//    echo $SQLString;
    
    $result = errorlogged_mysql_query($SQLString);
    $row = mysql_fetch_assoc($result);
    if($row['facettensuche_aktiv'])
        return true;
//    else if($row['parentid'] != 0)
//        return isFacettensucheAktiv($row['parentid']);
    else
        return false;
}

function getFacettensucheFilterAuspraegungenForKategorie($kategorieId, $languageId = false, $artikelIds = false, $kundengruppeObject = false)
{
	$defaultLanguageId = GetDefaultLanguageID();
	if(!$languageId)
        $languageId = $defaultLanguageId;

    if(!isset($kundengruppenObject)) {
        $defaultKundengruppeId = GetDefaultKundengruppe();
        $kundengruppenObject = GetKundengruppenDetail($defaultKundengruppeId);
    }
        
        
	$kategorieIdArray = array($kategorieId);
	$kategorieIdArray = GetKategorieIDs($kategorieId, $kategorieIdArray);
	
    $SQLString = 'SELECT ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.id AS filter_id, '; 
	$SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.name, filter_std_langu.name) AS filter_name, ';
    $SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.beschreibung, filter_std_langu.beschreibung) AS filter_beschreibung, ';
    $SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.bild, filter_std_langu.bild) AS filter_bild, ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.mehrfachselektion as filter_mehrfachselektion, ';
    $SQLString .= TABLE_FACETTENSUCHE_FILTER . '.nur_bild_anzeige as filter_nur_bild_anzeige, ';
	$SQLString .= 'MIN(' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id) AS auspraegung_id,  ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.nur_bild_anzeige as auspraegung_nur_bild_anzeige, ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_von as auspraegung_preis_von, ';
    $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_bis as auspraegung_preis_bis, ';
    $SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.name, auspraegung_std_langu.name) AS auspraegung_name, '; 
	$SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.beschreibung, auspraegung_std_langu.beschreibung) AS auspraegung_beschreibung, ';
	$SQLString .= 'IFNULL(' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.bild, auspraegung_std_langu.bild) AS auspraegung_bild, ';
	$SQLString .= 'COUNT(artikel_auspraegung.artikel_id) as num_artikel ';
//	if($artikelIds)
//	{
//		$SQLString .= ', (SELECT COUNT(*) FROM ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . ' subartikelauspr ';
//		   $SQLString .= ' WHERE MIN(' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id) = subartikelauspr.auspraegung_id AND subartikelauspr.artikel_id IN (' . (implode(',', $artikelIds)) . ')) as artikel_anzahl ';
//	}  
	$SQLString .= 'FROM ' . TABLE_KATEGORIERELATION . ' ';
	$SQLString .= 'INNER JOIN ' . TABLE_KATEGORIE . ' ON ' . TABLE_KATEGORIERELATION . '.kategorieid = ' . TABLE_KATEGORIE . '.id ';
//	$SQLString .= 'INNER JOIN ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . ' ON ' . TABLE_KATEGORIERELATION . '.artikelid = ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . '.artikel_id ';
    $SQLString .= 'INNER JOIN (';
        $SQLString .= 'SELECT ';
        $SQLString .= TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . '.artikel_id as artikel_id, ';
        $SQLString .= TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . '.auspraegung_id as auspraegung_id';
        $SQLString .= ' FROM ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG;
        $SQLString .= ' UNION ';
        $SQLString .= 'SELECT ';
        $SQLString .= TABLE_ARTIKEL . '.id as artikel_id, ';
        $SQLString .= TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id as auspraegung_id';
        $SQLString .= ' FROM ' . TABLE_ARTIKEL;
        $SQLString .= ' LEFT JOIN ' . TABLE_KUNDENGRUPPENPREISE . ' ON ((' . TABLE_ARTIKEL . '.id = ' . TABLE_KUNDENGRUPPENPREISE . '.artikelid) AND (' . TABLE_KUNDENGRUPPENPREISE . '.kundengruppenid = \'' . $kundengruppenObject->id . '\')) ';
        $SQLString .= ' INNER JOIN (' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN;
        $SQLString .= ' INNER JOIN ' . TABLE_FACETTENSUCHE_FILTER . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.filter_id = ' . TABLE_FACETTENSUCHE_FILTER . '.id AND ' . TABLE_FACETTENSUCHE_FILTER . '.autofilter = \'' . FACETTENSUCHE_FILTER_AUTO_PREIS . '\')';
        $SQLString .= ' ON ';
        if($kundengruppenObject->type == 1) 
            $SQLString .= ' IFNULL(' . TABLE_KUNDENGRUPPENPREISE . '.preis_brutto, ' . TABLE_ARTIKEL . '.preis_brutto)';
        else
            $SQLString .= ' IFNULL(' . TABLE_KUNDENGRUPPENPREISE . '.preis_netto, ' . TABLE_ARTIKEL . '.preis_netto)';
        $SQLString .= ' >= IFNULL(' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_von, 0.00) AND ';
        if($kundengruppenObject->type == 1)
            $SQLString .= ' IFNULL(' . TABLE_KUNDENGRUPPENPREISE . '.preis_brutto, ' . TABLE_ARTIKEL . '.preis_brutto)';
        else
            $SQLString .= ' IFNULL(' . TABLE_KUNDENGRUPPENPREISE . '.preis_netto, ' . TABLE_ARTIKEL . '.preis_netto)';
        $SQLString .= ' < IFNULL(' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.preis_bis, 999999999999.99)';
    $SQLString .= ') artikel_auspraegung ON ' . TABLE_KATEGORIERELATION . '.artikelid = artikel_auspraegung.artikel_id ';
	$SQLString .= 'INNER JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' ON artikel_auspraegung.auspraegung_id = ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id ';
	$SQLString .= 'INNER JOIN ' . TABLE_FACETTENSUCHE_FILTER . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.filter_id = ' . TABLE_FACETTENSUCHE_FILTER . '.id ';
	$SQLString .= 'LEFT JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.auspraegung_id AND ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . '.langu_id = \'' . $languageId . '\' ';
	$SQLString .= 'LEFT JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNG_LANGU . ' auspraegung_std_langu ON ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id = auspraegung_std_langu.auspraegung_id and auspraegung_std_langu.langu_id = \'' . $defaultLanguageId . '\' ';
	$SQLString .= 'LEFT JOIN ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' ON ' . TABLE_FACETTENSUCHE_FILTER . '.id = ' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.filter_id AND ' . TABLE_FACETTENSUCHE_FILTER_LANGU . '.langu_id = \'' . $languageId . '\' ';
	$SQLString .= 'LEFT JOIN ' . TABLE_FACETTENSUCHE_FILTER_LANGU . ' filter_std_langu ON ' . TABLE_FACETTENSUCHE_FILTER . '.id = filter_std_langu.filter_id and filter_std_langu.langu_id = \'' . $defaultLanguageId . '\' ';
	$SQLString .= 'WHERE ' . TABLE_KATEGORIERELATION . '.kategorieid IN (' . implode(', ', $kategorieIdArray) . ') ';
	$SQLString .= ' AND ' . TABLE_FACETTENSUCHE_FILTER . '.aktiv = 1';
	$SQLString .= ' AND ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.aktiv = 1 ';
	$SQLString .= ' AND IF(' . TABLE_FACETTENSUCHE_FILTER . '.autofilter = ' . FACETTENSUCHE_FILTER_AUTO_PREIS . ', ' . TABLE_KATEGORIE . '.facettensuche_preisfilter_aktiv, 1) ';
//	$SQLString .= ' AND ' . TABLE_KATEGORIE . '.facettensuche_aktiv = 1 '; 
	$SQLString .= 'GROUP BY ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id ';
	$SQLString .= 'ORDER BY ' . TABLE_FACETTENSUCHE_FILTER . '.sort, ' . TABLE_FACETTENSUCHE_FILTER . '.id, ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.sort, ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id';

//	echo $SQLString;
	
	$result = errorlogged_mysql_query($SQLString);
	
	$resultArray = array();
	$filterId = 0;
	while($row = mysql_fetch_assoc($result))
	{
		if($filterId != $row['filter_id'])
		{
			$filterId = $row['filter_id'];
            $resultArray[$filterId]['filterName'] = ($row['filter_nur_bild_anzeige']?'':$row['filter_name']);
            $resultArray[$filterId]['filterBeschreibung'] = $row['filter_beschreibung'];
            $resultArray[$filterId]['mehrfachselektion'] = $row['filter_mehrfachselektion'];
            if($row['filter_bild']) {
            	$resultArray[$filterId]['image_format'] = '<img src="' . IMAGEPFAD . 'dbimages/facettensuche/' . $row['filter_bild'] . '" alt="' . $row['filter_name'] . '" alt="' . $row['filter_name'] . '" />';
            }
		}
        if($row['auspraegung_preis_von'] || $row['auspraegung_preis_bis'])
            $row['auspraegung_name'] = buildNameAuspraegungPreis($row['auspraegung_preis_von'], $row['auspraegung_preis_bis'], $languageId);
		$resultArray[$filterId]['auspraegungen'][$row['auspraegung_id']]['auspraegungName'] = ($row['auspraegung_nur_bild_anzeige']?'':$row['auspraegung_name']);
        $resultArray[$filterId]['auspraegungen'][$row['auspraegung_id']]['auspraegungBeschreibung'] = $row['auspraegung_beschreibung'];
//        $resultArray[$filterId]['auspraegungen'][$row['auspraegung_id']]['bild_url'] = IMAGEPFAD . 'dbimages/facettensuche/' . $row['auspraegung_bild'];
        if((file_exists(DATEIPFAD . 'images/dbimages/facettensuche/' . $row['auspraegung_bild'])) && ($row['auspraegung_bild'])) {
        	$resultArray[$filterId]['auspraegungen'][$row['auspraegung_id']]['image_format'] = '<img src="' . IMAGEPFAD . 'dbimages/facettensuche/' . $row['auspraegung_bild'] . '" alt="' . $row['auspraegung_name'] . '" />';
        }
        //        $resultArray[$filterId]['auspraegungen'][$row['auspraegung_id']]['selektierbar'] = (!$artikelIds || $row['artikel_anzahl'] > 0);
	}
	
	// Unterkategoriefilter
	
	$SQLString = 'SELECT ' . TABLE_KATEGORIE . '.facettensuche_unterkategoriefilter_aktiv FROM ' . TABLE_KATEGORIE . ' WHERE ' . TABLE_KATEGORIE . '.id = \'' . $kategorieId . '\'';
	$row = mysql_fetch_row(errorlogged_mysql_query($SQLString));
	
	$unterkategorieFilter = getFacettensucheFilter(false, $languageId, FACETTENSUCHE_FILTER_AUTO_UNTERKATEGORIE);
	
	if($row[0])
	{
		$SQLString = 'SELECT ';
		$SQLString .= TABLE_KATEGORIE . '.id, ';
		$SQLString .= TABLE_KATEGORIE_LANGU . '.name ';
		$SQLString .= ' FROM ' . TABLE_KATEGORIE . ' LEFT JOIN ' . TABLE_KATEGORIE_LANGU . ' ON ' . TABLE_KATEGORIE . '.id = ' . TABLE_KATEGORIE_LANGU . '.kategorie_id AND ' . TABLE_KATEGORIE_LANGU . '.language_id = \'' . $languageId . '\'';
		$SQLString .= ' WHERE ' . TABLE_KATEGORIE . '.parentid = \'' . $kategorieId . '\' AND ' . TABLE_KATEGORIE . '.aktiv > 0';
		
		$result = errorlogged_mysql_query($SQLString);
		if($result)
		{
			$filterId = $unterkategorieFilter['id'];
		    $resultArray[$filterId]['filterName'] = ($unterkategorieFilter['filter_nur_bild_anzeige']?'':$unterkategorieFilter['name']);
	        $resultArray[$filterId]['filterBeschreibung'] = $unterkategorieFilter['beschreibung'];
	        $resultArray[$filterId]['mehrfachselektion'] = $unterkategorieFilter['mehrfachselektion'];
	        //$resultArray[$filterId]['bild_unter_url'] = IMAGEPFAD . 'dbimages/facettensuche/' . $unterkategorieFilter['bild'];
	        if($unterkategorieFilter['bild']) {
				$resultArray[$filterId]['image_format'] = '<img src="' . IMAGEPFAD . 'dbimages/facettensuche/' . $unterkategorieFilter['bild'] . '" alt="' . $unterkategorieFilter['name'] . '" />';
            }
			
			while($row = mysql_fetch_assoc($result))
			{
				$resultArray[$filterId]['auspraegungen'][$row['id']]['auspraegungName'] = $row['name'];
			}
		}
	}
	
	return $resultArray;
}

function assignArtikelPreisFilter()
{
	$SQLString = 'DELETE FROM ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG;
	$SQLString .= ' WHERE auspraegung_id IN (';
    	$SQLString .= ' SELECT ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . '.id';
        $SQLString .= ' FROM ' . TABLE_FACETTENSUCHE_FILTER . ' INNER JOIN ' . TABLE_FACETTENSUCHE_AUSPRAEGUNGEN . ' ON ' . TABLE_FACETTENSUCHE_FILTER . '.id = ' . TABLE_FACETTENSUCHE_ARTIKEL_AUSPRAEGUNG . '.filter_id';
        $SQLString .= ' WHERE ' . TABLE_FACETTENSUCHE_FILTER . '.autofilter = \'' . FACETTENSUCHE_FILTER_AUTO_PREIS . '\'';
    $SQLString .= ')';
    
    errorlogged_mysql_query($SQLString);
    
    
}


/* Für Tests: Folgendes Query ordnet jedem Shop Artikel zufällig Ausprägungen zu. 
 * Für jeden Filter wird eine Ausprägung zugeordnet.

delete from shop_facettensuche_artikel_auspraegung;
insert into shop_facettensuche_artikel_auspraegung (select shop_artikel.id as artikel_id, (select id from shop_facettensuche_auspraegungen where filter_id = shop_facettensuche_filter.id order by rand() limit 0, 1) as auspraegung_id from 
shop_artikel join shop_facettensuche_filter on shop_facettensuche_filter.autofilter == 0);

*/

?>