--- fenglin/bbs/restore.php 2004/09/17 14:57:03 1.1 +++ fenglin/bbs/restore.php 2025/04/05 15:17:35 1.7 @@ -1,58 +1,186 @@ -checkpriv($sid,S_POST) && - ($_SESSION["BBS_priv"]->checkpriv($sid,S_MAN_S)))) -{ - error_msg("Ȩָ£",true); - exit(); -} - -mysql_query("update bbs set visible=1,m_del=0,cached=0 where AID=$id") - or die("Delete article error!"); - -//Add log -article_op_log($id,$_SESSION["BBS_uid"],'S',Client_Address(),$db_conn) - or die("Add log error!"); - -//Set last reply date -if ($tid!=0) -{ - mysql_query("update bbs set cached=0,reply_count=reply_count+1 where aid=$tid") - or die("Update article error!"); -} - -mysql_close($db_conn); - -if ($tid==0) -{ - header ("Location: detail.php?id=$id"); -} -else -{ - header ("Location: detail.php?id=$tid#$id"); -} + + $data = json_decode(file_get_contents("php://input"), true); + + $id = (isset($data["id"]) ? intval($data["id"]) : 0); + + $result_set = array( + "return" => array( + "code" => 0, + "message" => "", + "errorFields" => array(), + ) + ); + + header("Content-Type:application/json; charset=utf-8"); + + if (!isset($_SESSION["BBS_uid"]) || $_SESSION["BBS_uid"] == 0) + { + $result_set["return"]["code"] = -1; + $result_set["return"]["message"] = "没有登录"; + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + // Begin transaction + $rs = mysqli_query($db_conn, "SET autocommit=0"); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + $rs = mysqli_query($db_conn, "BEGIN"); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + + $sql = "SELECT TID, SID, visible, m_del FROM bbs WHERE AID = $id"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query article error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + if($row = mysqli_fetch_array($rs)) + { + $tid = $row["TID"]; + $sid = $row["SID"]; + $visible = $row["visible"]; + $m_del = $row["m_del"]; + } + else + { + $result_set["return"]["code"] = -1; + $result_set["return"]["message"] = "文章不存在"; + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + mysqli_free_result($rs); + + // Check if already restored + if ($visible) + { + $result_set["return"]["code"] = 1; + $result_set["return"]["message"] = "已设置"; + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + if (!$m_del) + { + $result_set["return"]["code"] = -1; + $result_set["return"]["message"] = "主动删帖不可恢复"; + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + if (!$_SESSION["BBS_priv"]->checkpriv($sid, S_POST | S_MAN_S)) + { + $result_set["return"]["code"] = -1; + $result_set["return"]["message"] = "没有权限"; + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + if ($tid != 0) + { + $sql = "SELECT AID FROM bbs WHERE AID = $tid AND visible = 1"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query topic error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + if (mysqli_num_rows($rs) == 0) + { + $result_set["return"]["code"] = -1; + $result_set["return"]["message"] = "需要先恢复主题"; + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + mysqli_free_result($rs); + } + + $sql = "UPDATE bbs SET visible = 1, m_del = 0 WHERE AID = $id"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Delete article error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + //Add log + $rs = article_op_log($id, $_SESSION["BBS_uid"], "S", client_addr(), $db_conn); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Add log error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + //Set reply count + if ($tid != 0) + { + $sql = "UPDATE bbs SET reply_count = reply_count + 1 WHERE AID = $tid"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Update article error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + } + + // Commit transaction + $rs = mysqli_query($db_conn, "COMMIT"); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + mysqli_close($db_conn); + exit(json_encode($result_set)); ?>