/[LeafOK_CVS]/fenglin/bbs/themes/default/view_user.view.php
ViewVC logotype

Annotation of /fenglin/bbs/themes/default/view_user.view.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (hide annotations)
Thu Oct 23 04:52:59 2025 UTC (4 months, 3 weeks ago) by sysadm
Branch: MAIN
Changes since 1.8: +1 -1 lines
Refine output layout of user introduction

1 sysadm 1.1 <?php
2     // Prevent load standalone
3     if (!isset($result_set))
4     {
5     exit();
6     }
7    
8     require_once "../lib/astro.inc.php";
9     ?>
10     <html>
11     <head>
12     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
13     <title>查看用户资料</title>
14     <link rel="stylesheet" href="<?= get_theme_file('css/default'); ?>" type="text/css">
15     <script src="../js/polyfill.min.js"></script>
16     <script src="../js/axios.min.js"></script>
17     <script type="text/javascript">
18     function refresh_err_msg(errorFieldMap)
19     {
20     document.getElementsByName("err_msg").forEach(element => {
21     element.innerHTML = (errorFieldMap.has(element.id) ? errorFieldMap.get(element.id) : "");
22     });
23     }
24    
25     function transfer_score(f)
26     {
27     if (window.confirm('真的要转让吗?') == false)
28     {
29     return false;
30     }
31    
32 sysadm 1.2 instance.post('user_service_transfer_score.php', {
33 sysadm 1.1 uid: <?= $result_set["data"]["uid"]; ?>,
34     amount: f.amount.value,
35     })
36     .then(function (response) {
37     var ret = response.data;
38     var errorFieldMap = new Map();
39     switch (ret.return.code)
40     {
41     case 0: // OK
42     errorFieldMap.set("err_msg_transfer", "积分转让成功<br />");
43     refresh_err_msg(errorFieldMap);
44     break;
45     case -1: // Input validation failed
46     ret.return.errorFields.forEach(field => {
47     errorFieldMap.set("err_msg_" + field.id, field.errMsg + "<br />");
48     });
49     refresh_err_msg(errorFieldMap);
50     break;
51     case -2: // Internal error
52     console.log(ret.return.message);
53     errorFieldMap.set("err_msg_transfer", "内部错误<br />");
54     refresh_err_msg(errorFieldMap);
55     break;
56     default:
57     console.log(ret.return.code);
58     break;
59     }
60     })
61     .catch(function (error) {
62     console.log(error);
63     });
64    
65     return false;
66     }
67    
68     function set_life(f)
69     {
70     instance.post('user_service_life.php', {
71     uid: <?= $result_set["data"]["uid"]; ?>,
72     life: f.life.value,
73     })
74     .then(function (response) {
75     var ret = response.data;
76     var errorFieldMap = new Map();
77     switch (ret.return.code)
78     {
79     case 0: // OK
80     refresh_err_msg(errorFieldMap);
81     document.location = "view_user.php?uid=<?= $result_set["data"]["uid"]; ?>&ts=" + Date.now();
82     break;
83     case -1: // Input validation failed
84     errorFieldMap.set("err_msg_life", ret.return.message + "<br />");
85     refresh_err_msg(errorFieldMap);
86     break;
87     case -2: // Internal error
88     console.log(ret.return.message);
89     errorFieldMap.set("err_msg_life", "内部错误<br />");
90     refresh_err_msg(errorFieldMap);
91     break;
92     default:
93     console.log(ret.return.code);
94     break;
95     }
96     })
97     .catch(function (error) {
98     console.log(error);
99     });
100    
101     return false;
102     }
103    
104     function ban_user(f)
105     {
106     instance.post('user_service_ban.php', {
107     uid: <?= $result_set["data"]["uid"]; ?>,
108     ban: f.ban.value,
109     sid: f.sid.value,
110     day: f.day.value,
111     reason: f.reason.value,
112     })
113     .then(function (response) {
114     var ret = response.data;
115     var errorFieldMap = new Map();
116     switch (ret.return.code)
117     {
118     case 0: // OK
119     errorFieldMap.set("err_msg_ban", "操作成功<br />");
120     refresh_err_msg(errorFieldMap);
121     break;
122     case -1: // Input validation failed
123     errorFieldMap.set("err_msg_ban", ret.return.message + "<br />");
124     refresh_err_msg(errorFieldMap);
125     break;
126     case -2: // Internal error
127     console.log(ret.return.message);
128     errorFieldMap.set("err_msg_ban", "内部错误<br />");
129     refresh_err_msg(errorFieldMap);
130     break;
131     default:
132     console.log(ret.return.code);
133     break;
134     }
135     })
136     .catch(function (error) {
137     console.log(error);
138     });
139    
140     return false;
141     }
142    
143     function set_friend(set)
144     {
145     instance.post('user_service_friend.php', {
146     uid: <?= $result_set["data"]["uid"]; ?>,
147     set: set,
148     })
149     .then(function (response) {
150     var ret = response.data;
151     var errorFieldMap = new Map();
152     switch (ret.return.code)
153     {
154     case 0: // OK
155     case 1: // Already set
156     refresh_err_msg(errorFieldMap);
157     document.location = "view_user.php?uid=<?= $result_set["data"]["uid"]; ?>&ts=" + Date.now();
158     break;
159     case -1: // Input validation failed
160     errorFieldMap.set("err_msg_friend", ret.return.message);
161     refresh_err_msg(errorFieldMap);
162     break;
163     case -2: // Internal error
164     console.log(ret.return.message);
165     errorFieldMap.set("err_msg_friend", "内部错误");
166     refresh_err_msg(errorFieldMap);
167     break;
168     default:
169     console.log(ret.return.code);
170     break;
171     }
172     })
173     .catch(function (error) {
174     console.log(error);
175     });
176    
177     return false;
178     }
179    
180     const instance = axios.create({
181     withCredentials: true,
182     timeout: 3000,
183     baseURL: document.location.protocol + '//' + document.location.hostname + (document.location.port=='' ? '' : (':' + document.location.port)) + '/bbs/',
184     });
185    
186     window.addEventListener("load", () => {
187     var f1 = document.getElementById("transfer_score");
188     if (f1)
189     {
190     f1.addEventListener("submit", (e) => {
191     e.preventDefault();
192     transfer_score(f1);
193     });
194     }
195    
196     var f2 = document.getElementById("set_life");
197     if (f2)
198     {
199     f2.addEventListener("submit", (e) => {
200     e.preventDefault();
201     set_life(f2);
202     });
203     }
204    
205     var f3 = document.getElementById("ban_user");
206     if (f3)
207     {
208     f3.addEventListener("submit", (e) => {
209     e.preventDefault();
210     ban_user(f3);
211     });
212     }
213    
214     });
215    
216     </script>
217     </head>
218     <body>
219     <center>
220     <table border="0" cellpadding="0" cellspacing="10" width="1050">
221     <tr>
222     <td colspan="2" align="center" style="font-size: 16px; font-family: 楷体; font-weight: bold; color: red">
223     <?= $result_set["data"]["username"]; ?>的个人资料
224     </td>
225     </tr>
226     <tr height="1" bgcolor="gray">
227     <td colspan="2">
228     </td>
229     </tr>
230     <tr>
231     <td width="35%" align="right">
232     头像:
233     </td>
234     <td width="65%">
235     <img src="<?= $result_set["data"]["photo"]; ?>" border="0">
236     </td>
237     </tr>
238     <tr height="1" bgcolor="gray">
239     <td colspan="2">
240     </td>
241     </tr>
242     <tr>
243     <td align="right">
244     昵称:
245     </td>
246     <td>
247     <span style="color: #909090; ">
248     <?= $result_set["data"]["nickname"]; ?>
249     </span>
250     </td>
251     </tr>
252     <tr>
253     <td align="right">
254     星座:
255     </td>
256     <td>
257     <?php
258     $astro = Date2Astro(intval($result_set["data"]["birthday"]->format("m")), intval($result_set["data"]["birthday"]->format("d"))) . "座";
259    
260     if ($result_set["data"]["gender_pub"])
261     {
262     if ($result_set["data"]["gender"] == "M")
263     {
264     ?><span style="color:blue;"><?= $astro; ?></span><?php
265     }
266     else if ($result_set["data"]["gender"] == "F")
267     {
268     ?><span style="color:red;"><?= $astro; ?></span><?php
269     }
270     }
271     else
272     {
273     ?><span style="color:green;"><?= $astro; ?></span><?php
274     }
275     ?>
276     </td>
277     </tr>
278     <tr>
279     <td align="right">
280     注册时间:
281     </td>
282     <td>
283     <?= $result_set["data"]["signup_dt"]->format("Y年m月d日 H:i:s"); ?>
284     </td>
285     </tr>
286     <tr>
287     <td align="right">
288     最后活动:
289     </td>
290     <td>
291     <?= $result_set["data"]["last_tm"]->format("Y年m月d日 H:i:s"); ?>
292 sysadm 1.4 <?php
293 sysadm 1.5 foreach($result_set["data"]["current_action"] as $current_action)
294 sysadm 1.4 {
295 sysadm 1.5 switch($current_action)
296     {
297     case "MENU":
298     $current_action_name = "菜单选择";
299     break;
300 sysadm 1.8 case "LOGIN":
301     $current_action_name = "进入大厅";
302     break;
303 sysadm 1.7 case "USER_LIST":
304     $current_action_name = "查花名册";
305     break;
306     case "USER_ONLINE":
307     $current_action_name = "环顾四周";
308     break;
309 sysadm 1.5 case "VIEW_FILE":
310     $current_action_name = "查看文档";
311     break;
312     case "VIEW_ARTICLE":
313     $current_action_name = "阅读文章";
314     break;
315     case "POST_ARTICLE":
316     $current_action_name = "撰写文章";
317     break;
318     case "EDIT_ARTICLE":
319     $current_action_name = "修改文章";
320     break;
321     case "REPLY_ARTICLE":
322     $current_action_name = "回复文章";
323     break;
324     case "BBS_NET":
325     $current_action_name = "站点穿梭";
326     break;
327     case "CHICKEN":
328     $current_action_name = "电子小鸡";
329     break;
330 sysadm 1.6 case "":
331     $current_action_name = "Web浏览";
332     break;
333 sysadm 1.5 default:
334 sysadm 1.6 $current_action_name = $current_action;
335 sysadm 1.5 }
336 sysadm 1.4
337 sysadm 1.5 if ($current_action_name != "")
338     {
339     echo " <font color=green>[" . $current_action_name . "]</font>";
340     }
341 sysadm 1.4 }
342     ?>
343 sysadm 1.1 </td>
344     </tr>
345     <tr>
346     <td align="right">
347     源IP地址:
348     </td>
349     <td>
350     <?= $result_set["data"]["ip"]; ?>
351     </td>
352     </tr>
353     <tr>
354     <td align="right">
355     经验值&nbsp;/&nbsp;生命值:
356     </td>
357     <td>
358     <span style="color: blue"><?= $result_set["data"]["exp"] . "&nbsp;/&nbsp;" . $result_set["data"]["life"]; ?></span>
359     </td>
360     </tr>
361     <?php
362     if ($_SESSION["BBS_priv"]->checklevel(P_ADMIN_M | P_ADMIN_S))
363     {
364     ?>
365     <tr>
366     <td>
367     </td>
368     <td>
369     <form method="POST" action="#" id="set_life" name="set_life">
370     <span id="err_msg_life" name="err_msg" style="color: red;"></span>
371     <input name="life" value="<?= $result_set["data"]["life"]; ?>" size="3">&nbsp;&nbsp;
372     <input type="submit" value="授予">
373     </form>
374     <?php
375     }
376     ?>
377     </td>
378     </tr>
379     <tr>
380     <td align="right">
381     等级:
382     </td>
383     <td>
384     <span style="color:orange; ">
385     <?= user_level($result_set["data"]["exp"]); ?>
386     </span>
387     </td>
388     </tr>
389     <tr>
390     <td align="right">
391     状态:
392     </td>
393     <td>
394     <?php
395     if (!$result_set["data"]["dead"] && $result_set["data"]["verified"])
396     {
397     if ($result_set["data"]["p_all"])
398     {
399     ?><span style="color: green">正常</span><?php
400     }
401     if (!$result_set["data"]["p_login"])
402     {
403     ?><span style="color: red">限制登陆</span><?php
404     }
405     if (!$result_set["data"]["p_post"])
406     {
407     ?><span style="color: red">限制发帖</span><?php
408     }
409     if (!$result_set["data"]["p_msg"])
410     {
411     ?><span style="color: red">限制消息</span><?php
412     }
413     }
414     else
415     {
416     if (!$result_set["data"]["verified"])
417     {
418     ?><span style="color: red">尚未确认</span><?php
419     }
420     if ($result_set["data"]["dead"])
421     {
422     ?><span style="color: red">已升天</span><?php
423     }
424     }
425    
426     if ($result_set["data"]["online"])
427     {
428     ?>&nbsp;&nbsp;<span style="color: blue">在线</span><?php
429     }
430     else
431     {
432     ?>&nbsp;&nbsp;<span style="color: gray">离线</span><?php
433     }
434     ?>
435     </td>
436     </tr>
437     <tr>
438     <td align="right">
439     最近发表的主题:
440     </td>
441     <td>
442     <a class="s7" href="search_article.php?uid=<?= $result_set["data"]["uid"]; ?>" target=_blank>查看&gt;&gt;</a>
443     </td>
444     </tr>
445     <tr height="1" bgcolor="gray">
446     <td colspan="2">
447     </td>
448     </tr>
449     <tr>
450     <td align="right">
451     个人介绍:
452     </td>
453     <td>
454     </td>
455     </tr>
456     <tr>
457     <td colspan="2" align="center">
458     <table border="0" cellspacing="0" cellpadding="0" width="80%">
459     <tr>
460     <td style="color:gray; font-size:14px;">
461 sysadm 1.9 <pre><?= LML(htmlspecialchars($result_set["data"]["introduction"], ENT_HTML401, 'UTF-8'), true, true, 80); ?></pre>
462 sysadm 1.1 </td>
463     </tr>
464     </table>
465     </td>
466     </tr>
467     <tr height="1" bgcolor="gray">
468     <td colspan="2">
469     </td>
470     </tr>
471     <tr>
472     <td align="right">
473     用户操作:
474     </td>
475     <td>
476     <?php
477     if ($_SESSION["BBS_priv"]->checkpriv(0, S_MSG) && $result_set["data"]["uid"] != $BBS_sys_uid)
478     {
479     ?>
480     <a class="s2" href="msg_read.php?sent=1&uid=<?= $result_set["data"]["uid"]; ?>" target=_blank>发送消息</a>
481     <?php
482     }
483    
484     if ($_SESSION["BBS_uid"] > 0 && $_SESSION["BBS_uid"] != $result_set["data"]["uid"])
485     {
486     ?>
487     <a class="s2" href="#" onclick="return set_friend(<?= ($result_set["data"]["is_friend"] ? 0 : 1); ?>);"><?= ($result_set["data"]["is_friend"]? "删除好友" : "加为好友"); ?></a>
488     <span id="err_msg_friend" name="err_msg" style="color: red;"></span>
489     <?php
490     }
491     ?>
492     </td>
493     </tr>
494     <?php
495     if ($_SESSION["BBS_uid"] > 0 && $_SESSION["BBS_uid"] != $result_set["data"]["uid"])
496     {
497     ?>
498     <tr>
499     <td align="right">
500     积分转让:
501     </td>
502     <td>
503     <span id="err_msg_transfer" name="err_msg" style="color: red;"></span>
504     <form method="post" action="#" id="transfer_score" name="transfer_score">
505     <input id="amount" name="amount" value="0" size="3">&nbsp;&nbsp;
506     <input type="submit" value="转让">
507     </form>
508     转让额必须是10的倍数,单次限额10000。<br />
509     <span style="color:red; ">服务费率为转让额的10%</span>
510     </td>
511     </tr>
512     <?php
513     }
514    
515     if ($_SESSION["BBS_priv"]->checklevel(P_ADMIN_M | P_ADMIN_S | P_MAN_M))
516     {
517     ?>
518     <tr height="1" bgcolor="gray">
519     <td colspan="2">
520     </td>
521     </tr>
522     <tr>
523     <td align="right">
524     封禁权限:
525     </td>
526     <td>
527     <form method="POST" action="#" id="ban_user" name="ban_user">
528     <p>
529     <span id="err_msg_ban" name="err_msg" style="color: red;"></span>
530     <input type="radio" name="ban" value="1" checked>封
531     <input type="radio" name="ban" value="0">解封
532     <select id="sid" name="sid" size="1">
533     <option value="0">全站发帖</option>
534     <option value="-1">用户登录</option>
535     <option value="-2">站内消息</option>
536     <?php
537     foreach ($result_set["data"]["section_hierachy"] as $c_index => $section_class)
538     {
539     ?>
540     <option value="-100">==<?= $section_class["title"]; ?>==</option>
541     <?php
542     foreach ($section_class["sections"] as $s_index => $section)
543     {
544     ?>
545     <option value="<?= $section["sid"]; ?>">&nbsp;&nbsp;├<?= $section["title"]; ?></option>
546     <?php
547     }
548     }
549     ?>
550     </select>
551     权限
552     <input name="day" size="3">天(最多365)<br />
553     理由:<br />
554     <textarea name="reason" cols="40" rows="5"></textarea>
555     </p>
556     <input type="submit" value="提交">
557     </form>
558     </td>
559     </tr>
560     <?php
561     }
562     ?>
563     <tr height="1" bgcolor="gray">
564     <td colspan="2">
565     </td>
566     </tr>
567     </table>
568     </center>
569     </body>
570     </html>

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