PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/hack/toolcenter/admin.php

https://bitbucket.org/johnroyer/phpwind8.7
PHP | 303 lines | 263 code | 40 blank | 0 comment | 84 complexity | dc40e033223a1c1394ce015c46de0bbf MD5 | raw file
  1. <?php
  2. !function_exists('adminmsg') && exit('Forbidden');
  3. require_once(R_P.'require/credit.php');
  4. if (empty($job)) {
  5. $basename = "$admin_file?adminjob=hack&hackset=toolcenter";
  6. if (!$_POST['step']) {
  7. ifcheck($db_toolifopen,'toolifopen');
  8. ifcheck($db_allowtrade,'allowtrade');
  9. include PrintHack('admin');exit;
  10. } else {
  11. S::gp(array('toolifopen','allowtrade'),'P');
  12. setConfig('db_toolifopen', $toolifopen);
  13. setConfig('db_allowtrade', $allowtrade);
  14. updatecache_c();
  15. adminmsg('operate_success');
  16. }
  17. } elseif ($job == 'toolinfo') {
  18. $basename = "$admin_file?adminjob=hack&hackset=toolcenter&job=toolinfo";
  19. if (!$action) {
  20. $query = $db->query("SELECT * FROM pw_tools ORDER BY vieworder ASC");
  21. while ($rt = $db->fetch_array($query)) {
  22. !$rt['creditype'] && $rt['creditype'] = 'currency';
  23. $tooldb[] = $rt;
  24. }
  25. include PrintHack('admin');exit;
  26. } elseif ($action == 'submit') {
  27. S::gp(array('tools', 'vieworder'),'P');
  28. $toolids = array(0);
  29. if (is_array($tools)) {
  30. foreach ($tools as $key => $value) {
  31. is_numeric($key) && $toolids[] = $key;
  32. }
  33. }
  34. $query = $db->query("SELECT id,vieworder FROM pw_tools ORDER BY vieworder ASC");
  35. while ($rt = $db->fetch_array($query)) {
  36. if($rt['vieworder'] == $vieworder[$rt['id']]) continue;
  37. is_numeric($vieworder[$rt['id']]) && $db->update("UPDATE pw_tools SET vieworder=".
  38. S::sqlEscape($vieworder[$rt['id']]).
  39. " WHERE id =($rt[id])");
  40. }
  41. $toolids = S::sqlImplode($toolids);
  42. if ($toolids) {
  43. $db->update("UPDATE pw_tools SET state='1' WHERE id IN($toolids)");
  44. $db->update("UPDATE pw_tools SET state='0' WHERE id NOT IN($toolids)");
  45. } else {
  46. $db->update("UPDATE pw_tools SET state='0'");
  47. }
  48. adminmsg('operate_success');
  49. } elseif ($action == 'edit' || $action == 'add') {
  50. if (!$_POST['step']) {
  51. if ($action == 'edit') {
  52. S::gp(array('id'));
  53. $rt = $db->get_one("SELECT * FROM pw_tools WHERE id=" . S::sqlEscape($id));
  54. !$rt && adminmsg('operate_fail');
  55. } else {
  56. $rt = array();
  57. }
  58. !$rt['creditype'] && $rt['creditype'] = 'currency';
  59. $condition = unserialize($rt['conditions']);
  60. $groupids = $condition['group'];
  61. $fids = $condition['forum'];
  62. ifcheck($rt['state'],'state');
  63. ${'type_' . $rt['type']} = 'checked';
  64. foreach ($condition['credit'] as $key => $value) {
  65. $key == 'rvrc' && $value /= 10;
  66. $condition['credit'][$key] = (int)$value;
  67. }
  68. $CreditList = '';
  69. foreach ($credit->cType as $key => $value) {
  70. $CreditList .= "<option value=\"$key\"".($rt['creditype']==$key ? ' selected' : '').">$value</option>";
  71. }
  72. $CreditLuck = '';
  73. foreach ($credit->cType as $key => $value) {
  74. $CreditLuck .= "<option value=\"$key\"".($condition['luck']['lucktype']==$key ? ' selected' : '').">$value</option>";
  75. }
  76. $usergroup = "<ul class='list_A list_120'>";
  77. foreach ($ltitle as $key => $value) {
  78. if ($key != 1 && $key != 2) {
  79. $num++;
  80. $htm_tr = $num%5 == 0 ? '' : '';
  81. if (strpos($groupids,','.$key.',') !== false) {
  82. $checked = 'checked';
  83. } else {
  84. $checked = '';
  85. }
  86. $usergroup .= " <li><input type='checkbox' name='groupids[]' value='$key' $checked>$value</li>$htm_tr";
  87. }
  88. }
  89. $usergroup .= "</ul>";
  90. $num = 0;
  91. $forumcheck = "<ul class='list_A list_160' style='width:auto;'>";
  92. $sqladd = " AND f_type!='hidden' AND cms='0'";
  93. $query = $db->query("SELECT fid,name FROM pw_forums WHERE type<>'category' $sqladd");
  94. while ($fm = $db->fetch_array($query)) {
  95. $num ++;
  96. $htm_tr = $num % 5 == 0 ? '' : '';
  97. if (strpos($fids,','.$fm['fid'].',') !== false) {
  98. $checked = 'checked';
  99. } else {
  100. $checked = '';
  101. }
  102. $forumcheck .= "<li><input type='checkbox' name='fids[]' value='$fm[fid]' $checked>$fm[name]</li>$htm_tr";
  103. }
  104. $forumcheck.="</ul>";
  105. include PrintHack('admin');exit;
  106. } else{
  107. S::gp(array('id','name','filename','vieworder','descrip','logo','state','price','stock','groupids','fids','condition','type','creditype','rmb'),'P');
  108. if ($groupids) {
  109. $condition['group'] = ','.implode(',',$groupids).',';
  110. }
  111. if ($fids) {
  112. $condition['forum'] = ','.implode(',',$fids).',';
  113. }
  114. foreach ($condition['credit'] as $key => $value) {
  115. $key == 'rvrc' && $value *= 10;
  116. $condition['credit'][$key] = (int)$value;
  117. }
  118. $condition = addslashes(serialize($condition));
  119. if ($action == 'edit') {
  120. $db->update("UPDATE pw_tools SET " . S::sqlSingle(array(
  121. 'name' => $name,
  122. 'filename' => $filename,
  123. 'vieworder' => $vieworder,
  124. 'descrip' => $descrip,
  125. 'logo' => $logo,
  126. 'state' => $state,
  127. 'price' => $price,
  128. 'creditype' => $creditype,
  129. 'rmb' => $rmb,
  130. 'type' => $type,
  131. 'stock' => $stock,
  132. 'conditions'=> $condition
  133. )) . " WHERE id=" . S::sqlEscape($id));
  134. } else{
  135. $db->update("INSERT INTO pw_tools SET " . S::sqlSingle(array(
  136. 'name' => $name,
  137. 'filename' => $filename,
  138. 'vieworder' => $vieworder,
  139. 'descrip' => $descrip,
  140. 'logo' => $logo,
  141. 'state' => $state,
  142. 'price' => $price,
  143. 'creditype' => $creditype,
  144. 'rmb' => $rmb,
  145. 'type' => $type,
  146. 'stock' => $stock,
  147. 'conditions'=> $condition
  148. )));
  149. $id = $db->insert_id();
  150. }
  151. $basename .= "&action=edit&id=$id";
  152. adminmsg('operate_success');
  153. }
  154. }
  155. } elseif ($job == 'usertool') {
  156. $basename = "$admin_file?adminjob=hack&hackset=toolcenter&job=usertool";
  157. if (!$action || $action == 'search') {
  158. S::gp(array('username','page'));
  159. if ($action == 'search' && $username) {
  160. $rt = $db->get_one("SELECT uid FROM pw_members WHERE username=" . S::sqlEscape($username));
  161. $sqladd = "WHERE u.uid=".S::sqlEscape($rt['uid'],false);
  162. } else {
  163. $sqladd = '';
  164. }
  165. if (!is_numeric($page) || $page < 1) {
  166. $page = 1;
  167. }
  168. $limit = S::sqlLimit(($page-1)*$db_perpage,$db_perpage);
  169. $rt = $db->get_one("SELECT COUNT(*) AS sum FROM pw_usertool u $sqladd");
  170. $sum = $rt['sum'];
  171. $total = ceil($sum/$db_perpage);
  172. $pages = numofpage($sum,$page,$total,"$basename&action=search&username=".rawurlencode($username)."&");
  173. $tooldb= array();
  174. $query = $db->query("SELECT u.*,t.name,t.stock,t.price,t.creditype,m.username FROM pw_usertool u LEFT JOIN pw_members m USING(uid) LEFT JOIN pw_tools t ON t.id=u.toolid $sqladd ORDER BY uid $limit");
  175. while ($rt = $db->fetch_array($query)) {
  176. !$rt['creditype'] && $rt['creditype'] = 'currency';
  177. $tooldb[] = $rt;
  178. }
  179. include PrintHack('admin');exit;
  180. } elseif ($action == 'edit') {
  181. S::gp(array('uid','id'));
  182. (!is_numeric($uid) || !is_numeric($id)) && adminmsg('numerics_checkfailed');
  183. if (empty($_POST['step'])) {
  184. $rt = $db->get_one("SELECT u.*,t.name,t.stock,t.price,m.username FROM pw_usertool u LEFT JOIN pw_members m USING(uid) LEFT JOIN pw_tools t ON t.id=u.toolid WHERE u.uid=" . S::sqlEscape($uid) . "AND u.toolid=" . S::sqlEscape($id));
  185. !$rt['creditype'] && $rt['creditype'] = 'currency';
  186. include PrintHack('admin');exit;
  187. } else {
  188. S::gp(array('nums','sellnums','sellprice'));
  189. $db->update("UPDATE pw_usertool SET " . S::sqlSingle(array(
  190. 'nums' => $nums,
  191. 'sellnums' => $sellnums,
  192. 'sellprice' => $sellprice
  193. )) . " WHERE uid=".S::sqlEscape($uid) . " AND toolid=".S::sqlEscape($id));
  194. adminmsg('operate_success');
  195. }
  196. } elseif ($action == 'del') {
  197. S::gp(array('uid','id'));
  198. (!is_numeric($uid) || !is_numeric($id)) && adminmsg('numerics_checkfailed');
  199. $db->update("DELETE FROM pw_usertool WHERE uid=" . S::sqlEscape($uid) . "AND toolid=".S::sqlEscape($id));
  200. adminmsg('operate_success');
  201. }
  202. } elseif ($job == 'tradelog') {
  203. $basename = "$admin_file?adminjob=hack&hackset=toolcenter&job=tradelog";
  204. S::gp(array('username','page'));
  205. if ($action == 'search' && $username) {
  206. $rt = $db->get_one("SELECT uid FROM pw_members WHERE username=" . S::sqlEscape($username));
  207. $sqladd = "AND u.uid='$rt[uid]'";
  208. } else {
  209. $sqladd = '';
  210. }
  211. if (!is_numeric($page) || $page < 1) {
  212. $page = 1;
  213. }
  214. $limit = S::sqlLimit(($page-1)*$db_perpage,$db_perpage);
  215. $rt = $db->get_one("SELECT COUNT(*) AS sum FROM pw_usertool u WHERE sellnums!=0 $sqladd");
  216. $sum = $rt['sum'];
  217. $total = ceil($sum/$db_perpage);
  218. $pages = numofpage($sum,$page,$total,"$basename&action=search&username=".rawurlencode($username)."&");
  219. $tooldb= array();
  220. $query = $db->query("SELECT u.*,t.name,t.descrip,t.logo,t.creditype,m.username FROM pw_usertool u LEFT JOIN pw_members m USING(uid) LEFT JOIN pw_tools t ON t.id=u.toolid WHERE sellnums!=0 $sqladd $limit");
  221. while ($rt = $db->fetch_array($query)) {
  222. $rt['descrip'] = substrs($rt['descrip'],45);
  223. !$rt['creditype'] && $rt['creditype'] = 'currency';
  224. $tooldb[] = $rt;
  225. }
  226. include PrintHack('admin');exit;
  227. } elseif ($job == 'toollog') {
  228. $basename = "$admin_file?adminjob=hack&hackset=toolcenter&job=toollog";
  229. if (empty($action)) {
  230. require_once(R_P.'require/bbscode.php');
  231. S::gp(array('page','keyword'));
  232. if ($keyword) {
  233. $sqladd = "WHERE descrip LIKE " . S::sqlEscape("%$keyword%");
  234. } else {
  235. $sqladd = '';
  236. }
  237. if (!is_numeric($page) || $page < 1) {
  238. $page = 1;
  239. }
  240. $limit = S::sqlLimit(($page-1)*$db_perpage,$db_perpage);
  241. $rt = $db->get_one("SELECT COUNT(*) AS sum FROM pw_toollog $sqladd");
  242. $sum = $rt['sum'];
  243. $total = ceil($sum/$db_perpage);
  244. $pages = numofpage($sum,$page,$total,"$basename&keyword=".rawurlencode($keyword)."&");
  245. $logdb = array();
  246. $query = $db->query("SELECT * FROM pw_toollog $sqladd ORDER BY time DESC $limit");
  247. while ($rt = $db->fetch_array($query)) {
  248. $rt['time'] = get_date($rt['time']);
  249. $rt['descrip']= convert($rt['descrip'],array());
  250. $logdb[] = $rt;
  251. }
  252. } elseif ($action == 'del') {
  253. S::gp(array('selid'));
  254. if (!$selid = checkselid($selid)) {
  255. $basename = "javascript:history.go(-1);";
  256. adminmsg('operate_error');
  257. }
  258. $db->update("DELETE FROM pw_toollog WHERE id IN($selid)");
  259. adminmsg('operate_success');
  260. }
  261. include PrintHack('admin');exit;
  262. }
  263. ?>