Beispiel #1
0
 /**
  * 根据位置ID获取(专题,推荐)
  * 如果是广告,则输出广告代码,如果是专题或者推荐信息则输出列表
  *
  * @param  $ 参数数组
  * @param  $area_id 位置ID
  * @param  $pagesize 分页大小
  * @param  $p 当前分页
  * @param  $count 是否统计分页
  * @param  $where 查询条件
  * @param  $order 专题内文档排序方式,默认为排序升序
  */
 function get_area($params)
 {
     $area_id = isset($params['area_id']) ? $params['area_id'] : 0;
     $pagesize = isset($params['pagesize']) ? $params['pagesize'] : PAGESIZE_F;
     $p = isset($params['p']) ? $params['p'] : 1;
     $count = isset($params['count']) ? $params['count'] : 0;
     $where = isset($params['where']) ? $params['where'] : '';
     $rewrite = isset($params['rewrite']) ? $params['rewrite'] : 2;
     $order = isset($params['order']) ? $params['order'] : '';
     if (!is_numeric($area_id)) {
         return array();
     }
     if ($area_id == 0) {
         // 如果位置ID=0,则取列表
         $recommend_list = array();
         $sql = "select * from " . TB_PREFIX . "recommend_area ";
         if ($where != '') {
             $sql .= " where {$where}";
         }
         $suffix = " order by area_order asc,area_id desc";
         // 拼接分页数据
         $suffix .= " limit " . ($p - 1) * $pagesize . ",{$pagesize}";
         $result = $this->dbm->query($sql, $suffix, $count);
         //print_r($result);
         //生成surl
         $count = count($result['list']);
         for ($i = 0; $i < $count; $i++) {
             $result['list'][$i]['surl'] = $this->url->encode('special_content', array('host' => SITE_PATH, 'id' => $result['list'][$i]['area_id']));
         }
         $total = $result['total'];
         // 分页码HTML
         if ($rewrite == 0 || $rewrite == 1) {
             // 前台使用动态地址或者伪静态地址
             if ($this->url != null) {
                 $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite, 'rule' => array('node' => $node, 'obj' => $this->url, 'params' => array('host' => '/', 'cate_id' => $cate_id, 'cname_py' => $this->categories[$cate_id]['cname_py'], 'p' => $p))));
             } else {
                 $result['pagebar'] = array('pagecode' => '');
             }
         } else {
             $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite));
         }
         return $result;
     } else {
         // 如果位置ID大于0,则取某个位置的数据
         $sql = "select * from " . TB_PREFIX . "recommend_area where area_id='{$area_id}' limit 1";
         $rs = $this->dbm->query($sql);
         $recommend = array();
         if (count($rs['list']) == 1) {
             $recommend = $rs['list'][0];
             //print_r($recommend);
             if ($recommend['area_type'] == 0) {
                 // 广告
                 $tmp_a = unserialize($recommend['area_html']);
                 $order = 1;
                 //print_r($tmp_a);
                 if (is_array($tmp_a['list'])) {
                     foreach ($tmp_a['list'] as $v) {
                         if (!isset($v['order'])) {
                             $order = 0;
                             break;
                         }
                     }
                     if ($order == 1) {
                         $tmp_arr = helper::array_sort($tmp_a['list'], 'order', 'asc');
                         $tmp = array();
                         foreach ($tmp_arr as $v) {
                             array_push($tmp, $v);
                         }
                         $tmp_a['list'] = $tmp;
                     }
                 }
                 $recommend = $tmp_a;
             } else {
                 // 专题,推荐
                 if ($order == '') {
                     $order = ' order by field(info_id,' . $recommend['id_list'] . ')';
                 }
                 //$list = $this -> get_list(array('where' => 'info_id in (' . $recommend['id_list'] . ')', 'pagesize' => $pagesize, 'order' => $order,'extern'=>$extern));
                 //$recommend['list'] = $list['list'];
             }
         }
         return $recommend;
     }
 }
