class.list.php:
Unable to find source-code formatter for language: php. Available languages are: actionscript, html, java, javascript, none, sql, xhtml, xml
<? /* +------------------------------------------------------------------------------ * Filename: class.list.php * Create Day: Tue Nov 30 00:41:23 GMT+08:00 2004 * @Author: xshArp@iZz Studio ( xsharp@justdn.com / http://www.justdn.org) * ============================================================================= * Attention: 禁止未经我们允许的任何个人或商业使用! * @copyright: iZz Studio 2000-2005 +------------------------------------------------------------------------------ */ // @version: $Id: class.list.php 1357 2006-09-07 13:12:35Z xsharp $ include_once(dirname(__FILE__)."/taglib.php"); class tag_list extends taglib { var $sql_optimize = array(); function main() { $this->template_use = 'list_'; $this->news(); } function init_c_rows(){ if($this->tag_setting[mod] == 'down'){ $this->c_rows = action::unserialize_data($this->inews_conf['obj_down_cate_out_sort_c_id']); }else{ $this->c_rows = action::unserialize_data($this->inews_conf['obj_cate_sort_c_id']); } } function build_sql(){ global $inews_database; $where = ""; $group_by = ""; $order_by = ""; $select = $sql = "SELECT "; $select .= "m.*,l.c_id"; $sql .= "m.*,l.c_id"; if($this->tag_setting[mod] == 'down'){ $sql .= " FROM ".$this->dt->down_cate_link." l LEFT JOIN ".$this->dt->down." m "; $this->sql_optimize[main_cate_link] = $this->dt->down_cate_link; $this->sql_optimize[main] = $this->dt->down; }else{ $sql .= " FROM ".$this->dt->main_cate_link." l LEFT JOIN ".$this->dt->main." m "; $this->sql_optimize[main_cate_link] = $this->dt->main_cate_link; $this->sql_optimize[main] = $this->dt->main; } $sql .= " ON(l.guid = m.guid) "; // 分类 if(is_array($this->tag_setting[cid])){ if(isset($this->tag_setting[with_sub])){ $c_id_sub = $this->get_sub_cate($this->tag_setting[cid]); $where .= " WHERE l.status_id ='1' and l.c_id IN (".implode(',',$c_id_sub).") "; $sql .= " WHERE l.status_id ='1' and l.c_id IN (".implode(',',$c_id_sub).") "; }else{ $where .= " WHERE l.status_id ='1' and l.c_id IN (".implode(',',$this->tag_setting[cid]).")"; $sql .= " WHERE l.status_id ='1' and l.c_id IN (".implode(',',$this->tag_setting[cid]).")"; } }else{ if(isset($this->tag_setting[with_sub])){ $c_id_sub = $this->get_sub_cate($this->tag_setting[cid]); $where .= " WHERE l.status_id ='1' and l.c_id IN (".implode(',',$c_id_sub).") "; $sql .= " WHERE l.status_id ='1' and l.c_id IN (".implode(',',$c_id_sub).") "; }elseif($this->tag_setting[cid]>0){ $where .= " WHERE l.status_id ='1' and l.c_id='".$this->tag_setting[cid]."' "; $sql .= " WHERE l.status_id ='1' and l.c_id='".$this->tag_setting[cid]."' "; }else{ $where .= " WHERE l.status_id ='1 "; $sql .= " WHERE l.status_id ='1' "; } } if($this->tag_setting[o] == 'recommend'){ $where .= " AND l.is_recommend='1' "; $sql .= " AND l.is_recommend='1' "; } elseif ($this->tag_setting[o] == 'headline'){ $where .= " AND l.is_headline='1' "; $sql .= " AND l.is_headline='1' "; } if (isset($this->tag_setting[with_img] )){ $where .= " AND m.image_url <>'' "; $sql .= " AND m.image_url <>'' "; } // 定义模板 $this->template_use.= ($this->tag_setting['skin'])?$this->tag_setting['skin']:'1'; if(isset($this->tag_setting[no_filter])){ $group_by .= " "; $sql .= " "; }else{ if($inews_database[db_type] == 'mysql' or $inews_database[db_type] == 'mysqli'){ $group_by .= " GROUP BY guid "; $sql .= " GROUP BY guid "; }else{ // 尚不支持MSSQL等 } } // 排序 if(isset($this->tag_setting[sort])){ $order_by .= " ORDER BY l.is_stick DESC,"; $sql .= " ORDER BY l.is_stick DESC,"; if($this->tag_setting[sort] == 'title'){ $order_by .= "m.title "; $sql .= "m.title "; $this->tag_setting[order] = (!isset($this->tag_setting[order]))?'asc':$this->tag_setting[order]; }elseif($this->tag_setting[sort] == 'id'){ $order_by .= "m.id "; $sql .= "m.id "; }elseif($this->tag_setting[sort] == 'datetime'){ $order_by .= "l.datetime "; $sql .= "l.datetime "; }elseif($this->tag_setting[sort] == 'author'){ $order_by .= "m.author "; $sql .= "m.author "; }elseif($this->tag_setting[sort] == 'editor'){ $order_by .= "m.editor"; $sql .= "m.editor"; } }else{ $order_by .= " ORDER BY l.is_stick DESC,l.datetime "; $sql .= " ORDER BY l.is_stick DESC,l.datetime "; } if (isset($this->tag_setting[order]) and strtolower($this->tag_setting[order])=='asc'){ $order_by .= " ASC "; $sql .= " ASC "; }else{ $order_by .= " DESC "; $sql .= " DESC "; } $this->sql_optimize[sql] = $sql; $this->sql_optimize[select] = $select; $this->sql_optimize[where] = $where; $this->sql_optimize[group_by] = $group_by; $this->sql_optimize[order_by] = $order_by; return $sql; } function build_sql_sub($guids = array()){ // 尚未实现该查询方法 $sql_table = $this->sql_optimize; $table_main_cate_link = $sql_table[main_cate_link]; $table_main = $sql_table[main]; $guids_str = "'".implode("','",$guids)."'"; $c_id_rows = $this->db->GetAll("SELECT DISTINCT(l.c_id),l.guid FROM ".$table_main_cate_link." l WHERE guid IN(".$guids_str.")"); foreach ($c_id_rows as $val){ $this->guids_c_id["".$val[guid].""] = $val[c_id]; } $select = $this->sql_optimize[select]; $where = $this->sql_optimize[where]; $order_by = $this->sql_optimize[order_by]; //$tmp = explode(',',$where); @preg_match("/WHERE(.*?)[AND|OR](.*?)/is",$where,$tmp); print_m($tmp); if(is_array($tmp)){ foreach ($tmp as $val){ if(!strstr('x'.$val.'x','l.')){ $tmp2[] = $val; } } if(is_array($tmp2)){ $where = implode(',',$tmp2); } } unset($tmp,$tmp2); $tmp = explode(',',$order_by); if(is_array($tmp)){ foreach ($tmp as $val){ if(!strstr('x'.$val.'x','l.')){ $tmp2[] = $val; } } $order_by = @implode(',',$tmp2); } if(strlen(trim($order_by))>0 and !strstr($order_by,'ORDER BY')){ $order_by = 'ORDER BY '.$order_by; } unset($tmp,$tmp2); $sql = "SELECT m.* FROM ".$table_main." m WHERE guid IN(".$guids_str.") ".$order_by; $rs = $this->db->SelectLimit($sql); return $rs; } function build_result(){ global $input; $sql = $this->build_sql(); // print_m($this->tag_setting); // 条数 $limit = $this->tag_setting[num]; if($limit ==0 or $limit > 500){ $limit = 10; } // 开始行数 // 修正下载前台分页 if(isset($input['t']) and strlen(trim($input['t'])) > 0){ $page = ($input['page'])?$input['page']:1; $offset = ($page-1)*$limit; } $offset = ($this->tag_setting[offset])?$this->tag_setting[offset]:$offset; if(is_array($this->sql_optimize) and isset($this->tag_setting['optimize'])){ // 尚未实现该查询方法 // 第一步,查询link // 第二步,查询main // 最好,返回数据 echo "optimize参数尚不支持"; exit(); $where = $this->sql_optimize[where]; $order_by = $this->sql_optimize[order_by]; print_m($where); preg_match_all("/WHERE(.*?)(AND)?(.*)/is",$where,$tmp); print_m($tmp); /* $tmp = explode(',',$where); if(is_array($tmp)){ foreach ($tmp as $val){ if(!strstr('x'.$val.'x','m.')){ $tmp2[] = $val; } } $where = @implode(',',$tmp2); } */ unset($tmp,$tmp2); $tmp = explode(',',$order_by); if(is_array($tmp)){ foreach ($tmp as $val){ if(!strstr('x'.$val.'x','m.')){ $tmp2[] = $val; } } $order_by = implode(',',$tmp2); } unset($tmp,$tmp2); $sql_table = $this->sql_optimize; $sql = "SELECT DISTINCT(l.guid) FROM ".$sql_table[main_cate_link]." l ".$where." ".$order_by; echo $sql; $rs = $this->db->SelectLimit($sql,$limit,$offset); $guid_rows = $rs->GetRows(); if(is_array($guid_rows)){ foreach ($guid_rows as $val){ $guids[] = $val[guid]; } $rs = $this->build_sql_sub($guids); } }else{ $rs = $this->db->SelectLimit($sql,$limit,$offset); } return $rs; } function news() { // 标题长度 $len = ($this->tag_setting[len])?$this->tag_setting[len]:$this->inews_conf[list_len]; // 简介长度 $summary_len = ($this->tag_setting[summary_len])?$this->tag_setting[summary_len]:0; $rs = $this->build_result(); if($rs){ $rows = $rs->GetRows(); $i = 0; foreach ($rows as $val){ $i++; $val[no] = $i; if($val[c_id] == 0){ $val[c_id] = $this->guids_c_id["".$val[guid].""]; } $cols=($this->tag_setting[cols])?$this->tag_setting[cols]:1; if(($i%$cols)==0){ $val['TR'] = ' </tr><tr> '; $val['BR'] = ' <BR /> '; } $c_url = ($this->c_rows["".$val[c_id].""]['c_url'])?$this->c_rows["".$val[c_id].""]['c_url']:$this->inews_path->htdocs_url.$this->c_rows["".$data_arr[c_id].""]['path']; $file_name = build_file_name($val); $file_folder = file_page::build_dir($this->c_rows["".$val[c_id].""],$val[datetime]); $val['link'] = (strlen($val[refresh_url])>7)?$val[refresh_url]:$c_url.'/'.$file_folder.'/'.$file_name.'.'.$this->inews_conf['file_ext']; $date_format = ($this->tag_setting[date_format])?$this->tag_setting[date_format]:$this->inews_conf['date_list']; $val['date'] = date($date_format,$val['datetime']); // 当日新闻彩色显示 if($this->inews_conf[title_new_is_color] and (date('Y-m-d',$val['datetime']) == date('Y-m-d'))){ $val[style] = 'new_color'; }else{ $val[style] = 'new_normal'; } $val['c_url'] = $c_url; $val['c_title'] = $this->c_rows["".$val[c_id].""]['c_title']; $val['c_path'] = $this->c_rows["".$val[c_id].""]['path']; if(isset($this->tag_setting[lang]) and (strtolower($this->tag_setting[lang]) != strtolower($this->inews_conf[file_encode_output]))){ $lang[file] = $val['c_path'].'/'.$file_folder.'/'.$file_name.'.'.$this->inews_conf['file_ext']; $lang[lang] = $this->tag_setting[lang]; $lang[link] = $val['link']; $val['link'] = $this->inews_path->user_path[gbig5_url].'/?p='.base64_encode(serialize($lang)); } $val['image_width'] = ($this->tag_setting['img_width'])?" width=\"".$this->tag_setting['img_width']."\" ":' '; $val['image_height'] = ($this->tag_setting['img_height'])?" height=\"".$this->tag_setting['img_height']."\" ":' '; if(trim($val[title4index]) == ''){ if($len > 0 && $len < strlen($val[title])){ $val[title4index] = csubstr($val[title],$len); }else{ $val[title4index] = $val[title]; } }else{ if($len > 0 && $len < strlen($val[title4index])){ $val[title4index] = csubstr($val[title4index],$len); } } if(substr($val[title4index],0,2) != '《' and !isset($this->tag_setting[no_space])){ $val[title4index] = ' '.$val[title4index]; } if($summary_len > 0){ $val[summary] = csubstr($val[summary],$summary_len); } if(strlen($val[color]) > 3){ $val[title4index] = "<font color=\"#".$val[color]."\">".$val[title4index]."</font>"; } $val[title] = htmlspecialchars($val[title]); $this->template->assign_block_vars('list',$val); } $this->template->assign_vars($this->inews_path->user_path); // 输出 $gzip_contents = $this->template->quick_get_from_handle($this->template_use); if(isset($this->tag_setting[lang]) and (strtolower($this->tag_setting[lang]) != strtolower($this->inews_conf[file_encode_output])) ){ $chinese = new chinese(); $search = array ( '/charset=gb2312/i', '/charset=gbk/i', '/lang="cn"/i', '/lang="zh_CN"/i', '/content="cn"/i', '/content="zh_CN"/i', '/encoding="gb2312"/i'); $replace = array ('charset=big5','charset=big5', 'lang="tw"', 'lang="zh_TW"', 'content="tw"', '/content="zh_TW"', 'encoding="big5"'); $gzip_contents = preg_replace($search, $replace, $gzip_contents); $gzip_contents = $chinese->gb_to_big5($gzip_contents); echo $gzip_contents; }else{ echo $gzip_contents; } }else{ $this->template->assign_vars($this->inews_path->user_path); echo $this->template->quick_get_from_handle('error'); } } function topic() { $sql = "SELECT "; } } ?>