| 68 |
mysqli_free_result($rs); |
mysqli_free_result($rs); |
| 69 |
} |
} |
| 70 |
|
|
| 71 |
|
if (!in_array($rpp, $BBS_list_rpp_options)) |
| 72 |
|
{ |
| 73 |
|
$rpp = $BBS_list_rpp_options[0]; |
| 74 |
|
} |
| 75 |
|
|
| 76 |
|
if ($page <= 0) |
| 77 |
|
{ |
| 78 |
|
$page = 1; |
| 79 |
|
} |
| 80 |
|
|
| 81 |
// Initialize Solr client |
// Initialize Solr client |
| 82 |
$solr_client = new SolrClient($solr_options); |
$solr_client = new SolrClient($solr_options); |
| 83 |
|
|
| 84 |
$query_str = "" . |
$query_str = "" . |
| 85 |
($sid_list == "(-1)" ? "" : "SectionId:($sid_list) AND ") . |
($sid_list == "(-1)" ? "" : "SectionId:($sid_list) AND ") . |
| 86 |
($reply ? "" : "TopicId:0 AND ") . |
($reply ? "" : "TopicId:0 AND ") . |
| 87 |
|
($uid == 0 ? "" : "PostUserId:($uid) AND ") . |
| 88 |
($username == "" ? "" : "PostUserName:($username) AND ") . |
($username == "" ? "" : "PostUserName:($username) AND ") . |
| 89 |
($nickname == "" ? "" : "PostUserNickName:($nickname) AND ") . |
($nickname == "" ? "" : "PostUserNickName:($nickname) AND ") . |
| 90 |
($ex == 1 ? "Excerption:1 AND " : "") . |
($ex == 1 ? "Excerption:1 AND " : "") . |
| 100 |
$solr_query->setQuery($query_str); |
$solr_query->setQuery($query_str); |
| 101 |
$solr_query->addField("ArticleId"); |
$solr_query->addField("ArticleId"); |
| 102 |
$solr_query->addSortField("PostDateTime", SolrQuery::ORDER_DESC); |
$solr_query->addSortField("PostDateTime", SolrQuery::ORDER_DESC); |
| 103 |
|
$solr_query->setStart(($page - 1) * $rpp); |
| 104 |
|
$solr_query->setRows($rpp); |
| 105 |
try |
try |
| 106 |
{ |
{ |
| 107 |
$solr_res = $solr_client->query($solr_query); |
$solr_res = $solr_client->query($solr_query); |
| 125 |
|
|
| 126 |
$toa = $solr_obj->response->numFound; |
$toa = $solr_obj->response->numFound; |
| 127 |
|
|
|
unset($solr_query); |
|
|
|
|
|
if (!in_array($rpp, $BBS_list_rpp_options)) |
|
|
{ |
|
|
$rpp = $BBS_list_rpp_options[0]; |
|
|
} |
|
|
|
|
| 128 |
$page_total = ceil($toa / $rpp); |
$page_total = ceil($toa / $rpp); |
|
if ($page > $page_total) |
|
|
{ |
|
|
$page = $page_total; |
|
|
} |
|
|
|
|
|
if ($page <= 0) |
|
|
{ |
|
|
$page = 1; |
|
|
} |
|
| 129 |
|
|
| 130 |
// Fill up result data |
// Fill up result data |
| 131 |
$result_set["data"] = array( |
$result_set["data"] = array( |
| 151 |
"articles" => array(), |
"articles" => array(), |
| 152 |
); |
); |
| 153 |
|
|
| 154 |
// Query article IDs |
$aid_list = array(-1); |
|
$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"; |
|
| 155 |
|
|
| 156 |
if ($solr_obj->response->docs !== false) |
if ($solr_obj->response->docs !== false) |
| 157 |
{ |
{ |
| 158 |
foreach ($solr_obj->response->docs as $doc) |
foreach ($solr_obj->response->docs as $doc) |
| 159 |
{ |
{ |
| 160 |
$aid_list .= (", " . $doc["ArticleId"]); |
array_push($aid_list, $doc["ArticleId"]); |
| 161 |
} |
} |
| 162 |
} |
} |
| 163 |
|
|
| 164 |
|
unset($solr_res); |
| 165 |
unset($solr_query); |
unset($solr_query); |
| 166 |
unset($solr_client); |
unset($solr_client); |
| 167 |
|
|
| 170 |
section_config.sname, section_config.title AS s_title FROM bbs |
section_config.sname, section_config.title AS s_title FROM bbs |
| 171 |
INNER JOIN section_config ON bbs.SID = section_config.SID |
INNER JOIN section_config ON bbs.SID = section_config.SID |
| 172 |
INNER JOIN section_class ON section_config.CID = section_class.CID" . |
INNER JOIN section_class ON section_config.CID = section_class.CID" . |
| 173 |
" WHERE bbs.AID in ($aid_list)" . |
" WHERE bbs.AID in (" . |
| 174 |
" ORDER BY sub_dt DESC"; |
implode(",", $aid_list) . |
| 175 |
|
") ORDER BY sub_dt DESC"; |
| 176 |
|
|
| 177 |
$rs = mysqli_query($db_conn, $sql); |
$rs = mysqli_query($db_conn, $sql); |
| 178 |
if ($rs == false) |
if ($rs == false) |
| 188 |
|
|
| 189 |
if ($_SESSION["BBS_uid"] > 0) |
if ($_SESSION["BBS_uid"] > 0) |
| 190 |
{ |
{ |
| 191 |
$aid_list = "-1"; |
$aid_list = array(-1); |
| 192 |
|
|
| 193 |
while ($row = mysqli_fetch_array($rs)) |
while ($row = mysqli_fetch_array($rs)) |
| 194 |
{ |
{ |
| 195 |
if ((new DateTimeImmutable("-" . $BBS_new_article_period . " day")) < (new DateTimeImmutable($row["sub_dt"]))) |
if ((new DateTimeImmutable("-" . $BBS_new_article_period . " day")) < (new DateTimeImmutable($row["sub_dt"]))) |
| 196 |
{ |
{ |
| 197 |
$aid_list .= (", " . $row["AID"]); |
array_push($aid_list, $row["AID"]); |
| 198 |
} |
} |
| 199 |
else |
else |
| 200 |
{ |
{ |
| 204 |
|
|
| 205 |
mysqli_data_seek($rs, 0); |
mysqli_data_seek($rs, 0); |
| 206 |
|
|
| 207 |
if ($aid_list != "-1") |
if (count($aid_list) > 1) |
| 208 |
{ |
{ |
| 209 |
$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 (" . |
| 210 |
|
implode(",", $aid_list) . |
| 211 |
|
") AND UID = " . $_SESSION["BBS_uid"]; |
| 212 |
|
|
| 213 |
$rs_view = mysqli_query($db_conn, $sql); |
$rs_view = mysqli_query($db_conn, $sql); |
| 214 |
if ($rs_view == false) |
if ($rs_view == false) |
| 272 |
} |
} |
| 273 |
mysqli_free_result($rs); |
mysqli_free_result($rs); |
| 274 |
|
|
| 275 |
$uid_list = "-1"; |
$uid_list = array(-1); |
| 276 |
foreach ($author_list as $uid => $status) |
foreach ($author_list as $uid => $status) |
| 277 |
{ |
{ |
| 278 |
$uid_list .= (", " . $uid); |
array_push($uid_list, $uid); |
| 279 |
} |
} |
| 280 |
unset($author_list); |
unset($author_list); |
| 281 |
|
|
| 282 |
$author_list = array(); |
$author_list = array(); |
| 283 |
|
|
| 284 |
$sql = "SELECT UID FROM user_list WHERE UID IN ($uid_list) AND enable"; |
$sql = "SELECT UID FROM user_list WHERE UID IN (" . |
| 285 |
|
implode(",", $uid_list) . |
| 286 |
|
") AND enable"; |
| 287 |
|
|
| 288 |
$rs = mysqli_query($db_conn, $sql); |
$rs = mysqli_query($db_conn, $sql); |
| 289 |
if ($rs == false) |
if ($rs == false) |