fixed comment count bug in moderation portal
This commit is contained in:
@@ -56,6 +56,9 @@ switch ($action) {
|
||||
case 'delete_comment':
|
||||
handle_delete_comment($input);
|
||||
break;
|
||||
case 'update_comment':
|
||||
handle_update_comment($input);
|
||||
break;
|
||||
default:
|
||||
error_response('Unknown Action. Supported Actions are read, create, update, delete, vote.');
|
||||
}
|
||||
@@ -576,9 +579,9 @@ function handle_read_comments($input) {
|
||||
|
||||
try {
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT comment_id, contribution_id, author_name, browser_id, content, created_at
|
||||
SELECT comment_id, contribution_id, author_name, browser_id, content, status, created_at
|
||||
FROM comments
|
||||
WHERE contribution_id = :cid
|
||||
WHERE contribution_id = :cid AND status = 'approved'
|
||||
ORDER BY created_at ASC
|
||||
");
|
||||
$stmt->execute([':cid' => $input['contribution_id']]);
|
||||
@@ -661,4 +664,49 @@ function handle_delete_comment($input) {
|
||||
} catch (PDOException $e) {
|
||||
error_response('Database Error: ' . $e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// UPDATE COMMENT: Changes Comment Status or Content
|
||||
// Required: comment_id
|
||||
// Optional: status, content
|
||||
// ---------------------------------------------------------------------
|
||||
function handle_update_comment($input) {
|
||||
$pdo = get_db();
|
||||
|
||||
$missing = validate_required($input, ['comment_id']);
|
||||
if (!empty($missing)) {
|
||||
error_response('Missing Fields: ' . implode(', ', $missing));
|
||||
}
|
||||
|
||||
$set = [];
|
||||
$params = [':id' => $input['comment_id']];
|
||||
|
||||
// Updates Status if provided
|
||||
if (isset($input['status']) && $input['status'] !== '') {
|
||||
$valid = ['pending', 'approved', 'rejected'];
|
||||
if (!in_array($input['status'], $valid)) {
|
||||
error_response('Invalid Status.');
|
||||
}
|
||||
$set[] = "status = :status";
|
||||
$params[':status'] = $input['status'];
|
||||
}
|
||||
|
||||
// Updates Content if provided
|
||||
if (isset($input['content']) && $input['content'] !== '') {
|
||||
$set[] = "content = :content";
|
||||
$params[':content'] = $input['content'];
|
||||
}
|
||||
|
||||
if (empty($set)) {
|
||||
error_response('No Fields to update.');
|
||||
}
|
||||
|
||||
try {
|
||||
$stmt = $pdo->prepare("UPDATE comments SET " . implode(', ', $set) . " WHERE comment_id = :id");
|
||||
$stmt->execute($params);
|
||||
json_response(['message' => 'Comment updated successfully.']);
|
||||
} catch (PDOException $e) {
|
||||
error_response('Database Error: ' . $e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user