1<?php
2require_once __DIR__ . '/../includes/bootstrap.php';
3if (!$USER) json_out(['error'=>'Not logged in'],401);
4if (!csrf_ok()) json_out(['error'=>'CSRF'],403);
5$pid = (int)post('post_id');
6if (!$pid) json_out(['error'=>'Missing post_id'],400);
7$post = DB::row('SELECT * FROM posts WHERE id=?',[$pid]);
8if (!$post) json_out(['error'=>'Not found'],404);
9
10$exists = DB::row('SELECT 1 FROM likes WHERE post_id=? AND user_id=?',[$pid,$USER['id']]);
11if ($exists) {
12 DB::run('DELETE FROM likes WHERE post_id=? AND user_id=?',[$pid,$USER['id']]);
13 DB::run('UPDATE posts SET likes=MAX(0,likes-1) WHERE id=?',[$pid]);
14
15 add_karma((int)$post['user_id'], -1);
16 $liked = false;
17} else {
18 DB::insertIgnore('likes', ['post_id','user_id'], [$pid,$USER['id']]);
19 DB::run('UPDATE posts SET likes=likes+1 WHERE id=?',[$pid]);
20
21 add_karma((int)$post['user_id'], 1);
22 $liked = true;
23}
24$count = (int)DB::val('SELECT COUNT(*) FROM likes WHERE post_id=?',[$pid]);
25json_out(['ok'=>true,'liked'=>$liked,'count'=>$count]);