diff options
Diffstat (limited to 'search')
25 files changed, 1197 insertions, 0 deletions
diff --git a/search/birth/data.json/index.php b/search/birth/data.json/index.php new file mode 100644 index 0000000..5baf427 --- /dev/null +++ b/search/birth/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["date"]) && isset($person["birth"]["date"]["year"])) { + if (isset($counts[(string)$person["birth"]["date"]["year"]])) { + $counts[(string)$person["birth"]["date"]["year"]]++; + } else { + $counts[(string)$person["birth"]["date"]["year"]] = 1; + } + if (!in_array((string)$person["birth"]["date"]["year"], $names)) { + $names[] = (string)$person["birth"]["date"]["year"]; + } + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/birth/index.php b/search/birth/index.php new file mode 100644 index 0000000..2e412a4 --- /dev/null +++ b/search/birth/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par date de naissance"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par date de naissance</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par date de naissance + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item active" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper une année..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes nées en " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez une année"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/birth/results/index.php b/search/birth/results/index.php new file mode 100644 index 0000000..6104373 --- /dev/null +++ b/search/birth/results/index.php @@ -0,0 +1,38 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["date"]) && isset($person["birth"]["date"]["year"])) { + if ((string)$person["birth"]["date"]["year"] === $q) { + $results[] = $id; + } + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/city/data.json/index.php b/search/city/data.json/index.php new file mode 100644 index 0000000..fdf0665 --- /dev/null +++ b/search/city/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["place"]) && isset($person["birth"]["place"]["city"])) { + if (isset($counts[$person["birth"]["place"]["city"]])) { + $counts[$person["birth"]["place"]["city"]]++; + } else { + $counts[$person["birth"]["place"]["city"]] = 1; + } + if (!in_array($person["birth"]["place"]["city"], $names)) { + $names[] = $person["birth"]["place"]["city"]; + } + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/city/index.php b/search/city/index.php new file mode 100644 index 0000000..0c3825e --- /dev/null +++ b/search/city/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par ville de naissance"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par ville de naissance</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par ville + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item active" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper une ville..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes nées à " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez une ville"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/city/results/index.php b/search/city/results/index.php new file mode 100644 index 0000000..8dafdfa --- /dev/null +++ b/search/city/results/index.php @@ -0,0 +1,38 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["place"]) && isset($person["birth"]["place"]["city"])) { + if ($person["birth"]["place"]["city"] === $q) { + $results[] = $id; + } + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/death/data.json/index.php b/search/death/data.json/index.php new file mode 100644 index 0000000..8cc8708 --- /dev/null +++ b/search/death/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + if (isset($person["death"]["date"]) && isset($person["death"]["date"]["year"])) { + if (isset($counts[(string)$person["death"]["date"]["year"]])) { + $counts[(string)$person["death"]["date"]["year"]]++; + } else { + $counts[(string)$person["death"]["date"]["year"]] = 1; + } + if (!in_array((string)$person["death"]["date"]["year"], $names)) { + $names[] = (string)$person["death"]["date"]["year"]; + } + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/death/index.php b/search/death/index.php new file mode 100644 index 0000000..73b7742 --- /dev/null +++ b/search/death/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par date de décès"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par date de décès</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par date de décès + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item active" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper une année..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes décédées en " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez une année"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/death/results/index.php b/search/death/results/index.php new file mode 100644 index 0000000..4b0201b --- /dev/null +++ b/search/death/results/index.php @@ -0,0 +1,38 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (isset($person["death"]["date"]) && isset($person["death"]["date"]["year"])) { + if ((string)$person["death"]["date"]["year"] === $q) { + $results[] = $id; + } + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/dept/data.json/index.php b/search/dept/data.json/index.php new file mode 100644 index 0000000..5a0ed2a --- /dev/null +++ b/search/dept/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["place"]) && isset($person["birth"]["place"]["dept"])) { + if (isset($counts[$person["birth"]["place"]["dept"]])) { + $counts[$person["birth"]["place"]["dept"]]++; + } else { + $counts[$person["birth"]["place"]["dept"]] = 1; + } + if (!in_array($person["birth"]["place"]["dept"], $names)) { + $names[] = $person["birth"]["place"]["dept"]; + } + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/dept/index.php b/search/dept/index.php new file mode 100644 index 0000000..4c75745 --- /dev/null +++ b/search/dept/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par département de naissance"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par département de naissance</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par département + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item active" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper un département..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes nées dans le " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez un département"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/dept/results/index.php b/search/dept/results/index.php new file mode 100644 index 0000000..b84ff89 --- /dev/null +++ b/search/dept/results/index.php @@ -0,0 +1,38 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["place"]) && isset($person["birth"]["place"]["dept"])) { + if ($person["birth"]["place"]["dept"] === $q) { + $results[] = $id; + } + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/index.php b/search/index.php new file mode 100644 index 0000000..384c996 --- /dev/null +++ b/search/index.php @@ -0,0 +1 @@ +<?php header("Location: /"); die();
\ No newline at end of file diff --git a/search/lastname/data.json/index.php b/search/lastname/data.json/index.php new file mode 100644 index 0000000..861b791 --- /dev/null +++ b/search/lastname/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + $name = ucfirst(strtolower($person["famname"])); + + if (isset($counts[$name])) { + $counts[$name]++; + } else { + $counts[$name] = 1; + } + if (!in_array($name, $names)) { + $names[] = $name; + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/lastname/index.php b/search/lastname/index.php new file mode 100644 index 0000000..1b932f0 --- /dev/null +++ b/search/lastname/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par prénom"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par nom</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par nom + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item active" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper un nom..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes nommées " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez un nom"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/lastname/results/index.php b/search/lastname/results/index.php new file mode 100644 index 0000000..80bc75b --- /dev/null +++ b/search/lastname/results/index.php @@ -0,0 +1,36 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (ucfirst(strtolower($person["famname"])) === ucfirst(strtolower($q))) { + $results[] = $id; + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/marriage/data.json/index.php b/search/marriage/data.json/index.php new file mode 100644 index 0000000..8a999a4 --- /dev/null +++ b/search/marriage/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + if (isset($person["family"]) && isset($person["family"]["marriage"]["date"]) && isset($person["family"]["marriage"]["date"]["year"])) { + if (isset($counts[(string)$person["family"]["marriage"]["date"]["year"]])) { + $counts[(string)$person["family"]["marriage"]["date"]["year"]]++; + } else { + $counts[(string)$person["family"]["marriage"]["date"]["year"]] = 1; + } + if (!in_array((string)$person["family"]["marriage"]["date"]["year"], $names)) { + $names[] = (string)$person["family"]["marriage"]["date"]["year"]; + } + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/marriage/index.php b/search/marriage/index.php new file mode 100644 index 0000000..85129bc --- /dev/null +++ b/search/marriage/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par date de mariage"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par date de mariage</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par date de mariage + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item active" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper une année..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes mariées en " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez une année"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/marriage/results/index.php b/search/marriage/results/index.php new file mode 100644 index 0000000..172a124 --- /dev/null +++ b/search/marriage/results/index.php @@ -0,0 +1,38 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (isset($person["family"]) && isset($person["family"]["marriage"]["date"]) && isset($person["family"]["marriage"]["date"]["year"])) { + if ((string)$person["family"]["marriage"]["date"]["year"] === $q) { + $results[] = $id; + } + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/name/data.json/index.php b/search/name/data.json/index.php new file mode 100644 index 0000000..7eeed57 --- /dev/null +++ b/search/name/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + $name = ucfirst(strtolower($person["surname"])); + + if (isset($counts[$name])) { + $counts[$name]++; + } else { + $counts[$name] = 1; + } + if (!in_array($name, $names)) { + $names[] = $name; + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/name/index.php b/search/name/index.php new file mode 100644 index 0000000..c8a8f5a --- /dev/null +++ b/search/name/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par prénom"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par prénom</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par prénom + </button> + <div class="dropdown-menu"> + <a class="dropdown-item active" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper un prénom..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes prénommées " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez un prénom"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/name/results/index.php b/search/name/results/index.php new file mode 100644 index 0000000..3850287 --- /dev/null +++ b/search/name/results/index.php @@ -0,0 +1,36 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (ucfirst(strtolower($person["surname"])) === ucfirst(strtolower($q))) { + $results[] = $id; + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file diff --git a/search/state/data.json/index.php b/search/state/data.json/index.php new file mode 100644 index 0000000..6445118 --- /dev/null +++ b/search/state/data.json/index.php @@ -0,0 +1,39 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +header("Content-Type: application/json"); + +$arr = []; +$names = []; +$counts = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["place"]) && isset($person["birth"]["place"]["state"])) { + if (isset($counts[$person["birth"]["place"]["state"]])) { + $counts[$person["birth"]["place"]["state"]]++; + } else { + $counts[$person["birth"]["place"]["state"]] = 1; + } + if (!in_array($person["birth"]["place"]["state"], $names)) { + $names[] = $person["birth"]["place"]["state"]; + } + } +} + +foreach ($names as $name) { + $arr[] = [ + 'name' => $name, + 'occurrences' => $counts[$name] . " personne" . ($counts[$name] > 1 ? "s" : "") + ]; +} + +echo(json_encode($arr));
\ No newline at end of file diff --git a/search/state/index.php b/search/state/index.php new file mode 100644 index 0000000..da20419 --- /dev/null +++ b/search/state/index.php @@ -0,0 +1,73 @@ +<?php $_TITLE = "Recherche par région de naissance"; require_once $_SERVER['DOCUMENT_ROOT'] . "/private/header.php"; ?> +<div class="container"> + <h2>Rechercher par région de naissance</h2> + <p id="preview">Patientez...</p> + <script src="/dllib/jquery.flexdatalist.min.js"></script> + <div class="input-group mt-3 mb-3"> + <div class="input-group-prepend"> + <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> + Par région + </button> + <div class="dropdown-menu"> + <a class="dropdown-item" href="/search/name">Par prénom</a> + <a class="dropdown-item" href="/search/lastname">Par nom</a> + <a class="dropdown-item" href="/search/birth">Par date de naissance</a> + <a class="dropdown-item" href="/search/death">Par date de décès</a> + <a class="dropdown-item" href="/search/marriage">Par date de mariage</a> + <a class="dropdown-item" href="/search/city">Par ville</a> + <a class="dropdown-item" href="/search/dept">Par département</a> + <a class="dropdown-item active" href="/search/state">Par région</a> + </div> + </div> + <input onchange="reload();" class="form-control" type="text" + placeholder="Commencer à taper une région..." + id="search"> + </div> + <script> + setInterval(() => { + if (document.getElementById("search").value.trim() !== "") { + document.getElementById("preview").innerText = "Affiche toutes les personnes nées dans la région " + document.getElementById("search").value; + } else { + document.getElementById("preview").innerText = "Sélectionnez une région"; + } + }, 100) + + function reload() { + window.fetch("./results/?q=" + encodeURI(document.getElementById("search").value.trim())).then((a) => { + a.text().then((b) => { + document.getElementById("results").innerHTML = b; + }) + }) + } + + window.addEventListener("load", () => { + i = Math.random().toString().substr(2); + document.getElementById('search').classList.add(i); + $('#search.' + i).flexdatalist({ + cache: false, + minLength: 0, + selectionRequired: true, + visibleProperties: ["name","occurrences"], + searchIn: 'name', + data: "data.json" + }); + }) + </script> + <style> + .flexdatalist-results li { + cursor: pointer; + } + .flexdatalist-results li .item-occurrences { + color: rgba(0, 0, 0, .25); + } + .flexdatalist-results li:hover { + opacity: .75; + } + .flexdatalist-results li:active { + opacity: .5; + } + </style> + <div id="results"></div> +</div> +<br> +<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/private/footer.php"; ?>
\ No newline at end of file diff --git a/search/state/results/index.php b/search/state/results/index.php new file mode 100644 index 0000000..6251ebf --- /dev/null +++ b/search/state/results/index.php @@ -0,0 +1,38 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php"; + +/** @var string $_FULLNAME + * @var string $_USER + * @var array $_PROFILE + * @var array $_CONFIG + */ + +$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true); + +if (isset($_GET['q']) && trim($_GET['q']) !== "") { + $q = $_GET['q']; +} else { + die(); +} + +$results = []; + +foreach ($data as $id => $person) { + if (isset($person["birth"]["place"]) && isset($person["birth"]["place"]["state"])) { + if ($person["birth"]["place"]["state"] === $q) { + $results[] = $id; + } + } +} +if (count($results) === 0): ?> +<ul class="list-group"> + <li class="list-group-item">Aucun résultat correspondant</li> +</ul> +<?php else: ?> +<div class="list-group"> + <?php foreach ($results as $result): $p = $data[$result]; ?> + <a href="/person/?_=<?= $result ?>" class="list-group-item list-group-item-action"><?= $p["famname"] ?> <?= $p["surname"] ?> <span class="text-muted">#<?= $result ?></span></a> + <?php endforeach; ?> +</div> +<?php endif; ?>
\ No newline at end of file |