<?php
header('Content-type: text/html; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', true);

if (!function_exists('boolval')) {
        function boolval($val) {
                return (bool) $val;
        }
}
function highlight_result($res, $search) {
  return str_ireplace($search, "<b><i>" . $search . "</i></b>", $res);
}

function clean_and_transliterate($s) {
  $clean_from = array(    'c', 'f', 'j', 'q', 'v', 'w', 'x', 'y',
                                        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                                        'в', 'й', 'ф', 'ч', 'щ', 'ъ', 'ѣ', 'ь', 'ю', 'я', 'ѝ', 'ѫ', 'ѧ',
                                        '-', ' ', '/', '(', ')', "'", '"', ',', '.', ';', '');
  $s = str_ireplace($clean_from, '', $s);
  $cyr_from    = array('а', 'б', 'д', 'е', 'г', 'ж', 'з', 'х', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'ш', 'т', 'у', 'ц', '*', 'o');
  $cyr_to         = array('a', 'b', 'd', 'e', 'g', 'ĝ', 'z', 'h', 'i', 'k', 'l', 'm', 'n', 'u', 'p', 'r', 's', 'š', 't', 'u', 'z', '%', 'u');
  $s = str_ireplace($cyr_from, $cyr_to, $s);
  return $s;
}

function format_root($root) {
  $replacement = '<sub>${1}</sub>';
  $pattern = '/(\(\d([,\/ ]\d)*\))/';
  $root = preg_replace($pattern, $replacement, $root);
  $pattern = '/(\d([,\/ ]\d)*)/';
  $root = preg_replace($pattern, $replacement, $root);
    return $root;
}
$mysqli = new mysqli("localhost", "grazhdan_sumer", "q1w2e3r4", "grazhdan_sumer"); // prod
// $mysqli = new mysqli("localhost", "sumer", null, "sumer"); // local
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$mysqli->set_charset("utf8mb4");

$s_english = false;

$s_submitted = @boolval($_POST["sforms"]);
$s_type = @intval($_POST["s_type"]);
$s_search = @trim($_POST["ss"]);
if ($s_search == "") {
  $s_search = @trim($_GET["ss"]);
} else if ($s_type != 2) {
  $s_search = clean_and_transliterate($s_search);
}
$s_search = strtolower($s_search);

$num_rows = 0;
$result = null;
$random_search = false;
if ($s_search) {

  if ($s_type == 2) {
        $s_english = true;
        if (strlen($s_search) >= 4) { // fulltext seatch wors for 4 or more chars
          $query = "SELECT *, LOCATE('$s_search', `meaning`) AS pos FROM `sumlex` WHERE MATCH(`meaning`) AGAINST('$s_search')  ORDER BY pos LIMIT 100";
        } else {
            $q_like = " '%$s_search%'";
            // $query = "SELECT * FROM `sumlex` WHERE `meaning` LIKE $q_like LIMIT 100";
            $query = "SELECT *, LOCATE('$s_search', `meaning`) AS pos FROM `sumlex` WHERE `meaning` LIKE $q_like ORDER BY pos LIMIT 100";
        }
  } else {
        $q_like = $s_type == 1 ? " '%$s_search%'" :  " '$s_search'";

        $query = "SELECT *, LENGTH(`simple`) AS le FROM `sumlex`
                        WHERE (`clean` LIKE $q_like OR `simple` LIKE $q_like)
                        ORDER BY le LIMIT 50";
  }
} else {
    $random_search = true;
    // do random word
    $query = "SELECT * FROM `sumlex` WHERE `cuneiform` !=  '' GROUP BY cuneiform ORDER BY RAND() LIMIT 3";
}

$result = $mysqli->query($query);
if (!$result) {
  printf("Errormessage: %s\n", $mysqli->error);
}
$num_rows = $result->num_rows;

$results_found_str = $num_rows . " results found";
if ($random_search) {
  $results_found_str = "<i>Showing random words. Use the box above to refine search.</i>";
}
?><!DOCTYPE html>
<html lang="en">
<head>
    <title>Sumerian lexicon search</title>
    <meta name="description" content="Sumerian lexicon - electronic search online">
    <meta name="keywords" content="sumerian dictionary, lexicon, cuneiform, sumer language">
    <link rel="apple-touch-icon" sizes="57x57" href="ico/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="ico/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="ico/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="ico/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="ico/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="ico/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="ico/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="ico/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="ico/apple-icon-180x180.png">
    <link rel="icon" type="image/png" sizes="192x192"  href="ico/android-icon-192x192.png">
    <link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="96x96" href="ico/favicon-96x96.png">
    <link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png">
    <link rel="manifest" href="/manifest.json">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="ico/ms-icon-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta charset="UTF-8">
    <link href="style.css" rel="stylesheet" type="text/css">
    <script>
      function insertSymbol(s) {
            var ss_field = document.getElementById('ss_field');
            ss_field.value += s.name;
      }

      function doFocusOnSearch() {
            document.getElementById('ss_field').focus();
      }
    </script>
    <script data-ad-client="ca-pub-3720793170265080" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
