<?php
header("Content-Type: text/html;charset=utf-8");
require_once("../config.inc.php");
$db = dbconnect();

if (isset($_GET['getWord']) && isset($_GET['letters'])) {
  $sql_gesamt == '';
  # Einige Textzeichen wurden aus den Suchspalten entfernt, daher müssen sie auch aus suchanfragen entfernt werden
  $bereinigung = array(
    ",",
    ".",
    "!",
    "?",
    ";",
    "|",
    "'",
    "<",
    ">"
  );
  $letters     = str_replace($bereinigung, "", $_GET['letters']);
  
  
  $letters = addslashes($letters)." ";
  
  $result_usr = $db->query("SELECT lied_search, lied_bestand, lied_favorit, lied_status
                               FROM profil
                              WHERE user = '$user_admin'");
  $row_usr    = $result_usr->fetch_array();
  
  if ($row_usr['lied_search'] == 'regexp') {
    $trenner = 'REGEXP ';
    $start   = '[[:<:]]';
    $ende    = '[[:>:]]';
  } else {
    $trenner = 'LIKE ';
    $start   = '%';
    $ende    = '%';
  }
  
  $inhalt = preg_replace('/\s{2,}/sm', ' ', $letters, PREG_SET_ORDER); //Mehr als zwei leerzeichen entfernen
  
  $sql1 = "SELECT art, nr, zusatz, titel, text, kategorie, unterkategorie
	     FROM lieder_synopse
	    WHERE ";
  
  preg_match_all("/(\-{0,1}\+{0,1}\*{0,1}%{0,1}\"([^\"]+)\"\*{0,1}%{0,1}\+{0,1}\-{0,1}|\-{0,1}\+{0,1}\*{0,1}%{0,1}(\w+)\*{0,1}%{0,1}\+{0,1}\-{0,1})/u", $inhalt, $Worte);
  
  #echo "<pre>";
  #print_r($Worte[0]);
  #echo "</pre>";
  if ($inhalt != "") {
    
    #   $sql .= " (";
    for ($i = 0; $i < count($Worte[0]); $i++) {
      
      $suchwort = str_replace(array(
        "+",
        "-",
        "\"",
        "\\"
      ), array(
        "",
        "",
        "",
        ""
      ), $Worte[0][$i]);
      
      if ($i == 0) {
        $oper = "";
      } else {
        $oper = "AND";
      }
      
      # Uppercase
      $suchwort = mb_strtoupper($suchwort);
      
      #      if (strpos($Worte[0][$i], "+") === 0) {
      #        $sql .= "(UPPER(text_suche) $trenner '$start" . $suchwort . "$ende'";
      #      } elseif (strpos($Worte[0][$i], "-") === 0) {
      #        $sql .= "$oper UPPER(inhalt1) NOT $trenner '$start" . $suchwort . "$ende' ";
      #      } elseif ($Worte[0][$i] == "") {
      #        NULL;
      #      } else {
      
      
      ## die Felder _suche sind als utf8_bin definiert: Die collation unterscheidet Umlaute
      ## Sonst würde bei ü auch u gescuht werden: Müller würde auch Muller finden. Bei ut8_bin wird unterschieden
      
      $sql .= "$oper (UPPER(text_suche) $trenner '$start" . $suchwort . "$ende'
                        OR upper(titel_suche) $trenner '$start" . $suchwort . "$ende' 
                        OR nr = '" . $suchwort . "') ";
      #      }
    }
    
    
  }
  
  # Liedbestand: ALL / CB / GB ergänzen. Bei ALL braucht es keine Ergänzung der where-Bedingung
  if($row_usr['lied_bestand'] != 'ALL'){
   $sql3 = "AND art='$row_usr[lied_bestand]' ";
  }
  
  
  # In Favoriten suchen
  if($row_usr['lied_favorit'] == '1'){
     $sql4 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_favorit WHERE vaid=$user_vaid)";
  }
  
  # In Status suche
  # K A P U: Status K: Keine Einschränkung, braucht hier nicht berücksichtigt werden.
  if($row_usr['lied_status'] == 'A'){
    # Aufführbare Lieder
    $sql5 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_status WHERE vaid=$user_vaid AND status='A')";
  }elseif($row_usr['lied_status'] == 'P'){
    #Probe/Übphase
    $sql5 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_status WHERE vaid=$user_vaid AND status='U')";
  }elseif($row_usr['lied_status'] == 'U'){
    # Alle außer status A und U
    $sql5 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) NOT IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_status WHERE vaid=$user_vaid)";
  }
  
  $sql_gesamt = $sql1 . $sql . $sql3 . $sql4 . $sql5 ."  ORDER BY nr, art, titel";
  #echo $sql_gesamt."<br>";

  #$handle = fopen ("sql.txt", w);
  #fwrite ($handle, $sql_gesamt);
  #fclose ($handle);
  /*
  SELECT art, nr, zusatz, titel, text, kategorie, unterkategorie
    FROM `lieder_synopse` 
   WHERE ( UPPER(text_suche) REGEXP '[[:<:]]ACH[[:>:]]' OR upper(titel_suche) REGEXP '[[:<:]]ACH[[:>:]]' OR nr = 'ARMEN' )
     AND ( UPPER(text_suche) REGEXP '[[:<:]]ARMEN[[:>:]]' OR upper(titel_suche) REGEXP '[[:<:]]ARMEN[[:>:]]' OR nr = 'ARMEN' )
   ORDER BY art, nr, titel
  
  */
  
  #$letters = preg_replace("/[^a-z0-9 ]/si","",$letters);
  $res = $db->query($sql_gesamt) or die(mysql_error());
  #echo "1###select ID,textstelle Name from ajax_countries where textstelleName like '".$letters."%'|";
  
  # Vor Zusatz muss ein Leerzeichen kommen, damit man den mit explode bei der liedanzeige trennen kann
  while ($inf = $res->fetch_array()) {
    #$name= "$inf[art] $inf[nr] $inf[zusatz] - $inf[titel] <br>($inf[kategorie] -> $inf[unterkategorie])";
    $name = "$inf[art] $inf[nr] $inf[zusatz] - $inf[titel]";
    echo $name . "|";
  }
}
?>