function make_list_action() { $servip = gethostbyname($_SERVER['SERVER_NAME']); if($servip==front::ip()&&front::get('ishtml')==1){ }else{ chkpw('cache_category'); } header('Cache-control: private, must-revalidate'); @set_time_limit(0); if (!front::post('submit')) return; $case = 'archive'; $act = 'list'; $_GET = array('case' => $case, 'act' => $act); $front = new front(); front::$admin = false; front::$html = true; front::$rewrite = false; $case = $case . '_act'; $case = new $case(); $case->init(); $method = $act . '_action'; $totalpage = 100; $time_start = time::getTime(); $category = category::getInstance(); $categories = $category->sons(front::post('catid')); $categories[] = front::post('catid'); $cpage = 0; $archive_all = new archive(); foreach ($categories as $key => $catid) { $new_categories = $category->sons($catid); $new_categories[] = $catid; $archive_num[$catid] = $archive_all->rec_count('catid in(' . implode(',', $new_categories) . ') and checked=1 and `state`=1'); } $i = 0; foreach ($categories as $catid) { if ($catid == 0) continue; if (!category::getishtml($catid)) continue; front::$get['catid'] = $catid; $case->view->categories = category::getpositionlink2($catid); $_categories = $category->sons($catid); $_categories[] = $catid; $case->view->ifson = category::hasson($catid); for (front::$get['page'] = 1;; front::$get['page']++) { $view = $case->view; $_catpage = category::categorypages($catid); if ($_catpage) { $pagesize = $_catpage; } else { $pagesize = config::get('list_pagesize'); } $limit = ((front::$get['page'] - 1) * $pagesize) . ',' . $pagesize; $archive = new archive(); $tops = array(); $tops = $archive->getrows("checked=1 AND state=1 AND toppost!=0",0,'toppost DESC,listorder=0,listorder ASC,aid DESC'); if (@$category->category[$catid]['includecatarchives']) { $case->view->archives = $archive->getrows('catid in(' . implode(',', $_categories) . ') and checked=1 and `state`=1', $limit, 'listorder=0,`listorder` asc,`adddate` DESC'); } else { $case->view->archives = $archive->getrows("catid=$catid and checked=1 and `state`=1", $limit, 'listorder=0,`listorder` asc,`adddate` DESC'); } $case->view->page = front::$get['page']; if(is_array($tops) && !empty($tops)){ foreach($tops as $order => $arc){ if($arc['toppost'] == 3){ $tops[$order]['title'] = "[全站置顶]".$arc['title']; } if($arc['toppost'] == 2){ $subcatids = $category->sons($arc['catid']); if($arc['catid'] != front::get('catid') && !in_array(front::get('catid'), $subcatids)){ unset($tops[$order]); }else{ $tops[$order]['title'] = "[栏目置顶]".$arc['title']; } } } $case->view->archives = array_merge($tops , $case->view->archives); } foreach ($case->view->archives as $order => $arc) { $articles = $arc; if (!$arc['introduce']) $arc['introduce'] = cut($arc['content'], 200); $articles['url'] = archive::url($arc); $articles['catname'] = category::name($arc['catid']); $articles['caturl'] = category::url($arc['catid']); $articles['image'] = @strstr($arc['image'], "http://") ? $arc['image'] : config::get('base_url') . '/' . $arc['image']; $articles['strgrade'] = archive::getgrade($arc['grade']); $articles['adddate'] = sdate($arc['adddate']); $articles['buyurl'] = url('archive/orders/aid/' . $arc['aid']); $articles['stitle'] = strip_tags($arc['title']); if(strtolower(substr($arc['thumb'],0,7)) == 'http://'){ $articles['sthumb'] = $arc['thumb']; }else{ $articles['sthumb'] = config::get('base_url').'/'.$arc['thumb']; } if($arc['strong']) { $articles['title'] = '<strong>'.$arc['title'].'</strong>'; } if($arc['color']) { $articles['title'] = '<font style="color:'.$arc['color'].';">'.$articles['title'].'</font>'; } $case->view->archives[$order] = $articles; } if (!isset($page_count)) { front::$record_count = $case->view->record_count = $archive_num[$catid]; $case->view->page_count = ceil($case->view->record_count / $pagesize); $page_count = $case->view->page_count; } $case->view->catid = $catid; $case->view->topid = category::gettopparent($catid); $case->view->parentid = $category->getparent($catid); $case->view->pages = @$category->category[$catid]['ispages']; if (front::get('page') > 1 && front::get('page') > $case->view->page_count) { $page_count = null; break; } if (front::get('page') > 1 && !@$category->category[$catid]['ispages']) { $page_count = null; break; } $template = @$category->category[$catid]['template']; if ($template && file_exists(TEMPLATE . '/' . $case->view->_style . '/' . $template)) $tpl = $template; else $tpl = category::gettemplate($case->view->catid); $content = $case->fetch($tpl); $path = ROOT . category::url($catid, 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); $indexpath = dirname($path) . '/index.html'; if (front::$get['page'] == 1 && $indexpath != ROOT . '/index.html') { file_put_contents($indexpath, $content); $cpage++; } $cpage++; $case->view = $view; $case->view->archives = null; } $i++; } if ($cpage > 0) front::flash("成功生成html <b>$cpage</b> 页!"); else front::flash("没有生成html!"); front::$admin = true; }
function list_action() { front::check_type(front::get('catid')); $this->view->categorys = category::getpositionlink2(front::get('catid')); $topid = category::gettopparent(front::get('catid')); if (!isset($this->category->category[front::get('catid')]) || !isset($this->category->category[$topid])) { $this->out('message/error.html'); } $limit = (($this->view->page - 1) * $this->pagesize) . ',' . $this->pagesize; $categories = array(); if (@$this->category->category[front::get('catid')]['ispages']) $categories = $this->category->sons(front::get('catid')); $categories[] = front::get('catid'); $this->view->pages = @$this->category->category[front::get('catid')]['ispages']; if (!rank::catget(front::get('catid'), $this->view->usergroupid)) $this->out('message/error.html'); $order = "listorder=0,`listorder` asc,`adddate` DESC"; $tops = $this->archive->getrows("checked=1 AND state=1 AND toppost!=0",0,'toppost DESC,listorder=0,listorder ASC,aid DESC'); if (@$this->category->category[front::get('catid')]['includecatarchives']){ $articles = $this->archive->getrows('catid in (' . implode(',', $categories) . ') and checked=1', $limit, $order); }else{ $articles = $this->archive->getrows('catid=' . front::get('catid') . ' and checked=1', $limit, $order); } if (!is_array($articles)) { $this->out('message/error.html'); } if(is_array($tops) && !empty($tops)){ foreach($tops as $order => $arc){ if($arc['toppost'] == 3){ $tops[$order]['title'] = "[全站置顶]".$arc['title']; } if($arc['toppost'] == 2){ $subcatids = $this->category->sons($arc['catid']); if($arc['catid'] != front::get('catid') && !in_array(front::get('catid'), $subcatids)){ unset($tops[$order]); }else{ $tops[$order]['title'] = "[栏目置顶]".$arc['title']; } } } $articles = array_merge($tops , $articles); } foreach ($articles as $order => $arc) { $articles[$order]['url'] = archive::url($arc); $articles[$order]['catname'] = category::name($arc['catid']); $articles[$order]['caturl'] = category::url($arc['catid']); $articles[$order]['adddate'] = sdate($arc['adddate']); $articles[$order]['title'] = $arc['title']; $articles[$order]['stitle'] = strip_tags($arc['title']); $articles[$order]['strgrade'] = archive::getgrade($arc['grade']); $articles[$order]['buyurl']=url('archive/orders/aid/'.$arc['aid']); if(strtolower(substr($arc['thumb'],0,7)) == 'http://'){ $articles[$order]['sthumb'] = $arc['thumb']; }else{ $articles[$order]['sthumb'] = config::get('base_url').'/'.$arc['thumb']; } $prices = getPrices($articles[$order]['attr2']); $articles[$order]['attr2'] = $prices['price']; $articles[$order]['oldprice'] = $prices['oldprice']; if($arc['strong']) { $articles[$order]['title'] = '<strong>'.$arc['title'].'</strong>'; } if($arc['color']) { $articles[$order]['title'] = '<font style="color:'.$arc['color'].';">'.$articles[$order]['title'].'</font>'; } /*if($arc['toppost'] == '3') { $tmp1[] = $articles[$order]; unset($articles[$order]); } if($arc['toppost'] == '2' && front::get('catid') == $arc['catid']) { $tmp2[] = $articles[$order]; unset($articles[$order]); }*/ } /*if(is_array($tmp1) && is_array($tmp2)) { $articles = array_merge($tmp1,$tmp2,$articles); }else if(is_array($tmp1) && !is_array($tmp2)) { $articles = array_merge($tmp1,$articles); }else if(!is_array($tmp1) && is_array($tmp2)) { $articles = array_merge($tmp2,$articles); }*/ $this->view->archives = $articles; $this->view->articles = $articles; if (@$this->category->category[front::get('catid')]['includecatarchives']) $this->view->record_count = $this->archive->rec_count('catid in(' . implode(',', $categories) . ') AND state=1 AND checked=1'); else $this->view->record_count = $this->archive->rec_count('catid=' . front::get('catid').' AND state=1 AND checked=1'); front::$record_count = $this->view->record_count; $this->view->catid = front::get('catid'); $this->view->ifson = category::hasson($articles[0]['catid'] ? $articles[0]['catid'] : $this->view->catid); $this->view->topid = category::gettopparent(front::get('catid')); $this->view->parentid = @$this->category->getparent($this->view->catid); if (front::get('t') == 'wap') { $cateobj = category::getInstance(); $this->view->subids = $cateobj->son($this->view->catid); $template = @$this->category->category[front::get('catid')]['templatewap']; if ($template && file_exists(TEMPLATE . '/' . $this->view->_style . '/' . $template)) $this->out($template); else { $tpl = category::gettemplatewap($this->view->catid); $this->out($tpl); } return; } $template = @$this->category->category[front::get('catid')]['template']; if ($template && file_exists(TEMPLATE . '/' . $this->view->_style . '/' . $template)) $this->out($template); else { $tpl = category::gettemplate($this->view->catid); if (category::getishtml($this->view->catid)) { $path = ROOT . category::url($this->view->catid, @front::$get['page'] > 1 ? front::$get['page'] : null); if (!preg_match('/\.[a-zA-Z]+$/', $path)) $path = rtrim(rtrim($path, '/'), '\\') . '/index.html'; $this->cache_path = $path; } $this->out($tpl); } }
static function url($catid,$page=null,$relative=false) { //var_dump(front::$get); $category=self::getInstance(); if (@$category->category[$catid]['linkto']) return $category->category[$catid]['linkto']; if(front::get('t')=='wap'){ if (config::get('wap_html_prefix')){ $wap_html_prefix='/'.trim(config::get('wap_html_prefix'),'/'); } if(front::$rewrite){ if (!$page){ return config::get('site_url').'list_wap_'.$catid.'.htm'; }else{ return config::get('site_url').'list_wap_'.$catid.'_'.$page.'.htm'; } } if (!category::getiswaphtml($catid)) { if (!$page){ return url::create('archive/list/t/wap/catid/'.$catid); }else{ return url::create('archive/list/t/wap/catid/'.$catid.'/page/'.$page); } }else{ $rule=category::gethtmlrule($catid,'listhtmlrule'); $rule=str_replace('{$caturl}',$category->htmlpath($catid),$rule); $rule=str_replace('{$dir}',$category->category[$catid]['htmldir'],$rule); $rule=str_replace('{$catid}',$catid,$rule); if ($category->category[$catid]['ispages'] &&!$page) $page=1; if ($page) $rule=str_replace('{$page}',$page,$rule); else $rule=preg_replace('/\(.*?\)/','',$rule); $rule=preg_replace('%/\.html$%','/index.html',$rule); $rule=preg_replace('/[\(\)]/','',$rule); $rule=preg_replace('%[\\/]index\.htm(l)?%','',$rule); $rule=rtrim($rule,'/'); $rule=trim($rule,'\\'); if ($relative) return $wap_html_prefix.'/'.$rule; $rule=str_replace('/1.html','',$rule); $path = config::get('base_url').$wap_html_prefix.'/'.$rule; //echo $path; return $path; } } if (config::get('html_prefix')) $html_prefix='/'.trim(config::get('html_prefix'),'/'); if (!category::getishtml($catid) ||front::$rewrite) { if (!$page) return url::create('archive/list/catid/'.$catid); else return url::create('archive/list/catid/'.$catid.'/page/'.$page); } else { $rule=category::gethtmlrule($catid,'listhtmlrule'); $rule=str_replace('{$caturl}',$category->htmlpath($catid),$rule); $rule=str_replace('{$dir}',$category->category[$catid]['htmldir'],$rule); $rule=str_replace('{$catid}',$catid,$rule); if ($category->category[$catid]['ispages'] &&!$page) $page=1; if ($page) $rule=str_replace('{$page}',$page,$rule); else $rule=preg_replace('/\(.*?\)/','',$rule); $rule=preg_replace('%/\.html$%','/index.html',$rule); $rule=preg_replace('/[\(\)]/','',$rule); $rule=preg_replace('%[\\/]index\.htm(l)?%','',$rule); $rule=rtrim($rule,'/'); $rule=trim($rule,'\\'); if ($relative) return $html_prefix.'/'.$rule; $rule=str_replace('/1.html','',$rule); return config::get('base_url').$html_prefix.'/'.$rule; } }