<?php
/*
# Fuer debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
#echo __LINE__."<br>";
*/
include_once 'classes/lg-on_Smarty.class.php';
$smarty = new lgon_Smarty();
require_once("config.inc.php");
require_once("func_rollenrechte.php");
require_once("func_htmlclean.php");
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
require_once "language/german.inc.php";


// Rechteüberprüfung
if ($user_admin == "") {
  require("index.php");
  exit;
} //Wenn man nicht angemeldet ist, darf man nicht auf die Seite
if (!rore($user_admin, 'a_worterf', 'RE')) {
  require("lib/rechte.php");
  exit;
}
// Rechteüberprüfung ende


if (isset($_GET['action'])) {
  $action = $_GET['action'];
} else {
  $action = '';
}

if ($action == '') {
  
  dbconnect();
  $query = "SELECT bezeichnung FROM thema GROUP BY bezeichnung ORDER BY tid DESC";
  $result = $db->query($query) or die("Cannot execute query");
  
  while ($row = $result->fetch_array()) {
    $value[] = $row;
  }
  $smarty->assign('table_data', $value);
  
  
  $db    = dbconnect();
  $query = "SELECT kid, bezeichnung FROM kategorie ORDER BY bezeichnung ASC";
  $result = $db->query($query) or die("Cannot execute query");
  
  while ($row = $result->fetch_array()) {
    $value1[] = $row;
  }
  $smarty->assign('table_data1', $value1);
}

# Beim Erfassen wird unterschieden ob eine Textstelle angegeben wurde oder nicht
# Wird eine angegeben, dann wird geprüft, ob sie den Vorgaben entspricht und dann den insert durchgeführt
# Wird eine keine Textstelle angegeben dann wird der insert ohne Überprüfung der Textstelle durchgeführt

