Exemplo n.º 1
0
    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;
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
 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;
     }
 }