/**
  * 是否在ip黑名单
  * @param string $ip
  * @return boolean
  */
 public function is_ban_ip($ip)
 {
     $data = read_static_cache('website_config');
     if (empty($data)) {
         return false;
     } else {
         return strpos($data['ip_blacklist'], $ip) !== false ? true : false;
     }
 }
 function __construct()
 {
     $this->CI =& get_instance();
     //变量可以在这里定义,或者来自配置文件,也可以去数据
     $smtp = read_static_cache("smtp_config");
     $website = read_static_cache("website_config");
     $upload = read_static_cache("upload_config");
     $this->CI->load->model("sk_admin/systemconfig_model");
     if (empty($smtp)) {
         $where = array("app_name" => "smtp");
         $smtp_list = $this->CI->systemconfig_model->getAll($where);
         $smtp = array();
         if ($smtp_list && count($smtp_list) > 0) {
             foreach ($smtp_list as $k => $v) {
                 $smtp[$v['paras']] = $v['value'];
             }
         }
         if (!empty($smtp)) {
             write_static_cache("smtp_config", $smtp);
         }
     }
     if (empty($website)) {
         $where = array("app_name" => "website");
         $website_list = $this->CI->systemconfig_model->getAll($where);
         $website = array();
         if ($website_list && count($website_list) > 0) {
             foreach ($website_list as $k => $v) {
                 $website[$v['paras']] = $v['value'];
             }
         }
         if (!empty($website)) {
             write_static_cache("website_config", $website);
         }
     }
     if (empty($upload)) {
         $where = array("app_name" => "upload");
         $upload_list = $this->CI->systemconfig_model->getAll($where);
         $upload = array();
         if ($upload_list && count($upload_list) > 0) {
             foreach ($upload_list as $k => $v) {
                 $upload[$v['paras']] = $v['value'];
             }
         }
         if (!empty($upload)) {
             write_static_cache("upload_config", $upload);
         }
     }
     $this->variable['smtp'] = $smtp;
     $this->variable['website'] = $website;
     $this->variable['upload'] = $upload;
     $this->CI->load->vars($this->variable);
 }
 /**
  * 构造函数
  *
  * @access public
  * @return mix
  */
 function __construct()
 {
     parent::__construct();
     $this->model_name = "";
     $this->model_name_config = "sk_credit_config";
     // 金币配置
     $this->model_name_rule = "sk_credit_rule";
     // 金币规则
     $this->model_name_log = "sk_credit_log";
     // 金币日志
     $credit_config = read_static_cache($this->model_name_config);
     $this->config_group = $this->config->item("credit_group");
 }
示例#4
0
/**
 * 取得最近的上级分类的grade值
 *
 * @access  public
 * @param   int     $cat_id    //当前的cat_id
 *
 * @return int
 */
