This commit is contained in:
2026-01-07 22:27:52 +03:00
parent 481e532dce
commit ff1174671a
55 changed files with 11201 additions and 858 deletions
+232 -6
View File
@@ -10,6 +10,7 @@ function db()
function findClosestDateSort($array, $targetDate)
{
if (!preg_match('/\d{1,2}-\d{1,2}-(\d{2}|\d{4})$/', $targetDate)) return;
$targetTimestamp = DateTime::createFromFormat('d-m-y', $targetDate)->getTimestamp();
usort($array, function ($a, $b) use ($targetTimestamp) {
$aTimestamp = DateTime::createFromFormat('d-m-y', $a['fromDate'])->getTimestamp();
@@ -60,16 +61,31 @@ function joinArraysByKey(array $primaryArray, array $secondaryArray, bool $doNot
function FastDBReq(PDO $db, string $sql, array $params = []): array
{
// ivan
// pickme love
// <3 <3 <3 <3
$stmt = $db->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
try {
$stmt = $db->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
throw $e;
}
}
CreateApi(function ($api) {
if (file_exists('./api.lock')) {
http_response_code(500);
$f = fopen('./api.lock', 'r') or die("server eгor");
$fs = filesize('./api.lock');
if ($fs == 0) {
$cnt = "";
} else {
$cnt = fread($f, $fs);
}
fclose($f);
die($cnt);
}
$api->on('/', 'GET', function () {
return 'dengi';
});
@@ -125,6 +141,23 @@ CreateApi(function ($api) {
return;
}
});
$api->on('/get_admin_level', 'POST', function ($req) {
if (!isset($req->data['adminId'])) {
$req->res->code(400);
return "";
}
$adminId = $req->data['adminId'];
$db = db();
$results = FastDBReq($db, "SELECT adminPrems FROM admins where adminid = ?", [$adminId]);
$db = null;
if (count($results) != 0) {
return $results[0];
} else {
$req->res->code(400);
return;
}
});
$api->on('/admin_login', 'POST', function ($req) {
if (!isset($req->data['adminId'])) {
$req->res->code(400);
@@ -152,6 +185,7 @@ CreateApi(function ($api) {
}
$classId = substr(strtoupper($req->data['classId']), 0, 10);
$day = $req->data['day'];
if (!preg_match('/\d{1,2}-\d{1,2}-(\d{2}|\d{4})$/', $day)) return "wrong date format";
$db = db();
$results = FastDBReq($db, "SELECT * FROM changes WHERE classId = ? AND forDay = ?", [$classId, $day]);
@@ -362,9 +396,201 @@ CreateApi(function ($api) {
FastDBReq($db, 'DELETE FROM rings WHERE classId=? AND fromDate=?', [$classId, $day]);
break;
default:
$db = null;
return "you saved your live because you didn't know what tabs are here";
}
$db = null;
return true;
});
$api->on('/update_admin', "POST", function ($req) {
if (!$req->hasData(['adminId', 'action'])) {
$req->res->code(400);
return "bad data";
}
$adminId = $req->data['adminId'];
$withSelf = true;
$action = $req->data['action'];
if (isset($req->data['person'])) {
$withSelf = false;
}
$adminId = $req->data['adminId'];
$db = db();
$results = FastDBReq($db, "SELECT * FROM admins WHERE adminId=?", [$adminId]);
if (count($results) == 0) {
$db = null;
$req->res->code(400);
return "админ не найден";
}
if (!$withSelf && !in_array($results[0]['adminPrems'], [-1, 2])) {
$db = null;
$req->res->code(400);
return 'нету прав';
}
if ($withSelf) {
switch ($action) {
case "change_name":
if (!isset($req->data['value'])) {
$req->res->code(400);
return "bad data";
}
$value = trim($req->data['value']);
if (strlen($value) == 0) {
$req->res->code(400);
return "bad data";
}
try {
FastDBReq($db, 'UPDATE admins SET adminName = ? WHERE adminId = ?', [$value, $adminId]);
} catch (PDOException) {
$db = null;
return "egor";
}
break;
}
} else {
$person = $req->data['person'];
switch ($action) {
case "change_name":
if (!isset($req->data['value'])) {
$req->res->code(400);
return "bad data";
}
$value = trim($req->data['value']);
if (strlen($value) == 0) {
$req->res->code(400);
return "bad data";
}
try {
FastDBReq($db, 'UPDATE admins SET adminName = ? WHERE adminId = ?', [$value, $person]);
} catch (PDOException) {
$db = null;
return "egor";
}
break;
default:
$db = null;
return "?";
}
}
$db = null;
return true;
});
$api->on('/classprofile_view', "POST", function ($req) {
if (!$req->hasData(['adminId'])) {
$req->res->code(400);
return "bad data";
}
$adminId = $req->data['adminId'];
$db = db();
$results = FastDBReq($db, "SELECT * FROM admins WHERE adminId=?", [$adminId]);
if (count($results) == 0) {
$db = null;
$req->res->code(400);
return "админ не найден";
}
if (!in_array($results[0]['adminPrems'], [-1, 2])) {
$db = null;
$req->res->code(400);
return "недостаточно прав";
}
$classId = $results[0]['adminClass'];
$results = FastDBReq($db, "SELECT * FROM classes WHERE classId=?", [$classId]);
if (count($results) == 0) {
$db = null;
$req->res->code(400);
return "класса не существует";
}
$classData = $results[0];
$adminsData = FastDBReq($db, "SELECT * FROM admins WHERE adminClass=?", [$classId]);
$db = null;
return ["status" => 1, "class" => $classData, "admins" => $adminsData];
});
$api->on('/classprofile_edit', "POST", function ($req) {
if (!$req->hasData(['adminId', 'action'])) {
$req->res->code(400);
return "bad data";
}
$adminId = $req->data['adminId'];
$db = db();
$results = FastDBReq($db, "SELECT * FROM admins WHERE adminId=?", [$adminId]);
if (count($results) == 0) {
$db = null;
$req->res->code(400);
return "админ не найден";
}
if (!in_array($results[0]['adminPrems'], [-1, 2])) {
$db = null;
$req->res->code(400);
return "недостаточно прав";
}
$classId = $results[0]['adminClass'];
$action = $req->data['action'];
switch ($action) {
case 'update_name':
try {
if (!isset($req->data['value'])) {
$req->res->code(400);
return "bad data";
}
$value = trim($req->data['value']);
if (strlen($value) == 0) {
$req->res->code(400);
return "bad data";
}
FastDBReq($db, "UPDATE classes SET userclassname = ? WHERE classid=?", [$value, $classId]);
return true;
} catch (PDOException $e) {
error_log($e);
return "егор";
}
break;
case 'create_admin':
if (!isset($req->data['value'])) {
$req->res->code(400);
return "bad data";
}
$value = trim($req->data['value']);
if (strlen($value) == 0 || !str_contains($value, ';')) {
$req->res->code(400);
return "bad data";
}
$value = explode(';', $value);
if (sizeof($value) != 2) {
$req->res->code(400);
return 'bad data';
}
$n_adminId = $value[0];
$n_adminName = base64_decode($value[1]);
try {
FastDBReq($db, "INSERT INTO admins (adminId,adminName,adminClass,adminPrems) VALUES (?,?,?,?)", [$n_adminId, $n_adminName, $classId, 1]);
return true;
} catch (PDOException) {
$req->res->code(500);
return "ошибка";
}
case "delete_admin":
if (!isset($req->data['value'])) {
$req->res->code(400);
return "bad data";
}
$person = trim($req->data['value']);
if (strlen($person) == 0) {
$req->res->code(400);
return "bad data";
}
FastDBReq($db, "DELETE FROM admins WHERE adminId=?", [$person]);
return true;
default:
$db = null;
return "?";
}
});
});