www.gusucode.com > Ectouch手机端网购商城系统PHP版源码程序 > ectouch/include/apps/default/model/ArticleModel.class.php

    <?php

/**
 * ECTouch Open Source Project
 * ============================================================================
 * Copyright (c) 2012-2014 http://ectouch.cn All rights reserved.
 * ----------------------------------------------------------------------------
 * 文件名称:ArticleModel.class.php
 * ----------------------------------------------------------------------------
 * 功能描述:ECTOUCH 文章模型
 * ----------------------------------------------------------------------------
 * Licensed ( http://www.ectouch.cn/docs/license.txt )
 * ----------------------------------------------------------------------------
 */

/* 访问控制 */
defined('IN_ECTOUCH') or die('Deny Access');

class ArticleModel extends BaseModel {

    /**
     * 分配文章列表给smarty
     *
     * @access  public
     * @param   integer     $id     文章分类的编号
     * @param   integer     $num    文章数量
     * @return  array
     */
    function assign_articles($id, $num) {
        $sql = 'SELECT cat_name FROM ' . $this->pre . "article_cat WHERE cat_id = '" . $id . "'";

        $cat['id'] = $id;
        $res = $this->row($sql);
        $cat['name'] = $res['cat_name'];
        $cat['url'] = url('article/index', array('id' => $id));

        $articles['cat'] = $cat;
        $articles['arr'] = model('ArticleBase')->get_cat_articles($id, 1, $num);

        return $articles;
    }

    /**
     * 分配帮助信息
     *
     * @access  public
     * @return  array
     */
    function get_shop_help() {
        $sql = 'SELECT c.cat_id, c.cat_name, c.sort_order, a.article_id, a.title, a.file_url, a.open_type ' .
                'FROM ' . $this->pre . 'article AS a ' .
                'LEFT JOIN ' . $this->pre . 'article_cat AS c ' .
                'ON a.cat_id = c.cat_id WHERE c.cat_type = 5 AND a.is_open = 1 ' .
                'ORDER BY c.sort_order ASC, a.article_id';
        $res = $this->query($sql);

        $arr = array();
        foreach ($res AS $key => $row) {
            $arr[$row['cat_id']]['cat_id'] = url('article/index', array('id' => $row['cat_id']));
            $arr[$row['cat_id']]['cat_name'] = $row['cat_name'];
            $arr[$row['cat_id']]['article'][$key]['article_id'] = $row['article_id'];
            $arr[$row['cat_id']]['article'][$key]['title'] = $row['title'];
            $arr[$row['cat_id']]['article'][$key]['short_title'] = C('article_title_length') > 0 ? sub_str($row['title'], C('article_title_length')) : $row['title'];
            $arr[$row['cat_id']]['article'][$key]['url'] = $row['open_type'] != 1 ? url('article/info', array('aid' => $row['article_id'])) : trim($row['file_url']);
        }

        return $arr;
    }

    /**
     * 获得指定文章分类的所有上级分类
     *
     * @access  public
     * @param   integer $cat    分类编号
     * @return  array
     */
    function get_article_parent_cats($cat) {
        if ($cat == 0) {
            return array();
        }

        $arr = $this->query('SELECT cat_id, cat_name, parent_id FROM ' . $this->pre . 'article_cat');

        if (empty($arr)) {
            return array();
        }

        $index = 0;
        $cats = array();

        while (1) {
            foreach ($arr AS $row) {
                if ($cat == $row['cat_id']) {
                    $cat = $row['parent_id'];

                    $cats[$index]['cat_id'] = $row['cat_id'];
                    $cats[$index]['cat_name'] = $row['cat_name'];

                    $index++;
                    break;
                }
            }

            if ($index == 0 || $cat == 0) {
                break;
            }
        }

        return $cats;
    }