function get_parent_grade($cat_id)
{
    static $res = NULL;
    if ($res === NULL) {
        $data = read_static_cache('cat_parent_grade_supplier' . $_GET['suppId']);
        if ($data === false) {
            $sql = "SELECT parent_id, cat_id, grade " . " FROM " . $GLOBALS['ecs']->table('supplier_category') . "WHERE supplier_id=" . $_GET['suppId'];
            $res = $GLOBALS['db']->getAll($sql);
            write_static_cache('cat_parent_grade_supplier' . $_GET['suppId'], $res);
        } else {
            $res = $data;
        }
    }
    if (!$res) {
        return 0;
    }
    $parent_arr = array();
    $grade_arr = array();
    foreach ($res as $val) {
        $parent_arr[$val['cat_id']] = $val['parent_id'];
        $grade_arr[$val['cat_id']] = $val['grade'];
    }
    while ($parent_arr[$cat_id] > 0 && $grade_arr[$cat_id] == 0) {
        $cat_id = $parent_arr[$cat_id];
    }
    return $grade_arr[$cat_id];
}
示例#5
0
        $t = new transport();
        $api_comment = $t->request('http://api.ecshop.com/checkver.php', $apiget);
        $api_str = $api_comment["body"];
        //echo $api_str;
        $f = ROOT_PATH . 'data/config.php';
        file_put_contents($f, str_replace("'API_TIME', '" . API_TIME . "'", "'API_TIME', '" . date('d-m-Y H:i:s', time()) . "'", file_get_contents($f)));
        write_static_cache('api_str', $api_str);
    } else {
        echo $data;
    }
} elseif ($_REQUEST['act'] == 'menu_api') {
    if (!admin_priv('all', '', false)) {
        exit;
    }
    require_once ROOT_PATH . '/includes/lib_base.php';
    $data = read_static_cache('menu_api');
    if ($data === false || isset($data['api_time']) && $data['api_time'] < date('dmY')) {
        include_once ROOT_PATH . 'includes/cls_transport.php';
        $ecs_lang = $_CFG['lang'];
        $ecs_charset = strtoupper(EC_CHARSET);
        $ecs_version = VERSION;
        $apiget = "ver= {$ecs_version} &ecs_lang= {$ecs_lang} &charset= {$ecs_charset} ";
        $t = new transport();
        $api_comment = $t->request('http://cloud.ecshop.com/menu_api.php', $apiget);
        $api_str = $api_comment["body"];
        if (!empty($api_str)) {
            include_once ROOT_PATH . 'includes/cls_json.php';
            $json = new JSON();
            $api_arr = @$json->decode($api_str, 1);
            if (!empty($api_arr) && $api_arr['error'] == 0 && md5($api_arr['content']) == $api_arr['hash']) {
                $api_arr['content'] = urldecode($api_arr['content']);
示例#6
0
/**
 * 载入配置信息
 *
 * @access  public
 * @return  array
 */
function load_config()
{
    $arr = array();
    $data = read_static_cache('shop_config');
    if ($data === false) {
        $sql = 'SELECT code, value FROM ' . $GLOBALS['ecs']->table('shop_config') . ' WHERE parent_id > 0';
        $res = $GLOBALS['db']->getAll($sql);
        foreach ($res as $row) {
            $arr[$row['code']] = $row['value'];
        }
        /* 对数值型设置处理 */
        $arr['watermark_alpha'] = intval($arr['watermark_alpha']);
        $arr['market_price_rate'] = floatval($arr['market_price_rate']);
        $arr['integral_scale'] = floatval($arr['integral_scale']);
        //$arr['integral_percent']     = floatval($arr['integral_percent']);
        $arr['cache_time'] = intval($arr['cache_time']);
        $arr['thumb_width'] = intval($arr['thumb_width']);
        $arr['thumb_height'] = intval($arr['thumb_height']);
        $arr['image_width'] = intval($arr['image_width']);
        $arr['image_height'] = intval($arr['image_height']);
        $arr['best_number'] = !empty($arr['best_number']) && intval($arr['best_number']) > 0 ? intval($arr['best_number']) : 3;
        $arr['new_number'] = !empty($arr['new_number']) && intval($arr['new_number']) > 0 ? intval($arr['new_number']) : 3;
        $arr['hot_number'] = !empty($arr['hot_number']) && intval($arr['hot_number']) > 0 ? intval($arr['hot_number']) : 3;
        $arr['promote_number'] = !empty($arr['promote_number']) && intval($arr['promote_number']) > 0 ? intval($arr['promote_number']) : 3;
        $arr['top_number'] = intval($arr['top_number']) > 0 ? intval($arr['top_number']) : 10;
        $arr['history_number'] = intval($arr['history_number']) > 0 ? intval($arr['history_number']) : 5;
        $arr['comments_number'] = intval($arr['comments_number']) > 0 ? intval($arr['comments_number']) : 5;
        $arr['article_number'] = intval($arr['article_number']) > 0 ? intval($arr['article_number']) : 5;
        $arr['page_size'] = intval($arr['page_size']) > 0 ? intval($arr['page_size']) : 10;
        $arr['bought_goods'] = intval($arr['bought_goods']);
        $arr['goods_name_length'] = intval($arr['goods_name_length']);
        $arr['top10_time'] = intval($arr['top10_time']);
        $arr['goods_gallery_number'] = intval($arr['goods_gallery_number']) ? intval($arr['goods_gallery_number']) : 5;
        $arr['no_picture'] = !empty($arr['no_picture']) ? str_replace('../', './', $arr['no_picture']) : 'images/no_picture.gif';
        // 修改默认商品图片的路径
        $arr['qq'] = !empty($arr['qq']) ? $arr['qq'] : '';
        $arr['ww'] = !empty($arr['ww']) ? $arr['ww'] : '';
        $arr['default_storage'] = isset($arr['default_storage']) ? intval($arr['default_storage']) : 1;
        $arr['min_goods_amount'] = isset($arr['min_goods_amount']) ? floatval($arr['min_goods_amount']) : 0;
        $arr['one_step_buy'] = empty($arr['one_step_buy']) ? 0 : 1;
        $arr['invoice_type'] = empty($arr['invoice_type']) ? array('type' => array(), 'rate' => array()) : unserialize($arr['invoice_type']);
        $arr['show_order_type'] = isset($arr['show_order_type']) ? $arr['show_order_type'] : 0;
        // 显示方式默认为列表方式
        $arr['help_open'] = isset($arr['help_open']) ? $arr['help_open'] : 1;
        // 显示方式默认为列表方式
        if (!isset($GLOBALS['_CFG']['ecs_version'])) {
            /* 如果没有版本号则默认为2.0.5 */
            $GLOBALS['_CFG']['ecs_version'] = 'v2.0.5';
        }
        //限定语言项
        $lang_array = array('zh_cn', 'zh_tw', 'en_us');
        if (empty($arr['lang']) || !in_array($arr['lang'], $lang_array)) {
            $arr['lang'] = 'zh_cn';
            // 默认语言为简体中文
        }
        if (empty($arr['integrate_code'])) {
            $arr['integrate_code'] = 'ecshop';
            // 默认的会员整合插件为 ecshop
        }
        write_static_cache('shop_config', $arr);
    } else {
        $arr = $data;
    }
    return $arr;
}
示例#7
0
/**
*@param int $parent_id 父id
*@return array $arr  有层级的数组
*/
function digui($arrayinfo = array(), $parent_id = 0)
{
    global $db, $ecs;
    $data = read_static_cache('city_tree_68');
    if ($data !== false && is_array($data)) {
        return $data;
    }
    if (empty($arrayinfo)) {
        $sql = "select * from " . $ecs->table('region');
        $arrayinfo = $db->getAll($sql);
    }
    $arr = array();
    foreach ($arrayinfo as $key => $val) {
        if ($val['parent_id'] == $parent_id) {
            $region_id = $val['region_id'];
            $arr[$region_id] = array('id' => $region_id, 'text' => $val['region_name'], 'level' => $val['region_type'], 'parent_id' => $val['parent_id']);
            unset($arrayinfo[$key]);
            $arr[$region_id]['child'] = digui($arrayinfo, $region_id);
            if (empty($arr[$region_id]['child'])) {
                $arr[$region_id]['child'] = null;
            }
        }
    }
    write_static_cache('city_tree_68', $arr);
    return $arr;
}
function get_naviHtml_by_position_20141107($curr_app_name = "", $posi = 'index_top')
{
    $home_navi = read_static_cache("home_navi");
    $navi_list = isset($home_navi[$posi]) ? $home_navi[$posi] : array();
    if (!empty($navi_list)) {
        $html = '';
        foreach ($navi_list as $navi) {
            $class = '';
            if (!empty($navi['class_name'])) {
                $class = ' class="' . $navi['class_name'] . '"';
            }
            $target = '';
            if (!empty($navi['target'])) {
                $target = ' target="_' . $navi['target'] . '"';
            }
            if ($curr_app_name == $navi['app_name']) {
                $html .= '<a href="' . $navi['href'] . '" ' . $target . '>' . $navi['name'] . '</a>';
            } else {
                $html .= '<a href="' . $navi['href'] . '" ' . $target . '>' . $navi['name'] . '</a>';
            }
        }
        return $html;
    }
    return '';
}
示例#9
0
/**
 * 获得推荐商品
 *
 * @access  public
 * @param   string      $type       推荐类型,可以是 best, new, hot
 * @return  array
 */
function get_recommend_goods($type = '', $cats = '')
{
    if (!in_array($type, array('best', 'new', 'hot'))) {
        return array();
    }
    //取不同推荐对应的商品
    static $type_goods = array();
    if (empty($type_goods[$type])) {
        //初始化数据
        $type_goods['best'] = array();
        $type_goods['new'] = array();
        $type_goods['hot'] = array();
        $data = read_static_cache('recommend_goods');
        if ($data === false) {
            $sql = 'SELECT g.goods_id, g.is_best, g.is_new, g.is_hot, g.is_promote, b.brand_name,g.sort_order ' . ' FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . ' LEFT JOIN ' . $GLOBALS['ecs']->table('brand') . ' AS b ON b.brand_id = g.brand_id ' . ' WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND (g.is_best = 1 OR g.is_new =1 OR g.is_hot = 1)' . ' ORDER BY g.sort_order, g.last_update DESC';
            $goods_res = $GLOBALS['db']->getAll($sql);
            //定义推荐,最新,热门,促销商品
            $goods_data['best'] = array();
            $goods_data['new'] = array();
            $goods_data['hot'] = array();
            $goods_data['brand'] = array();
            if (!empty($goods_res)) {
                foreach ($goods_res as $data) {
                    if ($data['is_best'] == 1) {
                        $goods_data['best'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                    }
                    if ($data['is_new'] == 1) {
                        $goods_data['new'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                    }
                    if ($data['is_hot'] == 1) {
                        $goods_data['hot'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                    }
                    if ($data['brand_name'] != '') {
                        $goods_data['brand'][$data['goods_id']] = $data['brand_name'];
                    }
                }
            }
            write_static_cache('recommend_goods', $goods_data);
        } else {
            $goods_data = $data;
        }
        $time = gmtime();
        $order_type = $GLOBALS['_CFG']['recommend_order'];
        //按推荐数量及排序取每一项推荐显示的商品 order_type可以根据后台设定进行各种条件显示
        static $type_array = array();
        $type2lib = array('best' => 'recommend_best', 'new' => 'recommend_new', 'hot' => 'recommend_hot');
        if (empty($type_array)) {
            foreach ($type2lib as $key => $data) {
                if (!empty($goods_data[$key])) {
                    $num = get_library_number($data);
                    $data_count = count($goods_data[$key]);
                    $num = $data_count > $num ? $num : $data_count;
                    if ($order_type == 0) {
                        //usort($goods_data[$key], 'goods_sort');
                        $rand_key = array_slice($goods_data[$key], 0, $num);
                        foreach ($rand_key as $key_data) {
                            $type_array[$key][] = $key_data['goods_id'];
                        }
                    } else {
                        $rand_key = array_rand($goods_data[$key], $num);
                        if ($num == 1) {
                            $type_array[$key][] = $goods_data[$key][$rand_key]['goods_id'];
                        } else {
                            foreach ($rand_key as $key_data) {
                                $type_array[$key][] = $goods_data[$key][$key_data]['goods_id'];
                            }
                        }
                    }
                } else {
                    $type_array[$key] = array();
                }
            }
        }
        //取出所有符合条件的商品数据,并将结果存入对应的推荐类型数组中
        $sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' . "IFNULL(mp.user_price, g.shop_price * '{$_SESSION['discount']}') AS shop_price, " . "promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img, RAND() AS rnd " . 'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp " . "ON mp.goods_id = g.goods_id AND mp.user_rank = '{$_SESSION['user_rank']}' ";
        $type_merge = array_merge($type_array['new'], $type_array['best'], $type_array['hot']);
        $type_merge = array_unique($type_merge);
        $sql .= ' WHERE g.goods_id ' . db_create_in($type_merge);
        $sql .= ' ORDER BY g.sort_order, g.last_update DESC';
        $result = $GLOBALS['db']->getAll($sql);
        foreach ($result as $idx => $row) {
            if ($row['promote_price'] > 0) {
                $promote_price = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);
                $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';
            } else {
                $goods[$idx]['promote_price'] = '';
            }
            $goods[$idx]['id'] = $row['goods_id'];
            $goods[$idx]['name'] = $row['goods_name'];
            $goods[$idx]['brief'] = $row['goods_brief'];
            $goods[$idx]['brand_name'] = isset($goods_data['brand'][$row['goods_id']]) ? $goods_data['brand'][$row['goods_id']] : '';
            $goods[$idx]['goods_style_name'] = add_style($row['goods_name'], $row['goods_name_style']);
            $goods[$idx]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ? sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];
            $goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'], $row['goods_name_style']);
            $goods[$idx]['market_price'] = price_format($row['market_price']);
            $goods[$idx]['shop_price'] = price_format($row['shop_price']);
            $goods[$idx]['thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);
            $goods[$idx]['goods_img'] = get_image_path($row['goods_id'], $row['goods_img']);
            $goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
            if (in_array($row['goods_id'], $type_array['best'])) {
                $type_goods['best'][] = $goods[$idx];
            }
            if (in_array($row['goods_id'], $type_array['new'])) {
                $type_goods['new'][] = $goods[$idx];
            }
            if (in_array($row['goods_id'], $type_array['hot'])) {
                $type_goods['hot'][] = $goods[$idx];
            }
        }
    }
    return $type_goods[$type];
}
示例#10
0
/**
 * ccx 2015-03-17 获取主站的商品分类 start 
 * 获得指定分类下的子分类的数组
 *
 * @access  public
 * @param   int     $cat_id     分类的ID
 * @param   int     $selected   当前选中分类的ID
 * @param   boolean $re_type    返回的类型: 值为真时返回下拉列表,否则返回数组
 * @param   int     $level      限定返回的级数。为0时返回所有级数
 * @param   int     $is_show_all 如果为true显示所有分类,如果为false隐藏不可见分类。
 * @return  mix
 */
function cat_list_host_category($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true)
{
    static $res = NULL;
    $where = "WHERE c.host_cat = 1 ";
    if ($res === NULL) {
        $data = read_static_cache('cat_pid_releate');
        $data = false;
        if ($data === false) {
            $sql = "SELECT c.host_cat,c.agency_cat,c.cat_id, c.cat_name, c.measure_unit, c.parent_id, c.is_show," . "c.show_in_nav, c.grade, c.sort_order, COUNT(s.cat_id) AS has_children " . 'FROM ' . $GLOBALS['ecs']->table('category') . " AS c " . "LEFT JOIN " . $GLOBALS['ecs']->table('category') . " AS s ON s.parent_id=c.cat_id " . " {$where} GROUP BY c.cat_id " . 'ORDER BY c.parent_id, c.sort_order ASC';
            $res = $GLOBALS['db']->getAll($sql);
            $sql = "SELECT cat_id, COUNT(*) AS goods_num " . " FROM " . $GLOBALS['ecs']->table('goods') . " WHERE is_delete = 0 AND is_on_sale = 1 " . " GROUP BY cat_id";
            $res2 = $GLOBALS['db']->getAll($sql);
            $sql = "SELECT gc.cat_id, COUNT(*) AS goods_num " . " FROM " . $GLOBALS['ecs']->table('goods_cat') . " AS gc , " . $GLOBALS['ecs']->table('goods') . " AS g " . " WHERE g.goods_id = gc.goods_id AND g.is_delete = 0 AND g.is_on_sale = 1 " . " GROUP BY gc.cat_id";
            $res3 = $GLOBALS['db']->getAll($sql);
            $newres = array();
            foreach ($res2 as $k => $v) {
                $newres[$v['cat_id']] = $v['goods_num'];
                foreach ($res3 as $ks => $vs) {
                    if ($v['cat_id'] == $vs['cat_id']) {
                        $newres[$v['cat_id']] = $v['goods_num'] + $vs['goods_num'];
                    }
                }
            }
            foreach ($res as $k => $v) {
                $res[$k]['goods_num'] = !empty($newres[$v['cat_id']]) ? $newres[$v['cat_id']] : 0;
                if (admin_agency_id()) {
                    $res[$k]['agency_state'] = strpos($v['agency_cat'], ',' . admin_agency_id() . ',') !== false ? 1 : 0;
                    $sql = "select cat_id from " . $GLOBALS['ecs']->table('category') . " where host_cat = " . $v['cat_id'] . " AND agency_cat = '," . admin_agency_id() . ",'";
                    $is_lead = $GLOBALS['db']->GetOne($sql);
                    if ($is_lead > 0) {
                        $res[$k]['is_lead'] = 1;
                        //该分类被引用了
                    } else {
                        $res[$k]['is_lead'] = 0;
                        //该分类未被引用
                    }
                }
            }
            //如果数组过大,不采用静态缓存方式
            if (count($res) <= 1000) {
                //write_static_cache('cat_pid_releate', $res);
            }
        } else {
            $res = $data;
        }
    }
    if (empty($res) == true) {
        return $re_type ? '' : array();
    }
    $options = cat_options($cat_id, $res);
    // 获得指定分类下的子分类的数组
    $children_level = 99999;
    //大于这个分类的将被删除
    if ($is_show_all == false) {
        foreach ($options as $key => $val) {
            if ($val['level'] > $children_level) {
                unset($options[$key]);
            } else {
                if ($val['is_show'] == 0) {
                    unset($options[$key]);
                    if ($children_level > $val['level']) {
                        $children_level = $val['level'];
                        //标记一下,这样子分类也能删除
                    }
                } else {
                    $children_level = 99999;
                    //恢复初始值
                }
            }
        }
    }
    /* 截取到指定的缩减级别 */
    if ($level > 0) {
        if ($cat_id == 0) {
            $end_level = $level;
        } else {
            $first_item = reset($options);
            // 获取第一个元素
            $end_level = $first_item['level'] + $level;
        }
        /* 保留level小于end_level的部分 */
        foreach ($options as $key => $val) {
            if ($val['level'] >= $end_level) {
                unset($options[$key]);
            }
        }
    }
    if ($re_type == true) {
        $select = '';
        foreach ($options as $var) {
            $select .= '<option value="' . $var['cat_id'] . '" ';
            $select .= $selected == $var['cat_id'] ? "selected='ture'" : '';
            $select .= '>';
            if ($var['level'] > 0) {
                $select .= str_repeat('&nbsp;', $var['level'] * 4);
            }
            $select .= htmlspecialchars(addslashes($var['cat_name']), ENT_QUOTES) . '</option>';
        }
        return $select;
    } else {
        foreach ($options as $key => $value) {
            $options[$key]['url'] = build_uri('category', array('cid' => $value['cat_id']), $value['cat_name']);
            //if(empty($options[$key]['host_cat']))
            //{
            //if(!admin_agency_id() || !strstr($options[$key]['agency_cat'],','.admin_agency_id().','))
            //unset($options[$key]);
            //}
        }
        return $options;
    }
}
示例#11
0
文件: region.php 项目: dlpc/ecshop
    $city_id = $_POST['city_id'] ? intval($_POST['city_id']) : 0;
    $sql_url = "SELECT agency_url FROM " . $ecs->table('agency_url') . 'WHERE region_id =' . $city_id;
    $agency_url = $db->getOne($sql_url);
    //header("Location:http://".$agency_url);
    $result_url = array();
    $result_url['url'] = $agency_url;
    die($json->encode($result_url));
} elseif ($_POST['act'] == 'word_search') {
    $keyword = !empty($_POST['keyword']) ? $_POST['keyword'] : '';
    $sql = "SELECT region_id,region_name,pinyin FROM " . $ecs->table('region') . " WHERE region_name LIKE '{$keyword}%' OR pinyin LIKE '{$keyword}%'";
    $rows = $db->getAll($sql);
    //dump($rows);
    die($json->encode($rows));
} elseif ($_POST['act'] == 'capital_search') {
    #读取缓存
    $rows = read_static_cache('region');
    if ($rows === false) {
        $sql = "SELECT region_id,region_name,capital FROM " . $ecs->table('region') . " WHERE region_type = 2 ORDER BY capital ASC";
        $rows = array();
        $rows = $db->getAll($sql);
        #写入缓存
        write_static_cache('region', $rows);
    }
    /* 对数据进行组装 start */
    $arr = array();
    foreach ($rows as $key => $value) {
        $arr[$value['capital']][] = $value;
    }
    $html = '';
    foreach ($arr as $k => $v) {
        $city = '';
示例#12
0
/**
*@param int $parent_id 父id
*@return array $arr  有层级的数组
*/
function digui($arrayinfo = array(), $parent_id = 0)
{
    global $db, $ecs;
    $data = read_static_cache('city_tree_68');
    //if($data !== false && is_array($data)){
    //	return $data;
    //}
    $select_region = create_ever_sql();
    if (count($select_region) > 0) {
        $where = " where region_id not in (" . implode(',', $select_region) . ")";
    } else {
        $where = '';
    }
    $sql = "select * from " . $ecs->table('region') . $where;
    $arrayinfo = $db->getAll($sql);
    $arr = array();
    $arr = sss($arrayinfo, 0);
    write_static_cache('city_tree_68', $arr);
    return $arr;
}
示例#13
0
 /**
  * 载入配置信息
  * @access  public
  * @return  array
  */
 public function load_config()
 {
     $data = read_static_cache('touch_shop_config');
     if ($data === false) {
         $sql = 'SELECT code, value FROM ' . $this->pre . 'touch_shop_config WHERE parent_id > 0';
         $res = $this->query($sql);
         $arr1 = array();
         foreach ($res as $row) {
             $arr1[$row['code']] = $row['value'];
         }
         $sql = 'SELECT code, value FROM ' . $this->pre . 'shop_config WHERE parent_id > 0';
         $res = $this->query($sql);
         $arr2 = array();
         foreach ($res as $row) {
             $arr2[$row['code']] = $row['value'];
         }
         $arr = array_merge($arr2, $arr1);
         /* 对数值型设置处理 */
         $arr['watermark_alpha'] = intval($arr['watermark_alpha']);
         $arr['market_price_rate'] = floatval($arr['market_price_rate']);
         $arr['integral_scale'] = floatval($arr['integral_scale']);
         //$arr['integral_percent']     = floatval($arr['integral_percent']);
         $arr['cache_time'] = intval($arr['cache_time']);
         $arr['thumb_width'] = intval($arr['thumb_width']);
         $arr['thumb_height'] = intval($arr['thumb_height']);
         $arr['image_width'] = intval($arr['image_width']);
         $arr['image_height'] = intval($arr['image_height']);
         $arr['best_number'] = !empty($arr['best_number']) && intval($arr['best_number']) > 0 ? intval($arr['best_number']) : 3;
         $arr['new_number'] = !empty($arr['new_number']) && intval($arr['new_number']) > 0 ? intval($arr['new_number']) : 3;
         $arr['hot_number'] = !empty($arr['hot_number']) && intval($arr['hot_number']) > 0 ? intval($arr['hot_number']) : 3;
         $arr['promote_number'] = !empty($arr['promote_number']) && intval($arr['promote_number']) > 0 ? intval($arr['promote_number']) : 3;
         $arr['top_number'] = intval($arr['top_number']) > 0 ? intval($arr['top_number']) : 10;
         $arr['history_number'] = intval($arr['history_number']) > 0 ? intval($arr['history_number']) : 5;
         $arr['comments_number'] = intval($arr['comments_number']) > 0 ? intval($arr['comments_number']) : 5;
         $arr['article_number'] = intval($arr['article_number']) > 0 ? intval($arr['article_number']) : 5;
         $arr['page_size'] = intval($arr['page_size']) > 0 ? intval($arr['page_size']) : 10;
         $arr['bought_goods'] = intval($arr['bought_goods']);
         $arr['goods_name_length'] = intval($arr['goods_name_length']);
         $arr['top10_time'] = intval($arr['top10_time']);
         $arr['goods_gallery_number'] = intval($arr['goods_gallery_number']) ? intval($arr['goods_gallery_number']) : 5;
         $arr['no_picture'] = !empty($arr['no_picture']) ? str_replace('./', '/', $arr['no_picture']) : __ROOT__ . '/data/common/images/no_picture.gif';
         // 修改默认商品图片的路径
         $arr['qq'] = !empty($arr['qq']) ? $arr['qq'] : '';
         $arr['ww'] = !empty($arr['ww']) ? $arr['ww'] : '';
         $arr['default_storage'] = isset($arr['default_storage']) ? intval($arr['default_storage']) : 1;
         $arr['min_goods_amount'] = isset($arr['min_goods_amount']) ? floatval($arr['min_goods_amount']) : 0;
         $arr['one_step_buy'] = empty($arr['one_step_buy']) ? 0 : 1;
         $arr['invoice_type'] = empty($arr['invoice_type']) ? array('type' => array(), 'rate' => array()) : unserialize($arr['invoice_type']);
         $arr['show_order_type'] = isset($arr['show_order_type']) ? $arr['show_order_type'] : 0;
         // 显示方式默认为列表方式
         $arr['help_open'] = isset($arr['help_open']) ? $arr['help_open'] : 1;
         // 显示方式默认为列表方式
         $ecs_version = C('ecs_version');
         if (!isset($ecs_version)) {
             /* 如果没有版本号则默认为2.0.5 */
             C('ecs_version', 'v2.7.3');
         }
         //限定语言项
         $lang_array = array('zh_cn', 'zh_tw', 'en_us');
         if (empty($arr['lang']) || !in_array($arr['lang'], $lang_array)) {
             $arr['lang'] = 'zh_cn';
             // 默认语言为简体中文
         }
         if (empty($arr['integrate_code'])) {
             $arr['integrate_code'] = 'ecshop';
             // 默认的会员整合插件为 ecshop
         }
         write_static_cache('touch_shop_config', $arr);
     } else {
         $arr = $data;
     }
     $config = array();
     foreach ($arr as $key => $vo) {
         $config[strtoupper($key)] = $vo;
     }
     return $config;
 }
示例#14
0
/**
 * 取得最近的上级分类的grade值.
 *
 * @param int $cat_id //当前的cat_id
 *
 * @return int
 */
function get_parent_grade($cat_id)
{
    static $res = null;
    if ($res === null) {
        $data = read_static_cache('cat_parent_grade');
        if ($data === false) {
            $sql = 'SELECT parent_id, cat_id, grade ' . ' FROM ' . $GLOBALS['ecs']->table('category');
            $res = $GLOBALS['db']->getAll($sql);
            write_static_cache('cat_parent_grade', $res);
        } else {
            $res = $data;
        }
    }
    if (!$res) {
        return 0;
    }
    $parent_arr = array();
    $grade_arr = array();
    foreach ($res as $val) {
        $parent_arr[$val['cat_id']] = $val['parent_id'];
        $grade_arr[$val['cat_id']] = $val['grade'];
    }
    while ($parent_arr[$cat_id] > 0 && $grade_arr[$cat_id] == 0) {
        $cat_id = $parent_arr[$cat_id];
    }
    return $grade_arr[$cat_id];
}
示例#15
0
                    //ecs_iconv('UTF-8',$data['charset'],$api_arr['content']);去除模板汤的左边的目录
                }
                $api_arr['api_time'] = date('Ymd');
                write_static_cache('menu_api', $api_arr);
                make_json_result($api_arr['content']);
            } else {
                make_json_result('0');
            }
        } else {
            make_json_result('0');
        }
    } else {
        make_json_result($api_data['content']);
    }
} elseif ($act == 'cloud_remind') {
    $api_data = read_static_cache('cloud_remind');
    if ($api_data === false || isset($api_data['api_time']) && $api_data['api_time'] < date('Ymd')) {
        $t = new transport('-1', 5);
        $apiget = "ver={$data['version']}&ecs_lang={$data['ecs_lang']}&charset={$data['charset']}&certificate_id={$data['certificate_id']}&ent_id={$data['ent_id']}";
        $api_comment = $t->request('http://ecshop.ecmoban.com/cloud_remind.php', $apiget);
        $api_str = $api_comment["body"];
        $json = new Services_JSON();
        $api_arr = @$json->decode($api_str, 1);
        if (!empty($api_str)) {
            if (!empty($api_arr) && $api_arr['error'] == 0 && md5($api_arr['content']) == $api_arr['hash']) {
                $api_arr['content'] = urldecode($api_arr['content']);
                $message = explode('|', $api_arr['content']);
                $api_arr['content'] = '<li  class="cloud_close">' . $message['0'] . '<img onclick="cloud_close(' . $message['1'] . ')" src="images/no.gif"></li>';
                if ($data['charset'] != 'UTF-8') {
                    $api_arr['content'] = ecs_iconv('UTF-8', $data['charset'], $api_arr['content']);
                }
示例#16
0
    $smarty->assign('new_repay', $db->getOne('SELECT COUNT(*) FROM ' . $ecs->table('user_account') . ' WHERE process_type = ' . SURPLUS_RETURN . ' AND is_paid = 0 '));



    assign_query_info();
    $smarty->assign('ecs_version',  VERSION);
    $smarty->assign('ecs_release',  RELEASE);
    $smarty->assign('ecs_lang',     $_CFG['lang']);
    $smarty->assign('ecs_charset',  strtoupper(EC_CHARSET));
    $smarty->assign('install_date', local_date($_CFG['date_format'], $_CFG['install_date']));
    $smarty->display('start.htm');
}
elseif ($_REQUEST['act'] == 'main_api')
{
    require_once(ROOT_PATH . '/includes/lib_base.php');
    $data = read_static_cache('api_str');

    if($data === false || API_TIME < date('Y-m-d H:i:s',time()-43200))
    {
        include_once(ROOT_PATH . 'includes/cls_transport.php');
        $ecs_version = VERSION;
        $ecs_lang = $_CFG['lang'];
        $ecs_release = RELEASE;
        $php_ver = PHP_VERSION;
        $mysql_ver = $db->version();
        $order['stats'] = $db->getRow('SELECT COUNT(*) AS oCount, IFNULL(SUM(order_amount), 0) AS oAmount' .
    ' FROM ' .$ecs->table('order_info'));
        $ocount = $order['stats']['oCount'];
        $oamount = $order['stats']['oAmount'];
        $goods['total']   = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
    ' WHERE is_delete = 0 AND is_alone_sale = 1 AND is_real = 1');
示例#17
0
/**
 * 过滤和排序所有分类,返回一个带有缩进级别的数组
 *
 * @access  private
 * @param   int     $cat_id     上级分类ID
 * @param   array   $arr        含有所有分类的数组
 * @param   int     $level      级别
 * @return  void
 */
function cat_options($spec_cat_id, $arr) {
    static $cat_options = array();

    if (isset($cat_options[$spec_cat_id])) {
        return $cat_options[$spec_cat_id];
    }

    if (!isset($cat_options[0])) {
        $level = $last_cat_id = 0;
        $options = $cat_id_array = $level_array = array();
        $data = read_static_cache('cat_option_static');
        if ($data === false) {
            while (!empty($arr)) {
                foreach ($arr AS $key => $value) {
                    $cat_id = $value['cat_id'];
                    if ($level == 0 && $last_cat_id == 0) {
                        if ($value['parent_id'] > 0) {
                            break;
                        }

                        $options[$cat_id] = $value;
                        $options[$cat_id]['level'] = $level;
                        $options[$cat_id]['id'] = $cat_id;
                        $options[$cat_id]['name'] = $value['cat_name'];
                        unset($arr[$key]);

                        if ($value['has_children'] == 0) {
                            continue;
                        }
                        $last_cat_id = $cat_id;
                        $cat_id_array = array($cat_id);
                        $level_array[$last_cat_id] = ++$level;
                        continue;
                    }

                    if ($value['parent_id'] == $last_cat_id) {
                        $options[$cat_id] = $value;
                        $options[$cat_id]['level'] = $level;
                        $options[$cat_id]['id'] = $cat_id;
                        $options[$cat_id]['name'] = $value['cat_name'];
                        unset($arr[$key]);

                        if ($value['has_children'] > 0) {
                            if (end($cat_id_array) != $last_cat_id) {
                                $cat_id_array[] = $last_cat_id;
                            }
                            $last_cat_id = $cat_id;
                            $cat_id_array[] = $cat_id;
                            $level_array[$last_cat_id] = ++$level;
                        }
                    } elseif ($value['parent_id'] > $last_cat_id) {
                        break;
                    }
                }

                $count = count($cat_id_array);
                if ($count > 1) {
                    $last_cat_id = array_pop($cat_id_array);
                } elseif ($count == 1) {
                    if ($last_cat_id != end($cat_id_array)) {
                        $last_cat_id = end($cat_id_array);
                    } else {
                        $level = 0;
                        $last_cat_id = 0;
                        $cat_id_array = array();
                        continue;
                    }
                }

                if ($last_cat_id && isset($level_array[$last_cat_id])) {
                    $level = $level_array[$last_cat_id];
                } else {
                    $level = 0;
                }
            }
            //如果数组过大,不采用静态缓存方式
            if (count($options) <= 2000) {
                write_static_cache('cat_option_static', $options);
            }
        } else {
            $options = $data;
        }
        $cat_options[0] = $options;
    } else {
        $options = $cat_options[0];
    }

    if (!$spec_cat_id) {
        return $options;
    } else {
        if (empty($options[$spec_cat_id])) {
            return array();
        }

        $spec_cat_id_level = $options[$spec_cat_id]['level'];

        foreach ($options AS $key => $value) {
            if ($key != $spec_cat_id) {
                unset($options[$key]);
            } else {
                break;
            }
        }

        $spec_cat_id_array = array();
        foreach ($options AS $key => $value) {
            if (($spec_cat_id_level == $value['level'] && $value['cat_id'] != $spec_cat_id) ||
                    ($spec_cat_id_level > $value['level'])) {
                break;
            } else {
                $spec_cat_id_array[$key] = $value;
            }
        }
        $cat_options[$spec_cat_id] = $spec_cat_id_array;

        return $spec_cat_id_array;
    }
}
 /**
  * 取得最近的上级分类的grade值
  *
  * @access  public
  * @param   int     $cat_id    //当前的cat_id
  *
  * @return int
  */
 function get_parent_grade($cat_id)
 {
     static $res = NULL;
     if ($res === NULL) {
         $data = read_static_cache('cat_parent_grade');
         if ($data === false) {
             $sql = "SELECT parent_id, cat_id, grade " . " FROM " . $this->pre . 'category';
             $res = M()->query($sql);
             write_static_cache('cat_parent_grade', $res);
         } else {
             $res = $data;
         }
     }
     if (!$res) {
         return 0;
     }
     $parent_arr = array();
     $grade_arr = array();
     foreach ($res as $val) {
         $parent_arr[$val['cat_id']] = $val['parent_id'];
         $grade_arr[$val['cat_id']] = $val['grade'];
     }
     while ($parent_arr[$cat_id] > 0 && $grade_arr[$cat_id] == 0) {
         $cat_id = $parent_arr[$cat_id];
     }
     return $grade_arr[$cat_id];
 }
示例#19
0
文件: lib_goods.php 项目: dlpc/ecshop
/**
 * 获得推荐商品
 *
 * @access  public
 * @param   string      $type       推荐类型,可以是 best, new, hot
 * @return  array
 */
function get_recommend_goods($type = '', $cats = '')
{
    if (!in_array($type, array('special', 'best', 'new', 'hot'))) {
        return array();
    }
    //取不同推荐对应的商品
    static $type_goods = array();
    //print_r($type_goods[$type]);
    if (empty($type_goods[$type])) {
        //初始化数据
        $type_goods['special'] = array();
        $type_goods['best'] = array();
        $type_goods['new'] = array();
        $type_goods['hot'] = array();
        //获取显示商品条件 add by hg for date 2014-03-26
        $agency_where = agency_goods();
        $data = read_static_cache('recommend_goods');
        //******书签 ---- 关闭首页缓存,删除以下代码
        //if ($data === false)
        // {
        $sql = 'SELECT g.goods_id,g.is_special, g.is_best, g.is_new, g.is_hot, g.is_promote, b.brand_name,g.sort_order ' . ' FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . ' LEFT JOIN ' . $GLOBALS['ecs']->table('brand') . ' AS b ON b.brand_id = g.brand_id ' . ' WHERE ' . $agency_where . ' g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND (g.is_special = 1 OR g.is_best = 1 OR g.is_new =1 OR g.is_hot = 1)' . ' ORDER BY g.sort_order, g.last_update DESC';
        $goods_res = $GLOBALS['db']->getAll($sql);
        //dump($goods_res);
        //定义推荐,特产,最新,热门,促销商品
        $goods_data['special'] = array();
        $goods_data['best'] = array();
        $goods_data['new'] = array();
        $goods_data['hot'] = array();
        $goods_data['brand'] = array();
        if (!empty($goods_res)) {
            foreach ($goods_res as $data) {
                if ($data['is_special'] == 1) {
                    $goods_data['special'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                }
                if ($data['is_best'] == 1) {
                    $goods_data['best'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                }
                if ($data['is_new'] == 1) {
                    $goods_data['new'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                }
                if ($data['is_hot'] == 1) {
                    $goods_data['hot'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);
                }
                if ($data['brand_name'] != '') {
                    $goods_data['brand'][$data['goods_id']] = $data['brand_name'];
                }
            }
        }
        //dump($goods_data);
        write_static_cache('recommend_goods', $goods_data);
        // }
        // else
        //{
        // $goods_data = $data;
        //  }
        $time = gmtime();
        $order_type = $GLOBALS['_CFG']['recommend_order'];
        //按推荐数量及排序取每一项推荐显示的商品,  order_type可以根据后台设定进行各种条件显示
        static $type_array = array();
        $type2lib = array('special' => 'recommend_special', 'best' => 'recommend_best', 'new' => 'recommend_new', 'hot' => 'recommend_hot');
        if (empty($type_array)) {
            foreach ($type2lib as $key => $data) {
                if (!empty($goods_data[$key])) {
                    $num = get_library_number($data);
                    $data_count = count($goods_data[$key]);
                    $num = $data_count > $num ? $num : $data_count;
                    if ($order_type == 0) {
                        //usort($goods_data[$key], 'goods_sort');
                        $rand_key = array_slice($goods_data[$key], 0, $num);
                        foreach ($rand_key as $key_data) {
                            $type_array[$key][] = $key_data['goods_id'];
                        }
                    } else {
                        $rand_key = array_rand($goods_data[$key], $num);
                        if ($num == 1) {
                            $type_array[$key][] = $goods_data[$key][$rand_key]['goods_id'];
                        } else {
                            foreach ($rand_key as $key_data) {
                                $type_array[$key][] = $goods_data[$key][$key_data]['goods_id'];
                            }
                        }
                    }
                } else {
                    $type_array[$key] = array();
                }
            }
        }
        //取出所有符合条件的商品数据,并将结果存入对应的推荐类型数组中
        $sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.comments_number, g.sales_volume, g.market_price, g.shop_price AS org_price, g.promote_price, ' . "IFNULL(mp.user_price, g.shop_price * '{$_SESSION['discount']}') AS shop_price, " . "g.promote_start_date, g.promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img, RAND() AS rnd " . 'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp " . "ON mp.goods_id = g.goods_id AND mp.user_rank = '{$_SESSION['user_rank']}' ";
        $type_merge = array_merge($type_array['special'], $type_array['new'], $type_array['best'], $type_array['hot']);
        //dump($type_merge);
        $type_merge = array_unique($type_merge);
        //dump($type_merge);
        $sql .= ' WHERE g.goods_id ' . db_create_in($type_merge);
        $sql .= ' ORDER BY g.sort_order, g.last_update DESC';
        $result = $GLOBALS['db']->getAll($sql);
        //dump($result);
        foreach ($result as $idx => $row) {
            if ($row['promote_price'] > 0) {
                $promote_price = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);
                $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';
            } else {
                $goods[$idx]['promote_price'] = '';
            }
            /* 折扣节省计算 by ecmoban start */
            if ($row['market_price'] > 0) {
                $discount_arr = get_discount($row['goods_id']);
                //函数get_discount参数goods_id
            }
            $goods[$idx]['zhekou'] = $discount_arr['discount'];
            //zhekou
            $goods[$idx]['jiesheng'] = $discount_arr['jiesheng'];
            //jiesheng
            /* 折扣节省计算 by ecmoban end */
            $goods[$idx]['id'] = $row['goods_id'];
            $goods[$idx]['name'] = $row['goods_name'];
            $goods[$idx]['brief'] = $row['goods_brief'];
            $goods[$idx]['comments_number'] = $row['comments_number'];
            $goods[$idx]['sales_volume'] = $row['sales_volume'];
            $goods[$idx]['brand_name'] = isset($goods_data['brand'][$row['goods_id']]) ? $goods_data['brand'][$row['goods_id']] : '';
            $goods[$idx]['goods_style_name'] = add_style($row['goods_name'], $row['goods_name_style']);
            $goods[$idx]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ? sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];
            $goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'], $row['goods_name_style']);
            $goods[$idx]['market_price'] = price_format($row['market_price'], true, true);
            $goods[$idx]['shop_price'] = !preg_match('/¥/', price_format($row['shop_price'])) ? '<span style="font-size:12px;text-decoration:line-through;font-weight:normal;color:#666666;">市场价:' . price_format($row['market_price'], true, true) . '</span>' : price_format($row['shop_price']);
            $thumb = '';
            $thumb = get_image_path($row['goods_id'], $row['goods_thumb'], true);
            $goods[$idx]['thumb'] = strstr($thumb, 'http://') ? $thumb : img_url() . $thumb;
            //strstr($thumb,'http://')?$thumb:img_url().$thumb;
            $goods_img = '';
            $goods_img = get_image_path($row['goods_id'], $row['goods_img']);
            $goods[$idx]['goods_img'] = strstr($goods_img, 'http://') ? $goods_img : img_url() . $goods_img;
            $goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
            if (in_array($row['goods_id'], $type_array['special'])) {
                $type_goods['special'][] = $goods[$idx];
            }
            if (in_array($row['goods_id'], $type_array['best'])) {
                $type_goods['best'][] = $goods[$idx];
            }
            if (in_array($row['goods_id'], $type_array['new'])) {
                $type_goods['new'][] = $goods[$idx];
            }
            if (in_array($row['goods_id'], $type_array['hot'])) {
                $type_goods['hot'][] = $goods[$idx];
            }
        }
    }
    return $type_goods[$type];
}
/**
 * 获得指定分类下的子分类的数组
 *
 * @access  public
 * @param   int     $cat_id     分类的ID
 * @param   int     $selected   当前选中分类的ID
 * @param   boolean $re_type    返回的类型: 值为真时返回下拉列表,否则返回数组
 * @param   int     $level      限定返回的级数。为0时返回所有级数
 * @return  mix
 */
function article_cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0)
{
    static $res = NULL;
    if ($res === NULL) {
        $data = read_static_cache('art_cat_pid_releate');
        if ($data === false) {
            $sql = "SELECT c.*, COUNT(s.cat_id) AS has_children, COUNT(a.article_id) AS aricle_num " . ' FROM ' . $GLOBALS['ecs']->table('article_cat') . " AS c" . " LEFT JOIN " . $GLOBALS['ecs']->table('article_cat') . " AS s ON s.parent_id=c.cat_id" . " LEFT JOIN " . $GLOBALS['ecs']->table('article') . " AS a ON a.cat_id=c.cat_id" . " GROUP BY c.cat_id " . " ORDER BY parent_id, sort_order ASC";
            $res = $GLOBALS['db']->getAll($sql);
            write_static_cache('art_cat_pid_releate', $res);
        } else {
            $res = $data;
        }
    }
    if (empty($res) == true) {
        return $re_type ? '' : array();
    }
    $options = article_cat_options($cat_id, $res);
    // 获得指定分类下的子分类的数组
    /* 截取到指定的缩减级别 */
    if ($level > 0) {
        if ($cat_id == 0) {
            $end_level = $level;
        } else {
            $first_item = reset($options);
            // 获取第一个元素
            $end_level = $first_item['level'] + $level;
        }
        /* 保留level小于end_level的部分 */
        foreach ($options as $key => $val) {
            if ($val['level'] >= $end_level) {
                unset($options[$key]);
            }
        }
    }
    $pre_key = 0;
    foreach ($options as $key => $value) {
        $options[$key]['has_children'] = 1;
        if ($pre_key > 0) {
            if ($options[$pre_key]['cat_id'] == $options[$key]['parent_id']) {
                $options[$pre_key]['has_children'] = 1;
            }
        }
        $pre_key = $key;
    }
    if ($re_type == true) {
        $select = '';
        foreach ($options as $var) {
            $select .= '<option value="' . $var['cat_id'] . '" ';
            $select .= ' cat_type="' . $var['cat_type'] . '" ';
            $select .= $selected == $var['cat_id'] ? "selected='ture'" : '';
            $select .= '>';
            if ($var['level'] > 0) {
                $select .= str_repeat('&nbsp;', $var['level'] * 4);
            }
            $select .= htmlspecialchars(addslashes($var['cat_name'])) . '</option>';
        }
        return $select;
    } else {
        foreach ($options as $key => $value) {
            $options[$key]['url'] = build_uri('article_cat', array('acid' => $value['cat_id']), $value['cat_name']);
        }
        return $options;
    }
}
 /**
  * 获得指定分类下的子分类的数组
  *
  * @access  public
  * @param   int     $cat_id     分类的ID
  * @param   int     $selected   当前选中分类的ID
  * @param   boolean $re_type    返回的类型: 值为真时返回下拉列表,否则返回数组
  * @param   int     $level      限定返回的级数。为0时返回所有级数
  * @param   int     $is_show_all 如果为true显示所有分类,如果为false隐藏不可见分类。
  * @return  mix
  */
 function cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true)
 {
     static $res = NULL;
     if ($res === NULL) {
         $data = read_static_cache('cat_pid_releate');
         if ($data === false) {
             $res = M('category')->alias('c')->field('c.cat_id, c.cat_name, c.measure_unit, c.parent_id, c.is_show, c.show_in_nav, c.grade, c.sort_order, COUNT(s.cat_id) AS has_children')->join(C('DB_PREFIX') . 'category s ON s.parent_id=c.cat_id')->group('c.cat_id')->order('c.parent_id, c.sort_order ASC')->select();
             $res2 = M('goods')->field('cat_id, COUNT(*) AS goods_num')->where(array('is_delete' => 0, 'is_on_sale' => 1))->group('cat_id')->select();
             $res3 = M('goods_cat')->alias('gc')->field('gc.cat_id, COUNT(*) AS goods_num')->join(C('DB_PREFIX') . 'goods g ON g.goods_id = gc.goods_id')->where(array('g.goods_id = gc.goods_id AND g.is_delete = 0 AND g.is_on_sale = 1'))->select();
             $newres = array();
             foreach ($res2 as $k => $v) {
                 $newres[$v['cat_id']] = $v['goods_num'];
                 foreach ($res3 as $ks => $vs) {
                     if ($v['cat_id'] == $vs['cat_id']) {
                         $newres[$v['cat_id']] = $v['goods_num'] + $vs['goods_num'];
                     }
                 }
             }
             foreach ($res as $k => $v) {
                 $res[$k]['goods_num'] = !empty($newres[$v['cat_id']]) ? $newres[$v['cat_id']] : 0;
             }
             //如果数组过大,不采用静态缓存方式
             if (count($res) <= 1000) {
                 write_static_cache('cat_pid_releate', $res);
             }
         } else {
             $res = $data;
         }
     }
     if (empty($res) == true) {
         return $re_type ? '' : array();
     }
     $options = cat_options($cat_id, $res);
     // 获得指定分类下的子分类的数组
     $children_level = 99999;
     //大于这个分类的将被删除
     if ($is_show_all == false) {
         foreach ($options as $key => $val) {
             if ($val['level'] > $children_level) {
                 unset($options[$key]);
             } else {
                 if ($val['is_show'] == 0) {
                     unset($options[$key]);
                     if ($children_level > $val['level']) {
                         $children_level = $val['level'];
                         //标记一下,这样子分类也能删除
                     }
                 } else {
                     $children_level = 99999;
                     //恢复初始值
                 }
             }
         }
     }
     /* 截取到指定的缩减级别 */
     if ($level > 0) {
         if ($cat_id == 0) {
             $end_level = $level;
         } else {
             $first_item = reset($options);
             // 获取第一个元素
             $end_level = $first_item['level'] + $level;
         }
         /* 保留level小于end_level的部分 */
         foreach ($options as $key => $val) {
             if ($val['level'] >= $end_level) {
                 unset($options[$key]);
             }
         }
     }
     if ($re_type == true) {
         $select = '';
         foreach ($options as $var) {
             $select .= '<option value="' . $var['cat_id'] . '" ';
             $select .= $selected == $var['cat_id'] ? "selected='ture'" : '';
             $select .= '>';
             if ($var['level'] > 0) {
                 $select .= str_repeat('&nbsp;', $var['level'] * 4);
             }
             $select .= htmlspecialchars(addslashes($var['cat_name']), ENT_QUOTES) . '</option>';
         }
         return $select;
     } else {
         foreach ($options as $key => $value) {
             $options[$key]['url'] = build_uri('category', array('cid' => $value['cat_id']), $value['cat_name']);
         }
         return $options;
     }
 }