class.fun.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. <?php
  2. function get_category_child($catid = 0, $type = 'category', $ifview = '2')
  3. {
  4. $parentid = $catid;
  5. $bif_view = $ifview == '2' || $ifview == '1' ? ' AND a.if_view = \'' . $ifview . '\' AND b.if_view = \'' . $ifview . '\'' : '';
  6. $sql = 'SELECT a.*, b.catid AS childid, b.catname AS childname, b.color AS childcolor,b.dir_typename AS child_dir_typename,b.htmlpath AS child_htmlpath,b.dir_typename AS child_dir_typename FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.catid WHERE a.parentid = \'' . $parentid . '\' ' . $bif_view . ' ORDER BY a.catorder ASC , b.catorder ASC');
  7. $res = $GLOBALS['db']->getAll($sql);
  8. $cat_arr = array();
  9. foreach ($res as $row) {
  10. if ($row['if_view']) {
  11. $cat_arr[$row['catid']]['catid'] = $row['catid'];
  12. $cat_arr[$row['catid']]['catname'] = $row['catname'];
  13. $cat_arr[$row['catid']]['color'] = $row['color'];
  14. $cat_arr[$row['catid']]['if_view'] = $row['if_view'];
  15. $cat_arr[$row['catid']]['dir_typename'] = $row['dir_typename'];
  16. $cat_arr[$row['catid']]['uri'] = Rewrite($type, array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename'], 'dir_typename' => $row['dir_typename']));
  17. $type == 'category' && $cat_arr[$row['catid']]['usecoin'] = $row['usecoin'];
  18. $cat_arr[$row['catid']]['icon'] = $row['icon'];
  19. if ($row['childid'] != NULL) {
  20. $cat_arr[$row['catid']]['children'][$row['childid']]['catid'] = $row['childid'];
  21. $cat_arr[$row['catid']]['children'][$row['childid']]['catname'] = $row['childname'];
  22. $cat_arr[$row['catid']]['children'][$row['childid']]['if_view'] = $row['if_view'];
  23. $cat_arr[$row['catid']]['children'][$row['childid']]['color'] = $row['childcolor'];
  24. $cat_arr[$row['catid']]['children'][$row['childid']]['dir_typename'] = $row['child_dir_typename'];
  25. $cat_arr[$row['catid']]['children'][$row['childid']]['uri'] = Rewrite($type, array('catid' => $row['childid'], 'dir_typename' => $row['child_dir_typename'], 'dir_typename' => $row['child_dir_typename']));
  26. $type == 'category' && $cat_arr[$row['catid']]['children'][$row['childid']]['usecoin'] = $row['usecoin'];
  27. }
  28. }
  29. }
  30. return $cat_arr;
  31. }
  32. function get_member_cat($cat_arr = '', $ifnone = true)
  33. {
  34. $option .= $ifnone == false ? '<select id="catid" datatype="limit" require="true" msg="请选择所属分类" class=input name=catid>' : '<select id="catid" datatype="limit" require="true" msg="请选择所属分类" class=input name="catid[]">';
  35. $option .= $ifnone == false ? '<option value="">>不限分类</option>' : '<option value="">请选择所属分类</option>';
  36. $option .= cat_list('corp', '', $cat_arr, true);
  37. $option .= '</select>';
  38. return $option;
  39. }
  40. function get_catparents()
  41. {
  42. global $db;
  43. global $db_mymps;
  44. $data = read_static_cache('catparents');
  45. if ($data === false) {
  46. $query = $db->query('SELECT * FROM `' . $db_mymps . 'category` WHERE if_view = \'2\' AND parentid = \'0\' ORDER BY catorder DESC');
  47. while ($row = $db->fetchRow($query)) {
  48. $res[$row['catid']]['catid'] = $row['catid'];
  49. $res[$row['catid']]['catname'] = $row['catname'];
  50. $res[$row['catid']]['uri'] = Rewrite('category', array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename']));
  51. $res[$row['catid']]['uri_corp'] = Rewrite('corp', array('catid' => $row['catid']));
  52. }
  53. write_static_cache('catparents', $res);
  54. }
  55. else {
  56. $res = $data;
  57. }
  58. return $res;
  59. }
  60. function get_area_children($areaid, $pre = 'a.areaid')
  61. {
  62. return create_in(array_unique(array_merge(array($areaid), array_keys(cat_list('area', $areaid, 0, false)))), $pre);
  63. }
  64. function get_channel_children($catid, $pre = 'catid')
  65. {
  66. return create_in(array_unique(array_merge(array($catid), array_keys(cat_list('channel', $catid, 0, false)))), $pre);
  67. }
  68. function get_children($catid, $pre = 'a.catid')
  69. {
  70. return create_in(array_unique(array_merge(array($catid), array_keys(cat_list('category', $catid, 0, false)))), $pre);
  71. }
  72. function get_cat_children($catid, $type = 'category')
  73. {
  74. if ($row = $GLOBALS['db']->getAll('SELECT catid FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE parentid = \'' . $catid . '\''))) {
  75. $cat = array();
  76. foreach ($row as $k => $v) {
  77. $cat[$v['catid']] = $v['catid'];
  78. }
  79. $cats = implode(',', $cat) . ',' . $catid;
  80. return $cats;
  81. }
  82. else {
  83. return $catid;
  84. }
  85. }
  86. function get_corp_children($corpid)
  87. {
  88. if ($row = $GLOBALS['db']->getAll('SELECT corpid FROM `' . $GLOBALS['db_mymps'] . 'corp` WHERE parentid = \'' . $corpid . '\'')) {
  89. $cat = array();
  90. foreach ($row as $k => $v) {
  91. $cat[$v['corpid']] = $v['corpid'];
  92. }
  93. $cats = implode(',', $cat) . ',' . $corpid;
  94. return $cats;
  95. }
  96. else {
  97. return $corpid;
  98. }
  99. }
  100. function get_categories_foreach($catid = 0, $type = 'category', $ifview = '2')
  101. {
  102. $bif_view = $ifview == '2' || $ifview == '1' ? ' AND b.if_view = \'' . $ifview . '\'' : '';
  103. $child = mymps_count($type, 'WHERE parentid = \'' . $catid . '\'');
  104. if (!$child || $child == 0) {
  105. $row = $GLOBALS['db']->getRow('SELECT parentid FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE catid = \'' . $catid . '\''));
  106. $sql = 'SELECT catid, catname, catorder, if_view, dir_typename FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE parentid = \'' . $row['parentid'] . '\' ORDER BY catorder ASC , catid ASC');
  107. }
  108. else {
  109. $sql = 'SELECT catid, catname, catorder, if_view, dir_typename FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE parentid = \'' . $catid . '\' ORDER BY catorder ASC , catid ASC');
  110. }
  111. $res = $GLOBALS['db']->getAll($sql);
  112. return $res;
  113. }
  114. function get_categories_tree($catid = 0, $type = 'category', $ifview = '2')
  115. {
  116. $data = read_static_cache($type . '_tree');
  117. $rewritetype = $type == 'channel' ? 'news' : 'category';
  118. if ($catid == 0) {
  119. if ($data === false) {
  120. $parentid = 0;
  121. $bif_view = $ifview == '2' || $ifview == '1' ? ' AND a.if_view = \'' . $ifview . '\' AND b.if_view = \'' . $ifview . '\'' : '';
  122. $sql = 'SELECT a.*, b.catid AS childid, b.catname AS childname, b.color AS childcolor,b.dir_typename AS child_dir_typename,b.htmlpath AS child_htmlpath,b.dir_typename AS child_dir_typename FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.catid WHERE a.parentid = \'' . $parentid . '\' ' . $bif_view . ' ORDER BY a.catorder ASC , b.catorder ASC');
  123. $res = $GLOBALS['db']->getAll($sql);
  124. $cat_arr = array();
  125. foreach ($res as $row) {
  126. if ($row['if_view']) {
  127. $cat_arr[$row['catid']]['catid'] = $row['catid'];
  128. $cat_arr[$row['catid']]['catname'] = $row['catname'];
  129. $cat_arr[$row['catid']]['color'] = $row['color'];
  130. $cat_arr[$row['catid']]['if_view'] = $row['if_view'];
  131. $cat_arr[$row['catid']]['dir_typename'] = $row['dir_typename'];
  132. $cat_arr[$row['catid']]['uri'] = Rewrite($rewritetype, array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename']));
  133. $cat_arr[$row['catid']]['uri_m'] = mRewrite($rewritetype, array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename']));
  134. $type == 'category' && $cat_arr[$row['catid']]['usecoin'] = $row['usecoin'];
  135. $cat_arr[$row['catid']]['icon'] = $row['icon'];
  136. if ($row['childid'] != NULL) {
  137. $cat_arr[$row['catid']]['children'][$row['childid']]['catid'] = $row['childid'];
  138. $cat_arr[$row['catid']]['children'][$row['childid']]['catname'] = $row['childname'];
  139. $cat_arr[$row['catid']]['children'][$row['childid']]['if_view'] = $row['if_view'];
  140. $cat_arr[$row['catid']]['children'][$row['childid']]['color'] = $row['childcolor'];
  141. $cat_arr[$row['catid']]['children'][$row['childid']]['dir_typename'] = $row['child_dir_typename'];
  142. $cat_arr[$row['catid']]['children'][$row['childid']]['uri'] = Rewrite($rewritetype, array('catid' => $row['childid'], 'dir_typename' => $row['child_dir_typename']));
  143. $cat_arr[$row['catid']]['children'][$row['childid']]['uri_m'] = mRewrite($rewritetype, array('catid' => $row['childid'], 'dir_typename' => $row['child_dir_typename']));
  144. $type == 'category' && $cat_arr[$row['catid']]['children'][$row['childid']]['usecoin'] = $row['usecoin'];
  145. }
  146. }
  147. }
  148. write_static_cache($type . '_tree', $cat_arr);
  149. }
  150. else {
  151. $cat_arr = $data;
  152. }
  153. }
  154. else {
  155. if ($data === NULL || empty($data[$catid])) {
  156. $bif_view = $ifview == '2' || $ifview == '1' ? ' AND b.if_view = \'' . $ifview . '\'' : '';
  157. $parentid = $GLOBALS['db']->getOne('SELECT parentid FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE catid = \'' . $catid . '\''));
  158. if ($parentid == 0 || $GLOBALS['db']->getOne('SELECT count(catid) FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE parentid = \'' . $catid . '\''))) {
  159. $sql = 'SELECT a.*, b.catid AS childid, b.catname AS childname, b.catorder AS childorder,b.dir_typename AS child_dir_typename,b.htmlpath AS child_htmlpath,b.dir_typename AS child_dir_typename FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.catid ' . $bif_view . ' WHERE a.catid = \'' . $catid . '\' ORDER BY catorder ASC , childorder ASC');
  160. }
  161. else {
  162. $sql = 'SELECT a.*, b.catid AS childid, b.catname AS childname, b.catorder AS childorder, b.dir_typename AS child_dir_typename,b.dir_typename AS child_dir_typename, b.htmlpath AS child_htmlpath FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.catid ' . $bif_view . ' WHERE b.parentid = \'' . $parentid . '\' ORDER BY catorder ASC , childorder ASC');
  163. }
  164. $res = $GLOBALS['db']->getAll($sql);
  165. $cat_arr = array();
  166. foreach ($res as $row) {
  167. if ($row['if_view']) {
  168. $cat_arr[$row['catid']]['catid'] = $row['catid'];
  169. $cat_arr[$row['catid']]['catname'] = $row['catname'];
  170. $type == 'category' && $cat_arr[$row['catid']]['usecoin'] = $row['usecoin'];
  171. $cat_arr[$row['catid']]['catorder'] = $row['catorder'];
  172. $cat_arr[$row['catid']]['if_view'] = $row['if_view'];
  173. $cat_arr[$row['catid']]['dir_typename'] = $row['dir_typename'];
  174. $cat_arr[$row['catid']]['uri'] = Rewrite($rewritetype, array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename']));
  175. $cat_arr[$row['catid']]['uri_m'] = mRewrite($rewritetype, array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename']));
  176. if ($row['childid'] != NULL) {
  177. $cat_arr[$row['catid']]['children'][$row['childid']]['catid'] = $row['childid'];
  178. $cat_arr[$row['catid']]['children'][$row['childid']]['catname'] = $row['childname'];
  179. $type == 'category' && $cat_arr[$row['catid']]['children'][$row['childid']]['usecoin'] = $row['usecoin'];
  180. $cat_arr[$row['catid']]['children'][$row['childid']]['if_view'] = $row['if_view'];
  181. $cat_arr[$row['catid']]['children'][$row['childid']]['catorder'] = $row['childorder'];
  182. $cat_arr[$row['catid']]['children'][$row['childid']]['dir_typename'] = $row['child_dir_typename'];
  183. $cat_arr[$row['catid']]['children'][$row['childid']]['uri'] = Rewrite($rewritetype, array('catid' => $row['childid'], 'dir_typename' => $row['child_dir_typename']));
  184. $cat_arr[$row['catid']]['children'][$row['childid']]['uri_m'] = mRewrite($rewritetype, array('catid' => $row['childid'], 'dir_typename' => $row['child_dir_typename']));
  185. }
  186. }
  187. }
  188. }
  189. else {
  190. $cat_arr[$catid] = $data[$catid];
  191. }
  192. }
  193. return $cat_arr;
  194. }
  195. function get_corp_tree($catid = 0, $type = 'corp')
  196. {
  197. $data = read_static_cache($type . '_tree');
  198. if ($catid == 0) {
  199. if ($data === false) {
  200. $parentid = 0;
  201. $sql = 'SELECT a.corpid, a.corpname, b.corpid AS childid, b.corpname AS childname FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.corpid WHERE a.parentid = \'' . $parentid . '\' ORDER BY a.corporder ASC , a.corpid ASC, b.corporder ASC');
  202. $res = $GLOBALS['db']->getAll($sql);
  203. $cat_arr = array();
  204. foreach ($res as $row) {
  205. $cat_arr[$row['corpid']]['corpid'] = $row['corpid'];
  206. $cat_arr[$row['corpid']]['corpname'] = $row['corpname'];
  207. $cat_arr[$row['corpid']]['uri'] = Rewrite('corp', array('catid' => $row['corpid']));
  208. if ($row['childid'] != NULL) {
  209. $cat_arr[$row['corpid']]['children'][$row['childid']]['corpid'] = $row['childid'];
  210. $cat_arr[$row['corpid']]['children'][$row['childid']]['corpname'] = $row['childname'];
  211. $cat_arr[$row['corpid']]['children'][$row['childid']]['uri'] = Rewrite('corp', array('catid' => $row['childid']));
  212. }
  213. }
  214. write_static_cache($type . '_tree', $cat_arr);
  215. }
  216. else {
  217. $cat_arr = $data;
  218. }
  219. }
  220. else {
  221. if ($data === NULL || empty($data[$catid])) {
  222. $parentid = $GLOBALS['db']->getOne('SELECT parentid FROM `' . $GLOBALS['db_mymps'] . $type . ('` WHERE corpid = \'' . $corpid . '\''));
  223. if ($parentid == 0) {
  224. $sql = 'SELECT a.corpid, a.corpname, a.corporder, b.corpid AS childid, b.corpname AS childname, b.corporder AS childorder FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.corpid WHERE a.corpid = \'' . $catid . '\' ORDER BY corporder ASC , corpid ASC, childorder ASC');
  225. }
  226. else {
  227. $sql = 'SELECT a.corpid, a.corpname, a.corporder, b.corpid AS childid, b.corpname AS childname, b.corporder AS childorder FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS a LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . ('` AS b ON b.parentid = a.catid WHERE b.parentid = \'' . $parentid . '\' ORDER BY corporder ASC , corpid ASC, childorder ASC');
  228. }
  229. $res = $GLOBALS['db']->getAll($sql);
  230. $cat_arr = array();
  231. foreach ($res as $row) {
  232. $cat_arr[$row['corpid']]['corpid'] = $row['corpid'];
  233. $cat_arr[$row['corpid']]['corpname'] = $row['corpname'];
  234. $cat_arr[$row['corpid']]['corporder'] = $row['corporder'];
  235. $cat_arr[$row['corpid']]['uri'] = Rewrite('corp', array('catid' => $row['corpid']));
  236. if ($row['childid'] != NULL) {
  237. $cat_arr[$row['corpid']]['children'][$row['childid']]['corpid'] = $row['childid'];
  238. $cat_arr[$row['corpid']]['children'][$row['childid']]['corpname'] = $row['childname'];
  239. $cat_arr[$row['corpid']]['children'][$row['childid']]['corporder'] = $row['childorder'];
  240. $cat_arr[$row['corpid']]['children'][$row['childid']]['uri'] = Rewrite('corp', array('catid' => $row['childid']));
  241. }
  242. }
  243. }
  244. else {
  245. $cat_arr[] = $data[$catid];
  246. }
  247. }
  248. return $cat_arr;
  249. }
  250. function get_parent_cats($type = 'category', $cat = '')
  251. {
  252. if ($cat == 0) {
  253. return array();
  254. }
  255. $data = read_static_cache($type . '_pid_releate');
  256. if ($data === false) {
  257. if ($type == 'category') {
  258. $arr = $GLOBALS['db']->getAll('SELECT catid, catname, parentid, dir_typename,dir_typename FROM `' . $GLOBALS['db_mymps'] . 'category`');
  259. }
  260. else if ($type == 'channel') {
  261. $arr = $GLOBALS['db']->getAll('SELECT catid, catname, parentid, dir_typename FROM `' . $GLOBALS['db_mymps'] . 'channel`');
  262. }
  263. else if ($type == 'corp') {
  264. $arr = $GLOBALS['db']->getAll('SELECT corpid,corpname,parentid FROM `' . $GLOBALS['db_mymps'] . 'corp`');
  265. }
  266. }
  267. else {
  268. $arr = $data;
  269. }
  270. if (empty($arr)) {
  271. return array();
  272. }
  273. $index = 0;
  274. $cats = array();
  275. while (1) {
  276. if ($type == 'corp') {
  277. foreach ($arr as $row) {
  278. if ($cat == $row['corpid']) {
  279. $cat = $row['parentid'];
  280. $cats[$index]['corpid'] = $row['corpid'];
  281. $cats[$index]['corpname'] = $row['corpname'];
  282. $cats[$index]['uri'] = Rewrite('corp', array('catid' => $row['corpid']));
  283. $index++;
  284. break;
  285. }
  286. }
  287. }
  288. else {
  289. foreach ($arr as $row) {
  290. if ($cat == $row['catid']) {
  291. $cat = $row['parentid'];
  292. $cats[$index]['catid'] = $row['catid'];
  293. $cats[$index]['catname'] = $row['catname'];
  294. if ($type == 'category') {
  295. $cats[$index]['uri'] = Rewrite('category', array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename'], 'dir_typename' => $row['dir_typename']));
  296. }
  297. else {
  298. $cats[$index]['uri'] = Rewrite('news', array('catid' => $row['catid'], 'dir_typename' => $row['dir_typename']));
  299. }
  300. $index++;
  301. break;
  302. }
  303. }
  304. }
  305. if ($index == 0 || $cat == 0) {
  306. break;
  307. }
  308. }
  309. return $cats;
  310. }
  311. function get_child_cats($cat)
  312. {
  313. if ($cat == 0) {
  314. return array();
  315. }
  316. $catr = $cat;
  317. $data = read_static_cache('category_pid_releate');
  318. if ($data === false) {
  319. $arr = $GLOBALS['db']->getAll('SELECT catid, catname, parentid, dir_typename, dir_typename FROM `' . $GLOBALS['db_mymps'] . 'category`');
  320. }
  321. else {
  322. $arr = $data;
  323. }
  324. if (empty($arr)) {
  325. return array();
  326. }
  327. $index = 0;
  328. $cats = array();
  329. while (1) {
  330. foreach ($arr as $row) {
  331. if ($cat == $row['parentid']) {
  332. $cat = $row['has_children'];
  333. $cats[$index]['catid'] = $row['catid'];
  334. $cats[$index]['catname'] = $row['catname'];
  335. $index++;
  336. break;
  337. }
  338. }
  339. if ($index == 0 || $cat == 0) {
  340. break;
  341. }
  342. }
  343. foreach ($cats as $k => $v) {
  344. $catreturn .= $v['catid'] . ',';
  345. }
  346. $catreturn = substr($catreturn, 0, -1);
  347. $catreturn = $catreturn ? $catr . ',' . $catreturn : $catr;
  348. return $catreturn;
  349. }
  350. function cat_list($type = 'category', $catid = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true)
  351. {
  352. $data = read_static_cache($type . '_pid_releate');
  353. if ($data === false) {
  354. if (in_array($type, array('area', 'corp'))) {
  355. $sql = 'SELECT c.' . $type . 'id, c.' . $type . 'name, c.parentid, c.' . $type . 'order, COUNT(s.' . $type . ('id) AS has_children FROM `' . $GLOBALS['db_mymps']) . $type . ('` AS c LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . '` AS s ON s.parentid=c.' . $type . 'id GROUP BY c.' . $type . 'id ORDER BY c.parentid, c.' . $type . 'order ASC';
  356. }
  357. else if ($type == 'category') {
  358. $sql = 'SELECT c.catid, c.modid, c.dir_typename, c.dir_typename, c.catname,c.usecoin, c.parentid, c.if_view, c.catorder, c.template_info, COUNT(s.catid) AS has_children FROM `' . $GLOBALS['db_mymps'] . 'category` AS c LEFT JOIN `' . $GLOBALS['db_mymps'] . 'category` AS s ON s.parentid=c.catid GROUP BY c.catid ORDER BY c.parentid, c.catorder ASC';
  359. }
  360. else {
  361. $sql = 'SELECT c.catid, c.dir_typename, c.dir_typename, c.catname, c.parentid, c.if_view, c.catorder, COUNT(s.catid) AS has_children FROM `' . $GLOBALS['db_mymps'] . $type . ('` AS c LEFT JOIN `' . $GLOBALS['db_mymps']) . $type . '` AS s ON s.parentid=c.catid GROUP BY c.catid ORDER BY c.parentid, c.catorder ASC';
  362. }
  363. $res = $GLOBALS['db']->getAll($sql);
  364. $sql = NULL;
  365. $newres = array();
  366. if (count($res) <= 1000) {
  367. write_static_cache($type . '_pid_releate', $res);
  368. }
  369. }
  370. else {
  371. $res = $data;
  372. }
  373. if (empty($res) == true) {
  374. return $re_type ? '' : array();
  375. }
  376. $options = cat_options($type, $catid, $res);
  377. $children_level = 99999;
  378. if ($is_show_all == false) {
  379. foreach ($options as $key => $val) {
  380. if ($children_level < $val['level']) {
  381. unset($options[$key]);
  382. }
  383. else if ($val['is_show'] == 0) {
  384. unset($options[$key]);
  385. if ($val['level'] < $children_level) {
  386. $children_level = $val['level'];
  387. }
  388. }
  389. else {
  390. $children_level = 99999;
  391. }
  392. }
  393. }
  394. if (0 < $level) {
  395. if ($catid == 0) {
  396. $end_level = $level;
  397. }
  398. else {
  399. $first_item = reset($options);
  400. $end_level = $first_item['level'] + $level;
  401. }
  402. foreach ($options as $key => $val) {
  403. if ($end_level <= $val['level']) {
  404. unset($options[$key]);
  405. }
  406. }
  407. }
  408. if (in_array($type, array('area', 'corp'))) {
  409. if ($re_type == true) {
  410. $select = '';
  411. if (is_array($options)) {
  412. foreach ($options as $var) {
  413. $select .= '<option value="' . $var[$type . 'id'] . '" ';
  414. if (is_array($selected)) {
  415. $select .= in_array($var[$type . 'id'], $selected) ? 'selected=\'ture\' style=\'background-color:#6eb00c; color:white!important;\'' : '';
  416. }
  417. else {
  418. $select .= $selected == $var[$type . 'id'] ? 'selected=\'ture\' style=\'background-color:#6eb00c; color:white!important;\'' : '';
  419. }
  420. $select .= '>';
  421. if (0 < $var['level']) {
  422. $select .= str_repeat('&nbsp;', $var['level'] * 4);
  423. }
  424. $select .= '└ ' . mhtmlspecialchars($var[$type . 'name'], ENT_QUOTES) . '</option>';
  425. }
  426. }
  427. return $select;
  428. }
  429. else {
  430. if (is_array($options)) {
  431. foreach ($options as $key => $value) {
  432. $options[$key]['url'] = $value[$type . 'id'];
  433. }
  434. }
  435. return $options;
  436. }
  437. }
  438. else if ($re_type == true) {
  439. $select = '';
  440. foreach ($options as $var) {
  441. $select .= '<option value="' . $var['catid'] . '" ';
  442. if (is_array($selected)) {
  443. $select .= in_array($var['catid'], $selected) ? 'selected=\'ture\' style=\'background-color:#6eb00c; color:white!important;\'' : '';
  444. }
  445. else {
  446. $select .= $selected == $var['catid'] ? 'selected=\'ture\' style=\'background-color:#6eb00c; color:white!important;\'' : '';
  447. }
  448. $select .= '>';
  449. if (0 < $var['level']) {
  450. $select .= str_repeat('&nbsp;', $var['level'] * 4);
  451. }
  452. $select .= '└ ' . mhtmlspecialchars($var['catname'], ENT_QUOTES) . '</option>';
  453. }
  454. return $select;
  455. }
  456. else {
  457. foreach ($options as $key => $value) {
  458. $options[$key]['url'] = $value['catid'];
  459. }
  460. return $options;
  461. }
  462. }
  463. function cat_options($type = 'category', $spec_cat_id, $arr)
  464. {
  465. $cat_options = array();
  466. if (isset($cat_options[$spec_cat_id])) {
  467. return $cat_options[$spec_cat_id];
  468. }
  469. if (!isset($cat_options[0])) {
  470. $level = $last_cat_id = 0;
  471. $options = $cat_id_array = $level_array = array();
  472. $data = read_static_cache($type . '_option_static');
  473. if ($data === false) {
  474. while (!empty($arr)) {
  475. foreach ($arr as $key => $value) {
  476. $cat_id = $type == 'area' ? $value['areaid'] : ($type == 'corp' ? $value['corpid'] : $value['catid']);
  477. if ($level == 0 && $last_cat_id == 0) {
  478. if (0 < $value['parentid']) {
  479. break;
  480. }
  481. $options[$cat_id] = $value;
  482. $options[$cat_id]['level'] = $level;
  483. $options[$cat_id]['id'] = $cat_id;
  484. $options[$cat_id]['name'] = $type == 'category' ? $value['catname'] : $value[$type . 'name'];
  485. unset($arr[$key]);
  486. if ($value['has_children'] == 0) {
  487. continue;
  488. }
  489. $last_cat_id = $cat_id;
  490. $cat_id_array = array($cat_id);
  491. $level_array[$last_cat_id] = ++$level;
  492. continue;
  493. }
  494. if ($value['parentid'] == $last_cat_id) {
  495. $options[$cat_id] = $value;
  496. $options[$cat_id]['level'] = $level;
  497. $options[$cat_id]['id'] = $cat_id;
  498. $options[$cat_id]['name'] = $type == 'category' ? $value['catname'] : $value[$type . 'name'];
  499. unset($arr[$key]);
  500. if (0 < $value['has_children']) {
  501. if (end($cat_id_array) != $last_cat_id) {
  502. $cat_id_array[] = $last_cat_id;
  503. }
  504. $last_cat_id = $cat_id;
  505. $cat_id_array[] = $cat_id;
  506. $level_array[$last_cat_id] = ++$level;
  507. }
  508. }
  509. else if ($last_cat_id < $value['parentid']) {
  510. break;
  511. }
  512. }
  513. $count = count($cat_id_array);
  514. if (1 < $count) {
  515. $last_cat_id = array_pop($cat_id_array);
  516. }
  517. else if ($count == 1) {
  518. if ($last_cat_id != end($cat_id_array)) {
  519. $last_cat_id = end($cat_id_array);
  520. }
  521. else {
  522. $level = 0;
  523. $last_cat_id = 0;
  524. $cat_id_array = array();
  525. continue;
  526. }
  527. }
  528. if ($last_cat_id && isset($level_array[$last_cat_id])) {
  529. $level = $level_array[$last_cat_id];
  530. }
  531. else {
  532. $level = 0;
  533. }
  534. }
  535. if (count($options) <= 2000) {
  536. write_static_cache($type . '_option_static', $options);
  537. }
  538. }
  539. else {
  540. $options = $data;
  541. }
  542. $cat_options[0] = $options;
  543. }
  544. else {
  545. $options = $cat_options[0];
  546. }
  547. if (!$spec_cat_id) {
  548. return $options;
  549. }
  550. else {
  551. if (empty($options[$spec_cat_id])) {
  552. return array();
  553. }
  554. $spec_cat_id_level = $options[$spec_cat_id]['level'];
  555. foreach ($options as $key => $value) {
  556. if ($key != $spec_cat_id) {
  557. unset($options[$key]);
  558. }
  559. else {
  560. break;
  561. }
  562. }
  563. $spec_cat_id_array = array();
  564. foreach ($options as $key => $value) {
  565. if ($spec_cat_id_level == $value['level'] && ($type == 'area' ? $value['areaid'] : $value['catid']) != $spec_cat_id || $value['level'] < $spec_cat_id_level) {
  566. break;
  567. }
  568. else {
  569. $spec_cat_id_array[$key] = $value;
  570. }
  571. }
  572. $cat_options[$spec_cat_id] = $spec_cat_id_array;
  573. return $spec_cat_id_array;
  574. }
  575. }
  576. function get_cat_info($catid = 0, $type = 'category')
  577. {
  578. global $db;
  579. global $db_mymps;
  580. return $db->getRow('SELECT * FROM `' . $db_mymps . $type . ('` WHERE catid = \'' . $catid . '\''));
  581. }
  582. function has_children($type = 'channel', $catid)
  583. {
  584. return $GLOBALS['db']->getOne('SELECT catid FROM `' . $GLOBALS['db_mymps'] . 'channel` WHERE parentid = \'' . $catid . '\'');
  585. }
  586. !defined('IN_MYMPS') && exit('FORBIDDEN');
  587. ?>