xgit simple git

nexus

nexus

clone git clone https://kb.hax.al/nexus

api/like.php

1 <?php
2 require_once __DIR__ . '/../includes/bootstrap.php';
3 if (!$USER) json_out(['error'=>'Not logged in'],401);
4 if (!csrf_ok()) json_out(['error'=>'CSRF'],403);
5 $pid = (int)post('post_id');
6 if (!$pid) json_out(['error'=>'Missing post_id'],400);
7 $post = DB::row('SELECT * FROM posts WHERE id=?',[$pid]);
8 if (!$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']]);
11 if ($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     // Remove karma from post author
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     // Award karma to post author
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]);
25 json_out(['ok'=>true,'liked'=>$liked,'count'=>$count]);