global.func.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. <?php
  2. if(!function_exists("error"))
  3. {
  4. function error($msg="",$url="",$time=2)
  5. {
  6. $app = sys_init();
  7. //哪果没有内容
  8. if(!$msg && !$url)
  9. {
  10. exit("error: false");
  11. }
  12. //如果没有内容提示,则直接跳转
  13. if(!$msg)
  14. {
  15. sys_header($url);
  16. }
  17. //如果有内容提示跳转
  18. $app->tpl->assign("msg",$msg);
  19. $app->tpl->assign("error_url",$url);
  20. if($url)
  21. {
  22. $error_note = sys_eval($app->lang["error_note"],$time);
  23. $app->tpl->assign("error_note",$error_note);
  24. }
  25. $app->tpl->assign("time",$time);
  26. //毫秒级,在JS中应用
  27. $app->tpl->assign("micro_time",$time*1000);
  28. $app->tpl->display("error.".$app->tpl->ext);
  29. exit();
  30. }
  31. }
  32. //rs是数组,根据数组原则生成静态页及伪静态页链接
  33. function msg_url($rs,$format=true)
  34. {
  35. $app = sys_init();
  36. if(!$rs)
  37. {
  38. return $app->url();
  39. }
  40. if(!$format || ($app->sys_config["site_type"] != "html" && $app->sys_config["site_type"] != "rewrite"))
  41. {
  42. $ext = $rs["identifier"] ? "ts=".$rs["identifier"] : "id=".$rs["id"];
  43. return $app->url("msg",$ext);
  44. }
  45. if($app->sys_config["site_type"] == "html" && !$app->sys_config["sitehtml"])
  46. {
  47. $app->sys_config["sitehtml"] = $app->sys_config["siteurl"]."html/".$app->langid."/";
  48. }
  49. if($app->sys_config["site_type"] == "rewrite")
  50. {
  51. $url = "c".$rs["id"].".html";
  52. if($rs["identifier"])
  53. {
  54. $url = $rs["identifier"].".html";
  55. }
  56. return $url;
  57. }
  58. //格式化网址
  59. $url = $app->sys_config["sitehtml"];
  60. if(substr($url,-1) != "/")
  61. {
  62. $url .= "/";
  63. }
  64. $this_url_end = ($rs["identifier"] && $rs["identifier"] != "index") ? $rs["identifier"].".html" : "c".$rs["id"].".html";
  65. if($rs["htmltype"] == "root")
  66. {
  67. $url .= $this_url_end;
  68. }
  69. elseif($rs["htmltype"] == "mid" || $rs["htmltype"] == "cateid")
  70. {
  71. $url .= $app->module_idlist[$rs["module_id"]]."/";
  72. if($rs["htmltype"] == "cateid" && $rs["cate_id"])
  73. {
  74. $url .= $app->cate_idlist[$rs["cate_id"]]."/";
  75. }
  76. $url .= $this_url_end;
  77. }
  78. else
  79. {
  80. $url .= date("Ym/d/",$rs["post_date"]);
  81. $url .= $this_url_end;
  82. }
  83. return $url;
  84. }
  85. //模块列表
  86. function module_url($rs,$pageid=0,$format=true,$ifindex=true)
  87. {
  88. $app = sys_init();
  89. if(!$rs)
  90. {
  91. return $app->url();
  92. }
  93. if(!$format || ($app->sys_config["site_type"] != "html" && $app->sys_config["site_type"] != "rewrite"))
  94. {
  95. $ext = $rs["identifier"] ? "ms=".$rs["identifier"] : "mid=".$rs["id"];
  96. if($pageid>1)
  97. {
  98. $ext .= "&".SYS_PAGEID."=".$pageid;
  99. }
  100. return $app->url("list",$ext);
  101. }
  102. if($app->sys_config["site_type"] == "html" && !$app->sys_config["sitehtml"])
  103. {
  104. $app->sys_config["sitehtml"] = $app->sys_config["siteurl"]."html/".$app->langid."/";
  105. }
  106. if($app->sys_config["site_type"] == "rewrite")
  107. {
  108. $url = $rs["identifier"] ? "ms-".$rs["identifier"] : "mid-".$rs["id"];
  109. $url.= $pageid<2 ? ".html" : "-".$pageid.".html";
  110. return $url;
  111. }
  112. //针对HTML的格式化
  113. $url = $app->sys_config["sitehtml"];
  114. if(substr($url,-1) != "/")
  115. {
  116. $url .= "/";
  117. }
  118. $url.= $rs["identifier"]."/";
  119. if($pageid<2)
  120. {
  121. if($ifindex)
  122. {
  123. $url .= "index.html";
  124. }
  125. }
  126. else
  127. {
  128. $url .= $pageid.".html";
  129. }
  130. return $url;
  131. }
  132. function list_url($rs,$pageid=0,$format=true,$ifindex=true)
  133. {
  134. $app = sys_init();
  135. if(!$rs)
  136. {
  137. return $app->url();
  138. }
  139. if(!$format || ($app->sys_config["site_type"] != "html" && $app->sys_config["site_type"] != "rewrite"))
  140. {
  141. $ext = $rs["identifier"] ? "cs=".$rs["identifier"] : "id=".$rs["id"];
  142. if($pageid>1)
  143. {
  144. $ext .= "&".SYS_PAGEID."=".$pageid;
  145. }
  146. return $app->url("list",$ext);
  147. }
  148. if($app->sys_config["site_type"] == "html" && !$app->sys_config["sitehtml"])
  149. {
  150. $app->sys_config["sitehtml"] = $app->sys_config["siteurl"]."html/".$app->langid."/";
  151. }
  152. if($app->sys_config["site_type"] == "rewrite")
  153. {
  154. $url = $rs["identifier"] ? "cs-".$rs["identifier"] : "cid-".$rs["id"];
  155. $url.= $pageid<2 ? ".html" : "-".$pageid.".html";
  156. return $url;
  157. }
  158. //针对HTML的格式化
  159. $url = $app->sys_config["sitehtml"];
  160. if(substr($url,-1) != "/")
  161. {
  162. $url .= "/";
  163. }
  164. $url .= $app->module_idlist[$rs["module_id"]] . "/";
  165. $url .= $app->cate_idlist[$rs["id"]]."/";
  166. if($pageid<2)
  167. {
  168. if($ifindex)
  169. {
  170. $url .= "index.html";
  171. }
  172. }
  173. else
  174. {
  175. $url .= $pageid.".html";
  176. }
  177. return $url;
  178. }
  179. if(!function_exists("site_url"))
  180. {
  181. function site_url($value,$extend="",$format=true,$format_type_ext="&amp;")
  182. {
  183. $app = sys_init();
  184. if(!$value)
  185. {
  186. return $app->url();
  187. }
  188. if(!$format || ($app->sys_config["site_type"] != "html" && $app->sys_config["site_type"] != "rewrite"))
  189. {
  190. return $app->url($value,$extend,$format_type_ext);
  191. }
  192. if($app->sys_config["site_type"] == "html" && !$app->sys_config["sitehtml"])
  193. {
  194. $app->sys_config["sitehtml"] = $app->sys_config["siteurl"]."html/".$app->langid."/";
  195. }
  196. $format_type = $app->sys_config["site_type"];
  197. //切分地址
  198. $ext = explode(",",$value);
  199. $c = $ext[0];
  200. if(!$c)
  201. {
  202. return false;
  203. }
  204. if(!$c != "list" || $c != "msg")
  205. {
  206. return $app->url($value,$extend,$format_type_ext);
  207. }
  208. $f = $ext[1] ? $ext[1] : "";
  209. $d = $ext[2] ? $ext[2] : "";
  210. if($extend)
  211. {
  212. $array = explode("&",$extend);
  213. foreach($array AS $k=>$v)
  214. {
  215. $tmp_array = explode("=",$v);
  216. $$tmp_array[0] = $tmp_array[1];
  217. }
  218. }
  219. if($c == "list" && $extend)
  220. {
  221. if($cid || $cs)
  222. {
  223. if($format_type == "rewrite")
  224. {
  225. $url = $cid ? "cid-".$cid : "cs-".$cs;
  226. if($pageid && $pageid>1)
  227. {
  228. $url .= "-".$pageid;
  229. }
  230. $url .= ".html";
  231. return $url;
  232. }
  233. else
  234. {
  235. $app->load_model("cate");
  236. if(!$cid && $cs)
  237. {
  238. $cid = $app->cate_m->get_cid_from_code($cs);
  239. }
  240. if($cid)
  241. {
  242. $rs = $app->cate_m->get_one($cid);
  243. return list_url($rs);
  244. }
  245. }
  246. }
  247. else
  248. {
  249. if($format_type == "rewrite")
  250. {
  251. $url = $mid ? "mid-".$mid : "ms-".$ms;
  252. if($pageid && $pageid>1)
  253. {
  254. $url .= "-".$pageid;
  255. }
  256. $url .= ".html";
  257. return $url;
  258. }
  259. else
  260. {
  261. $app->load_model("module");
  262. if($ms && !$mid)
  263. {
  264. $mid = $app->module_m->get_mid_from_code($ms);
  265. }
  266. if($mid)
  267. {
  268. $rs = $app->module_m->get_one($mid);
  269. return module_url($rs);
  270. }
  271. }
  272. }
  273. }
  274. elseif($c == "msg" && $extend)
  275. {
  276. if($format_type == "rewrite")
  277. {
  278. $url = $id ? "c".$id.".html" : $ts.".html";
  279. return $url;
  280. }
  281. else
  282. {
  283. $app->load_model("msg");
  284. if($id)
  285. {
  286. $rs = $app->msg_m->get_one($id);
  287. }
  288. else
  289. {
  290. $rs = $app->msg_m->get_one_fromtype($ts,$_SESSION["sys_lang_id"]);
  291. }
  292. return msg_url($rs);
  293. }
  294. }
  295. return $app->url($value,$extend,$format_type_ext);
  296. }
  297. }
  298. if(!function_exists("sys_format_content"))
  299. {
  300. function sys_format_content($msg)
  301. {
  302. if(!$msg)
  303. {
  304. return false;
  305. }
  306. $msg = str_replace("[:page:]","",$msg);
  307. $list = array();
  308. preg_match_all("/\[((download|video):([0-9]+))\]/isU",$msg,$list);
  309. $list = array_unique($list[1]);
  310. if(!$list || !is_array($list) || count($list)<1)
  311. {
  312. return $msg;
  313. }
  314. $app = sys_init();
  315. $app->load_model("upfile");
  316. if(!$app->lang["download"])
  317. {
  318. $app->lang["download"] = "download";
  319. }
  320. foreach($list AS $key=>$value)
  321. {
  322. $array = explode(":",$value);
  323. if(!$array[1])
  324. {
  325. continue;
  326. }
  327. if(!$array[0])
  328. {
  329. $array[0] = "download";
  330. }
  331. $type = in_array($array[0],array("download","video")) ? $array[0] : "download";
  332. $id = $array[1];
  333. $rs = $app->upfile_m->get_one($id);
  334. if(!$rs)
  335. {
  336. continue;
  337. }
  338. if($type == "video")
  339. {
  340. $width = $app->sys_config["video_width"] ? $app->sys_config["video_width"] : "500";
  341. $height = $app->sys_config["video_height"] ? $app->sys_config["video_height"] : "400";
  342. $pre_image = $rs["flv_pic"] ? $rs["flv_pic"] : $app->sys_config["video_image"];
  343. $n_msg = "<div class='video'>";
  344. $n_msg.= "<script type='text/javascript'>";
  345. $n_msg.= 'var htmlmsg = Media.init("'.$rs["filename"].'","'.$width.'","'.$height.'","'.$pre_image.'");';
  346. $n_msg.= "document.write(htmlmsg);</script>";
  347. $n_msg.= "</div>";
  348. }
  349. else
  350. {
  351. $n_msg = "<div class='download'><a href='".site_url("download","id=".$id)."'>";
  352. $n_msg.= "<img src='images/download.gif' align='absmiddle'> ";
  353. $n_msg.= $app->lang["download"].": ".$rs["title"];
  354. $n_msg.= "</a></div>";
  355. }
  356. $msg = str_replace("[".$value."]",$n_msg,$msg);
  357. }
  358. return $msg;
  359. }
  360. }
  361. function sys_format_module_id_code()
  362. {
  363. $app = sys_init();
  364. $rs = $app->module_m->get_id_code_list();
  365. if($rs)
  366. {
  367. $app->module_codelist = $rs["code"];
  368. $app->module_idlist = $rs["id"];
  369. unset($rs);
  370. }
  371. return true;
  372. }
  373. function sys_format_cate_id_code()
  374. {
  375. $app = sys_init();
  376. $rs = $app->cate_m->get_id_code_list();
  377. if($rs)
  378. {
  379. $app->cate_codelist = $rs["code"];
  380. $app->cate_idlist = $rs["id"];
  381. unset($rs);
  382. }
  383. return true;
  384. }
  385. function sys_format_menu($rs)
  386. {
  387. $app = sys_init();
  388. $site_html = $app->sys_config["sitehtml"] ? $app->sys_config["sitehtml"] : $app->sys_config["siteurl"]."html/".$app->langid."/";
  389. $index_php = $app->sys_config["indexphp"] ? $app->sys_config["indexphp"] : "index.php";
  390. $site_url = $app->sys_config["siteurl"] ? $app->sys_config["siteurl"] : base_url();
  391. if(!$rs["link_html"]) $rs["link_html"] = $rs["link"];
  392. if(!$rs["link_rewrite"]) $rs["link_rewrite"] = $rs["link"];
  393. if($app->sys_config["site_type"] == "html")
  394. {
  395. $rs["link"] = $rs["link_html"];
  396. }
  397. elseif($app->sys_config["site_type"] == "rewrite")
  398. {
  399. $rs["link"] = $rs["link_rewrite"];
  400. }
  401. $rs["link"] = str_replace("{control_trigger}",$app->config->c,$rs["link"]);
  402. $rs["link"] = str_replace("{site_html}",$site_html,$rs["link"]);
  403. $rs["link"] = str_replace("{index_php}",$index_php,$rs["link"]);
  404. $rs["link"] = str_replace("{site_url}",$site_url,$rs["link"]);
  405. unset($rs["link_html"],$rs["link_rewrite"]);
  406. return $rs;
  407. }
  408. function sys_user_popedom($chktype="read")
  409. {
  410. $app = sys_init();
  411. $app->load_model("usergroup");
  412. if($_SESSION["user_id"])
  413. {
  414. $rs = $_SESSION["group_id"] ? $app->usergroup_m->get_one($_SESSION["group_id"]) : $app->usergroup_m->get_default();
  415. if(!$rs)
  416. {
  417. return false;
  418. }
  419. }
  420. else
  421. {
  422. $rs = $app->usergroup_m->get_guest();
  423. if(!$rs)
  424. {
  425. return false;
  426. }
  427. }
  428. //格式化权限
  429. $popedom = "";
  430. if($chktype == "read") $popedom = $rs["popedom_read"];
  431. if($chktype == "post") $popedom = $rs["popedom_post"];
  432. if($chktype == "reply") $popedom = $rs["popedom_reply"];
  433. if(!$popedom)
  434. {
  435. return false;
  436. }
  437. if($popedom == "all") return $popedom;
  438. //格式化权限
  439. $array = $m = $c = array();
  440. $popedom = sys_id_list($popedom);
  441. foreach($popedom AS $key=>$value)
  442. {
  443. $tmp = explode(":",$value);
  444. if($tmp[0] == "m")
  445. {
  446. $m[] = $tmp[1];
  447. }
  448. else
  449. {
  450. $c[] = $tmp[1];
  451. }
  452. }
  453. unset($popedom);
  454. if((!$m || count($m)<1) && (!$c || count($c)<1))
  455. {
  456. return false;
  457. }
  458. $popedom = array();
  459. $popedom["module"] = $m ? $m : false;
  460. $popedom["category"] = $c ? $c : false;
  461. return $popedom;
  462. }
  463. if(!function_exists("d"))
  464. {
  465. function d($var,$func = "print_r")
  466. {
  467. echo "<pre>";
  468. $func($var);
  469. echo "</pre>";
  470. }
  471. }
  472. function JS2UTF8($str)
  473. {
  474. for($i=0;$i<strlen($str);$i+=6){
  475. list($a,$b)=sscanf(substr($str,$i),"%%u%02x%02x");
  476. $unicode.=chr($b).chr($a);
  477. }
  478. return iconv("UNICODELITTLE","UTF-8",$unicode);
  479. }
  480. ?>