if ($action == 'erfassen1') {
  $db              = dbconnect();
  $datum           = "$_POST[beg_jahr]-$_POST[beg_mon]-$_POST[beg_tag]";
  $vorwort         = htmlclean($_POST['vorwort'], $db);
  $wort            = htmlclean($_POST['wort'], $db);
  $botschaft       = htmlclean($_POST['botschaft'], $db);
  $inhalt          = htmlclean($_POST['inhalt'], $db);
  $zusammenfassung = htmlclean($_POST['zusammenfassung'], $db);
  $kontext         = htmlclean($_POST['kontext'], $db);
  $textstelle      = $_POST['textstelle'];
  
  if ($_POST['ukid'] == NULL) {
    $ukid = 'NULL';
  } else {
    $ukid = $_POST['ukid'];
    setcookie("ck_ukid", $ukid);
  }
  
  if (@checkdate($_POST['beg_mon'], $_POST['beg_tag'], $_POST['beg_jahr']) == 0) { // checkdate liefert 0 & 1 zur&uuml;ck: 0 wenn Datum falsch, 1 wenn Datum richtig
    $smarty->assign('wort_erfassen_checkdate_err', "1");
    $fehler = TRUE;
  } elseif ((
  // Pregs auf vollständige Bibelbücher überprüft
    
  // Bücher mit mehreren Bücher 1. Johannes...
    preg_match("/^([1-9])\.\s* (Makkabäer|Johannes|Mose|Könige|Chronik|Korinther|Samuel|Thessalonicher|Timotheus|Petrus)\s*[0-9]{1,2}(\,)?\s*(aus)?\s*[0-9]{1,3}(\.|-)?([0-9]{1,3})?(\.)?([0-9]{1,3})?$/im", $textstelle) or 
  // Bücher mit nur einem Buch Rut 3,5-7
    preg_match("/^(Gebet Manasses|Stücke zu Daniel|Stücke zu Ester|Baruch|Weisheit|Judit|Johannes|Sirach|Josua|Richter|Rut|Ruth|Esra|Nehemia|Esther|Ester|Hiob|Psalm|Sprüche|Prediger|Hoheslied|Jesaja|Jeremia|Klagelieder|Hesekiel|Daniel|Hosea|Joel|Amos|Tobias|Obadja|Jona|Micha|Nahum|Habakuk|Zefanja|Haggai|Sacharja|Maleachi|Matthäus|Markus|Lukas|Apostelgeschichte|Römer|Galater|Epheser|Philipper|Kolosser|Titus|Hebräer|Jakobus|Offenbarung)\s*[0-9]{1,3}(\,)?\s*(aus)?\s*[0-9]{1,3}(\.|-)?([0-9]{1,3})?(\.)?([0-9]{1,3})?$/im", $textstelle) or 
  // Bücher ohne Kapitel
    preg_match("/^(Philemon|Judas)\s*(aus)?\s*[0-9]{1,3}(\.|-)?([0-9]{1,3})?(\.)?([0-9]{1,3})?$/im", $textstelle)) AND $textstelle != "") {
    
    function refill($start, $ende)
    {
      
      for ($i = $start; $i < $ende; $i++) {
        $j .= "|$i";
        
      }
      $j .= "|" . $i . "|";
      return $j;
      
    }
    
    function refillpunkt($zahl1, $zahl2, $zahl3)
    {
      
      $j = "|$zahl1|$zahl2|";
      
      if ($zahl3 != '') {
        $j .= "$zahl3|";
      }
      return $j;
      
    }
    
    function makeLink($a, $b, $c, $d, $e, $f, $g, $h, $lid)
    {
      settype($f, "integer");
      if ($e == '-') {
        
        $d = refill($d, $f);
        $e = "";
        $f = "";
      } elseif ($e == '.') {
        $d = refillpunkt($d, $f, $h);
        $e = "";
        $f = "";
        $g = "";
        $h = "";
      } else {
        $d = "|$d|";
      }
      
      
      $db  = dbconnect();
      $sql = $db->query("UPDATE quelle
  				 SET txt_anz_buch=trim('$a')
  				   , txt_buch=trim('$b')
  				   , txt_kapitel=trim('$c')
  				   , txt_vers =trim('$d')
  				 WHERE lid='$lid'");
      
      
    }
    
    
    // Wenn Wörter dem richtigen Aufbau entsprechen, dann weiter
    
    if (isset($_POST['stapgd'])) {
      if ($_POST['stapgd'] == 'Y') {
        $stapgd = 'Y';
      } else {
        $stapgd = 'N';
      }
    } else {
      $stapgd = 'N';
    }
    
    
    ## Prüfen, ob es das Thema schon gibt
    $result = $db->query("SELECT tid FROM thema WHERE bezeichnung = '$_POST[thema]'");
    $row    = $result->fetch_array();
    
    ## wenn nicht, dann eintragen
    if ($row['tid'] == '') {
#      $sql1 = $db->query("set sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
      $sql1 = $db->query("INSERT INTO thema ( bezeichnung) VALUES ('$_POST[thema]') ");
    }
    
    ## ThemaID (tid) abfragen
    $result = $db->query("SELECT tid FROM thema WHERE bezeichnung = '$_POST[thema]'");
    $row    = $result->fetch_array();
    
    
    ## Unterhema eintragen
#    $sql1 = $db->query("set sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
    $sql1 = $db->query("INSERT INTO unterthema ( tid, bezeichnung) VALUES ('$row[tid]', '$_POST[unterthema]') ");
    
    ## UnterThemaID (utid) abfragen
    $result1 = $db->query("SELECT utid FROM unterthema WHERE bezeichnung = '$_POST[unterthema]' AND tid='$row[tid]' ");
    $row1    = $result1->fetch_array();
    
    
    
    #https://marius.bloggt-in-braunschweig.de/2019/02/21/mariadb-bugfix-sorgt-fuer-ein-bisschen-aerger/
    # STRICT_TRANS_TABLES Error
#    $sql1 = $db->query("set sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
    $sql1 = $db->query("INSERT INTO quelle ( Textstelle
  						, Ueberschrift
  						, thema
  						, unterthema
  						, vorwort
  						, botschaft
  						, Textwort
  						, Inhalt
  						, zusammenfassung
  						, kontext
  						, Datum
  						, stapgd
  						, kid
  						, ukid
  					       )
  			    VALUES
  					       ( '$textstelle'
  					       , \"" . $_POST['uberschrift'] . "\"
  					       , $row[tid]
  					       , $row1[utid]
  					       , '$vorwort'
  					       , '$botschaft'
  					       , '$wort'
  					       , '$inhalt'
  					       , '$zusammenfassung'
  					       , '$kontext'
  					       , '$datum'
  					       , '$stapgd'
  					       , \"" . $_POST['kid'] . "\"
  					       , $ukid
  					       )");
    $lid  = $db->insert_id;
    
    $textstelle = preg_replace_callback("/^([1-9]\.)*\s*" . //1 a
      "(Makkabäer|Johannes|Mose|Könige|Chronik|Korinther|Samuel|Thessalonicher|Timotheus|Petrus|Gebet Manasses|Stücke zu Daniel|Stücke zu Ester|Baruch|Weisheit|Judit|Judith|Sirach|Josua|Richter|Rut|Ruth|Esra|Nehemia|Esther|Ester|Hiob|Ijob|Psalm|Sprüche|Prediger|Hoheslied|Jesaja|Jeremia|Klagelieder|Hesekiel|Ezechiel|Daniel|Hosea|Joel|Amos|Tobias|Obadja|Jona|Micha|Nahum|Habakuk|Zefanja|Haggai|Sacharja|Maleachi|Matthäus|Markus|Lukas|Apostelgeschichte|Römer|Galater|Epheser|Philipper|Kolosser|Titus|Hebräer|Jakobus|Offenbarung|Philemon|Judas)\s*" . //2
      "([0-9]{1,3})" . //3  c
      "(\,)?\s*" . //4
      "(aus)?\s*" . //5
      "([0-9]{0,3})" . //6  d
      "(\.|-)?" . //7  e
      "([0-9]{0,3})?" . //8  f
      "(\.|-)?" . //9  g
      "(\s)?" . //10  g
      "([0-9]{0,3})" . //11 h
      "$/", function($m) use (&$lid)
    {
      return makeLink($m[1], $m[2], $m[3], $m[6], $m[7], $m[8], $m[9], $m[11], $lid);
    }, $textstelle);
    
    if (!$sql1) {
      $smarty->assign('wort_erfassen_sql_err1', "1");
      $fehler = TRUE;
    }
    
    
    
  } elseif ($textstelle == "") {
    if ($_POST['stapgd'] == 'Y') {
      $stapgd = 'Y';
    } else {
      $stapgd = 'N';
    }
    
    
    ## Prüfen, ob es das Thema schon gibt
    $result = $db->query("SELECT tid FROM thema WHERE bezeichnung = '$_POST[thema]'");
    $row    = $result->fetch_array();
    
    ## wenn nicht, dann eintragen
    if ($row['tid'] == '') {
#      $sql1 = $db->query("set sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
      $sql1 = $db->query("INSERT INTO thema ( bezeichnung) VALUES ('$_POST[thema]') ");
    }
    
    ## ThemaID (tid) abfragen
    $result = $db->query("SELECT tid FROM thema WHERE bezeichnung = '$_POST[thema]'");
    $row    = $result->fetch_array();
    
    ## Unterhema eintragen
#    $sql1 = $db->query("set sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
    $sql1 = $db->query("INSERT INTO unterthema ( tid, bezeichnung) VALUES ('$row[tid]', '$_POST[unterthema]') ");
    
    ## UnterThemaID (utid) abfragen
    $result1 = $db->query("SELECT utid FROM unterthema WHERE bezeichnung = '$_POST[unterthema]' AND tid='$row[tid]' ");
    $row1    = $result1->fetch_array();
    
#    $sql1 = $db->query("set sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
    $sql1 = $db->query("INSERT INTO quelle ( Textstelle
  						, Ueberschrift
  						, thema
  						, unterthema
  						, botschaft
  						, Textwort
  						, Inhalt
  						, zusammenfassung
  						, kontext
  						, Datum
  						, stapgd
  						, kid
  						, ukid
  					       )
  			    VALUES
  					       ( '$textstelle'
  					       , \"" . $_POST['uberschrift'] . "\"
  					       , $row[tid]
  					       , $row1[utid]
  					       , '$botschaft'
  					       , '$wort'
  					       , '$inhalt'
  					       , '$zusammenfassung'
  					       , '$kontext'
  					       , '$datum'
  					       , '$stapgd'
  					       , \"" . $_POST['kid'] . "\"
  					       , $ukid
  					       )");
    
    if (!$sql1) {
      $smarty->assign('wort_erfassen_sql_err1', "1");
      $fehler = TRUE;
    }
    
    
  } else {
    $smarty->assign('wort_erfassen_sql_err2', "1");
    $fehler = TRUE;
  }
  
  if (!isset($fehler)) {
    $smarty->assign('wort_erfassen_success', "1");
  }
}

$smarty->assign('action', "$action");
$smarty->display("$template/$templatename");
?>