S2OJ/web/app/controllers/click_zan.php

70 lines
1.9 KiB
PHP
Raw Normal View History

2016-07-18 16:39:37 +00:00
<?php
function validateZan() {
2020-06-25 12:41:16 +00:00
if (!validateUInt($_POST['id'])) {
2016-07-18 16:39:37 +00:00
return false;
2020-06-25 12:41:16 +00:00
}
if (!validateInt($_POST['delta'])) {
2016-07-18 16:39:37 +00:00
return false;
2020-06-25 12:41:16 +00:00
}
if ($_POST['delta'] != 1 && $_POST['delta'] != -1) {
2016-07-18 16:39:37 +00:00
return false;
2020-06-25 12:41:16 +00:00
}
if ($_POST['type'] != 'B' && $_POST['type'] != 'BC' && $_POST['type'] != 'P' && $_POST['type'] != 'C') {
2016-07-18 16:39:37 +00:00
return false;
2020-06-25 12:41:16 +00:00
}
2016-07-18 16:39:37 +00:00
return true;
}
if (!validateZan()) {
die('<div class="text-danger">failed</div>');
}
if ($myUser == null) {
die('<div class="text-danger">please <a href="'.HTML::url('/login').'">log in</a></div>');
}
$id = $_POST['id'];
$delta = $_POST['delta'];
$type = $_POST['type'];
$show_text = isset($_POST['show-text']) && $_POST['show-text'] != 'false';
2016-07-18 16:39:37 +00:00
switch ($type) {
case 'B':
$table_name = 'blogs';
break;
case 'BC':
$table_name = 'blogs_comments';
break;
case 'P':
$table_name = 'problems';
break;
case 'C':
$table_name = 'contests';
break;
}
$cur = queryZanVal($id, $type, $myUser);
if ($cur != $delta) {
$row = DB::selectFirst("select zan from $table_name where id = $id");
2016-07-18 16:39:37 +00:00
if ($row == null) {
die('<div class="text-danger">failed</div>');
}
$cur += $delta;
if ($cur == 0) {
DB::query("delete from click_zans where username = '{$myUser['username']}' and type = '$type' and target_id = $id");
2020-06-25 12:41:16 +00:00
} elseif ($cur != $delta) {
DB::query("update click_zans set val = '$cur' where username = '{$myUser['username']}' and type = '$type' and target_id = $id");
2016-07-18 16:39:37 +00:00
} else {
DB::query("insert into click_zans (username, type, target_id, val) values ('{$myUser['username']}', '$type', $id, $cur)");
2016-07-18 16:39:37 +00:00
}
$cnt = $row['zan'] + $delta;
DB::query("update $table_name set zan = $cnt where id = $id");
2016-07-18 16:39:37 +00:00
} else {
$row = DB::selectFirst("select zan from $table_name where id = $id");
2016-07-18 16:39:37 +00:00
if ($row == null) {
die('<div class="text-danger">failed</div>');
}
$cnt = $row['zan'];
}
2022-09-18 04:58:35 +00:00
?>
<?= getClickZanBlock($type, $id, $cnt, $cur, $show_text) ?>