--- fenglin/bbs/search_article_v2.php 2026/01/21 13:37:51 1.4 +++ fenglin/bbs/search_article_v2.php 2026/02/11 10:59:14 1.6 @@ -68,6 +68,16 @@ mysqli_free_result($rs); } + if (!in_array($rpp, $BBS_list_rpp_options)) + { + $rpp = $BBS_list_rpp_options[0]; + } + + if ($page <= 0) + { + $page = 1; + } + // Initialize Solr client $solr_client = new SolrClient($solr_options); @@ -90,6 +100,8 @@ $solr_query->setQuery($query_str); $solr_query->addField("ArticleId"); $solr_query->addSortField("PostDateTime", SolrQuery::ORDER_DESC); + $solr_query->setStart(($page - 1) * $rpp); + $solr_query->setRows($rpp); try { $solr_res = $solr_client->query($solr_query); @@ -113,23 +125,7 @@ $toa = $solr_obj->response->numFound; - unset($solr_query); - - if (!in_array($rpp, $BBS_list_rpp_options)) - { - $rpp = $BBS_list_rpp_options[0]; - } - $page_total = ceil($toa / $rpp); - if ($page > $page_total) - { - $page = $page_total; - } - - if ($page <= 0) - { - $page = 1; - } // Fill up result data $result_set["data"] = array( @@ -155,47 +151,17 @@ "articles" => array(), ); - // Query article IDs - $solr_query = new SolrQuery(); - $solr_query->setQuery($query_str); - $solr_query->addField("ArticleId"); - $solr_query->addSortField("PostDateTime", SolrQuery::ORDER_DESC); - $solr_query->setStart(($page - 1) * $rpp); - $solr_query->setRows($rpp); - try - { - $solr_res = $solr_client->query($solr_query); - } - catch (Exception $e) - { - $result_set["return"]["code"] = -3; - $result_set["return"]["message"] = "Solr query error"; - - exit(json_encode($result_set)); - } - $solr_obj = $solr_res->getResponse(); - - if ($solr_obj->responseHeader->status != 0) - { - $result_set["return"]["code"] = -3; - $result_set["return"]["message"] = "Solr query error: " . $solr_obj->responseHeader->status; - - exit(json_encode($result_set)); - } - - // print_r($solr_obj); - // exit(); - - $aid_list = "-1"; + $aid_list = array(-1); if ($solr_obj->response->docs !== false) { foreach ($solr_obj->response->docs as $doc) { - $aid_list .= (", " . $doc["ArticleId"]); + array_push($aid_list, $doc["ArticleId"]); } } + unset($solr_res); unset($solr_query); unset($solr_client); @@ -204,8 +170,9 @@ section_config.sname, section_config.title AS s_title FROM bbs INNER JOIN section_config ON bbs.SID = section_config.SID INNER JOIN section_class ON section_config.CID = section_class.CID" . - " WHERE bbs.AID in ($aid_list)" . - " ORDER BY sub_dt DESC"; + " WHERE bbs.AID in (" . + implode(",", $aid_list) . + ") ORDER BY sub_dt DESC"; $rs = mysqli_query($db_conn, $sql); if ($rs == false) @@ -221,13 +188,13 @@ if ($_SESSION["BBS_uid"] > 0) { - $aid_list = "-1"; + $aid_list = array(-1); while ($row = mysqli_fetch_array($rs)) { if ((new DateTimeImmutable("-" . $BBS_new_article_period . " day")) < (new DateTimeImmutable($row["sub_dt"]))) { - $aid_list .= (", " . $row["AID"]); + array_push($aid_list, $row["AID"]); } else { @@ -237,9 +204,11 @@ mysqli_data_seek($rs, 0); - if ($aid_list != "-1") + if (count($aid_list) > 1) { - $sql = "SELECT AID FROM view_article_log WHERE AID IN ($aid_list) AND UID = " . $_SESSION["BBS_uid"]; + $sql = "SELECT AID FROM view_article_log WHERE AID IN (" . + implode(",", $aid_list) . + ") AND UID = " . $_SESSION["BBS_uid"]; $rs_view = mysqli_query($db_conn, $sql); if ($rs_view == false) @@ -303,16 +272,18 @@ } mysqli_free_result($rs); - $uid_list = "-1"; + $uid_list = array(-1); foreach ($author_list as $uid => $status) { - $uid_list .= (", " . $uid); + array_push($uid_list, $uid); } unset($author_list); $author_list = array(); - $sql = "SELECT UID FROM user_list WHERE UID IN ($uid_list) AND enable"; + $sql = "SELECT UID FROM user_list WHERE UID IN (" . + implode(",", $uid_list) . + ") AND enable"; $rs = mysqli_query($db_conn, $sql); if ($rs == false)