PageRenderTime 62ms CodeModel.GetById 30ms RepoModel.GetById 1ms app.codeStats 0ms

/source/admincp/admincp_makehtml.php

https://github.com/jinbo51/DiscuzX
PHP | 603 lines | 557 code | 40 blank | 6 comment | 128 complexity | fedd7fdf87ad9745a74d9adc55c02d98 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: admincp_makehtml.php 33048 2013-04-12 08:50:27Z zhangjie $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. $operation = in_array($operation, array('all', 'index', 'category', 'article', 'topic', 'aids', 'catids', 'topicids', 'makehtmlsetting', 'cleanhtml')) ? $operation : 'all';
  12. cpheader();
  13. shownav('portal', 'nav_makehtml');
  14. $css = '<style>
  15. #mk_result {width:100%; margin-top:10px; border: 1px solid #ccc; margin: 0 auto; font-size:16px; text-align:center; display:none; }
  16. #mk_article, #mk_category, #mk_index{ line-height:30px;}
  17. #progress_bar{ width:400px; height:25px; border:1px solid #09f; margin: 10px auto 0; display:none;}
  18. .mk_msg{ width:100%; line-height:120px;}
  19. </style>';
  20. $result = '<tr><td colspan="15"><div id="mk_result">
  21. <div id="progress_bar"></div>
  22. <div id="mk_topic" mktitle="'.$lang['makehtml_topic'].'"></div>
  23. <div id="mk_article" mktitle="'.$lang['makehtml_article'].'"></div>
  24. <div id="mk_category" mktitle="'.$lang['makehtml_category'].'"></div>
  25. <div id="mk_index" mktitle="'.$lang['makehtml_index'].'"></div>
  26. </div></td></tr>';
  27. if(!in_array($operation, array('aids', 'catids', 'topicids'))) {
  28. $_nav = array();
  29. if(!empty($_G['setting']['makehtml']['flag'])) {
  30. $_nav = array(
  31. array('makehtml_createall', 'makehtml&operation=all', $operation == 'all'),
  32. array('makehtml_createindex', 'makehtml&operation=index', $operation == 'index'),
  33. array('makehtml_createcategory', 'makehtml&operation=category', $operation == 'category'),
  34. array('makehtml_createarticle', 'makehtml&operation=article', $operation == 'article'),
  35. array('makehtml_createtopic', 'makehtml&operation=topic', $operation == 'topic')
  36. );
  37. }
  38. $_nav[] = array('config', 'makehtml&operation=makehtmlsetting', $operation == 'makehtmlsetting');
  39. if(empty($_G['setting']['makehtml']['flag'])) {
  40. $_nav[] = array('makehtml_clear', 'makehtml&operation=cleanhtml', $operation == 'cleanhtml');
  41. }
  42. showsubmenu('html', $_nav, '');
  43. }
  44. if($operation == 'all') {
  45. showtips('makehtml_tips_all');
  46. showformheader('makehtml&operation=all');
  47. showtableheader('');
  48. echo '<script type="text/javascript" src="'.STATICURL.'js/calendar.js"></script>',
  49. '<script type="text/javascript" src="'.STATICURL.'js/makehtml.js?1"></script>',
  50. $css;
  51. showsetting('start_time', 'starttime', dgmdate(TIMESTAMP, 'Y-m-d'), 'calendar', '', '', '', '1');
  52. echo '<tr><td colspan="15"><div class="fixsel"><a href="javascript:void(0);" class="btn_big" id="submit_portal_html">'.$lang['makehtml_createall'].'</a></div></td></tr>', $result;
  53. $adminscript = ADMINSCRIPT;
  54. echo <<<EOT
  55. <script type="text/JavaScript">
  56. var form = document.forms['cpform'];
  57. form.onsubmit = function(){return false;};
  58. _attachEvent($('submit_portal_html'), 'click', function(){
  59. $('mk_result').style.display = 'block';
  60. $('mk_index').style.display = 'none';
  61. this.innerHTML = '$lang[makehtml_recreate]';
  62. var starttime = form['starttime'].value;
  63. if(starttime){
  64. make_html_article(starttime);
  65. }
  66. return false;
  67. });
  68. function make_html_ok() {
  69. var dom = $('mk_index');
  70. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_allfilecomplete]</div>';
  71. }
  72. function make_html_index() {
  73. var dom = $('mk_index');
  74. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitmaking]</div>';
  75. dom.style.display = 'block';
  76. new make_html_batch('portal.php?', 0, make_html_ok, dom, 1);
  77. }
  78. function make_html_category(starttime){
  79. var dom = $('mk_category');
  80. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitmakingcategory]</div>';
  81. dom.style.display = 'block';
  82. starttime = starttime || form['starttime'].value;
  83. var x = new Ajax();
  84. x.get('$adminscript?action=makehtml&operation=catids&inajax=1&frame=no&starttime='+starttime, function (s) {
  85. if(s) {
  86. new make_html_batch('portal.php?mod=list&catid=', s.split(','), make_html_topic, dom);
  87. } else {
  88. dom.innerHTML = '$lang[makehtml_nofindcategory]<br/>$lang[makehtml_startmaketopic]<br /><a href="javascript:void(0);" onclick="\$(\'mk_category\').style.display = \'none\';make_html_topic();">$lang[makehtml_browser_error]</a>';
  89. setTimeout(function(){\$('mk_category').style.display = 'none'; make_html_topic();}, 1000);
  90. }
  91. });
  92. }
  93. function make_html_topic(starttime){
  94. var dom = $('mk_topic');
  95. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitchecktopic]</div>';
  96. dom.style.display = 'block';
  97. starttime = starttime || form['starttime'].value;
  98. var x = new Ajax();
  99. x.get('$adminscript?action=makehtml&operation=topicids&inajax=1&frame=no&starttime='+starttime, function (s) {
  100. if(s) {
  101. new make_html_batch('portal.php?mod=topic&topicid=', s.split(','), make_html_index, dom);
  102. } else {
  103. dom.innerHTML = '$lang[makehtml_nofindtopic]<br/>$lang[makehtml_startmakeindex]<br /><a href="javascript:void(0);" onclick="\$(\'mk_category\').style.display = \'none\';make_html_index();">$lang[makehtml_browser_error]</a>';
  104. setTimeout(function(){\$('mk_category').style.display = 'none'; make_html_index();}, 1000);
  105. }
  106. });
  107. }
  108. function make_html_article(starttime) {
  109. var dom = $('mk_article');
  110. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitcheckarticle]</div>';
  111. dom.style.display = 'block';
  112. var x = new Ajax();
  113. x.get('$adminscript?action=makehtml&operation=aids&inajax=1&frame=no&starttime='+starttime, function (s) {
  114. if(s){
  115. new make_html_batch('portal.php?mod=view&aid=', s.split(','), make_html_category, dom);
  116. } else {
  117. dom.innerHTML = '$lang[makehtml_nofindarticle]<br/>$lang[makehtml_startmakecategory]<br /><a href="javascript:void(0);" onclick="\$(\'mk_article\').style.display = \'none\';make_html_category();">$lang[makehtml_browser_error]</a>';
  118. setTimeout(function(){\$('mk_article').style.display = 'none'; make_html_category();}, 1000);
  119. }
  120. });
  121. }
  122. </script>
  123. EOT;
  124. showtablefooter();
  125. showformfooter();
  126. } elseif($operation == 'index') {
  127. showtips('makehtml_tips_index');
  128. showformheader('makehtml&operation=index');
  129. showtableheader('');
  130. echo '<script type="text/javascript" src="'.STATICURL.'js/makehtml.js?1"></script>', $css;
  131. echo '<tr><td colspan="15"><div class="fixsel"><a href="javascript:void(0);" class="btn_big" id="submit_portal_html">'.$lang['makehtml_createindex'].'</a></div></td></tr>', $result;
  132. $adminscript = ADMINSCRIPT;
  133. echo <<<EOT
  134. <script type="text/JavaScript">
  135. var form = document.forms['cpform'];
  136. form.onsubmit = function(){return false;};
  137. _attachEvent($('submit_portal_html'), 'click', function(){
  138. $('mk_result').style.display = 'block';
  139. $('mk_index').style.display = 'none';
  140. this.innerHTML = '$lang[makehtml_recreate]';
  141. this.disabled = true;
  142. make_html_index();
  143. return false;
  144. });
  145. function make_html_index() {
  146. var dom = $('mk_index');
  147. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitmaking]</div>';
  148. dom.style.display = 'block';
  149. new make_html_batch('portal.php?', 0, null, dom, 1);
  150. }
  151. </script>
  152. EOT;
  153. showtablefooter();
  154. showformfooter();
  155. } elseif($operation == 'category') {
  156. loadcache('portalcategory');
  157. showtips('makehtml_tips_category');
  158. showformheader('makehtml&operation=category');
  159. showtableheader('');
  160. echo '<script type="text/javascript" src="'.STATICURL.'js/calendar.js"></script>',
  161. '<script type="text/javascript" src="'.STATICURL.'js/makehtml.js?1"></script>',
  162. $css;
  163. showsetting('start_time', 'starttime', '', 'calendar', '', '', '', '1');
  164. $selectdata = array('category', array(array(0, $lang['makehtml_createallcategory'])));
  165. mk_format_category(array_keys($_G['cache']['portalcategory']));
  166. showsetting('makehtml_selectcategory', $selectdata, 0, 'mselect');
  167. echo '<tr><td colspan="15"><div class="fixsel"><a href="javascript:void(0);" class="btn_big" id="submit_portal_html">'.$lang['makehtml_createcategory'].'</a></div></td></tr>', $result;
  168. $adminscript = ADMINSCRIPT;
  169. echo <<<EOT
  170. <script type="text/JavaScript">
  171. var form = document.forms['cpform'];
  172. form.onsubmit = function(){return false;};
  173. _attachEvent($('submit_portal_html'), 'click', function(){
  174. $('mk_result').style.display = 'block';
  175. $('mk_index').style.display = 'none';
  176. this.innerHTML = '$lang[makehtml_recreate]';
  177. var starttime = form['starttime'].value;
  178. if(starttime){
  179. make_html_category(starttime);
  180. } else {
  181. var category = form['category'];
  182. var allcatids = [];
  183. var selectedids = [];
  184. for(var i = 0; i < category.options.length; i++) {
  185. var option = category.options[i];
  186. allcatids.push(option.value);
  187. if(option.selected) {
  188. selectedids.push(option.value);
  189. }
  190. }
  191. if(selectedids.length) {
  192. new make_html_batch('portal.php?mod=list&catid=', selectedids[0] == 0 ? allcatids : selectedids, make_html_category_ok, $('mk_category'));
  193. } else {
  194. var dom = $('mk_index');
  195. dom.style.display = 'block';
  196. dom.innerHTML = '$lang[makehtml_nofindcategory]';
  197. }
  198. }
  199. return false;
  200. });
  201. function make_html_category_ok() {
  202. var dom = $('mk_index');
  203. dom.style.display = 'block';
  204. dom.style.color = 'green';
  205. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_selectcategorycomplete]</div>';
  206. }
  207. function make_html_category(starttime){
  208. var dom = $('mk_category');
  209. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitmakingcategory]</div>';
  210. dom.style.display = 'block';
  211. starttime = starttime || form['starttime'].value;
  212. var x = new Ajax();
  213. x.get('$adminscript?action=makehtml&operation=catids&inajax=1&frame=no&starttime='+starttime, function (s) {
  214. if(s) {
  215. new make_html_batch('portal.php?mod=list&catid=', s.split(','), make_html_category_ok, dom);
  216. } else {
  217. dom.innerHTML = '$lang[makehtml_nofindcategory]';
  218. setTimeout(function(){\$('mk_category').style.display = 'none'; make_html_index();}, 1000);
  219. }
  220. });
  221. }
  222. </script>
  223. EOT;
  224. showtablefooter();
  225. showformfooter();
  226. } elseif($operation == 'article') {
  227. loadcache('portalcategory');
  228. showtips('makehtml_tips_article');
  229. showformheader('makehtml&operation=category');
  230. showtableheader('');
  231. echo '<script type="text/javascript" src="'.STATICURL.'js/calendar.js"></script>',
  232. '<script type="text/javascript" src="'.STATICURL.'js/makehtml.js?1"></script>',
  233. $css;
  234. showsetting('start_time', 'starttime', dgmdate(TIMESTAMP - 86400, 'Y-m-d'), 'calendar', '', '', '', '1');
  235. $selectdata = array('category', array(array(0, $lang['makehtml_createallcategory'])));
  236. mk_format_category(array_keys($_G['cache']['portalcategory']));
  237. showsetting('makehtml_selectcategory', $selectdata, 0, 'mselect');
  238. showsetting('makehtml_startid', 'startid', 0, 'text');
  239. showsetting('makehtml_endid', 'endid', 0, 'text');
  240. echo '<tr><td colspan="15"><div class="fixsel"><a href="javascript:void(0);" class="btn_big" id="submit_portal_html">'.$lang['makehtml_createarticle'].'</a></div></td></tr>', $result;
  241. $adminscript = ADMINSCRIPT;
  242. echo <<<EOT
  243. <script type="text/JavaScript">
  244. var form = document.forms['cpform'];
  245. form.onsubmit = function(){return false;};
  246. _attachEvent($('submit_portal_html'), 'click', function(){
  247. $('mk_result').style.display = 'block';
  248. $('mk_index').style.display = 'none';
  249. this.innerHTML = '$lang[makehtml_recreate]';
  250. var starttime = form['starttime'].value;
  251. var category = form['category'];
  252. var allcatids = [];
  253. var selectedids = [];
  254. for(var i = 0; i < category.options.length; i++) {
  255. var option = category.options[i];
  256. allcatids.push(option.value);
  257. if(option.selected) {
  258. selectedids.push(option.value);
  259. }
  260. }
  261. var startid = parseInt(form['startid'].value);
  262. var endid = parseInt(form['endid'].value);
  263. if(starttime || selectedids.length || startid || endid) {
  264. make_html_article(starttime, selectedids[0] == 0 ? -1 : selectedids, startid, endid);
  265. } else {
  266. var dom = $('mk_index');
  267. dom.style.display = 'block';
  268. dom.innerHTML = '$lang[makehtml_nofindarticle]';
  269. }
  270. return false;
  271. });
  272. function make_html_article_ok() {
  273. var dom = $('mk_index');
  274. dom.style.display = 'block';
  275. dom.style.color = 'green';
  276. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_allarticlecomplete]</div>';
  277. }
  278. function make_html_article(starttime, catids, startid, endid) {
  279. catids = catids || -1;
  280. startid = startid || 0;
  281. endid = endid || 0;
  282. var dom = $('mk_article');
  283. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitcheckarticle]</div>';
  284. dom.style.display = 'block';
  285. var x = new Ajax();
  286. x.get('$adminscript?action=makehtml&operation=aids&inajax=1&frame=no&starttime='+starttime+'&catids='+(catids == -1 ? '' : catids.join(','))+'&startid='+startid+'&endid='+endid, function (s) {
  287. if(s && s.indexOf('<') < 0){
  288. new make_html_batch('portal.php?mod=view&aid=', s.split(','), make_html_article_ok, dom);
  289. } else {
  290. dom.innerHTML = '$lang[makehtml_nofindarticle]';
  291. }
  292. });
  293. }
  294. </script>
  295. EOT;
  296. showtablefooter();
  297. showformfooter();
  298. } elseif ($operation == 'aids') {
  299. $starttime = strtotime($_GET['starttime']);
  300. $catids = $_GET['catids'];
  301. if($catids) {
  302. $catids = array_map('intval', explode(',', $catids));
  303. }
  304. $startid = intval($_GET['startid']);
  305. $endid = intval($_GET['endid']);
  306. $data = array();
  307. if($starttime || $catids || $startid || $endid) {
  308. $data = C::t('portal_article_title')->fetch_all_aid_by_dateline($starttime, $catids, $startid, $endid);
  309. }
  310. helper_output::xml($data ? implode(',', array_keys($data)) : '');
  311. } elseif($operation == 'topic') {
  312. showtips('makehtml_tips_topic');
  313. showformheader('makehtml&operation=topic');
  314. showtableheader('');
  315. echo '<script type="text/javascript" src="'.STATICURL.'js/calendar.js"></script>',
  316. '<script type="text/javascript" src="'.STATICURL.'js/makehtml.js?1"></script>',
  317. $css;
  318. showsetting('start_time', 'starttime', '', 'calendar', '', '', '', '1');
  319. echo '<tr><td colspan="15"><div class="fixsel"><a href="javascript:void(0);" class="btn_big" id="submit_portal_html">'.$lang['makehtml_createtopic'].'</a></div></td></tr>', $result;
  320. $adminscript = ADMINSCRIPT;
  321. echo <<<EOT
  322. <script type="text/JavaScript">
  323. var form = document.forms['cpform'];
  324. form.onsubmit = function(){return false;};
  325. _attachEvent($('submit_portal_html'), 'click', function(){
  326. $('mk_result').style.display = 'block';
  327. $('mk_index').style.display = 'none';
  328. this.innerHTML = '$lang[makehtml_recreate]';
  329. var starttime = form['starttime'].value;
  330. if(starttime) {
  331. make_html_topic(starttime);
  332. } else {
  333. var dom = $('mk_index');
  334. dom.style.display = 'block';
  335. dom.innerHTML = '$lang[makehtml_nofindtopic]';
  336. }
  337. return false;
  338. });
  339. function make_html_topic_ok() {
  340. var dom = $('mk_index');
  341. dom.style.display = 'block';
  342. dom.style.color = 'green';
  343. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_alltopiccomplete]</div>';
  344. }
  345. function make_html_topic(starttime) {
  346. var dom = $('mk_topic');
  347. dom.innerHTML = '<div class="mk_msg">$lang[makehtml_waitchecktopic]</div>';
  348. dom.style.display = 'block';
  349. var x = new Ajax();
  350. x.get('$adminscript?action=makehtml&operation=topicids&inajax=1&frame=no&starttime='+starttime, function (s) {
  351. if(s && s.indexOf('<') < 0){
  352. new make_html_batch('portal.php?mod=topic&topicid=', s.split(','), make_html_topic_ok, dom);
  353. } else {
  354. dom.innerHTML = '$lang[makehtml_nofindtopic]';
  355. }
  356. });
  357. }
  358. </script>
  359. EOT;
  360. showtablefooter();
  361. showformfooter();
  362. } elseif ($operation == 'topicids') {
  363. $starttime = strtotime($_GET['starttime']);
  364. $data = array();
  365. if($starttime) {
  366. $data = C::t('portal_topic')->fetch_all_topicid_by_dateline($starttime);
  367. }
  368. helper_output::xml($data ? implode(',', array_keys($data)) : '');
  369. } elseif ($operation == 'catids') {
  370. $starttime = strtotime($_GET['starttime']);
  371. $data = array();
  372. if($starttime) {
  373. loadcache('portalcategory');
  374. foreach ($_G['cache']['portalcategory'] as $key => $value) {
  375. if($value['lastpublish'] >= $starttime) {
  376. $data[$key] = $key;
  377. }
  378. }
  379. }
  380. helper_output::xml($data ? implode(',', $data) : '');
  381. } elseif ($operation == 'makehtmlsetting') {
  382. if(!submitcheck('makehtmlsetting')) {
  383. $setting = $_G['setting'];
  384. showformheader("makehtml&operation=makehtmlsetting");
  385. showtableheader('', 'nobottom', 'id="makehtml"'.($_GET['operation'] != 'makehtmlsetting' ? ' style="display: none"' : ''));
  386. showsetting('setting_functions_makehtml', 'settingnew[makehtml][flag]', $setting['makehtml']['flag'], 'radio', 0, 1);
  387. showsetting('setting_functions_makehtml_extendname', 'settingnew[makehtml][extendname]', $setting['makehtml']['extendname'] ? $setting['makehtml']['extendname'] : 'html', 'text');
  388. showsetting('setting_functions_makehtml_articlehtmldir', 'settingnew[makehtml][articlehtmldir]', $setting['makehtml']['articlehtmldir'], 'text');
  389. $dirformat = array('settingnew[makehtml][htmldirformat]',
  390. array(array(0, dgmdate(TIMESTAMP, '/Ym/')),
  391. array(1, dgmdate(TIMESTAMP, '/Ym/d/')),
  392. array(2, dgmdate(TIMESTAMP, '/Y/m/')),
  393. array(3, dgmdate(TIMESTAMP, '/Y/m/d/')))
  394. );
  395. showsetting('setting_functions_makehtml_htmldirformat', $dirformat, $setting['makehtml']['htmldirformat'], 'select');
  396. showsetting('setting_functions_makehtml_topichtmldir', 'settingnew[makehtml][topichtmldir]', $setting['makehtml']['topichtmldir'], 'text');
  397. showsetting('setting_functions_makehtml_indexname', 'settingnew[makehtml][indexname]', $setting['makehtml']['indexname'] ? $setting['makehtml']['indexname'] : 'index', 'text');
  398. showtagfooter('tbody');
  399. showtablefooter();
  400. showsubmit('makehtmlsetting', 'submit');
  401. showformfooter();
  402. } else {
  403. $settingnew = $_GET['settingnew'];
  404. if(isset($settingnew['makehtml'])) {
  405. $settingnew['makehtml']['flag'] = intval($settingnew['makehtml']['flag']);
  406. if(!$settingnew['makehtml']['extendname']) {
  407. $settingnew['makehtml']['extendname'] = 'html';
  408. } else {
  409. $re = NULL;
  410. preg_match_all('/[^\w\d\_\.]/',$settingnew['makehtml']['extendname'],$re);
  411. if(!empty($re[0]) || strpos('..', $settingnew['makehtml']['extendname']) !== false) {
  412. cpmsg(cplang('setting_functions_makehtml_extendname_invalid').','.cplang('return'), NULL, 'error');
  413. }
  414. }
  415. if(!$settingnew['makehtml']['indexname']) {
  416. $settingnew['makehtml']['indexname'] = 'index';
  417. } else {
  418. $re = NULL;
  419. preg_match_all('/[^\w\d\_]/',$settingnew['makehtml']['indexname'],$re);
  420. if(!empty($re[0]) || strpos('..', $settingnew['makehtml']['indexname']) !== false) {
  421. cpmsg(cplang('setting_functions_makehtml_indexname_invalid').','.cplang('return'), NULL, 'error');
  422. }
  423. }
  424. $settingnew['makehtml']['articlehtmldir'] = trim($settingnew['makehtml']['articlehtmldir'], ' /');
  425. $re = NULL;
  426. preg_match_all('/[^\w\d\_\\]/',$settingnew['makehtml']['articlehtmldir'],$re);
  427. if(!empty($re[0])) {
  428. cpmsg(cplang('setting_functions_makehtml_articlehtmldir_invalid').','.cplang('return'), NULL, 'error');
  429. }
  430. $settingnew['makehtml']['topichtmldir'] = trim($settingnew['makehtml']['topichtmldir'], ' /');
  431. $re = NULL;
  432. preg_match_all('/[^\w\d\_\\]/',$settingnew['makehtml']['topichtmldir'],$re);
  433. if(!empty($re[0])) {
  434. cpmsg(cplang('setting_functions_makehtml_topichtmldir_invalid').','.cplang('return'), NULL, 'error');
  435. }
  436. $settingnew['makehtml']['htmldirformat'] = intval($settingnew['makehtml']['htmldirformat']);
  437. C::t('common_setting')->update('makehtml', $settingnew['makehtml']);
  438. updatecache('setting');
  439. }
  440. cpmsg('setting_update_succeed', 'action=makehtml&operation=makehtmlsetting', 'succeed');
  441. }
  442. } elseif ($operation == 'cleanhtml') {
  443. $setting = $_G['setting']['makehtml'];
  444. if(!empty($setting['flag'])) {
  445. cpmsg('admincp_makehtml_cleanhtml_error', 'action=makehtml&operation=makehtmlsetting', 'error');
  446. } else {
  447. if(!submitcheck('cleanhtml')) {
  448. showformheader("makehtml&operation=cleanhtml");
  449. showtableheader();
  450. showsetting('setting_functions_makehtml_cleanhtml', array('cleandata', array(cplang('setting_functions_makehtml_cleanhtml_index'), cplang('setting_functions_makehtml_cleanhtml_category'), cplang('setting_functions_makehtml_cleanhtml_other'))), 0, 'binmcheckbox');
  451. showtagfooter('tbody');
  452. showtablefooter();
  453. showsubmit('cleanhtml', 'submit');
  454. showformfooter();
  455. } else {
  456. if(isset($_GET['cleandata'])) {
  457. $cleandata = $_GET['cleandata'];
  458. if(isset($cleandata[1])) {
  459. unlink(DISCUZ_ROOT.'./'.$setting['indexname'].'.'.$setting['extendname']);
  460. }
  461. if(isset($cleandata[2])) {
  462. loadcache('portalcategory');
  463. foreach($_G['cache']['portalcategory'] as $cat) {
  464. if($cat['fullfoldername']) {
  465. unlink($cat['fullfoldername'].'/index.'.$setting['extendname']);
  466. }
  467. }
  468. }
  469. if(isset($cleandata[3])) {
  470. if(!empty($setting['articlehtmldir']) && $setting['articlehtmldir'] === $setting['topichtmldir']) {
  471. drmdir(DISCUZ_ROOT.'./'.$setting['articlehtmldir'], $setting['extendname']);
  472. } elseif(!empty($setting['topichtmldir'])) {
  473. drmdir(DISCUZ_ROOT.'./'.$setting['topichtmldir'], $setting['extendname']);
  474. } elseif(!empty($setting['articlehtmldir'])) {
  475. drmdir(DISCUZ_ROOT.'./'.$setting['articlehtmldir'], $setting['extendname']);
  476. }
  477. if(empty($setting['articlehtmldir'])) {
  478. loadcache('portalcategory');
  479. foreach($_G['cache']['portalcategory'] as $cat) {
  480. if($cat['fullfoldername']) {
  481. if(($dirobj = dir(DISCUZ_ROOT.'./'.$cat['fullfoldername']))) {
  482. while(false !== ($file = $dirobj->read())) {
  483. if ($file != "." && $file != "..") {
  484. $path = $dirobj->path.'/'.$file;
  485. if(is_dir($path) && false === check_son_folder($file, $cat)) {
  486. drmdir($path, $setting['extendname']);
  487. }
  488. }
  489. }
  490. $dirobj->close();
  491. }
  492. }
  493. }
  494. }
  495. }
  496. cpmsg('admincp_makehtml_cleanhtml_succeed', 'action=makehtml&operation=cleanhtml', 'succeed');
  497. } else {
  498. cpmsg('admincp_makehtml_cleanhtml_choose_item', 'action=makehtml&operation=cleanhtml', 'error');
  499. }
  500. }
  501. }
  502. }
  503. function mk_format_category($catids) {
  504. global $_G, $selectdata;
  505. foreach($catids as $catid) {
  506. if(!isset($selectdata[1][$catid])) {
  507. $cate = $_G['cache']['portalcategory'][$catid];
  508. if($cate['level'] == 0) {
  509. $selectdata[1][$catid] = array($catid, $cate['catname']);
  510. mk_format_category($cate['children']);
  511. } elseif ($cate['level'] == 1) {
  512. $selectdata[1][$catid] = array($catid, '&nbsp;&nbsp;&nbsp;'.$cate['catname']);
  513. mk_format_category($cate['children']);
  514. } elseif ($cate['level'] == 2) {
  515. $selectdata[1][$catid] = array($catid, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$cate['catname']);
  516. }
  517. }
  518. }
  519. }
  520. function drmdir($dir, $fileext = 'html') {
  521. if($dir === '.' || $dir === '..' || strpos($dir, '..') !== false) {
  522. return false;
  523. }
  524. if(substr($dir,-1) === "/") {
  525. $dir = substr($dir,0,-1);
  526. }
  527. if(!file_exists($dir) || !is_dir($dir)) {
  528. return false;
  529. } elseif(!is_readable($dir)) {
  530. return false;
  531. } else {
  532. if(($dirobj = dir($dir))) {
  533. while(false !== ($file = $dirobj->read())) {
  534. if ($file != "." && $file != "..") {
  535. $path = $dirobj->path . "/" . $file;
  536. if(is_dir($path)) {
  537. drmdir($path);
  538. } elseif(fileext($path) === $fileext) {
  539. echo $path,"<br>";
  540. unlink($path);
  541. }
  542. }
  543. }
  544. $dirobj->close();
  545. }
  546. rmdir($dir);
  547. return true;
  548. }
  549. return false;
  550. }
  551. function check_son_folder($file, $cat) {
  552. global $_G;
  553. $category = $_G['cache']['portalcategory'];
  554. if(!empty($cat['children'])) {
  555. foreach ($cat['children'] as $catid) {
  556. if($category[$catid]['upid'] == $cat['catid'] && $category[$catid]['foldername'] == $file) {
  557. return true;
  558. }
  559. }
  560. }
  561. return false;
  562. }
  563. ?>