static function url($info,$page=null,$relative=false) { if ($info['linkto']) return $info['linkto']; if(front::$get['t'] == 'wap'){ if (config::get('wap_html_prefix')){ $html_prefix='/'.trim(config::get('wap_html_prefix'),'/'); } if(front::$rewrite){ if (!$page){ return config::get('site_url').'show_wap_'.$info['aid'].'.htm'; }else{ return config::get('site_url').'show_wap_'.$info['aid'].'_'.$page.'.htm'; } } $type=category::getInstance(); if($info['iswaphtml'] == 2){ return url::create('archive/show/t/wap/aid/'.$info['aid']); } if (!category::getarciswaphtml($info)){ if ($page){ return url::create('archive/show/t/wap/aid/'.$info['aid'].'/page/'.$page); }else{ return url::create('archive/show/t/wap/aid/'.$info['aid']); } }else { if ($info['htmlrule']){ $rule=$info['htmlrule']; }else{ $rule=category::gethtmlrule($info['catid'],'showhtmlrule'); } $rule=str_replace('{$caturl}',$type->htmlpath($info['catid']),$rule); $rule=str_replace('{$dir}',$type->category[$info['catid']]['htmldir'],$rule); $rule=str_replace('{$catid}',$info['catid'],$rule); $rule=str_replace('{$aid}',$info['aid'],$rule); if ($page){ $rule=str_replace('{$page}',$page,$rule); }else{ $rule=preg_replace('/\(.*?\)/','',$rule); $rule=str_replace('_{$page}','',$rule); } $rule=preg_replace('/[\(\)]/','',$rule); $rule=preg_replace('%[\\/]index\.htm1%','',$rule); $rule=rtrim($rule,'/'); $rule=trim($rule,'\\'); if ($relative) return $html_prefix.'/'.$rule; return config::get('base_url').$html_prefix.'/'.$rule; } } if (config::get('html_prefix')) $html_prefix='/'.trim(config::get('html_prefix'),'/'); $type=category::getInstance(); if($info['ishtml'] == 2){ return url::create('archive/show/aid/'.$info['aid']); } if (!category::getarcishtml($info) ||front::$rewrite) if ($page) return url::create('archive/show/aid/'.$info['aid'].'/page/'.$page); else return url::create('archive/show/aid/'.$info['aid']); else { if ($info['htmlrule']) $rule=$info['htmlrule']; else $rule=category::gethtmlrule($info['catid'],'showhtmlrule'); $rule=str_replace('{$caturl}',$type->htmlpath($info['catid']),$rule); $rule=str_replace('{$dir}',$type->category[$info['catid']]['htmldir'],$rule); $rule=str_replace('{$catid}',$info['catid'],$rule); $rule=str_replace('{$aid}',$info['aid'],$rule); if ($page){ $rule=str_replace('{$page}',$page,$rule); }else{ $rule=preg_replace('/\(.*?\)/','',$rule); $rule=str_replace('_{$page}','',$rule); } $rule=preg_replace('/[\(\)]/','',$rule); $rule=preg_replace('%[\\/]index\.htm1%','',$rule); $rule=rtrim($rule,'/'); $rule=trim($rule,'\\'); if ($relative) return $html_prefix.'/'.$rule; return config::get('base_url').$html_prefix.'/'.$rule; } }
function make_show_action() { header('Cache-control: private, must-revalidate'); @set_time_limit(0); $submit = front::post('submit') ? front::post('submit') : front::get('submit'); if (!$submit) return; chkpw('cache_content'); $post = front::$post + front::$get; unset($post['submit']); $c_url = preg_replace('#&make_page=(\d+)#', '', $_SERVER['QUERY_STRING']); $c_url = preg_replace('#&aid_start=(\d+)#', '', $c_url); $c_url = preg_replace('#&aid_end=(\d+)#', '', $c_url); $c_url = preg_replace('#&catid=(\d+)#', '', $c_url); $c_url = preg_replace('#&submit=(\d+)#', '', $c_url); $c_url = 'index.php?' . $c_url; $c_url.='&submit=1'; if ($post['aid_start']) { $aid_start = $post['aid_start']; $aid_end = $post['aid_end']; $where = "aid>=$aid_start and aid<=$aid_end AND (ishtml IS NULL OR ishtml!=2)"; $c_url.='&aid_start=' . $aid_start . '&aid_end=' . $aid_end; } elseif (isset($post['catid'])) { $catid = $post['catid']; $category = category::getInstance(); $categories = $category->sons($catid); $categories[] = $catid; $categories = implode(',', $categories); $where = "catid in(" . $categories . ') and checked=1 AND (ishtml IS NULL OR ishtml!=2)'; $c_url.='&catid=' . $catid; }else{ return; } $case = 'archive'; $act = 'show'; $_GET = array('case' => $case, 'act' => $act); $front = new front(); front::$admin = false; front::$html = true; front::$rewrite = false; front::$get['t'] = 'wap'; $case = $case . '_act'; $case = new $case(); $case->init(); $method = $act . '_action'; $category = category::getInstance(); $time_start = time::getTime(); $archive = new archive(); if (config::get('group_on')) { $make_page = $post['make_page'] == '' ? 1 : $post['make_page']; $archive->getrows($where); $archive_num = $archive->record_count; $group_count = config::get('group_count'); $make_page_num = ceil($archive_num / $group_count); $totalpage = (($make_page - 1) * $group_count) . ',' . $group_count; $c_url.='&make_page=' . ($make_page + 1); } else { $totalpage = ""; } $archives = $archive->getrows($where, $totalpage, '1'); //var_dump($archives); $cpage = 0; foreach ($archives as $arc) { if (!category::getarciswaphtml($arc)) continue; front::$get['aid'] = $arc['aid']; $case->view->archive = $arc; $case->view->aid = $arc['aid']; $case->view->catid = $arc['catid']; $case->view->catid = $case->view->catid; $case->view->topid = category::gettopparent($case->view->catid); $case->view->parentid = $category->getparent($case->view->catid); $template = @$arc['templatewap']; //echo $template;exit; $content = $arc['content']; $case->view->categories = category::getpositionlink2($case->view->catid); $linkword = new linkword(); $linkwords = $linkword->getrows(null, 1000, 'linkorder desc'); foreach ($linkwords as $linkword) { if (trim($linkword['linkurl']) && !preg_match('%^http://$%', trim($linkword['linkurl']))) { $linkword['linktimes'] = (int) $linkword['linktimes']; $link = "<a href='$linkword[linkurl]' target='_blank'>$linkword[linkword]</a>"; } else { $link = "<a href='" . url('archive/search/keyword/' . urlencode($linkword['linkword'])) . "' target='_blank'>$linkword[linkword]</a>"; } if (isset($link)) { $content = preg_replace("%(?!\"]*>)$linkword[linkword](?!\s*\")%i", "\\1$link\\2", $content, $linkword['linktimes']); /* $content=preg_replace("%(?!\"]*>alt=\")(<a.*?>)(\"?!\s*\")%i","\\1\\2",$content,$linkword['linktimes']); */ } unset($link); } $case->view->likenews = $case->getLike($case->view->archive['tag'], $case->view->archive['keyword']); $contents = preg_split('%<div style="page-break-after(.*?)</div>%si', $content); if (!empty($contents)) { $case->view->pages = count($contents); front::$record_count = $case->view->pages * config::get('list_pagesize'); $case->view->pages = count($contents); } else { $case->view->pages = 1; } $taghtml = ''; $tag_table = new tag(); foreach ($tag_table->urls($case->view->archive['tag']) as $tag => $url) { $taghtml.="<a href='$url' target='_blank'>$tag</a> "; } $case->view->archive['tag'] = $taghtml; $case->view->archive['special'] = null; if ($case->view->archive['spid']) { $spurl = special::url($case->view->archive['spid'],special::getishtml($case->view->archive['spid'])); $sptitle = special::gettitle($case->view->archive['spid']); $case->view->archive['special'] = "<a href='$spurl' target='_blank'>$sptitle</a> "; } $case->view->archive['type'] = null; if ($case->view->archive['typeid']) { $typeurl = type::url($case->view->archive['typeid'],1); $typetitle = type::name($case->view->archive['typeid']); $case->view->archive['type'] = "<a href='$typeurl' target='_blank'>$typetitle</a> "; } $case->view->archive['area'] = null; $case->view->archive['area'] = area::getpositonhtml($case->view->archive['province_id'], $case->view->archive['city_id'], $case->view->archive['section_id']); $arc = $case->view->archive; for ($c = 1; $c <= $case->view->pages; $c++) { front::$get['page'] = $c; $case->view->page = $c; if (!empty($contents)) { $content = $contents[$c - 1]; } $arc['content'] = $content; $aid = $arc['aid']; $catid = $arc['catid']; $sql1 = "SELECT * FROM `{$archive->name}` WHERE catid = '$catid' AND aid > '$aid' ORDER BY aid ASC LIMIT 0,1"; $sql2 = "SELECT * FROM `{$archive->name}` WHERE catid = '$catid' AND aid < '$aid' ORDER BY aid DESC LIMIT 0,1"; $n = $archive->rec_query_one($sql1); $p = $archive->rec_query_one($sql2); $arc['p'] = $p; $arc['n'] = $n; $arc['p']['url'] = archive::url($p); $arc['n']['url'] = archive::url($n); $arc['strgrade'] = archive::getgrade($arc['grade']); $arc['pics'] = unserialize($arc['pics']); if(is_array($arc['pics']) && !empty($arc['pics'])){ foreach ($arc['pics'] as $k => $v){ if(strtolower(substr($v,0,7)) == 'http://'){ $arc['pics'][$k] = $v; }else{ $arc['pics'][$k] = $v; } } } $arc['pics'] = serialize($arc['pics']); $case->view->archive = $arc; //var_dump($template); if ($template && file_exists(TEMPLATE . '/' . $case->view->_style . '/' . $template)) $tpl = $template; else $tpl = category::gettemplatewap($case->view->catid, 'showtemplatewap'); //var_dump($tpl);exit; $content = $case->fetch($tpl); $path = ROOT . archive::url($arc, front::$get['page'] > 1 ? front::$get['page'] : null, true); if (!preg_match('/\.[a-zA-Z]+$/', $path)) $path = rtrim(rtrim($path, '/'), '\\') . '/index.html'; $path = rtrim($path, '/'); $path = rtrim($path, '\\'); $path = str_replace('//', '/', $path); tool::mkdir(dirname($path)); file_put_contents($path, $content); $cpage++; if ($case->view->pages > 1 && $c == 1) { $path = ROOT . archive::url($arc, 1, true); if (!preg_match('/\.[a-zA-Z]+$/', $path)) $path = rtrim(rtrim($path, '/'), '\\') . '/index.html'; $path = rtrim($path, '/'); $path = rtrim($path, '\\'); $path = str_replace('//', '/', $path); tool::mkdir(dirname($path)); file_put_contents($path, $content); $cpage++; } } } $totalpage = count($archives); if (!isset($archives[0])) $totalpage = 0; if ($make_page >= $make_page_num) { $show_msg = "本组生成html <b>{$cpage}</b> 页! 生成html完毕,本次共生成 <b>{$archive_num}</b> 页! 2秒后自动返回内容生成首页面!\n"; $c_url = preg_replace('#&make_page=(\d+)#', '', $_SERVER['QUERY_STRING']); $c_url = preg_replace('#&aid_start=(\d+)#', '', $c_url); $c_url = preg_replace('#&aid_end=(\d+)#', '', $c_url); $c_url = preg_replace('#&catid=(\d+)#', '', $c_url); $c_url = preg_replace('#&submit=(\d+)#', '', $c_url); $c_url = 'index.php?' . $c_url; } else { $show_msg = "第 <b>{$make_page}</b> 组成功生成html <b>{$cpage}</b> 页! 本次共需生成 <b>{$archive_num}</b> 页! 已经生成 <b>" . ($make_page * $group_count) . "</b> 页! 2秒后自动跳入下组生成!\n"; } $getnexturl = "<script>"; $getnexturl.="var t=4;\n"; $getnexturl.="setInterval('testTime()',1000);\n"; $getnexturl.="function testTime() \n"; $getnexturl.=" { \n"; $getnexturl.="if(t == 0) location = '" . $c_url . "'; \n"; $getnexturl.=" t--;\n"; $getnexturl.="}\n</script> \n"; if ($cpage > 0) { if (!config::get('group_on')) { front::flash("成功生成html <b>{$cpage}</b> 页! 2秒后自动返回内容生成首页面!\n" . $getnexturl); } else { front::flash($show_msg . "\n" . $getnexturl); } } else { front::flash("没有需要生成的html,可能您选择的栏目暂无内容或者网站并未开启内容生成静态功能!"); } front::$admin = true; front::$post = $post; }