Beispiel #2
0
 /**
  * 联表查询(2张表)
  * 
  * @param  $params 
  * @param  $ -> $table_name     表名 必填
  * @param  $ -> $fields         字段 field1,field2,...
  * @param  $ -> $where          更新的条件语句
  * @param  $ -> $suffix         order by , limit 语句
  * @param  $ -> $count          计算总量 0=不计算 1=计算
  * @param  $ -> $pagesize       分页大小
  * 示范 params=array('table1'=>'cate','table2'=>'info','joinon'=>'cate_id#last_cate_id','fields'=>'a.field,b.felde'......)
  */
 public function join_query($params)
 {
     // 初始化
     $table1 = isset($params['table1']) ? $params['table1'] : '';
     $table2 = isset($params['table2']) ? $params['table2'] : '';
     // 关联字段 cate_id#last_cate_id 以#分隔
     $joinon = isset($params['joinon']) ? $params['joinon'] : '';
     $joinon = explode("#", $joinon);
     $fields = isset($params['fields']) ? $params['fields'] : '*';
     $where = isset($params['where']) ? $params['where'] : '';
     $suffix = isset($params['suffix']) ? $params['suffix'] : '';
     $count = isset($params['count']) ? $params['count'] : 0;
     $total = isset($params['total']) ? $params['total'] : 0;
     $left_index = isset($params['left_index']) ? $params['left_index'] : '';
     $right_index = isset($params['right_index']) ? $params['right_index'] : '';
     $pagesize = isset($params['pagesize']) ? $params['pagesize'] : 10;
     if (strlen($where) > 0) {
         $where = "where {$where}";
     }
     $sql = "select {$fields} from {$table1} as a " . $left_index . " left join {$table2} as b " . $right_index . " on a." . $joinon[0] . "=b." . $joinon[1] . " {$where}";
     $result = $this->query($sql, $suffix, $count);
     $result['pagebar'] = helper::pagebar(array('total' => $total > 0 ? $total : $result['total'], 'pagesize' => $pagesize, 'rewrite' => 2));
     return $result;
 }