</head>
<body>
<h1>Sumerian lexicon search</h1>
<div class="form">
    <form action="index.php" method="post" >
          <input type="radio" name="s_type" id="st_exact" value="0" <?=$s_type == 0 ? "checked='checked'": ""?>/><label for="st_exact">Sumerian words (exact)</label>
          <input type="radio" name="s_type" id="st_loose" value="1" <?=$s_type == 1 ? "checked='checked'": ""?>/><label for="st_loose">Sumerian words (containing)</label>
          <input type="radio" name="s_type" id="st_eng" value="2" <?=$s_type == 2 ? "checked='checked'": ""?>/><label for="st_eng">English description</label>
          <div id="searchboxes">
              <input name="ss" id="ss_field" type="text" value="<?=$s_search;?>"  onfocus="this.value = this.value;" />
              <button name="submit" id="ss_submit" onclick="this.form.submit(); return true;">Search</button>
          </div>
          <button class="letter" name="a" onclick="insertSymbol(this); return false;" title="а">a</button>
          <button class="letter" name="b" onclick="insertSymbol(this); return false;" title="б">b</button>
          <button class="letter" name="d" onclick="insertSymbol(this); return false;" title="д">d</button>
          <button class="letter" name="e" onclick="insertSymbol(this); return false;" title="е">e</button>
          <button class="letter" name="g" onclick="insertSymbol(this); return false;" title="г">g</button>
          <button class="letter" name="ĝ" onclick="insertSymbol(this); return false;" title="ж">ĝ</button>
          <button class="letter" name="h" onclick="insertSymbol(this); return false;" title="х">h</button>
          <button class="letter" name="i" onclick="insertSymbol(this); return false;" title="и">i</button>
          <button class="letter" name="k" onclick="insertSymbol(this); return false;" title="к">k</button>
          <button class="letter" name="l" onclick="insertSymbol(this); return false;" title="л">l</button><br/>
          <button class="letter" name="m" onclick="insertSymbol(this); return false;" title="м">m</button>
          <button class="letter" name="n" onclick="insertSymbol(this); return false;" title="н">n</button>
          <button class="letter" name="p" onclick="insertSymbol(this); return false;" title="п">p</button>
          <button class="letter" name="r" onclick="insertSymbol(this); return false;" title="р">r</button>
          <button class="letter" name="s" onclick="insertSymbol(this); return false;" title="с">s</button>
          <button class="letter" name="š" onclick="insertSymbol(this); return false;" title="ш">š</button>
          <button class="letter" name="t" onclick="insertSymbol(this); return false;" title="т">t</button>
          <button class="letter" name="u" onclick="insertSymbol(this); return false;" title="у">u</button>
          <button class="letter" name="z" onclick="insertSymbol(this); return false;" title="ц">z</button>
          <input type="hidden" name="sforms" value="1" />
      </form>
</div>


<br />
<?php
if ($s_submitted || $num_rows > 0) {
?>
<div class="results_area">
  <div style="text-align: right; font-weight: bold;"><?=$results_found_str;?></div>
  <?php
  if ($num_rows > 0) {
  ?>
  <div class="results">
    <div class="header">
        <div class="cunei">Cuneiform</div>
        <div class="root">Sumerian word</div>
        <div class="definition">English description</div>
    </div>
<?php
while ($row = mysqli_fetch_assoc($result)) {
?>
<div class="result">
    <div class="cunei"><?php
        if ($row["cuneiform"]) {
            echo "<span class=\"avail\" title=\"{$row["linguistic"]}\">" . $row["cuneiform"] . "</span>" ;
        } else {
            echo "<span class=\"notavail\">" . format_root($row["linguistic"]) . "</span>" ;
        }
    ?></div>
    <div class="root"><span title="<?=$row["simple"]?>"><?=$s_english ? format_root($row["entry"]) : format_root(highlight_result($row["entry"], $row["linguistic"]))?></span></div>
    <div class="definition"><?=$s_english ? nl2br(highlight_result($row["meaning"], $s_search)) : nl2br($row["meaning"])?></div>
</div>
<?php
  }
?>
  </div>
<?php
}
?>
</div>
<?php
}
?>
<hr />
<strong>External links</strong>
<ul>
  <li><a href="http://www.sumerian.org/sumerlex.htm">Sumerian Lexicon</a>, by John A. Halloran. That's the primary source for the 5000 entries of this online dictionary.</li>
  <li><a href="http://psd.museum.upenn.edu/epsd1/index.html">The Pennsylvania Sumerian Dictionary</a>, by Babylonian Section of the University of Pennsylvania, Museum of Anthropology and Archaeology</li>
  <li><a href="http://etcsl.orinst.ox.ac.uk">The Electronic Text Corpus of Sumerian Literature</a>, by the Faculty of Oriental Studies, University of Oxford</li>
  <li><a href="https://en.wikipedia.org/wiki/Sumerian_language">Sumerian language</a>, English Wikipedia article</li>
  <li><a href="http://cdli.ucla.edu/pubs/cdlp/cdlp0002_20160104.pdf">Introduction to Sumerian grammar</a>, by Daniel A. Foxvog</li>
  <li><a href="https://en.wikibooks.org/wiki/Sumerian/Grammar">Sumerian grammar lessons</a>, a Wikibooks project</li>
  <li><a href="https://de.wiktionary.org/wiki/Kategorie:Sumerisch">Kategorie: Sumerisch</a>, the Sumerian category of articles in the German Wiktionary</li>
</ul>
<br />
  <div style="text-align: right; font-size: 0.6em; padding-right:15px;">&copy;2016 SUMER.GRAZHDANI.EU</div>
 <div style="text-align: center; margin-top:10px; margin-bottom:15px">
 <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
 <!-- Grazhdani.eu - Sumer -->
 <ins class="adsbygoogle"
      style="display:inline-block;width:728px;height:90px"
      data-ad-client="ca-pub-3720793170265080"
      data-ad-slot="1925872452"></ins>
 <script>
 (adsbygoogle = window.adsbygoogle || []).push({});
 </script>
 <script>
doFocusOnSearch();
 </script>
 <script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-74941018-1', 'auto');
  ga('send', 'pageview');
</script>
</body>
</html><?php
$mysqli->close();
 ?>