#mk_result {width:100%; margin-top:10px; border: 1px solid #ccc; margin: 0 auto; font-size:16px; text-align:center; display:none; } #mk_article, #mk_category, #mk_index{ line-height:30px;} #progress_bar{ width:400px; height:25px; border:1px solid #09f; margin: 10px auto 0; display:none;} .mk_msg{ width:100%; line-height:120px;} '; $result = '
'; if(!in_array($operation, array('aids', 'catids', 'topicids'))) { $_nav = array(); if(!empty($_G['setting']['makehtml']['flag'])) { $_nav = array( array('makehtml_createall', 'makehtml&operation=all', $operation == 'all'), array('makehtml_createindex', 'makehtml&operation=index', $operation == 'index'), array('makehtml_createcategory', 'makehtml&operation=category', $operation == 'category'), array('makehtml_createarticle', 'makehtml&operation=article', $operation == 'article'), array('makehtml_createtopic', 'makehtml&operation=topic', $operation == 'topic') ); } $_nav[] = array('config', 'makehtml&operation=makehtmlsetting', $operation == 'makehtmlsetting'); if(empty($_G['setting']['makehtml']['flag'])) { $_nav[] = array('makehtml_clear', 'makehtml&operation=cleanhtml', $operation == 'cleanhtml'); } showsubmenu('html', $_nav, ''); } if($operation == 'all') { showtips('makehtml_tips_all'); showformheader('makehtml&operation=all'); showtableheader(''); echo '', '', $css; showsetting('start_time', 'starttime', dgmdate(TIMESTAMP, 'Y-m-d'), 'calendar', '', '', '', '1'); echo '
'.$lang['makehtml_createall'].'
', $result; $adminscript = ADMINSCRIPT; echo << var form = document.forms['cpform']; form.onsubmit = function(){return false;}; _attachEvent($('submit_portal_html'), 'click', function(){ $('mk_result').style.display = 'block'; $('mk_index').style.display = 'none'; this.innerHTML = '$lang[makehtml_recreate]'; var starttime = form['starttime'].value; if(starttime){ make_html_article(starttime); } return false; }); function make_html_ok() { var dom = $('mk_index'); dom.innerHTML = '
$lang[makehtml_allfilecomplete]
'; } function make_html_index() { var dom = $('mk_index'); dom.innerHTML = '
$lang[makehtml_waitmaking]
'; dom.style.display = 'block'; new make_html_batch('portal.php?', 0, make_html_ok, dom, 1); } function make_html_category(starttime){ var dom = $('mk_category'); dom.innerHTML = '
$lang[makehtml_waitmakingcategory]
'; dom.style.display = 'block'; starttime = starttime || form['starttime'].value; var x = new Ajax(); x.get('$adminscript?action=makehtml&operation=catids&inajax=1&frame=no&starttime='+starttime, function (s) { if(s) { new make_html_batch('portal.php?mod=list&catid=', s.split(','), make_html_topic, dom); } else { dom.innerHTML = '$lang[makehtml_nofindcategory]
$lang[makehtml_startmaketopic]
$lang[makehtml_browser_error]'; setTimeout(function(){\$('mk_category').style.display = 'none'; make_html_topic();}, 1000); } }); } function make_html_topic(starttime){ var dom = $('mk_topic'); dom.innerHTML = '
$lang[makehtml_waitchecktopic]
'; dom.style.display = 'block'; starttime = starttime || form['starttime'].value; var x = new Ajax(); x.get('$adminscript?action=makehtml&operation=topicids&inajax=1&frame=no&starttime='+starttime, function (s) { if(s) { new make_html_batch('portal.php?mod=topic&topicid=', s.split(','), make_html_index, dom); } else { dom.innerHTML = '$lang[makehtml_nofindtopic]
$lang[makehtml_startmakeindex]
$lang[makehtml_browser_error]'; setTimeout(function(){\$('mk_category').style.display = 'none'; make_html_index();}, 1000); } }); } function make_html_article(starttime) { var dom = $('mk_article'); dom.innerHTML = '
$lang[makehtml_waitcheckarticle]
'; dom.style.display = 'block'; var x = new Ajax(); x.get('$adminscript?action=makehtml&operation=aids&inajax=1&frame=no&starttime='+starttime, function (s) { if(s){ new make_html_batch('portal.php?mod=view&aid=', s.split(','), make_html_category, dom); } else { dom.innerHTML = '$lang[makehtml_nofindarticle]
$lang[makehtml_startmakecategory]
$lang[makehtml_browser_error]'; setTimeout(function(){\$('mk_article').style.display = 'none'; make_html_category();}, 1000); } }); } EOT; showtablefooter(); showformfooter(); } elseif($operation == 'index') { showtips('makehtml_tips_index'); showformheader('makehtml&operation=index'); showtableheader(''); echo '', $css; echo '
'.$lang['makehtml_createindex'].'
', $result; $adminscript = ADMINSCRIPT; echo << var form = document.forms['cpform']; form.onsubmit = function(){return false;}; _attachEvent($('submit_portal_html'), 'click', function(){ $('mk_result').style.display = 'block'; $('mk_index').style.display = 'none'; this.innerHTML = '$lang[makehtml_recreate]'; this.disabled = true; make_html_index(); return false; }); function make_html_index() { var dom = $('mk_index'); dom.innerHTML = '
$lang[makehtml_waitmaking]
'; dom.style.display = 'block'; new make_html_batch('portal.php?', 0, null, dom, 1); } EOT; showtablefooter(); showformfooter(); } elseif($operation == 'category') { loadcache('portalcategory'); showtips('makehtml_tips_category'); showformheader('makehtml&operation=category'); showtableheader(''); echo '', '', $css; showsetting('start_time', 'starttime', '', 'calendar', '', '', '', '1'); $selectdata = array('category', array(array(0, $lang['makehtml_createallcategory']))); mk_format_category(array_keys($_G['cache']['portalcategory'])); showsetting('makehtml_selectcategory', $selectdata, 0, 'mselect'); echo '', $result; $adminscript = ADMINSCRIPT; echo << var form = document.forms['cpform']; form.onsubmit = function(){return false;}; _attachEvent($('submit_portal_html'), 'click', function(){ $('mk_result').style.display = 'block'; $('mk_index').style.display = 'none'; this.innerHTML = '$lang[makehtml_recreate]'; var starttime = form['starttime'].value; if(starttime){ make_html_category(starttime); } else { var category = form['category']; var allcatids = []; var selectedids = []; for(var i = 0; i < category.options.length; i++) { var option = category.options[i]; allcatids.push(option.value); if(option.selected) { selectedids.push(option.value); } } if(selectedids.length) { new make_html_batch('portal.php?mod=list&catid=', selectedids[0] == 0 ? allcatids : selectedids, make_html_category_ok, $('mk_category')); } else { var dom = $('mk_index'); dom.style.display = 'block'; dom.innerHTML = '$lang[makehtml_nofindcategory]'; } } return false; }); function make_html_category_ok() { var dom = $('mk_index'); dom.style.display = 'block'; dom.style.color = 'green'; dom.innerHTML = '
$lang[makehtml_selectcategorycomplete]
'; } function make_html_category(starttime){ var dom = $('mk_category'); dom.innerHTML = '
$lang[makehtml_waitmakingcategory]
'; dom.style.display = 'block'; starttime = starttime || form['starttime'].value; var x = new Ajax(); x.get('$adminscript?action=makehtml&operation=catids&inajax=1&frame=no&starttime='+starttime, function (s) { if(s) { new make_html_batch('portal.php?mod=list&catid=', s.split(','), make_html_category_ok, dom); } else { dom.innerHTML = '$lang[makehtml_nofindcategory]'; setTimeout(function(){\$('mk_category').style.display = 'none'; make_html_index();}, 1000); } }); } EOT; showtablefooter(); showformfooter(); } elseif($operation == 'article') { loadcache('portalcategory'); showtips('makehtml_tips_article'); showformheader('makehtml&operation=category'); showtableheader(''); echo '', '', $css; showsetting('start_time', 'starttime', dgmdate(TIMESTAMP - 86400, 'Y-m-d'), 'calendar', '', '', '', '1'); $selectdata = array('category', array(array(0, $lang['makehtml_createallcategory']))); mk_format_category(array_keys($_G['cache']['portalcategory'])); showsetting('makehtml_selectcategory', $selectdata, 0, 'mselect'); showsetting('makehtml_startid', 'startid', 0, 'text'); showsetting('makehtml_endid', 'endid', 0, 'text'); echo '', $result; $adminscript = ADMINSCRIPT; echo << var form = document.forms['cpform']; form.onsubmit = function(){return false;}; _attachEvent($('submit_portal_html'), 'click', function(){ $('mk_result').style.display = 'block'; $('mk_index').style.display = 'none'; this.innerHTML = '$lang[makehtml_recreate]'; var starttime = form['starttime'].value; var category = form['category']; var allcatids = []; var selectedids = []; for(var i = 0; i < category.options.length; i++) { var option = category.options[i]; allcatids.push(option.value); if(option.selected) { selectedids.push(option.value); } } var startid = parseInt(form['startid'].value); var endid = parseInt(form['endid'].value); if(starttime || selectedids.length || startid || endid) { make_html_article(starttime, selectedids[0] == 0 ? -1 : selectedids, startid, endid); } else { var dom = $('mk_index'); dom.style.display = 'block'; dom.innerHTML = '$lang[makehtml_nofindarticle]'; } return false; }); function make_html_article_ok() { var dom = $('mk_index'); dom.style.display = 'block'; dom.style.color = 'green'; dom.innerHTML = '
$lang[makehtml_allarticlecomplete]
'; } function make_html_article(starttime, catids, startid, endid) { catids = catids || -1; startid = startid || 0; endid = endid || 0; var dom = $('mk_article'); dom.innerHTML = '
$lang[makehtml_waitcheckarticle]
'; dom.style.display = 'block'; var x = new Ajax(); x.get('$adminscript?action=makehtml&operation=aids&inajax=1&frame=no&starttime='+starttime+'&catids='+(catids == -1 ? '' : catids.join(','))+'&startid='+startid+'&endid='+endid, function (s) { if(s && s.indexOf('<') < 0){ new make_html_batch('portal.php?mod=view&aid=', s.split(','), make_html_article_ok, dom); } else { dom.innerHTML = '$lang[makehtml_nofindarticle]'; } }); } EOT; showtablefooter(); showformfooter(); } elseif ($operation == 'aids') { $starttime = strtotime($_GET['starttime']); $catids = $_GET['catids']; if($catids) { $catids = array_map('intval', explode(',', $catids)); } $startid = intval($_GET['startid']); $endid = intval($_GET['endid']); $data = array(); if($starttime || $catids || $startid || $endid) { $data = C::t('portal_article_title')->fetch_all_aid_by_dateline($starttime, $catids, $startid, $endid); } helper_output::xml($data ? implode(',', array_keys($data)) : ''); } elseif($operation == 'topic') { showtips('makehtml_tips_topic'); showformheader('makehtml&operation=topic'); showtableheader(''); echo '', '', $css; showsetting('start_time', 'starttime', '', 'calendar', '', '', '', '1'); echo '', $result; $adminscript = ADMINSCRIPT; echo << var form = document.forms['cpform']; form.onsubmit = function(){return false;}; _attachEvent($('submit_portal_html'), 'click', function(){ $('mk_result').style.display = 'block'; $('mk_index').style.display = 'none'; this.innerHTML = '$lang[makehtml_recreate]'; var starttime = form['starttime'].value; if(starttime) { make_html_topic(starttime); } else { var dom = $('mk_index'); dom.style.display = 'block'; dom.innerHTML = '$lang[makehtml_nofindtopic]'; } return false; }); function make_html_topic_ok() { var dom = $('mk_index'); dom.style.display = 'block'; dom.style.color = 'green'; dom.innerHTML = '
$lang[makehtml_alltopiccomplete]
'; } function make_html_topic(starttime) { var dom = $('mk_topic'); dom.innerHTML = '
$lang[makehtml_waitchecktopic]
'; dom.style.display = 'block'; var x = new Ajax(); x.get('$adminscript?action=makehtml&operation=topicids&inajax=1&frame=no&starttime='+starttime, function (s) { if(s && s.indexOf('<') < 0){ new make_html_batch('portal.php?mod=topic&topicid=', s.split(','), make_html_topic_ok, dom); } else { dom.innerHTML = '$lang[makehtml_nofindtopic]'; } }); } EOT; showtablefooter(); showformfooter(); } elseif ($operation == 'topicids') { $starttime = strtotime($_GET['starttime']); $data = array(); if($starttime) { $data = C::t('portal_topic')->fetch_all_topicid_by_dateline($starttime); } helper_output::xml($data ? implode(',', array_keys($data)) : ''); } elseif ($operation == 'catids') { $starttime = strtotime($_GET['starttime']); $data = array(); if($starttime) { loadcache('portalcategory'); foreach ($_G['cache']['portalcategory'] as $key => $value) { if($value['lastpublish'] >= $starttime) { $data[$key] = $key; } } } helper_output::xml($data ? implode(',', $data) : ''); } elseif ($operation == 'makehtmlsetting') { if(!submitcheck('makehtmlsetting')) { $setting = $_G['setting']; showformheader("makehtml&operation=makehtmlsetting"); showtableheader('', 'nobottom', 'id="makehtml"'.($_GET['operation'] != 'makehtmlsetting' ? ' style="display: none"' : '')); showsetting('setting_functions_makehtml', 'settingnew[makehtml][flag]', $setting['makehtml']['flag'], 'radio', 0, 1); showsetting('setting_functions_makehtml_extendname', 'settingnew[makehtml][extendname]', $setting['makehtml']['extendname'] ? $setting['makehtml']['extendname'] : 'html', 'text'); showsetting('setting_functions_makehtml_articlehtmldir', 'settingnew[makehtml][articlehtmldir]', $setting['makehtml']['articlehtmldir'], 'text'); $dirformat = array('settingnew[makehtml][htmldirformat]', array(array(0, dgmdate(TIMESTAMP, '/Ym/')), array(1, dgmdate(TIMESTAMP, '/Ym/d/')), array(2, dgmdate(TIMESTAMP, '/Y/m/')), array(3, dgmdate(TIMESTAMP, '/Y/m/d/'))) ); showsetting('setting_functions_makehtml_htmldirformat', $dirformat, $setting['makehtml']['htmldirformat'], 'select'); showsetting('setting_functions_makehtml_topichtmldir', 'settingnew[makehtml][topichtmldir]', $setting['makehtml']['topichtmldir'], 'text'); showsetting('setting_functions_makehtml_indexname', 'settingnew[makehtml][indexname]', $setting['makehtml']['indexname'] ? $setting['makehtml']['indexname'] : 'index', 'text'); showtagfooter('tbody'); showtablefooter(); showsubmit('makehtmlsetting', 'submit'); showformfooter(); } else { $settingnew = $_GET['settingnew']; if(isset($settingnew['makehtml'])) { $settingnew['makehtml']['flag'] = intval($settingnew['makehtml']['flag']); $settingnew['makehtml']['extendname'] = !$settingnew['makehtml']['extendname'] || !in_array($settingnew['makehtml']['extendname'], array('htm', 'html')) ? 'html' : $settingnew['makehtml']['extendname']; if(!$settingnew['makehtml']['indexname']) { $settingnew['makehtml']['indexname'] = 'index'; } else { $re = NULL; preg_match_all('/[^\w\d\_]/',$settingnew['makehtml']['indexname'],$re); if(!empty($re[0]) || strpos('..', $settingnew['makehtml']['indexname']) !== false) { cpmsg(cplang('setting_functions_makehtml_indexname_invalid').','.cplang('return'), NULL, 'error'); } } $settingnew['makehtml']['articlehtmldir'] = trim($settingnew['makehtml']['articlehtmldir'], ' /\\'); $re = NULL; preg_match_all('/[^\w\d\_\\]/',$settingnew['makehtml']['articlehtmldir'],$re); if(!empty($re[0]) || !check_html_dir($settingnew['makehtml']['articlehtmldir'])) { cpmsg(cplang('setting_functions_makehtml_articlehtmldir_invalid').','.cplang('return'), NULL, 'error'); } $settingnew['makehtml']['topichtmldir'] = trim($settingnew['makehtml']['topichtmldir'], ' /\\'); $re = NULL; preg_match_all('/[^\w\d\_\\]/',$settingnew['makehtml']['topichtmldir'],$re); if(!empty($re[0]) || !check_html_dir($settingnew['makehtml']['topichtmldir'])) { cpmsg(cplang('setting_functions_makehtml_topichtmldir_invalid').','.cplang('return'), NULL, 'error'); } $topichtmldir = realpath($settingnew['makehtml']['topichtmldir']); if($topichtmldir === false) { dmkdir($settingnew['makehtml']['topichtmldir'], 777, false); $topichtmldir = realpath($settingnew['makehtml']['topichtmldir']); rmdir($settingnew['makehtml']['topichtmldir']); if($topichtmldir === false) { cpmsg(cplang('setting_functions_makehtml_topichtmldir_invalid').','.cplang('return'), NULL, 'error'); } } $topichtmldir = str_replace(DISCUZ_ROOT, '', $topichtmldir); $sysdir = array('api', 'archiver', 'config', 'data/diy', 'data\diy', 'install', 'source', 'static', 'template', 'uc_client', 'uc_server'); foreach($sysdir as $_dir) { if(stripos($topichtmldir, $_dir) === 0) { cpmsg(cplang('setting_functions_makehtml_topichtmldir_invalid').','.cplang('return'), NULL, 'error'); } } $settingnew['makehtml']['htmldirformat'] = intval($settingnew['makehtml']['htmldirformat']); C::t('common_setting')->update('makehtml', $settingnew['makehtml']); updatecache('setting'); } cpmsg('setting_update_succeed', 'action=makehtml&operation=makehtmlsetting', 'succeed'); } } elseif ($operation == 'cleanhtml') { $setting = $_G['setting']['makehtml']; if(!empty($setting['flag'])) { cpmsg('admincp_makehtml_cleanhtml_error', 'action=makehtml&operation=makehtmlsetting', 'error'); } else { if(!submitcheck('cleanhtml')) { showformheader("makehtml&operation=cleanhtml"); showtableheader(); 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'); showtagfooter('tbody'); showtablefooter(); showsubmit('cleanhtml', 'submit'); showformfooter(); } else { if(isset($_GET['cleandata'])) { $cleandata = $_GET['cleandata']; if(isset($cleandata[1])) { unlink(DISCUZ_ROOT.'./'.$setting['indexname'].'.'.$setting['extendname']); } if(isset($cleandata[2])) { loadcache('portalcategory'); foreach($_G['cache']['portalcategory'] as $cat) { if($cat['fullfoldername']) { unlink($cat['fullfoldername'].'/index.'.$setting['extendname']); } } } if(isset($cleandata[3])) { if(!empty($setting['articlehtmldir']) && $setting['articlehtmldir'] === $setting['topichtmldir']) { drmdir(DISCUZ_ROOT.'./'.$setting['articlehtmldir'], $setting['extendname']); } elseif(!empty($setting['topichtmldir'])) { drmdir(DISCUZ_ROOT.'./'.$setting['topichtmldir'], $setting['extendname']); } elseif(!empty($setting['articlehtmldir'])) { drmdir(DISCUZ_ROOT.'./'.$setting['articlehtmldir'], $setting['extendname']); } if(empty($setting['articlehtmldir'])) { loadcache('portalcategory'); foreach($_G['cache']['portalcategory'] as $cat) { if($cat['fullfoldername']) { if(($dirobj = dir(DISCUZ_ROOT.'./'.$cat['fullfoldername']))) { while(false !== ($file = $dirobj->read())) { if ($file != "." && $file != "..") { $path = $dirobj->path.'/'.$file; if(is_dir($path) && false === check_son_folder($file, $cat)) { drmdir($path, $setting['extendname']); } } } $dirobj->close(); } } } } } cpmsg('admincp_makehtml_cleanhtml_succeed', 'action=makehtml&operation=cleanhtml', 'succeed'); } else { cpmsg('admincp_makehtml_cleanhtml_choose_item', 'action=makehtml&operation=cleanhtml', 'error'); } } } } function mk_format_category($catids) { global $_G, $selectdata; foreach($catids as $catid) { if(!isset($selectdata[1][$catid])) { $cate = $_G['cache']['portalcategory'][$catid]; if($cate['level'] == 0) { $selectdata[1][$catid] = array($catid, $cate['catname']); mk_format_category($cate['children']); } elseif ($cate['level'] == 1) { $selectdata[1][$catid] = array($catid, '   '.$cate['catname']); mk_format_category($cate['children']); } elseif ($cate['level'] == 2) { $selectdata[1][$catid] = array($catid, '      '.$cate['catname']); } } } } function drmdir($dir, $fileext = 'html') { if($dir === '.' || $dir === '..' || strpos($dir, '..') !== false) { return false; } if(substr($dir,-1) === "/") { $dir = substr($dir,0,-1); } if(!file_exists($dir) || !is_dir($dir)) { return false; } elseif(!is_readable($dir)) { return false; } else { if(($dirobj = dir($dir))) { while(false !== ($file = $dirobj->read())) { if ($file != "." && $file != "..") { $path = $dirobj->path . "/" . $file; if(is_dir($path)) { drmdir($path); } elseif(fileext($path) === $fileext) { echo $path,"
"; unlink($path); } } } $dirobj->close(); } rmdir($dir); return true; } return false; } function check_son_folder($file, $cat) { global $_G; $category = $_G['cache']['portalcategory']; if(!empty($cat['children'])) { foreach ($cat['children'] as $catid) { if($category[$catid]['upid'] == $cat['catid'] && $category[$catid]['foldername'] == $file) { return true; } } } return false; } function check_html_dir($dir) { $dir = str_replace("\\", '/', $dir); list($first) = explode('/', $dir); if(in_array(strtolower($first), array('template', 'source', 'config', 'api', 'archiver'), true)) { return false; } return true; } ?>