Beispiel #3
0
 /**
  * 取精确标签资讯列表
  *
  * @param  $ 为数组格式
  * @param  $ =>where          更新的条件语句
  * @param  $ =>order          排序
  * @param  $ =>pagesize       分页大小
  * @param  $ =>p              当前页码
  * @param  $ =>rewrite        URL重写方式 0,1,2,默认为2
  * @param  $ =>count          是否计算总数 0 不计算 1 计算
  * @param  $ =>resource       是否同时取出资源 0 不取 1 取
  * @param  $ =>fields       查询的字段
  * @param  $ =>no_cache      1=强制读取最新数据
  * @param  $ =>extern  读取扩展表字段0=不读取,1=读取
  */
 public function get_list_tag($params)
 {
     $keyword_id = isset($params['keyword_id']) ? $params['keyword_id'] : '';
     $where = isset($params['where']) ? $params['where'] : '';
     $pagesize = isset($params['pagesize']) ? $params['pagesize'] : PAGESIZE_F;
     $p = isset($params['p']) ? $params['p'] : 1;
     $count = $params['count'] = isset($params['count']) ? $params['count'] : 0;
     $rewrite = isset($params['rewrite']) ? $params['rewrite'] : 2;
     $resource = isset($params['resource']) ? $params['resource'] : 0;
     $fields = isset($params['fields']) ? $params['fields'] : '';
     $node = isset($_GET['tpl']) ? $_GET['tpl'] : 'tag';
     $no_cache = isset($params['no_cache']) ? $params['no_cache'] : 0;
     $state = isset($params['state']) ? $params['state'] : 0;
     $show_extern = isset($params['extern']) ? $params['extern'] : 0;
     $show_tags = isset($params['show_tags']) ? $params['show_tags'] : 0;
     $order = 'order by b.info_id desc';
     $sql = "select * from " . TB_PREFIX . "keyword where keyword_id='" . $keyword_id . "' limit 1";
     $rs = $this->dbm->query($sql);
     $keyword = '';
     if (count($rs['list']) == 1) {
         $keyword = $rs['list'][0]['keyword'];
     }
     if ($fields == '') {
         $fields = '*';
     } else {
         $fields_arr = explode(',', $fields);
         $fields = '';
         for ($i = 0; $i < count($fields_arr); $i++) {
             $fields .= ',' . trim($fields_arr[$i]);
         }
         $fields = substr($fields, 1);
     }
     $total = 0;
     //总数
     // 拼接SQL语句
     $sql = "select * from " . TB_PREFIX . "keyword_relation as a left join " . TB_PREFIX . "info_list as b on a.info_id=b.info_id where a.keyword_id='{$keyword_id}' and b.info_state={$state} ";
     if (strlen($where) > 0) {
         $sql .= " and {$where} ";
     }
     //die($sql);
     // 拼接排序
     $suffix = $order;
     // 拼接分页数据
     $suffix .= " limit " . ($p - 1) * $pagesize . ",{$pagesize}";
     // 缓存开启,获取缓存内容
     if ($no_cache == 1) {
         $result = $this->dbm->query($sql, $suffix, $count);
     } else {
         if (defined('CACHE_TIME') && CACHE_TIME != '' && CACHE_TIME != 0) {
             // 缓存文件名
             $cache_file = md5($sql . $suffix);
             $data_path = SITE_PATH . CACHE_NAME . '/list/' . substr($cache_file, 0, 2);
             // 读取缓存
             $result = helper::file_cache($cache_file, '', CACHE_TIME, $data_path);
             if ($result == 'timeout') {
                 $result = $this->dbm->query($sql, $suffix, $count);
                 for ($i = 0; $i < count($result['list']); $i++) {
                     unset($result['list'][$i]['uid']);
                     unset($result['list'][$i]['uname']);
                 }
                 // 写入缓存
                 $result = helper::file_cache($cache_file, $result, CACHE_TIME, $data_path);
             }
         } else {
             $result = $this->dbm->query($sql, $suffix, $count);
         }
     }
     if ($count == 1) {
         $total = $result['total'];
     } else {
         $result['total'] = $total;
     }
     $result['keyword'] = $keyword;
     if (defined('INFO_IMG') && file_exists(INFO_IMG)) {
         $default_img = INFO_IMG;
     }
     // 重写返回数组
     for ($i = 0; $i < count($result['list']); $i++) {
         $result['list'][$i]['cate'] = $this->categories[$result['list'][$i]['last_cate_id']];
         if ($show_extern == '1') {
             // 取扩展表
             $extern = $this->get_extern_by_cate_id($result['list'][$i]['cate']['cate_id']);
             if ($extern['extern_name'] != '') {
                 $result['list'][$i]['extern'] = $this->get_extern($extern['extern_name'], $result['list'][$i]['info_id']);
             }
             // 取扩展字段结束
         }
         // 取资源列表
         if ($resource == 1) {
             $result['list'][$i]['resource'] = $this->get_resource($result['list'][$i]['info_id']);
             $result['list'][$i]['resource_total'] = count($result['list'][$i]['resource']);
         }
         // 缩略图
         if (isset($result['list'][$i]['info_img'])) {
             if ($result['list'][$i]['info_img'] == '') {
                 $result['list'][$i]['info_img'] = $default_img;
             }
             $result['list'][$i]['thumb'] = $this->thumb_url($result['list'][$i]['info_img']);
         }
         // URL
         $surl_domain = $this->bind_domain($result['list'][$i]['last_cate_id']);
         $result['list'][$i]['surl'] = ($surl_domain == '' ? $this->url_recheck() : $surl_domain) . $this->url->encode('content_info', array('host' => SITE_PATH, 'id' => $result['list'][$i]['info_id']));
         if ($result['list'][$i]['info_url'] != '') {
             $result['list'][$i]['surl'] = $result['list'][$i]['info_url'];
         }
         // 资讯标题
         // 标题加粗
         $result['list'][$i]['info_style_title'] = $result['list'][$i]['info_title'];
         if ($result['list'][$i]['fbold'] == 1) {
             $result['list'][$i]['info_style_title'] = "<b>" . $result['list'][$i]['info_title'] . "</b>";
         }
         // 标题加亮
         if (!empty($result['list'][$i]['fcolor'])) {
             $result['list'][$i]['info_style_title'] = "<font color='" . $result['list'][$i]['fcolor'] . "'>" . $result['list'][$i]['info_style_title'] . "</font>";
         }
         // 资讯简介
         if ($result['list'][$i]['info_desc'] == '') {
             $result['list'][$i]['info_desc'] = helper::utf8_substr(preg_replace('~(<style[^>]*>[\\w\\W]*?</style>)|(<[^>]*>)|(\\r)|(\\n)|(\\t)~', '', $result['list'][$i]['info_body']), 0, 220);
         }
         //精确标签输出
         //查询关系表中的关键字ID
         if ($show_tags == 1) {
             $sql = "select keyword_id from " . TB_PREFIX . "keyword_relation where info_id= '{$result['list'][$i]['info_id']}'";
             $r = $this->dbm->query($sql);
             $ids = array();
             foreach ($r['list'] as $k => $v) {
                 array_push($ids, $v['keyword_id']);
             }
             $sql = "select * from " . TB_PREFIX . "keyword where keyword_id in (" . implode(',', $ids) . ")";
             $ret = $this->dbm->query($sql);
             $result['tags_html'] = '';
             if (count($ret['list']) > 0) {
                 $result['list'][$i]['tags'] = array();
                 $result['list'][$i]['tags_html'] = '';
                 foreach ($ret['list'] as $k => $v) {
                     $result['list'][$i]['tags'][] = $v['keyword'];
                     $result['list'][$i]['tags_html'] .= '<a href="' . $this->url->encode('tag_index', array('host' => SITE_PATH, 'extid' => $this->categories[$result['list'][$i]['last_cate_id']]['extern_id'], 'id' => $v['keyword_id'])) . '" target="_blank">' . $v['keyword'] . '</a>&nbsp;&nbsp;';
                 }
             }
         }
     }
     // 分页码HTML
     if ($rewrite == 0 || $rewrite == 1) {
         // 前台使用动态地址或者伪静态地址
         if ($this->url != null && $params['count'] == 1) {
             $cpy = '';
             $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite, 'rule' => array('node' => $node, 'obj' => $this->url, 'params' => array('host' => SITE_PATH, 'id' => $keyword_id, 'p' => $p))));
         } else {
             $result['pagebar'] = array('pagecode' => '');
         }
     } else {
         $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite));
     }
     return $result;
 }