Compare commits

..

5 commits
v1.6 ... main

Author SHA1 Message Date
Aliberk Sandıkçı
a996fc3af3 Update index.php
ufak bir değişiklik, verileri güncelleyen samimi arkadaşım Ömer Arda (Kelo)'ya verileri yanlış girdiğinde Web konsolda gözükecek not değiştirildi :)
2024-05-16 15:09:40 +03:00
asandikci
13bc5df3e7
notes 2024-01-15 17:24:01 +03:00
asandikci
911a66dc7b
prevent same person two day 2024-01-13 01:00:39 +03:00
asandikci
3099ab1244
update styles and cautions 2024-01-10 19:06:33 +03:00
asandikci
59f2c716dd
sort persons 2024-01-09 22:42:39 +03:00
3 changed files with 101 additions and 23 deletions

View file

@ -41,13 +41,16 @@
<div id="tsparticles"></div> <div id="tsparticles"></div>
<hr style="width: 100%; box-sizing: border-box;"> <hr style="width: 100%; box-sizing: border-box;">
<div id="sorumli" style="margin-top:auto;text-align:center;">Veri Sorumlusu: <b>Ömer Arda Muratoğlu</b><br>Her türlü kaldırılmasını, eklenmesini ve/veya değiştirilmesi istediğiniz veriler için kendisi ile iletişime geçiniz !</div> <div style="margin-top:5px;text-align:center;"> <b>Dünün Şanslı Kişisi:</b> <span id="previous-person"><i>yükleniyor</i></span></div>
<hr style="width: 100%; box-sizing: border-box;">
<div id="sorumli" style="margin-top:5px;text-align:center;">Veri Sorumlusu: <b>Ömer Arda Muratoğlu</b><br>Her türlü kaldırılmasını, eklenmesini ve/veya değiştirilmesi istediğiniz veriler için kendisi ile iletişime geçiniz !</div>
<hr style="width: 100%; box-sizing: border-box;">
<div style="margin-top:5px;text-align:center;">Fikir için <b>Cem Deniz Akdeniz</b>'e Teşekkürler !</div> <div style="margin-top:5px;text-align:center;">Fikir için <b>Cem Deniz Akdeniz</b>'e Teşekkürler !</div>
<hr style="width: 100%; box-sizing: border-box;"> <hr style="width: 100%; box-sizing: border-box;">
<div style="text-align:center;">Son veri güncelleme: <span id="latest-data"></span> <div style="text-align:center;">Son veri güncelleme: <span id="latest-data"></span>
</div> </div>
</div> </div>
<div style="text-align: center;align-self:center;"><a href="https://asandikci.com/bagis/">Bana Bi' Kahve Ismarla </a></div> <div style="text-align: center;align-self:center;background-color: darkblue;border-radius:10px; padding:1px;"><a style="color: orange;font-weight:800;" href="https://asandikci.com/bagis/">👉 Bana Bi' Kahve Ismarla </a></div>
</article> </article>
<footer> <footer>
@ -107,20 +110,20 @@
function updateData() { function updateData() {
xmlHttp = new XMLHttpRequest(); xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() { xmlHttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) { if (this.readyState == 4 && this.status == 200) {
var response = xmlHttp.responseText var response = xmlHttp.responseText
if (response.includes("parseError") ){ if (response.includes("parseError")) {
console.error("VERİLER YANLIŞ ŞEKİLDE GİRİLMİŞ, GÖTÜNÜ SİKEYİM KELO"); console.error("VERİLER YANLIŞ ŞEKİLDE GİRİLMİŞ, LÜTFEN ifl/YurdleBackend PROJESİNDEKİ VERİ DOSYASINI KONTROL EDİNİZ");
console.warn(response); console.warn(response);
} else if (response.includes("fileError")){ } else if (response.includes("fileError")) {
console.error("VERİ DOSYASI SUNUCUDA BULUNAMADI, SUNUCUYU KONTROL EDİNİZ"); console.error("VERİ DOSYASI SUNUCUDA BULUNAMADI, SUNUCUYU KONTROL EDİNİZ");
console.warn(response); console.warn(response);
} else if (response.includes("success")) { } else if (response.includes("success")) {
console.info("VERİLER BAŞARIYLA GÜNCELLENDİ") console.info("VERİLER BAŞARIYLA GÜNCELLENDİ")
} else { } else {
console.warn("VERİ GÜNCELLENİRKEN BİR HATA OLUŞTU, SAYFAYI YENİLEMEYİ DENEYİN"); console.warn("VERİ GÜNCELLENİRKEN BİR HATA OLUŞTU, SAYFAYI YENİLEMEYİ DENEYİN");
}
} }
}
}; };
params = "updateData=yes"; params = "updateData=yes";
xmlHttp.open("POST", "src/server.php", true); xmlHttp.open("POST", "src/server.php", true);
@ -129,12 +132,28 @@
flag = true; flag = true;
return; return;
} }
function getPreviousData() {
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var response = xmlHttp.responseText;
document.getElementById("previous-person").innerHTML = "<b style='color:red';>" + response + "</b>";
console.debug("Dünün Şanslı Kişisi: " + response);
}
};
params = "getPreviousPerson=yes";
xmlHttp.open("POST", "src/server.php", true);
xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlHttp.send(params);
flag = true;
}
</script> </script>
<script> <script>
function isSameDay(a, b) { function isSameDay(a, b) {
return a.toDateString() == b.toDateString(); return a.toDateString() == b.toDateString();
} }
getPreviousData();
if (localStorage.getItem("win") == null) { if (localStorage.getItem("win") == null) {
localStorage.setItem("win", "none"); localStorage.setItem("win", "none");
} }
@ -225,6 +244,8 @@
tr.appendChild(th); tr.appendChild(th);
} }
// REVIEW Daha optimize ve karışık olmayacak şekilde yazılabilir
for (let i = gj["Guesses"].length - 1; i >= 0; i--) { for (let i = gj["Guesses"].length - 1; i >= 0; i--) {
// revit = gj["Guesses"].length - i - 1; // revit = gj["Guesses"].length - i - 1;
const tr = document.createElement("tr"); const tr = document.createElement("tr");
@ -238,6 +259,7 @@
const td = document.createElement("td"); const td = document.createElement("td");
const td_text = document.createTextNode(indata[key][1]); const td_text = document.createTextNode(indata[key][1]);
// FIXME isim_soyisim renkli olmasın diye kontrol yapılıyor ama bu durumda isim soyisim haricinde diğer tüm özellikleri aynı olan başka biri daha olursa onu da doğru sayar !!!
if (key != "isim_soyisim") { if (key != "isim_soyisim") {
if (i == gj["Guesses"].length - 1 && flagSame == 0) { if (i == gj["Guesses"].length - 1 && flagSame == 0) {
td.classList.add("latest-guess"); td.classList.add("latest-guess");
@ -436,9 +458,25 @@
} }
const persons2 = <?php echo json_encode(getAllPersonNames(), JSON_UNESCAPED_UNICODE) ?>; const persons2 = <?php echo json_encode(getAllPersonNames(), JSON_UNESCAPED_UNICODE) ?>;
persons2.sort();
autocomplete(document.getElementById("mainInput"), persons2); autocomplete(document.getElementById("mainInput"), persons2);
</script> </script>
<script>
var t = setInterval(tick, 1000);
function tick() {
var curTime = new Date();
if (curTime.getHours() == 0 && curTime.getMinutes() == 0 && curTime.getSeconds() > 1 && curTime.getSeconds() < 3) {
console.debug("Kullanıcının Ekranııkken Farklı Bir Güne Geçiş Yapıldı, Statlar Sıfırlanıyor ve Kullanıcı Bilgilendiriliyor");
localStorage.removeItem("guesses");
localStorage.removeItem("latest_guess");
localStorage.removeItem("win");
document.getElementById("tebriks").style.display = "none";
document.getElementById("tahminler").innerHTML = "<h2 style='text-align:center;'>Gece Yarısını Geçtiniz, Lütfen Sayfayı Yenile<span style='color:red;'>ME</span>den direkt yeni tahminizde bulununuz👆</h2><p style='text-align:center;'>Kullanıcının cihazının saati baz alınmıştır, sunucunun yenilenmesi için birkaç saniye daha beklemeniz gerekebilir</p>"
}
}
</script>
<script src="https://cdn.jsdelivr.net/npm/@tsparticles/confetti@3.0.3/tsparticles.confetti.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@tsparticles/confetti@3.0.3/tsparticles.confetti.bundle.min.js"></script>
</html> </html>

1
src/previous.php Normal file
View file

@ -0,0 +1 @@
<?php $PREVIOUS_PERSON = "aliberk_sandikci24";

View file

@ -3,6 +3,7 @@
use Yosymfony\Toml\Toml; use Yosymfony\Toml\Toml;
include __DIR__ . '/todays.php'; include __DIR__ . '/todays.php';
include __DIR__ . '/previous.php';
include __DIR__ . '/../config.php'; include __DIR__ . '/../config.php';
require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/autoload.php';
@ -16,7 +17,7 @@ function testData($toml)
try { try {
$array = $parser::Parse($toml); $array = $parser::Parse($toml);
} catch (Exception $e) { } catch (Exception $e) {
$ans = 'Caught exception: ' . $e->getMessage() . "\n"; $ans = 'Caught exception: ' . $e->getMessage() . "\n";
return $ans; return $ans;
} }
return 0; return 0;
@ -44,23 +45,38 @@ function updateRemoteData()
echo "success"; echo "success";
} }
# get random person
function randomizerr($array)
{
srand();
$random_number = random_int(0, count($array) - 1);
$choosen = $array[$random_number];
return $choosen;
}
# Choose the todays person (running each day with cronjob) # Choose the todays person (running each day with cronjob)
function chooseTodayPerson() function chooseTodayPerson()
{ {
global $APP_NAME; global $APP_NAME;
global $TODAYS_PERSON;
$data = parseTOML()["data"]; $data = parseTOML()["data"];
backupPreviousPerson($TODAYS_PERSON);
$personArr = array(); $personArr = array();
foreach ($data as $key => $value) { foreach ($data as $key => $value) {
array_push($personArr, $key); array_push($personArr, $key);
} }
print_r($personArr);
srand();
$random_number = random_int(0, count($personArr) - 1);
$choosen = $personArr[$random_number];
// TODO control each person if already choosed recently? (make all persons avaliable AFTER all of them choosed )
$choosen = randomizerr($personArr);
echo $choosen . " - " . $TODAYS_PERSON;
while ($choosen == $TODAYS_PERSON) {
echo "!!!";
$choosen = randomizerr($personArr);
echo $choosen . " - " . $TODAYS_PERSON;
}
$string = "<?php \$TODAYS_PERSON = \"$choosen\";"; $string = "<?php \$TODAYS_PERSON = \"$choosen\";";
$file = __DIR__ . "/todays.php"; $file = __DIR__ . "/todays.php";
@ -69,6 +85,25 @@ function chooseTodayPerson()
chown("$file", $APP_NAME); chown("$file", $APP_NAME);
} }
# Backup previous person to previous.php file
function backupPreviousPerson($previous)
{
global $APP_NAME;
$string = "<?php \$PREVIOUS_PERSON = \"$previous\";";
$file = __DIR__ . "/previous.php";
file_put_contents($file, $string, LOCK_EX);
chmod("$file", 0700);
chown("$file", $APP_NAME);
}
# get Previous Person Name (isi_soyisim)
function getPreviousPersonName()
{
global $PREVIOUS_PERSON;
return parseTOML()["data"][$PREVIOUS_PERSON]["isim_soyisim"];
}
# Send all person names to frontend # Send all person names to frontend
function getAllPersonNames() function getAllPersonNames()
{ {
@ -211,3 +246,7 @@ function parseTOML()
if ($_POST['updateData'] != null && $_POST['updateData'] == "yes") { if ($_POST['updateData'] != null && $_POST['updateData'] == "yes") {
updateRemoteData(); updateRemoteData();
} }
if ($_POST['getPreviousPerson'] != null && $_POST['getPreviousPerson'] == "yes") {
echo getPreviousPersonName();
}