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

Annotation of /fenglin/bbs/search_user.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.24 - (hide annotations)
Fri Apr 18 05:12:24 2025 UTC (10 months, 4 weeks ago) by sysadm
Branch: MAIN
Changes since 1.23: +133 -309 lines
Refact search_user

1 sysadm 1.1 <?
2 sysadm 1.12 require_once "../lib/db_open.inc.php";
3 sysadm 1.1 require_once "./session_init.inc.php";
4 sysadm 1.4 require_once "./user_level.inc.php";
5 sysadm 1.24 require_once "./theme.inc.php";
6    
7     $result_set = array(
8     "return" => array(
9     "code" => 0,
10     "message" => "",
11     "errorFields" => array(),
12     )
13     );
14    
15     $page = (isset($_GET["page"]) ? intval($_GET["page"]) : 1);
16     $rpp = (isset($_GET["rpp"]) ? intval($_GET["rpp"]) : 20);
17    
18     $type = (isset($_GET["type"]) ? intval($_GET["type"]) : 0);
19     $online = (isset($_GET["online"]) && $_GET["online"] == "1" ? 1 : 0);
20     $friend = (isset($_GET["friend"]) && $_GET["friend"] == "1" ? 1 : 0);
21     $search_text = (isset($_GET["search_text"]) ? $_GET["search_text"] : "");
22    
23     $sql = "SELECT IF(UID = 0, 1, 0) AS is_guest, COUNT(*) AS u_count FROM user_online
24     WHERE last_tm >= SUBDATE(NOW(), INTERVAL $BBS_user_off_line SECOND)
25     GROUP BY is_guest";
26    
27     $rs = mysqli_query($db_conn, $sql);
28     if ($rs == false)
29 sysadm 1.13 {
30 sysadm 1.24 echo("Count online user error" . mysqli_error($db_conn));
31     exit();
32 sysadm 1.13 }
33 sysadm 1.4
34 sysadm 1.24 $guest_online = 0;
35     $user_online = 0;
36 sysadm 1.1
37 sysadm 1.24 while ($row = mysqli_fetch_array($rs))
38 sysadm 1.4 {
39 sysadm 1.24 if ($row["is_guest"])
40 sysadm 1.13 {
41 sysadm 1.24 $guest_online = $row["u_count"];
42 sysadm 1.13 }
43 sysadm 1.4 else
44 sysadm 1.13 {
45 sysadm 1.24 $user_online = $row["u_count"];
46 sysadm 1.13 }
47 sysadm 1.4 }
48 sysadm 1.24 mysqli_free_result($rs);
49    
50     $sql = "SELECT COUNT(user_list.UID) AS rec_count FROM user_list" .
51     ($online ? " INNER JOIN user_online ON user_list.UID = user_online.UID" : "") .
52     ($friend ? " INNER JOIN friend_list ON user_list.UID = friend_list.fUID" : "") .
53     ($type == 1 ? " INNER JOIN user_pubinfo ON user_list.UID = user_pubinfo.UID" : "") .
54     " WHERE user_list.enable AND ".
55     ($type == 1 ? "nickname" : "username") .
56     " LIKE '%" . mysqli_real_escape_string($db_conn, $search_text) . "%'" .
57     ($online ? " AND last_tm >= SUBDATE(NOW(), INTERVAL $BBS_user_off_line SECOND)" : "").
58     ($friend ? " AND friend_list.UID = " . $_SESSION["BBS_uid"] : "");
59    
60     $rs = mysqli_query($db_conn, $sql);
61     if ($rs == false)
62     {
63     echo("Query user error" . mysqli_error($db_conn));
64     exit();
65     }
66    
67     if ($row = mysqli_fetch_array($rs))
68     {
69     $toa = $row["rec_count"];
70     }
71    
72     mysqli_free_result($rs);
73    
74     if (!in_array($rpp, $BBS_list_rpp_options))
75     {
76     $rpp = $BBS_list_rpp_options[0];
77     }
78    
79     $page_total = ceil($toa / $rpp);
80     if ($page > $page_total)
81 sysadm 1.1 {
82 sysadm 1.24 $page = $page_total;
83 sysadm 1.4 }
84 sysadm 1.24
85     if ($page <= 0)
86     {
87     $page = 1;
88     }
89    
90     // Fill up result data
91     $result_set["data"] = array(
92     "type" => $type,
93     "online" => $online,
94     "friend" => $friend,
95     "search_text" => $search_text,
96     "page" => $page,
97     "rpp" => $rpp,
98     "page_total" => $page_total,
99     "toa" => $toa,
100     "user_online" => $user_online,
101     "guest_online" => $guest_online,
102    
103     "users" => array(),
104     );
105    
106     $sql = "SELECT user_list.UID, username, nickname, exp, gender, gender_pub, last_login_dt FROM user_list" .
107     ($online ? " INNER JOIN user_online ON user_list.UID = user_online.UID" : "") .
108     ($friend ? " INNER JOIN friend_list ON user_list.UID = friend_list.fUID" : "") .
109     " INNER JOIN user_pubinfo ON user_list.UID = user_pubinfo.UID WHERE user_list.enable AND ".
110     ($type == 1 ? "nickname" : "username") .
111     " LIKE '%" . mysqli_real_escape_string($db_conn, $search_text) . "%'" .
112     ($online ? " AND last_tm >= SUBDATE(NOW(), INTERVAL $BBS_user_off_line SECOND)" : "").
113     ($friend ? " AND friend_list.UID = " . $_SESSION["BBS_uid"] : "") .
114     " ORDER BY " . ($type == 1 ? "nickname" : "username") .
115     " LIMIT " . ($page - 1) * $rpp . ", $rpp";
116    
117     $rs = mysqli_query($db_conn, $sql);
118     if ($rs == false)
119 sysadm 1.14 {
120 sysadm 1.24 echo("Query user error" . mysqli_error($db_conn));
121     exit();
122 sysadm 1.14 }
123 sysadm 1.13
124 sysadm 1.24 while ($row = mysqli_fetch_array($rs))
125 sysadm 1.13 {
126 sysadm 1.24 array_push($result_set["data"]["users"], array(
127     "uid" => $row["UID"],
128     "username" => $row["username"],
129     "nickname" => $row["nickname"],
130     "exp" => $row["exp"],
131     "gender" => $row["gender"],
132     "gender_pub" => $row["gender_pub"],
133     "last_login_dt" => (new DateTimeImmutable($row["last_login_dt"]))->setTimezone($_SESSION["BBS_user_tz"]),
134     ));
135 sysadm 1.13 }
136 sysadm 1.24 mysqli_free_result($rs);
137    
138     // Cleanup
139     unset($type);
140     unset($online);
141     unset($friend);
142     unset($search_text);
143     unset($page);
144     unset($rpp);
145     unset($page_total);
146     unset($toa);
147     unset($user_online);
148     unset($guest_online);
149 sysadm 1.13
150 sysadm 1.24 // Output with theme view
151     $theme_view_file = get_theme_file("view/search_user", $_SESSION["BBS_theme_name"]);
152     if ($theme_view_file == null)
153     {
154     exit(json_encode($result_set)); // Output data in Json
155     }
156     include $theme_view_file;
157 sysadm 1.1 ?>

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