Файл: upload/pages/feedback/edit-feedback.php
Строк: 104
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');
if (!isset($user['id'])) {
showAlert('Ошибка', 'fail', 'Сперва необходимо авторизоваться');
RedirectToPage('/');
exit();
}
$id = abs((int)($_GET['id'] ?? 0));
$rating_feedback = FetchAssoc(dbquery("SELECT * FROM `rating` WHERE `id` = ? AND `us` = ?", [$id, $user['id']]));
if (empty($rating_feedback['id'])) {
header("HTTP/1.0 404 Not Found");
include ($_SERVER['DOCUMENT_ROOT'] . '/pages/err_pages/404.php');
exit();
}
$work_prc = FetchAssoc(dbquery("SELECT * FROM `work_processed` WHERE `id` = ?", [$rating_feedback['deal']]));
$work = FetchAssoc(dbquery("SELECT * FROM `works` WHERE `id` = ?", [$work_prc['k_work']]));
$worker = FetchAssoc(dbquery("SELECT * FROM `users` WHERE `id` = ?", [$work_prc['creator']]));
if ($work_prc['worker'] != $user['id']) {
RedirectToPage('/');
exit();
}
$breadcrumbs = generateBreadcrumbs([
['/', 'Главная'],
['#', 'Редактирование отзыва']
]);
$page_html = $view->render('pages/feedback/edit.html', [
'breadcrumbs_html' => $breadcrumbs['html'],
'breadcrumbs_json' => $breadcrumbs['json_ld'],
'csrf' => $_SESSION['csrf_token'],
'home' => homeLink(),
'order_id' => $work_prc['id'],
'rating' => intval($rating_feedback['k_rating']),
'text' => $rating_feedback['k_comment']
]);
if (isset($_POST['set'])) {
check_csrf();
$new_rating = intval($_POST['rating']);
$new_comment = chars($_POST['feedback']);
// === ИСТОРИЯ: сохраняем НОВУЮ версию ===
dbquery("INSERT INTO rating_history SET rating_id = ?, deal = ?, us = ?, worker = ?, rating = ?, k_work = ?, k_comment = ?, created_at = ?, deleted_at = NULL",
[$rating_feedback['id'], $rating_feedback['deal'], $rating_feedback['us'], $rating_feedback['worker'], $new_rating, $rating_feedback['k_work'], $new_comment, time()]);
// === ОБНОВЛЯЕМ ОТЗЫВ ===
dbquery("UPDATE `rating` SET `rating` = ?, `k_comment` = ? WHERE `id` = ?", [$new_rating, $new_comment, $id]);
$text = "[QUOTEMESSAGEROOT][BMESSAGEROOT]Изменил отзыв о заказе #{$work_prc['id']} на {$new_rating} звезд![/BMESSAGEROOT][/QUOTEMESSAGEROOT]";
insertMessage($user['id'], $work_prc['creator'], $text);
RedirectToPage('/deal' . $work_prc['id']);
exit();
}
require_once ($_SERVER['DOCUMENT_ROOT'] . '/layout.php');
?>
<script>
document.addEventListener("DOMContentLoaded", function() {
const labels = document.querySelectorAll("label.star");
const starsBox = document.querySelector(".set-stars");
let currentRating = <?= intval($rating_feedback['rating']) ?>;
// Устанавливаем radio при загрузке
if (currentRating > 0) {
document.querySelector(`input[name="rating"][value="${currentRating}"]`).checked = true;
}
// Подсветка
function applyHighlight(rating) {
labels.forEach((lb, idx) => {
lb.classList.toggle("active", idx < rating);
});
}
// Подсветка при загрузке
applyHighlight(currentRating);
// Клик
labels.forEach((label, idx) => {
label.addEventListener("click", function(e) {
e.preventDefault();
currentRating = idx + 1;
document.querySelector(`input[name="rating"][value="${currentRating}"]`).checked = true;
});
});
// Наведение
labels.forEach((label, idx) => {
label.addEventListener("mouseover", function() {
applyHighlight(idx + 1);
});
});
// Уход мыши из блока
starsBox.addEventListener("mouseleave", function() {
applyHighlight(currentRating);
});
});
</script>