<?php function validateZan() { if (!validateUInt($_POST['id'])) { return false; } if (!validateInt($_POST['delta'])) { return false; } if ($_POST['delta'] != 1 && $_POST['delta'] != -1) { return false; } if ($_POST['type'] != 'B' && $_POST['type'] != 'BC' && $_POST['type'] != 'P' && $_POST['type'] != 'C') { return false; } 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']; 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"); 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"); } elseif ($cur != $delta) { DB::query("update click_zans set val = '$cur' where username = '{$myUser['username']}' and type = '$type' and target_id = $id"); } else { DB::query("insert into click_zans (username, type, target_id, val) values ('{$myUser['username']}', '$type', $id, $cur)"); } $cnt = $row['zan'] + $delta; DB::query("update $table_name set zan = $cnt where id = $id"); } else { $row = DB::selectFirst("select zan from $table_name where id = $id"); if ($row == null) { die('<div class="text-danger">failed</div>'); } $cnt = $row['zan']; } ?> <?= getClickZanBlock($type, $id, $cnt, $cur) ?>