    /**
     * 获得指定分类同级的所有分类以及该分类下的子分类
     *
     * @access  public
     * @param   integer     $cat_id     分类编号
     * @return  array
     */
    function article_categories_tree($cat_id = 0) {
        if ($cat_id > 0) {
            $sql = 'SELECT parent_id FROM ' . $this->pre .
                    "touch_article_cat  WHERE cat_id = '$cat_id'";
            $res = $this->row($sql);          
            $parent_id = $res['parent_id'];
        } else {
            $parent_id = 0;
        }
        /*
          判断当前分类中全是是否是底级分类,
          如果是取出底级分类上级分类,
          如果不是取当前分类及其下的子分类
         */
        $sql = 'SELECT count(*) as count FROM ' . $this->pre .
                "touch_article_cat  WHERE parent_id = '$parent_id'";
        $res = $this->row($sql);
        if ($res['count']) {
            /* 获取当前分类及其子分类 */
            $sql = 'SELECT a.cat_id, a.cat_name, a.sort_order AS parent_order, a.cat_id, ' .
                    'b.cat_id AS child_id, b.cat_name AS child_name, b.sort_order AS child_order ' .
                    'FROM ' . $this->pre . 'touch_article_cat AS a ' .
                    'LEFT JOIN ' . $this->pre . 'touch_article_cat AS b ON b.parent_id = a.cat_id ' . 
                    "WHERE a.parent_id = '$parent_id' ORDER BY parent_order ASC, a.cat_id ASC, child_order ASC";
        } else {
            /* 获取当前分类及其父分类 */
            $sql = 'SELECT a.cat_id, a.cat_name, b.cat_id AS child_id, b.cat_name AS child_name, b.sort_order ' .
                    'FROM ' . $this->pre . 'touch_article_cat AS a ' .
                    'LEFT JOIN ' . $this->pre . 'touch_article_cat AS b ON b.parent_id = a.cat_id ' .
                    "WHERE b.parent_id = '$parent_id' ORDER BY sort_order ASC";
        }
        $res = $this->query($sql);
        $cat_arr = array();
        foreach ($res AS $row) {
            $cat_arr[$row['cat_id']]['id'] = $row['cat_id'];
            $cat_arr[$row['cat_id']]['name'] = $row['cat_name'];

            $cat_arr[$row['cat_id']]['children'][$row['child_id']]['url'] = url('article/art_list', array('acid' => $row ['cat_id']));
            if ($row['child_id'] != NULL) {

                $cat_arr[$row['cat_id']]['children'][$row['child_id']]['id'] = $row['child_id'];
                $cat_arr[$row['cat_id']]['children'][$row['child_id']]['name'] = $row['child_name'];
                $cat_arr[$row['cat_id']]['children'][$row['child_id']]['url'] = url('article/art_list', array('acid' => $row ['child_id']));
            }
        }

        return $cat_arr;
    }

    /**
     * 获得指定的文章的详细信息
     *
     * @access  private
     * @param   integer     $article_id
     * @return  array
     */
    function get_article_info($article_id) {
        /* 获得文章的信息 */
        $sql = "SELECT a.*, IFNULL(AVG(r.comment_rank), 0) AS comment_rank " .
                "FROM " . $this->pre . "touch_article AS a " .
                "LEFT JOIN " . $this->pre . "comment AS r ON r.id_value = a.article_id AND comment_type = 1 " .
                "WHERE a.is_open = 1 AND a.article_id = '$article_id' GROUP BY a.article_id";
        $row = $this->row($sql);

        if ($row !== false) {
            $row['comment_rank'] = ceil($row['comment_rank']);                              // 用户评论级别取整
            $row['add_time'] = local_date(L('date_format'), $row['add_time']); // 修正添加时间显示
            $row['content'] = html_out($row['content']);;
            
            /* 作者信息如果为空,则用网站名称替换 */
            if (empty($row['author']) || $row['author'] == '_SHOPHELP') {
                $row['author'] = L('shop_name');
            }
        }

        return $row;
    }

}