File: /web/data/www.tbbprovision.com/lib/category.class.php
<?php
class category{
    public static function get_parent_cate_id_by_uid($uid)
    {
        if(!$uid) return 0;
        $uid_ary = @explode(',',$uid);
        return $uid_ary[count($uid_ary)-2];
    }
    public static function output_cate_to_select_ext($table='',$ext_cate=0,$select_id=0,$html='',$fig='',$where='uid="0,"',$field='cate_name')
    {
        global $model;
        $list = $model->table($table)->where(array($where," and cate_id <>'{$ext_cate}'"))->order(array("my_order desc","cate_id asc"))->selectAll();
        foreach((array)$list as $k=>$v){
            $select = $select_id==$v['cate_id'] ? " selected ":"";
            $fig2 = $k==count($list)-1 ?'└─':"├─";
            $show_str = '';
            if(!is_array($field)){
                $show_str = $v[$field];
            }else{
                foreach((array)$field as $kk=>$vv){
                    $show_str[]=$v[$vv];
                }
                $show_str = implode(' / ',$show_str);
            }
            $html .= "<option value=\"{$v['cate_id']}\" {$select}>{$fig}{$fig2}{$show_str} </option>";
            $html .= category::output_cate_to_select_ext($table,$ext_cate,$select_id,'',($k==count($list)-1 ?$fig."    ":$fig."│   "),"uid='{$v['uid']}{$v['cate_id']},'",$field);
        }
        return $html;
    }
    /*
     * 输入分类列表
     */
    public static function output_cate_to_table($table=''){
        global $model;
        $list = $model->table($table)->where(1)->order(array('my_order desc','dept asc','cate_id asc'))->selectAll();
        $list = category::change_cate_as_uid($list);
        ob_start();
        call_user_func("category::{$table}",$list);
        $html = ob_get_contents();
        ob_clean();
        echo $html;
    }
    private static function news_cate($list=array(),$uid='0,',$fig='')
    {
        foreach((array)$list[$uid] as $k=>$v){
            $fig_ext = count($list[$uid])==($k+1)?"└─":"├─";
            echo "<tr>
                    <td width=\"5%\" class=\"\">{$v['cate_id']}</td>
                    <td width=\"75%\" class=\"\">{$fig}{$fig_ext}{$v['cate_name']}</td>
                    <td width=\"10%\" class=\"\">{$v['my_order']}</td>
                    <td width=\"10%\" class=\"\">
                        <a class=\"edit-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"编辑\"><span class=\"fa fa-pencil\"></span></a>
                        <a class=\"del-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"删除\"><span class=\"fa fa-trash-o\"></span></a>
                    </td>
                </tr>";
            if($list[$v['uid'].$v['cate_id'].',']){
                self::news_cate($list,$v['uid'].$v['cate_id'].',',count($list[$uid])==($k+1)?$fig."    ":$fig."│   ");
            }
        }
    }
    private static function article_cate($list=array(),$uid='0,',$fig='')
    {
        foreach((array)$list[$uid] as $k=>$v){
            $fig_ext = count($list[$uid])==($k+1)?"└─":"├─";
            echo"<tr>
                    <td width=\"5%\" class=\"\">{$v['cate_id']}</td>
                    <td width=\"75%\" class=\"\">{$fig}{$fig_ext}{$v['cate_name']}</td>
                    <td width=\"10%\" class=\"\">{$v['my_order']}</td>
                    <td width=\"10%\" class=\"\">
                        <a class=\"edit-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"编辑\"><span class=\"fa fa-pencil\"></span></a>
                        <a class=\"del-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"删除\"><span class=\"fa fa-trash-o\"></span></a>
                    </td>
                </tr>";
            if($list[$v['uid'].$v['cate_id'].',']){
                self::article_cate($list,$v['uid'].$v['cate_id'].',',count($list[$uid])==($k+1)?$fig."    ":$fig."│   ");
            }
        }
    }
    private static function ad_cate($list=array(),$uid='0,',$fig='')
    {
        foreach((array)$list[$uid] as $k=>$v){
            $fig_ext = count($list[$uid])==($k+1)?"└─":"├─";
            echo "<tr>
                    <td width=\"5%\" class=\"\">{$v['cate_id']}</td>
                    <td width=\"55%\" >{$fig}{$fig_ext}{$v['cate_name']}</td>
                    <td width=\"20%\" >{$v['pic_size']}</td>
                    <td width=\"10%\" class=\"\">{$v['my_order']}</td>
                    <td width=\"10%\" class=\"\">
                        <a class=\"edit-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"编辑\"><span class=\"fa fa-pencil\"></span></a>
                        <a class=\"del-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"删除\"><span class=\"fa fa-trash-o\"></span></a>
                    </td>
                </tr>";
            if($list[$v['uid'].$v['cate_id'].',']){
                self::ad_cate($list,$v['uid'].$v['cate_id'].',',count($list[$uid])==($k+1)?$fig."    ":$fig."│   ");
            }
        }
    }
    private static function pro_cate($list=array(),$uid='0,',$fig='')
    {
        foreach((array)$list[$uid] as $k=>$v){
            $fig_ext = count($list[$uid])==($k+1)?"└─":"├─";
            echo "<tr>
                    <td width=\"5%\" class=\"\">{$v['cate_id']}</td>
                    <td width=\"30%\" >{$fig}{$fig_ext}{$v['cate_name']}</td>
                    <td width=\"25%\" >{$v['brief']}</td>
                    <td width=\"10%\" class=\"text-center\">
                        <div class=\"switch inline text-left\">
                            <div class=\"onoffswitch\">
                                <input type=\"checkbox\" ".($v['is_close']?'':' checked ')." class=\"onoffswitch-checkbox\" id=\"example1\">
                                <label class=\"onoffswitch-label\" for=\"aexample1\">
                                    <span class=\"onoffswitch-inner\"></span>
                                    <span class=\"onoffswitch-switch\"></span>
                                </label>
                            </div>
                        </div>
                    </td>
                    <td width=\"10%\" align=\"center\">".(is_file(APP_PATH.$v['list_picture'])?"<img src='{$v['list_picture']}' width='30' height='30'>":''),"</td>
                    <td width=\"10%\" class=\"\">{$v['my_order']}</td>
                    <td width=\"10%\" class=\"\">
                        <a class=\"edit-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"编辑\"><span class=\"fa fa-pencil\"></span></a>
                        <a class=\"del-btn btn btn-info btn-list\" data-id=\"{$v['cate_id']}\" title=\"删除\"><span class=\"fa fa-trash-o\"></span></a>
                    </td>
                </tr>";
            if($list[$v['uid'].$v['cate_id'].',']){
                self::pro_cate($list,$v['uid'].$v['cate_id'].',',count($list[$uid])==($k+1)?$fig."    ":$fig."│   ");
            }
        }
    }
    public static function change_cate_as_uid($list=array())
    {
        $tmp = array();
        foreach((array)$list as $k=>$v){
            $tmp[$v['uid']][]=$v;
        }
        return $tmp;
    }
    public static function get_wehre_cateid_by_uid($uid,$table='')
    {
        global $model;
        if(!$table){
            return " and cate_id in(0,-1)";
        }
        $result = ' and cate_id in(0';
        $result .= ','.category::get_parent_cate_id_by_uid($uid);
        $list = $model->table($table)->where("uid like '{$uid}%'")->field(array('cate_id'))->selectAll();
        foreach((array)$list as $k=>$v){
            $result .= ",{$v['cate_id']}";
        }
        $result .= ',-1)';
        return $result;
    }
}
?>