/[LeafOK_CVS]/fenglin/bbs/search_article_v2.php
ViewVC logotype

Diff of /fenglin/bbs/search_article_v2.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 by sysadm, Wed Jan 21 07:58:27 2026 UTC Revision 1.6 by sysadm, Wed Feb 11 10:59:14 2026 UTC
# Line 1  Line 1 
1  <?php  <?php
2          require_once "../lib/db_open.inc.php";          require_once "../lib/db_open.inc.php";
3            require_once "../conf/solr.conf.php";
4          require_once "./session_init.inc.php";          require_once "./session_init.inc.php";
5          require_once "./theme.inc.php";          require_once "./theme.inc.php";
6    
# Line 67  Line 68 
68                  mysqli_free_result($rs);                  mysqli_free_result($rs);
69          }          }
70    
71          // Initialize Solr client          if (!in_array($rpp, $BBS_list_rpp_options))
72          $solr_options = array          {
73          (                  $rpp = $BBS_list_rpp_options[0];
74                  "hostname" => "localhost",          }
75                  "port"     => "8983",  
76                  "path"     => "/solr/lbbs",          if ($page <= 0)
77          );          {
78                    $page = 1;
79            }
80    
81            // 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 " : "") .
91                  ($original ? "Eransship:0 AND " : "") .                  ($original ? "Transship:0 AND " : "") .
92                  "PostDateTime:[" . $begin_dt->setTimezone(new DateTimeZone("UTC"))->format("Y-m-d\T00:00:00\Z") . " TO " .                  "PostDateTime:[" . $begin_dt->setTimezone(new DateTimeZone("UTC"))->format("Y-m-d\T00:00:00\Z") . " TO " .
93                          $end_dt->setTimezone(new DateTimeZone("UTC"))->format("Y-m-d\T23:59:59\Z") . "] AND " .                          $end_dt->setTimezone(new DateTimeZone("UTC"))->format("Y-m-d\T23:59:59\Z") . "] AND " .
94                  ($title == "" ? "" : "ArticleTitle:($title) AND ") .                  ($title == "" ? "" : "ArticleTitle:($title) AND ") .
# Line 95  Line 100 
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);
# Line 118  Line 125 
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(
# Line 160  Line 151 
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    
# Line 209  Line 170 
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)
# Line 226  Line 188 
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                          {                          {
# Line 242  Line 204 
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)
# Line 308  Line 272 
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)


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1