SHOP 鍏敤鍑芥暟搴? * ============================================================================ * * 鐗堟潈鎵€鏈?2005-2018 涓婃捣鍟嗘淳缃戠粶绉戞妧鏈夐檺鍏徃锛屽苟淇濈暀鎵€鏈夋潈鍒┿€? * 缃戠珯鍦板潃: http://www.ecshop.com锛? * ---------------------------------------------------------------------------- * 杩欎笉鏄竴涓嚜鐢辫蒋浠讹紒鎮ㄥ彧鑳藉湪涓嶇敤浜庡晢涓氱洰鐨勭殑鍓嶆彁涓嬪绋嬪簭浠g爜杩涜淇敼鍜? * 浣跨敤锛涗笉鍏佽瀵圭▼搴忎唬鐮佷互浠讳綍褰㈠紡浠讳綍鐩殑鐨勫啀鍙戝竷銆? * ============================================================================ * $Author: liubo $ * $Id: lib_common.php 17217 2011-01-19 06:29:08Z liubo $ */ if (!defined('IN_ECS')) { die('Hacking attempt'); } /* 寮€鍚叏灞€鐨凜ookie鐨凥ttpOnly灞炴€? 2017-09-28 17:20:20 */ @ini_set("session.cookie_httponly", 1); /** * 鍒涘缓鍍忚繖鏍风殑鏌ヨ: "IN('a','b')"; * * @access public * @param mix $item_list 鍒楄〃鏁扮粍鎴栧瓧绗︿覆 * @param string $field_name 瀛楁鍚嶇О * * @return void */ function db_create_in($item_list, $field_name = '') { if (empty($item_list)) { return $field_name . " IN ('') "; } else { if (!is_array($item_list)) { $item_list = explode(',', $item_list); } $item_list = array_unique($item_list); $item_list_tmp = ''; foreach ($item_list AS $item) { if ($item !== '') { $item_list_tmp .= $item_list_tmp ? ",'$item'" : "'$item'"; } } if (empty($item_list_tmp)) { return $field_name . " IN ('') "; } else { return $field_name . ' IN (' . $item_list_tmp . ') '; } } } /** * 楠岃瘉杈撳叆鐨勯偖浠跺湴鍧€鏄惁鍚堟硶 * * @access public * @param string $email 闇€瑕侀獙璇佺殑閭欢鍦板潃 * * @return bool */ function is_email($user_email) { $chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i"; if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false) { if (preg_match($chars, $user_email)) { return true; } else { return false; } } else { return false; } } /** * 妫€鏌ユ槸鍚︿负涓€涓悎娉曠殑鏃堕棿鏍煎紡 * * @access public * @param string $time * @return void */ function is_time($time) { $pattern = '/[\d]{4}-[\d]{1,2}-[\d]{1,2}\s[\d]{1,2}:[\d]{1,2}:[\d]{1,2}/'; return preg_match($pattern, $time); } /** * 鑾峰緱鏌ヨ鏃堕棿鍜屾鏁帮紝骞惰祴鍊肩粰smarty * * @access public * @return void */ function assign_query_info() { if ($GLOBALS['db']->queryTime == '') { $query_time = 0; } else { if (PHP_VERSION >= '5.0.0') { $query_time = number_format(microtime(true) - $GLOBALS['db']->queryTime, 6); } else { list($now_usec, $now_sec) = explode(' ', microtime()); list($start_usec, $start_sec) = explode(' ', $GLOBALS['db']->queryTime); $query_time = number_format(($now_sec - $start_sec) + ($now_usec - $start_usec), 6); } } $GLOBALS['smarty']->assign('query_info', sprintf($GLOBALS['_LANG']['query_info'], $GLOBALS['db']->queryCount, $query_time)); /* 鍐呭瓨鍗犵敤鎯呭喌 */ if ($GLOBALS['_LANG']['memory_info'] && function_exists('memory_get_usage')) { $GLOBALS['smarty']->assign('memory_info', sprintf($GLOBALS['_LANG']['memory_info'], memory_get_usage() / 1048576)); } /* 鏄惁鍚敤浜?gzip */ $gzip_enabled = gzip_enabled() ? $GLOBALS['_LANG']['gzip_enabled'] : $GLOBALS['_LANG']['gzip_disabled']; $GLOBALS['smarty']->assign('gzip_enabled', $gzip_enabled); } /** * 鍒涘缓鍦板尯鐨勮繑鍥炰俊鎭? * * @access public * @param array $arr 鍦板尯鏁扮粍 * * @return void */ function region_result($parent, $sel_name, $type) { global $cp; $arr = get_regions($type, $parent); foreach ($arr AS $v) { $region =& $cp->add_node('region'); $region_id =& $region->add_node('id'); $region_name =& $region->add_node('name'); $region_id->set_data($v['region_id']); $region_name->set_data($v['region_name']); } $select_obj =& $cp->add_node('select'); $select_obj->set_data($sel_name); } /** * 鑾峰緱鎸囧畾鍥藉鐨勬墍鏈夌渷浠? * * @access public * @param int country 鍥藉鐨勭紪鍙? * @return array */ function get_regions($type = 0, $parent = 0) { $sql = 'SELECT region_id, region_name FROM ' . $GLOBALS['ecs']->table('region') . " WHERE region_type = '$type' AND parent_id = '$parent'"; return $GLOBALS['db']->GetAll($sql); } /** * 鑾峰緱閰嶉€佸尯鍩熶腑鎸囧畾鐨勯厤閫佹柟寮忕殑閰嶉€佽垂鐢ㄧ殑璁$畻鍙傛暟 * * @access public * @param int $area_id 閰嶉€佸尯鍩烮D * * @return array; */ function get_shipping_config($area_id) { /* 鑾峰緱閰嶇疆淇℃伅 */ $sql = 'SELECT configure FROM ' . $GLOBALS['ecs']->table('shipping_area') . " WHERE shipping_area_id = '$area_id'"; $cfg = $GLOBALS['db']->GetOne($sql); if ($cfg) { /* 鎷嗗垎鎴愰厤缃俊鎭殑鏁扮粍 */ $arr = unserialize($cfg); } else { $arr = array(); } return $arr; } /** * 鍒濆鍖栦細鍛樻暟鎹暣鍚堢被 * * @access public * @return object */ function init_users() { $set_modules = false; static $cls = null; if ($cls != null) { return $cls; } include_once(ROOT_PATH . 'includes/modules/integrates/' . $GLOBALS['_CFG']['integrate_code'] . '.php'); $cfg = unserialize($GLOBALS['_CFG']['integrate_config']); $cls = new $GLOBALS['_CFG']['integrate_code']($cfg); return $cls; } /** * 鑾峰緱鎸囧畾鍒嗙被涓嬬殑瀛愬垎绫荤殑鏁扮粍 * * @access public * @param int $cat_id 鍒嗙被鐨処D * @param int $selected 褰撳墠閫変腑鍒嗙被鐨処D * @param boolean $re_type 杩斿洖鐨勭被鍨? 鍊间负鐪熸椂杩斿洖涓嬫媺鍒楄〃,鍚﹀垯杩斿洖鏁扮粍 * @param int $level 闄愬畾杩斿洖鐨勭骇鏁般€備负0鏃惰繑鍥炴墍鏈夌骇鏁? * @param int $is_show_all 濡傛灉涓簍rue鏄剧ず鎵€鏈夊垎绫伙紝濡傛灉涓篺alse闅愯棌涓嶅彲瑙佸垎绫汇€? * @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) { $sql = "SELECT 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 ". "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 (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 .= ''; } return $select; } else { foreach ($options AS $key => $value) { $options[$key]['url'] = build_uri('category', array('cid' => $value['cat_id']), $value['cat_name']); } return $options; } } /** * 杩囨护鍜屾帓搴忔墍鏈夊垎绫伙紝杩斿洖涓€涓甫鏈夌缉杩涚骇鍒殑鏁扮粍 * * @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; } } /** * 杞藉叆閰嶇疆淇℃伅 * * @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'])) { /* 濡傛灉娌℃湁鐗堟湰鍙峰垯榛樿涓?.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; } /** * 鍙栧緱鍝佺墝鍒楄〃 * @return array 鍝佺墝鍒楄〃 id => name */ function get_brand_list() { $sql = 'SELECT brand_id, brand_name FROM ' . $GLOBALS['ecs']->table('brand') . ' ORDER BY sort_order'; $res = $GLOBALS['db']->getAll($sql); $brand_list = array(); foreach ($res AS $row) { $brand_list[$row['brand_id']] = addslashes($row['brand_name']); } return $brand_list; } /** * 鑾峰緱鏌愪釜鍒嗙被涓? * * @access public * @param int $cat * @return array */ function get_brands($cat = 0, $app = 'brand') { global $page_libs; $template = basename(PHP_SELF); $template = substr($template, 0, strrpos($template, '.')); include_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_template.php'); static $static_page_libs = null; if ($static_page_libs == null) { $static_page_libs = $page_libs; } $children = ($cat > 0) ? ' AND ' . get_children($cat) : ''; $sql = "SELECT b.brand_id, b.brand_name, b.brand_logo, b.brand_desc, COUNT(*) AS goods_num, IF(b.brand_logo > '', '1', '0') AS tag ". "FROM " . $GLOBALS['ecs']->table('brand') . "AS b, ". $GLOBALS['ecs']->table('goods') . " AS g ". "WHERE g.brand_id = b.brand_id $children AND is_show = 1 " . " AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ". "GROUP BY b.brand_id HAVING goods_num > 0 ORDER BY tag DESC, b.sort_order ASC"; if (isset($static_page_libs[$template]['/library/brands.lbi'])) { $num = get_library_number("brands"); $sql .= " LIMIT $num "; } $row = $GLOBALS['db']->getAll($sql); foreach ($row AS $key => $val) { $row[$key]['url'] = build_uri($app, array('cid' => $cat, 'bid' => $val['brand_id']), $val['brand_name']); $row[$key]['brand_desc'] = htmlspecialchars($val['brand_desc'],ENT_QUOTES); } return $row; } /** * 鎵€鏈夌殑淇冮攢娲诲姩淇℃伅 * * @access public * @return array */ function get_promotion_info($goods_id = '') { $snatch = array(); $group = array(); $auction = array(); $package = array(); $favourable = array(); $gmtime = gmtime(); $sql = 'SELECT act_id, act_name, act_type, start_time, end_time FROM ' . $GLOBALS['ecs']->table('goods_activity') . " WHERE is_finished=0 AND start_time <= '$gmtime' AND end_time >= '$gmtime'"; if(!empty($goods_id)) { $sql .= " AND goods_id = '$goods_id'"; } $res = $GLOBALS['db']->getAll($sql); foreach ($res as $data) { switch ($data['act_type']) { case GAT_SNATCH: //澶哄疂濂囧叺 $snatch[$data['act_id']]['act_name'] = $data['act_name']; $snatch[$data['act_id']]['url'] = build_uri('snatch', array('sid' => $data['act_id'])); $snatch[$data['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $data['start_time']), local_date('Y-m-d', $data['end_time'])); $snatch[$data['act_id']]['sort'] = $data['start_time']; $snatch[$data['act_id']]['type'] = 'snatch'; break; case GAT_GROUP_BUY: //鍥㈣喘 $group[$data['act_id']]['act_name'] = $data['act_name']; $group[$data['act_id']]['url'] = build_uri('group_buy', array('gbid' => $data['act_id'])); $group[$data['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $data['start_time']), local_date('Y-m-d', $data['end_time'])); $group[$data['act_id']]['sort'] = $data['start_time']; $group[$data['act_id']]['type'] = 'group_buy'; break; case GAT_AUCTION: //鎷嶅崠 $auction[$data['act_id']]['act_name'] = $data['act_name']; $auction[$data['act_id']]['url'] = build_uri('auction', array('auid' => $data['act_id'])); $auction[$data['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $data['start_time']), local_date('Y-m-d', $data['end_time'])); $auction[$data['act_id']]['sort'] = $data['start_time']; $auction[$data['act_id']]['type'] = 'auction'; break; case GAT_PACKAGE: //绀煎寘 $package[$data['act_id']]['act_name'] = $data['act_name']; $package[$data['act_id']]['url'] = 'package.php#' . $data['act_id']; $package[$data['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $data['start_time']), local_date('Y-m-d', $data['end_time'])); $package[$data['act_id']]['sort'] = $data['start_time']; $package[$data['act_id']]['type'] = 'package'; break; } } $user_rank = ',' . $_SESSION['user_rank'] . ','; $favourable = array(); $sql = 'SELECT act_id, act_range, act_range_ext, act_name, start_time, end_time FROM ' . $GLOBALS['ecs']->table('favourable_activity') . " WHERE start_time <= '$gmtime' AND end_time >= '$gmtime'"; if(!empty($goods_id)) { $sql .= " AND CONCAT(',', user_rank, ',') LIKE '%" . $user_rank . "%'"; } $res = $GLOBALS['db']->getAll($sql); if(empty($goods_id)) { foreach ($res as $rows) { $favourable[$rows['act_id']]['act_name'] = $rows['act_name']; $favourable[$rows['act_id']]['url'] = 'activity.php'; $favourable[$rows['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $rows['start_time']), local_date('Y-m-d', $rows['end_time'])); $favourable[$rows['act_id']]['sort'] = $rows['start_time']; $favourable[$rows['act_id']]['type'] = 'favourable'; } } else { $sql = "SELECT cat_id, brand_id FROM " . $GLOBALS['ecs']->table('goods') . "WHERE goods_id = '$goods_id'"; $row = $GLOBALS['db']->getRow($sql); $category_id = $row['cat_id']; $brand_id = $row['brand_id']; foreach ($res as $rows) { if ($rows['act_range'] == FAR_ALL) { $favourable[$rows['act_id']]['act_name'] = $rows['act_name']; $favourable[$rows['act_id']]['url'] = 'activity.php'; $favourable[$rows['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $rows['start_time']), local_date('Y-m-d', $rows['end_time'])); $favourable[$rows['act_id']]['sort'] = $rows['start_time']; $favourable[$rows['act_id']]['type'] = 'favourable'; } elseif ($rows['act_range'] == FAR_CATEGORY) { /* 鎵惧嚭鍒嗙被id鐨勫瓙鍒嗙被id */ $id_list = array(); $raw_id_list = explode(',', $rows['act_range_ext']); foreach ($raw_id_list as $id) { $id_list = array_merge($id_list, array_keys(cat_list($id, 0, false))); } $ids = join(',', array_unique($id_list)); if (strpos(',' . $ids . ',', ',' . $category_id . ',') !== false) { $favourable[$rows['act_id']]['act_name'] = $rows['act_name']; $favourable[$rows['act_id']]['url'] = 'activity.php'; $favourable[$rows['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $rows['start_time']), local_date('Y-m-d', $rows['end_time'])); $favourable[$rows['act_id']]['sort'] = $rows['start_time']; $favourable[$rows['act_id']]['type'] = 'favourable'; } } elseif ($rows['act_range'] == FAR_BRAND) { if (strpos(',' . $rows['act_range_ext'] . ',', ',' . $brand_id . ',') !== false) { $favourable[$rows['act_id']]['act_name'] = $rows['act_name']; $favourable[$rows['act_id']]['url'] = 'activity.php'; $favourable[$rows['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $rows['start_time']), local_date('Y-m-d', $rows['end_time'])); $favourable[$rows['act_id']]['sort'] = $rows['start_time']; $favourable[$rows['act_id']]['type'] = 'favourable'; } } elseif ($rows['act_range'] == FAR_GOODS) { if (strpos(',' . $rows['act_range_ext'] . ',', ',' . $goods_id . ',') !== false) { $favourable[$rows['act_id']]['act_name'] = $rows['act_name']; $favourable[$rows['act_id']]['url'] = 'activity.php'; $favourable[$rows['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'], local_date('Y-m-d', $rows['start_time']), local_date('Y-m-d', $rows['end_time'])); $favourable[$rows['act_id']]['sort'] = $rows['start_time']; $favourable[$rows['act_id']]['type'] = 'favourable'; } } } } // if(!empty($goods_id)) // { // return array('snatch'=>$snatch, 'group_buy'=>$group, 'auction'=>$auction, 'favourable'=>$favourable); // } $sort_time = array(); $arr = array_merge($snatch, $group, $auction, $package, $favourable); foreach($arr as $key => $value) { $sort_time[] = $value['sort']; } array_multisort($sort_time, SORT_NUMERIC, SORT_DESC, $arr); return $arr; } /** * 鑾峰緱鎸囧畾鍒嗙被涓嬫墍鏈夊簳灞傚垎绫荤殑ID * * @access public * @param integer $cat 鎸囧畾鐨勫垎绫籌D * @return string */ function get_children($cat = 0) { return 'g.cat_id ' . db_create_in(array_unique(array_merge(array($cat), array_keys(cat_list($cat, 0, false))))); } /** * 鑾峰緱鎸囧畾鏂囩珷鍒嗙被涓嬫墍鏈夊簳灞傚垎绫荤殑ID * * @access public * @param integer $cat 鎸囧畾鐨勫垎绫籌D * * @return void */ function get_article_children ($cat = 0) { return db_create_in(array_unique(array_merge(array($cat), array_keys(article_cat_list($cat, 0, false)))), 'cat_id'); } /** * 鑾峰彇閭欢妯℃澘 * * @access public * @param: $tpl_name[string] 妯℃澘浠g爜 * * @return array */ function get_mail_template($tpl_name) { $sql = 'SELECT template_subject, is_html, template_content FROM ' . $GLOBALS['ecs']->table('mail_templates') . " WHERE template_code = '$tpl_name'"; return $GLOBALS['db']->GetRow($sql); } /** * 璁板綍璁㈠崟鎿嶄綔璁板綍 * * @access public * @param string $order_sn 璁㈠崟缂栧彿 * @param integer $order_status 璁㈠崟鐘舵€? * @param integer $shipping_status 閰嶉€佺姸鎬? * @param integer $pay_status 浠樻鐘舵€? * @param string $note 澶囨敞 * @param string $username 鐢ㄦ埛鍚嶏紝鐢ㄦ埛鑷繁鐨勬搷浣滃垯涓?buyer * @return void */ function order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = '', $username = null, $place = 0) { if (is_null($username)) { $username = $_SESSION['admin_name']; } $sql = 'INSERT INTO ' . $GLOBALS['ecs']->table('order_action') . ' (order_id, action_user, order_status, shipping_status, pay_status, action_place, action_note, log_time) ' . 'SELECT ' . "order_id, '$username', '$order_status', '$shipping_status', '$pay_status', '$place', '$note', '" .gmtime() . "' " . 'FROM ' . $GLOBALS['ecs']->table('order_info') . " WHERE order_sn = '$order_sn'"; $GLOBALS['db']->query($sql); } /** * 鏍煎紡鍖栧晢鍝佷环鏍? * * @access public * @param float $price 鍟嗗搧浠锋牸 * @return string */ function price_format($price, $change_price = true) { if($price==='') { $price=0; } if ($change_price && defined('ECS_ADMIN') === false) { switch ($GLOBALS['_CFG']['price_format']) { case 0: $price = number_format($price, 2, '.', ''); break; case 1: // 淇濈暀涓嶄负 0 鐨勫熬鏁? $price = preg_replace('/(.*)(\\.)([0-9]*?)0+$/', '\1\2\3', number_format($price, 2, '.', '')); if (substr($price, -1) == '.') { $price = substr($price, 0, -1); } break; case 2: // 涓嶅洓鑸嶄簲鍏ワ紝淇濈暀1浣? $price = substr(number_format($price, 2, '.', ''), 0, -1); break; case 3: // 鐩存帴鍙栨暣 $price = intval($price); break; case 4: // 鍥涜垗浜斿叆锛屼繚鐣?1 浣? $price = number_format($price, 1, '.', ''); break; case 5: // 鍏堝洓鑸嶄簲鍏ワ紝涓嶄繚鐣欏皬鏁? $price = round($price); break; } } else { $price = number_format($price, 2, '.', ''); } return sprintf($GLOBALS['_LANG']['show_price'], $price); } /** * 杩斿洖璁㈠崟涓殑铏氭嫙鍟嗗搧 * * @access public * @param int $order_id 璁㈠崟id鍊? * @param bool $shipping 鏄惁宸茬粡鍙戣揣 * * @return array() */ function get_virtual_goods($order_id, $shipping = false) { if ($shipping) { $sql = 'SELECT goods_id, goods_name, send_number AS num, extension_code FROM '. $GLOBALS['ecs']->table('order_goods') . " WHERE order_id = '$order_id' AND extension_code > ''"; } else { $sql = 'SELECT goods_id, goods_name, (goods_number - send_number) AS num, extension_code FROM '. $GLOBALS['ecs']->table('order_goods') . " WHERE order_id = '$order_id' AND is_real = 0 AND (goods_number - send_number) > 0 AND extension_code > '' "; } $res = $GLOBALS['db']->getAll($sql); $virtual_goods = array(); foreach ($res AS $row) { $virtual_goods[$row['extension_code']][] = array('goods_id' => $row['goods_id'], 'goods_name' => $row['goods_name'], 'num' => $row['num']); } return $virtual_goods; } /** * 铏氭嫙鍟嗗搧鍙戣揣 * * @access public * @param array $virtual_goods 铏氭嫙鍟嗗搧鏁扮粍 * @param string $msg 閿欒淇℃伅 * @param string $order_sn 璁㈠崟鍙枫€? * @param string $process 璁惧畾褰撳墠娴佺▼锛歴plit锛屽彂璐у垎鍗曟祦绋嬶紱other锛屽叾浠栵紝榛樿銆? * * @return bool */ function virtual_goods_ship(&$virtual_goods, &$msg, $order_sn, $return_result = false, $process = 'other') { $virtual_card = array(); foreach ($virtual_goods AS $code => $goods_list) { /* 鍙鐞嗚櫄鎷熷崱 */ if ($code == 'virtual_card') { foreach ($goods_list as $goods) { if (virtual_card_shipping($goods, $order_sn, $msg, $process)) { if ($return_result) { $virtual_card[] = array('goods_id'=>$goods['goods_id'], 'goods_name'=>$goods['goods_name'], 'info'=>virtual_card_result($order_sn, $goods)); } } else { return false; } } $GLOBALS['smarty']->assign('virtual_card', $virtual_card); } } return true; } /** * 铏氭嫙鍗″彂璐? * * @access public * @param string $goods 鍟嗗搧璇︽儏鏁扮粍 * @param string $order_sn 鏈鎿嶄綔鐨勮鍗? * @param string $msg 杩斿洖淇℃伅 * @param string $process 璁惧畾褰撳墠娴佺▼锛歴plit锛屽彂璐у垎鍗曟祦绋嬶紱other锛屽叾浠栵紝榛樿銆? * * @return boolen */ function virtual_card_shipping ($goods, $order_sn, &$msg, $process = 'other') { /* 鍖呭惈鍔犲瘑瑙e瘑鍑芥暟鎵€鍦ㄦ枃浠?*/ include_once(ROOT_PATH . 'includes/lib_code.php'); /* 妫€鏌ユ湁娌℃湁缂鸿揣 */ $sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('virtual_card')." WHERE goods_id = '$goods[goods_id]' AND is_saled = 0 "; $num = $GLOBALS['db']->GetOne($sql); if ($num < $goods['num']) { $msg .= sprintf($GLOBALS['_LANG']['virtual_card_oos'], $goods['goods_name']); return false; } /* 鍙栧嚭鍗$墖淇℃伅 */ $sql = "SELECT card_id, card_sn, card_password, end_date, crc32 FROM ".$GLOBALS['ecs']->table('virtual_card')." WHERE goods_id = '$goods[goods_id]' AND is_saled = 0 LIMIT " . $goods['num']; $arr = $GLOBALS['db']->getAll($sql); $card_ids = array(); $cards = array(); foreach ($arr as $virtual_card) { $card_info = array(); /* 鍗″彿鍜屽瘑鐮佽В瀵?*/ if ($virtual_card['crc32'] == 0 || $virtual_card['crc32'] == crc32(AUTH_KEY)) { $card_info['card_sn'] = decrypt($virtual_card['card_sn']); $card_info['card_password'] = decrypt($virtual_card['card_password']); } elseif ($virtual_card['crc32'] == crc32(OLD_AUTH_KEY)) { $card_info['card_sn'] = decrypt($virtual_card['card_sn'], OLD_AUTH_KEY); $card_info['card_password'] = decrypt($virtual_card['card_password'], OLD_AUTH_KEY); } else { $msg .= 'error key'; return false; } $card_info['end_date'] = date($GLOBALS['_CFG']['date_format'], $virtual_card['end_date']); $card_ids[] = $virtual_card['card_id']; $cards[] = $card_info; } /* 鏍囪宸茬粡鍙栧嚭鐨勫崱鐗?*/ $sql = "UPDATE ".$GLOBALS['ecs']->table('virtual_card')." SET ". "is_saled = 1 ,". "order_sn = '$order_sn' ". "WHERE " . db_create_in($card_ids, 'card_id'); if (!$GLOBALS['db']->query($sql, 'SILENT')) { $msg .= $GLOBALS['db']->error(); return false; } /* 鏇存柊搴撳瓨 */ $sql = "UPDATE ".$GLOBALS['ecs']->table('goods'). " SET goods_number = goods_number - '$goods[num]' WHERE goods_id = '$goods[goods_id]'"; $GLOBALS['db']->query($sql); if (true) { /* 鑾峰彇璁㈠崟淇℃伅 */ $sql = "SELECT order_id, order_sn, consignee, email FROM ".$GLOBALS['ecs']->table('order_info'). " WHERE order_sn = '$order_sn'"; $order = $GLOBALS['db']->GetRow($sql); /* 鏇存柊璁㈠崟淇℃伅 */ if ($process == 'split') { $sql = "UPDATE ".$GLOBALS['ecs']->table('order_goods'). " SET send_number = send_number + '" . $goods['num'] . "' WHERE order_id = '" . $order['order_id'] . "' AND goods_id = '" . $goods['goods_id'] . "' "; } else { $sql = "UPDATE ".$GLOBALS['ecs']->table('order_goods'). " SET send_number = '" . $goods['num'] . "' WHERE order_id = '" . $order['order_id'] . "' AND goods_id = '" . $goods['goods_id'] . "' "; } if (!$GLOBALS['db']->query($sql, 'SILENT')) { $msg .= $GLOBALS['db']->error(); return false; } } /* 鍙戦€侀偖浠?*/ $GLOBALS['smarty']->assign('virtual_card', $cards); $GLOBALS['smarty']->assign('order', $order); $GLOBALS['smarty']->assign('goods', $goods); $GLOBALS['smarty']->assign('send_time', date('Y-m-d H:i:s')); $GLOBALS['smarty']->assign('shop_name', $GLOBALS['_CFG']['shop_name']); $GLOBALS['smarty']->assign('send_date', date('Y-m-d')); $GLOBALS['smarty']->assign('sent_date', date('Y-m-d')); $tpl = get_mail_template('virtual_card'); $content = $GLOBALS['smarty']->fetch('str:' . $tpl['template_content']); send_mail($order['consignee'], $order['email'], $tpl['template_subject'], $content, $tpl['is_html']); return true; } /** * 杩斿洖铏氭嫙鍗′俊鎭? * * @access public * @param * * @return void */ function virtual_card_result($order_sn, $goods) { /* 鍖呭惈鍔犲瘑瑙e瘑鍑芥暟鎵€鍦ㄦ枃浠?*/ include_once(ROOT_PATH . 'includes/lib_code.php'); /* 鑾峰彇宸茬粡鍙戦€佺殑鍗$墖鏁版嵁 */ $sql = "SELECT card_sn, card_password, end_date, crc32 FROM ".$GLOBALS['ecs']->table('virtual_card')." WHERE goods_id= '$goods[goods_id]' AND order_sn = '$order_sn' "; $res= $GLOBALS['db']->query($sql); $cards = array(); while ($row = $GLOBALS['db']->FetchRow($res)) { /* 鍗″彿鍜屽瘑鐮佽В瀵?*/ if ($row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn']); $row['card_password'] = decrypt($row['card_password']); } elseif ($row['crc32'] == crc32(OLD_AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn'], OLD_AUTH_KEY); $row['card_password'] = decrypt($row['card_password'], OLD_AUTH_KEY); } else { $row['card_sn'] = '***'; $row['card_password'] = '***'; } $cards[] = array('card_sn'=>$row['card_sn'], 'card_password'=>$row['card_password'], 'end_date'=>date($GLOBALS['_CFG']['date_format'], $row['end_date'])); } return $cards; } /** * 鑾峰彇鎸囧畾 id snatch 娲诲姩鐨勭粨鏋? * * @access public * @param int $id snatch_id * * @return array array(user_name, bie_price, bid_time, num) * num閫氬父涓?锛屽鏋滀负2琛ㄧず鏈?涓敤鎴峰彇鍒版渶灏忓€硷紝浣嗙粨鏋滃彧杩斿洖鏈€鏃╁嚭浠风敤鎴枫€? */ function get_snatch_result($id) { $sql = 'SELECT u.user_id, u.user_name, u.email, lg.bid_price, lg.bid_time, count(*) as num' . ' FROM ' . $GLOBALS['ecs']->table('snatch_log') . ' AS lg '. ' LEFT JOIN ' . $GLOBALS['ecs']->table('users') . ' AS u ON lg.user_id = u.user_id'. " WHERE lg.snatch_id = '$id'". ' GROUP BY lg.bid_price' . ' ORDER BY num ASC, lg.bid_price ASC, lg.bid_time ASC LIMIT 1'; $rec = $GLOBALS['db']->GetRow($sql); if ($rec) { $rec['bid_time'] = local_date($GLOBALS['_CFG']['time_format'], $rec['bid_time']); $rec['formated_bid_price'] = price_format($rec['bid_price'], false); /* 娲诲姩淇℃伅 */ $sql = 'SELECT ext_info " . " FROM ' . $GLOBALS['ecs']->table('goods_activity') . " WHERE act_id= '$id' AND act_type=" . GAT_SNATCH. " LIMIT 1"; $row = $GLOBALS['db']->getOne($sql); $info = unserialize($row); if (!empty($info['max_price'])) { $rec['buy_price'] = ($rec['bid_price'] > $info['max_price']) ? $info['max_price'] : $rec['bid_price']; } else { $rec['buy_price'] = $rec['bid_price']; } /* 妫€鏌ヨ鍗?*/ $sql = "SELECT COUNT(*)" . " FROM " . $GLOBALS['ecs']->table('order_info') . " WHERE extension_code = 'snatch'" . " AND extension_id = '$id'" . " AND order_status " . db_create_in(array(OS_CONFIRMED, OS_UNCONFIRMED)); $rec['order_count'] = $GLOBALS['db']->getOne($sql); } return $rec; } /** * 娓呴櫎鎸囧畾鍚庣紑鐨勬ā鏉跨紦瀛樻垨缂栬瘧鏂囦欢 * * @access public * @param bool $is_cache 鏄惁娓呴櫎缂撳瓨杩樻槸娓呭嚭缂栬瘧鏂囦欢 * @param string $ext 闇€瑕佸垹闄ょ殑鏂囦欢鍚嶏紝涓嶅寘鍚悗缂€ * * @return int 杩斿洖娓呴櫎鐨勬枃浠朵釜鏁? */ function clear_tpl_files($is_cache = true, $ext = '') { $dirs = array(); if (isset($GLOBALS['shop_id']) && $GLOBALS['shop_id'] > 0) { $tmp_dir = DATA_DIR ; } else { $tmp_dir = 'temp'; } if ($is_cache) { $cache_dir = ROOT_PATH . $tmp_dir . '/caches/'; $dirs[] = ROOT_PATH . $tmp_dir . '/query_caches/'; $dirs[] = ROOT_PATH . $tmp_dir . '/static_caches/'; for($i = 0; $i < 16; $i++) { $hash_dir = $cache_dir . dechex($i); $dirs[] = $hash_dir . '/'; } } else { $dirs[] = ROOT_PATH . $tmp_dir . '/compiled/'; $dirs[] = ROOT_PATH . $tmp_dir . '/compiled/admin/'; } $str_len = strlen($ext); $count = 0; foreach ($dirs AS $dir) { $folder = @opendir($dir); if ($folder === false) { continue; } while ($file = readdir($folder)) { if ($file == '.' || $file == '..' || $file == 'index.htm' || $file == 'index.html') { continue; } if (is_file($dir . $file)) { /* 濡傛灉鏈夋枃浠跺悕鍒欏垽鏂槸鍚﹀尮閰?*/ $pos = ($is_cache) ? strrpos($file, '_') : strrpos($file, '.'); if ($str_len > 0 && $pos !== false) { $ext_str = substr($file, 0, $pos); if ($ext_str == $ext) { if (@unlink($dir . $file)) { $count++; } } } else { if (@unlink($dir . $file)) { $count++; } } } } closedir($folder); } return $count; } /** * 娓呴櫎妯$増缂栬瘧鏂囦欢 * * @access public * @param mix $ext 妯$増鏂囦欢鍚嶏紝 涓嶅寘鍚悗缂€ * @return void */ function clear_compiled_files($ext = '') { return clear_tpl_files(false, $ext); } /** * 娓呴櫎缂撳瓨鏂囦欢 * * @access public * @param mix $ext 妯$増鏂囦欢鍚嶏紝 涓嶅寘鍚悗缂€ * @return void */ function clear_cache_files($ext = '') { return clear_tpl_files(true, $ext); } /** * 娓呴櫎妯$増缂栬瘧鍜岀紦瀛樻枃浠? * * @access public * @param mix $ext 妯$増鏂囦欢鍚嶅悗缂€ * @return void */ function clear_all_files($ext = '') { return clear_tpl_files(false, $ext) + clear_tpl_files(true, $ext); } /** * 椤甸潰涓婅皟鐢ㄧ殑js鏂囦欢 * * @access public * @param string $files * @return void */ function smarty_insert_scripts($args) { static $scripts = array(); $arr = explode(',', str_replace(' ','',$args['files'])); $str = ''; foreach ($arr AS $val) { if (in_array($val, $scripts) == false) { $scripts[] = $val; if ($val{0} == '.') { $str .= ''; } else { $str .= ''; } } } return $str; } /** * 鍒涘缓鍒嗛〉鐨勫垪琛? * * @access public * @param integer $count * @return string */ function smarty_create_pages($params) { extract($params); $str = ''; $len = 10; if (empty($page)) { $page = 1; } if (!empty($count)) { $step = 1; $str .= ""; for ($i = 2; $i < $count; $i += $step) { $step = ($i >= $page + $len - 1 || $i <= $page - $len + 1) ? $len : 1; $str .= "'; } 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 private * @param int $cat_id 涓婄骇鍒嗙被ID * @param array $arr 鍚湁鎵€鏈夊垎绫荤殑鏁扮粍 * @param int $level 绾у埆 * @return void */ function article_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(); 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; } } $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; } } /** * 璋冪敤UCenter鐨勫嚱鏁? * * @param string $func * @param array $params * * @return mixed */ function uc_call($func, $params=null) { restore_error_handler(); if (!function_exists($func)) { include_once(ROOT_PATH . 'uc_client/client.php'); } $res = call_user_func_array($func, $params); set_error_handler('exception_handler'); return $res; } /** * error_handle鍥炶皟鍑芥暟 * * @return */ function exception_handler($errno, $errstr, $errfile, $errline) { return; } /** * 閲嶆柊鑾峰緱鍟嗗搧鍥剧墖涓庡晢鍝佺浉鍐岀殑鍦板潃 * * @param int $goods_id 鍟嗗搧ID * @param string $image 鍘熷晢鍝佺浉鍐屽浘鐗囧湴鍧€ * @param boolean $thumb 鏄惁涓虹缉鐣ュ浘 * @param string $call 璋冪敤鏂规硶(鍟嗗搧鍥剧墖杩樻槸鍟嗗搧鐩稿唽) * @param boolean $del 鏄惁鍒犻櫎鍥剧墖 * * @return string $url */ function get_image_path($goods_id, $image='', $thumb=false, $call='goods', $del=false) { $url = empty($image) ? $GLOBALS['_CFG']['no_picture'] : $image; return $url; } /** * 璋冪敤浣跨敤UCenter鎻掍欢鏃剁殑鍑芥暟 * * @param string $func * @param array $params * * @return mixed */ function user_uc_call($func, $params = null) { if (isset($GLOBALS['_CFG']['integrate_code']) && $GLOBALS['_CFG']['integrate_code'] == 'ucenter') { restore_error_handler(); if (!function_exists($func)) { include_once(ROOT_PATH . 'includes/lib_uc.php'); } $res = call_user_func_array($func, $params); set_error_handler('exception_handler'); return $res; } else { return; } } /** * 鍙栧緱鍟嗗搧浼樻儬浠锋牸鍒楄〃 * * @param string $goods_id 鍟嗗搧缂栧彿 * @param string $price_type 浠锋牸绫诲埆(0涓哄叏搴椾紭鎯犳瘮鐜囷紝1涓哄晢鍝佷紭鎯犱环鏍硷紝2涓哄垎绫讳紭鎯犳瘮鐜? * * @return 浼樻儬浠锋牸鍒楄〃 */ function get_volume_price_list($goods_id, $price_type = '1') { $volume_price = array(); $temp_index = '0'; $sql = "SELECT `volume_number` , `volume_price`". " FROM " .$GLOBALS['ecs']->table('volume_price'). "". " WHERE `goods_id` = '" . $goods_id . "' AND `price_type` = '" . $price_type . "'". " ORDER BY `volume_number`"; $res = $GLOBALS['db']->getAll($sql); foreach ($res as $k => $v) { $volume_price[$temp_index] = array(); $volume_price[$temp_index]['number'] = $v['volume_number']; $volume_price[$temp_index]['price'] = $v['volume_price']; $volume_price[$temp_index]['format_price'] = price_format($v['volume_price']); $temp_index ++; } return $volume_price; } /** * 鍙栧緱鍟嗗搧鏈€缁堜娇鐢ㄤ环鏍? * * @param string $goods_id 鍟嗗搧缂栧彿 * @param string $goods_num 璐拱鏁伴噺 * @param boolean $is_spec_price 鏄惁鍔犲叆瑙勬牸浠锋牸 * @param mix $spec 瑙勬牸ID鐨勬暟缁勬垨鑰呴€楀彿鍒嗛殧鐨勫瓧绗︿覆 * * @return 鍟嗗搧鏈€缁堣喘涔颁环鏍? */ function get_final_price($goods_id, $goods_num = '1', $is_spec_price = false, $spec = array()) { $final_price = '0'; //鍟嗗搧鏈€缁堣喘涔颁环鏍? $volume_price = '0'; //鍟嗗搧浼樻儬浠锋牸 $promote_price = '0'; //鍟嗗搧淇冮攢浠锋牸 $user_price = '0'; //鍟嗗搧浼氬憳浠锋牸 //鍙栧緱鍟嗗搧浼樻儬浠锋牸鍒楄〃 $price_list = get_volume_price_list($goods_id, '1'); if (!empty($price_list)) { foreach ($price_list as $value) { if ($goods_num >= $value['number']) { $volume_price = $value['price']; } } } //鍙栧緱鍟嗗搧淇冮攢浠锋牸鍒楄〃 /* 鍙栧緱鍟嗗搧淇℃伅 */ $sql = "SELECT g.promote_price, g.promote_start_date, g.promote_end_date, ". "IFNULL(mp.user_price, g.shop_price * '" . $_SESSION['discount'] . "') AS shop_price ". " 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']. "' ". " WHERE g.goods_id = '" . $goods_id . "'" . " AND g.is_delete = 0"; $goods = $GLOBALS['db']->getRow($sql); /* 璁$畻鍟嗗搧鐨勪績閿€浠锋牸 */ if ($goods['promote_price'] > 0) { $promote_price = bargain_price($goods['promote_price'], $goods['promote_start_date'], $goods['promote_end_date']); } else { $promote_price = 0; } //鍙栧緱鍟嗗搧浼氬憳浠锋牸鍒楄〃 $user_price = $goods['shop_price']; //姣旇緝鍟嗗搧鐨勪績閿€浠锋牸锛屼細鍛樹环鏍硷紝浼樻儬浠锋牸 if (empty($volume_price) && empty($promote_price)) { //濡傛灉浼樻儬浠锋牸锛屼績閿€浠锋牸閮戒负绌哄垯鍙栦細鍛樹环鏍? $final_price = $user_price; } elseif (!empty($volume_price) && empty($promote_price)) { //濡傛灉浼樻儬浠锋牸涓虹┖鏃朵笉鍙傚姞杩欎釜姣旇緝銆? $final_price = min($volume_price, $user_price); } elseif (empty($volume_price) && !empty($promote_price)) { //濡傛灉淇冮攢浠锋牸涓虹┖鏃朵笉鍙傚姞杩欎釜姣旇緝銆? $final_price = min($promote_price, $user_price); } elseif (!empty($volume_price) && !empty($promote_price)) { //鍙栦績閿€浠锋牸锛屼細鍛樹环鏍硷紝浼樻儬浠锋牸鏈€灏忓€? $final_price = min($volume_price, $promote_price, $user_price); } else { $final_price = $user_price; } //濡傛灉闇€瑕佸姞鍏ヨ鏍间环鏍? if ($is_spec_price) { if (!empty($spec)) { $spec_price = spec_price($spec); $final_price += $spec_price; } } //杩斿洖鍟嗗搧鏈€缁堣喘涔颁环鏍? return $final_price; } /** * 灏?goods_attr_id 鐨勫簭鍒楁寜鐓?attr_id 閲嶆柊鎺掑簭 * * 娉ㄦ剰锛氶潪瑙勬牸灞炴€х殑id浼氳鎺掗櫎 * * @access public * @param array $goods_attr_id_array 涓€缁存暟缁? * @param string $sort 搴忓彿锛歛sc|desc锛岄粯璁や负锛歛sc * * @return string */ function sort_goods_attr_id_array($goods_attr_id_array, $sort = 'asc') { if (empty($goods_attr_id_array)) { return $goods_attr_id_array; } //閲嶆柊鎺掑簭 $sql = "SELECT a.attr_type, v.attr_value, v.goods_attr_id FROM " .$GLOBALS['ecs']->table('attribute'). " AS a LEFT JOIN " .$GLOBALS['ecs']->table('goods_attr'). " AS v ON v.attr_id = a.attr_id AND a.attr_type = 1 WHERE v.goods_attr_id " . db_create_in($goods_attr_id_array) . " ORDER BY a.attr_id $sort"; $row = $GLOBALS['db']->GetAll($sql); $return_arr = array(); foreach ($row as $value) { $return_arr['sort'][] = $value['goods_attr_id']; $return_arr['row'][$value['goods_attr_id']] = $value; } return $return_arr; } /** * * 鏄惁瀛樺湪瑙勬牸 * * @access public * @param array $goods_attr_id_array 涓€缁存暟缁? * * @return string */ function is_spec($goods_attr_id_array, $sort = 'asc') { if (empty($goods_attr_id_array)) { return $goods_attr_id_array; } //閲嶆柊鎺掑簭 $sql = "SELECT a.attr_type, v.attr_value, v.goods_attr_id FROM " .$GLOBALS['ecs']->table('attribute'). " AS a LEFT JOIN " .$GLOBALS['ecs']->table('goods_attr'). " AS v ON v.attr_id = a.attr_id AND a.attr_type = 1 WHERE v.goods_attr_id " . db_create_in($goods_attr_id_array) . " ORDER BY a.attr_id $sort"; $row = $GLOBALS['db']->GetAll($sql); $return_arr = array(); foreach ($row as $value) { $return_arr['sort'][] = $value['goods_attr_id']; $return_arr['row'][$value['goods_attr_id']] = $value; } if(!empty($return_arr)) { return true; } else { return false; } } /** * 鑾峰彇鎸囧畾id package 鐨勪俊鎭? * * @access public * @param int $id package_id * * @return array array(package_id, package_name, goods_id,start_time, end_time, min_price, integral) */ function get_package_info($id) { global $ecs, $db,$_CFG; $id = is_numeric($id)?intval($id):0; $now = gmtime(); $sql = "SELECT act_id AS id, act_name AS package_name, goods_id , goods_name, start_time, end_time, act_desc, ext_info". " FROM " . $GLOBALS['ecs']->table('goods_activity') . " WHERE act_id='$id' AND act_type = " . GAT_PACKAGE; $package = $db->GetRow($sql); /* 灏嗘椂闂磋浆鎴愬彲闃呰鏍煎紡 */ if ($package['start_time'] <= $now && $package['end_time'] >= $now) { $package['is_on_sale'] = "1"; } else { $package['is_on_sale'] = "0"; } $package['start_time'] = local_date('Y-m-d H:i', $package['start_time']); $package['end_time'] = local_date('Y-m-d H:i', $package['end_time']); $row = unserialize($package['ext_info']); unset($package['ext_info']); if ($row) { foreach ($row as $key=>$val) { $package[$key] = $val; } } $sql = "SELECT pg.package_id, pg.goods_id, pg.goods_number, pg.admin_id, ". " g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real, ". " IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS rank_price " . " FROM " . $GLOBALS['ecs']->table('package_goods') . " AS pg ". " LEFT JOIN ". $GLOBALS['ecs']->table('goods') . " AS g ". " ON g.goods_id = pg.goods_id ". " LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ". "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ". " WHERE pg.package_id = " . $id. " ". " ORDER BY pg.package_id, pg.goods_id"; $goods_res = $GLOBALS['db']->getAll($sql); $market_price = 0; $real_goods_count = 0; $virtual_goods_count = 0; foreach($goods_res as $key => $val) { $goods_res[$key]['goods_thumb'] = get_image_path($val['goods_id'], $val['goods_thumb'], true); $goods_res[$key]['market_price_format'] = price_format($val['market_price']); $goods_res[$key]['rank_price_format'] = price_format($val['rank_price']); $market_price += $val['market_price'] * $val['goods_number']; /* 缁熻瀹炰綋鍟嗗搧鍜岃櫄鎷熷晢鍝佺殑涓暟 */ if ($val['is_real']) { $real_goods_count++; } else { $virtual_goods_count++; } } if ($real_goods_count > 0) { $package['is_real'] = 1; } else { $package['is_real'] = 0; } $package['goods_list'] = $goods_res; $package['market_package'] = $market_price; $package['market_package_format'] = price_format($market_price); $package['package_price_format'] = price_format($package['package_price']); return $package; } /** * 鑾峰緱鎸囧畾绀煎寘鐨勫晢鍝? * * @access public * @param integer $package_id * @return array */ function get_package_goods($package_id) { $sql = "SELECT pg.goods_id, g.goods_name, pg.goods_number, p.goods_attr, p.product_number, p.product_id FROM " . $GLOBALS['ecs']->table('package_goods') . " AS pg LEFT JOIN " .$GLOBALS['ecs']->table('goods') . " AS g ON pg.goods_id = g.goods_id LEFT JOIN " . $GLOBALS['ecs']->table('products') . " AS p ON pg.product_id = p.product_id WHERE pg.package_id = '$package_id'"; if ($package_id == 0) { $sql .= " AND pg.admin_id = '$_SESSION[admin_id]'"; } $resource = $GLOBALS['db']->query($sql); if (!$resource) { return array(); } $row = array(); /* 鐢熸垚缁撴灉鏁扮粍 鍙栧瓨鍦ㄨ揣鍝佺殑鍟嗗搧id 缁勫悎鍟嗗搧id涓庤揣鍝乮d */ $good_product_str = ''; while ($_row = $GLOBALS['db']->fetch_array($resource)) { if ($_row['product_id'] > 0) { /* 鍙栧瓨鍟嗗搧id */ $good_product_str .= ',' . $_row['goods_id']; /* 缁勫悎鍟嗗搧id涓庤揣鍝乮d */ $_row['g_p'] = $_row['goods_id'] . '_' . $_row['product_id']; } else { /* 缁勫悎鍟嗗搧id涓庤揣鍝乮d */ $_row['g_p'] = $_row['goods_id']; } //鐢熸垚缁撴灉鏁扮粍 $row[] = $_row; } $good_product_str = trim($good_product_str, ','); /* 閲婃斁绌洪棿 */ unset($resource, $_row, $sql); /* 鍙栧晢鍝佸睘鎬?*/ if ($good_product_str != '') { $sql = "SELECT goods_attr_id, attr_value FROM " .$GLOBALS['ecs']->table('goods_attr'). " WHERE goods_id IN ($good_product_str)"; $result_goods_attr = $GLOBALS['db']->getAll($sql); $_goods_attr = array(); foreach ($result_goods_attr as $value) { $_goods_attr[$value['goods_attr_id']] = $value['attr_value']; } } /* 杩囨护璐у搧 */ $format[0] = '%s[%s]--[%d]'; $format[1] = '%s--[%d]'; foreach ($row as $key => $value) { if ($value['goods_attr'] != '') { $goods_attr_array = explode('|', $value['goods_attr']); $goods_attr = array(); foreach ($goods_attr_array as $_attr) { $goods_attr[] = $_goods_attr[$_attr]; } $row[$key]['goods_name'] = sprintf($format[0], $value['goods_name'], implode('锛?, $goods_attr), $value['goods_number']); } else { $row[$key]['goods_name'] = sprintf($format[1], $value['goods_name'], $value['goods_number']); } } return $row; } /** * 鍙栧晢鍝佺殑璐у搧鍒楄〃 * * @param mixed $goods_id 鍗曚釜鍟嗗搧id锛涘涓晢鍝乮d鏁扮粍锛涗互閫楀彿鍒嗛殧鍟嗗搧id瀛楃涓? * @param string $conditions sql鏉′欢 * * @return array */ function get_good_products($goods_id, $conditions = '') { if (empty($goods_id)) { return array(); } switch (gettype($goods_id)) { case 'integer': $_goods_id = "goods_id = '" . intval($goods_id) . "'"; break; case 'string': case 'array': $_goods_id = db_create_in($goods_id, 'goods_id'); break; } /* 鍙栬揣鍝?*/ $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('products'). " WHERE $_goods_id $conditions"; $result_products = $GLOBALS['db']->getAll($sql); /* 鍙栧晢鍝佸睘鎬?*/ $sql = "SELECT goods_attr_id, attr_value FROM " .$GLOBALS['ecs']->table('goods_attr'). " WHERE $_goods_id"; $result_goods_attr = $GLOBALS['db']->getAll($sql); $_goods_attr = array(); foreach ($result_goods_attr as $value) { $_goods_attr[$value['goods_attr_id']] = $value['attr_value']; } /* 杩囨护璐у搧 */ foreach ($result_products as $key => $value) { $goods_attr_array = explode('|', $value['goods_attr']); if (is_array($goods_attr_array)) { $goods_attr = array(); foreach ($goods_attr_array as $_attr) { $goods_attr[] = $_goods_attr[$_attr]; } $goods_attr_str = implode('锛?, $goods_attr); } $result_products[$key]['goods_attr_str'] = $goods_attr_str; } return $result_products; } /** * 鍙栧晢鍝佺殑涓嬫媺妗哠elect鍒楄〃 * * @param int $goods_id 鍟嗗搧id * * @return array */ function get_good_products_select($goods_id) { $return_array = array(); $products = get_good_products($goods_id); if (empty($products)) { return $return_array; } foreach ($products as $value) { $return_array[$value['product_id']] = $value['goods_attr_str']; } return $return_array; } /** * 鍙栧晢鍝佺殑瑙勬牸鍒楄〃 * * @param int $goods_id 鍟嗗搧id * @param string $conditions sql鏉′欢 * * @return array */ function get_specifications_list($goods_id, $conditions = '') { /* 鍙栧晢鍝佸睘鎬?*/ $sql = "SELECT ga.goods_attr_id, ga.attr_id, ga.attr_value, a.attr_name FROM " .$GLOBALS['ecs']->table('goods_attr'). " AS ga, " .$GLOBALS['ecs']->table('attribute'). " AS a WHERE ga.attr_id = a.attr_id AND ga.goods_id = '$goods_id' $conditions"; $result = $GLOBALS['db']->getAll($sql); $return_array = array(); foreach ($result as $value) { $return_array[$value['goods_attr_id']] = $value; } return $return_array; } /** * 璋冪敤array_combine鍑芥暟 * * @param array $keys * @param array $values * * @return $combined */ if (!function_exists('array_combine')) { function array_combine($keys, $values) { if (!is_array($keys)) { user_error('array_combine() expects parameter 1 to be array, ' . gettype($keys) . ' given', E_USER_WARNING); return; } if (!is_array($values)) { user_error('array_combine() expects parameter 2 to be array, ' . gettype($values) . ' given', E_USER_WARNING); return; } $key_count = count($keys); $value_count = count($values); if ($key_count !== $value_count) { user_error('array_combine() Both parameters should have equal number of elements', E_USER_WARNING); return false; } if ($key_count === 0 || $value_count === 0) { user_error('array_combine() Both parameters should have number of elements at least 0', E_USER_WARNING); return false; } $keys = array_values($keys); $values = array_values($values); $combined = array(); for ($i = 0; $i < $key_count; $i++) { $combined[$keys[$i]] = $values[$i]; } return $combined; } } /** * 鑾峰彇浜戣捣鐭俊鍜岀墿娴乼oken * @return string token */ function get_yunqi_code(){ return get_certificate_info('yunqi_code'); } /** * 鍒犻櫎浜戣捣鐭俊鍜岀墿娴乼oken * @return string token */ function delete_yunqi_code(){ $sql = "select value from ".$GLOBALS['ecs']->table('shop_config')." where code='certificate'"; $row = $GLOBALS['db']->getOne($sql); if(!$row) return false; $certificate = unserialize($row); unset($certificate['yunqi_code']); $update_sql = "update ".$GLOBALS['ecs']->table('shop_config')." set value='".serialize($certificate)."' where code='certificate'"; return $GLOBALS['db']->query($update_sql); } /** * 鑾峰彇浜戣捣璇佷功淇℃伅 * @param string $key * @return string */ function get_certificate_info($key,$code='certificate'){ $sql = "select value from ".$GLOBALS['ecs']->table('shop_config')." where code='".$code."'"; $row = $GLOBALS['db']->getOne($sql); if(!$row) return false; $certificate = unserialize($row); return isset($certificate[$key])?$certificate[$key]:false; } /** * 鑾峰彇iframe绛惧悕 * @param string $product * @return string */ function iframe_source_encode($product) { $source[] = base64_encode($product); $source[] = get_certificate_info("passport_uid"); $source[] = get_certificate_info("yunqi_code"); $source[] = time(); $source[] = urlencode($GLOBALS['ecs']->url()); return base64_encode(implode('|',$source)); } /** * 鍒涘缓env閰嶇疆鏂囦欢 */ function create_env($arr,$file='appserver') { global $err, $_LANG; $replace = array(); $url = $_SERVER['HTTP_HOST']; if($file == 'appserver'){ $path_arr = explode('/',ROOT_PATH); $count = count($path_arr)-2; $path_arr[$count] = 'appserver'; $path_tmp = implode('/',$path_arr); $path = $path_tmp.'.env'; $path_example = $path_tmp.'.env.example'; if (file_exists($path)) { $file = file_get_contents($path); }elseif(file_exists($path_example)){ $file = file_get_contents($path_example); }else{ return true; } $arr['TERMS_URL'] = 'http://'.$url.'/article.php?cat_id=-1'; $arr['ABOUT_URL'] = 'http://'.$url.'/article.php?cat_id=-2'; foreach ($arr as $k => $v) { $replace['#'.$k.'.*#i'] = $k.'='.$v; } if (file_put_contents($path, preg_replace(array_keys($replace), array_values($replace), $file))) { return true; }else{ $err->add($_LANG['write_env_config_file_failed']); return false; } } if($file == 'h5'){ // $path = ROOT_PATH.$file.'/config/config.app.js'; $path = ROOT_PATH.$file.'/static/config.js'; // $path_example = ROOT_PATH.$file.'/config/config.app.sample.js'; $path_example = ROOT_PATH.$file.'/static/config.sample.js'; if (file_exists($path)) { $file = file_get_contents($path); }elseif(file_exists($path_example)){ $file = file_get_contents($path_example); }else{ return true; } $api_url = str_replace('www.','',$url); $api_url ='http://api.'.$api_url; $new_file = preg_replace("/'API_HOST.*/i", "'API_HOST': '".$api_url."',", $file); if (file_put_contents($path, $new_file)){ return true; }else{ $err->add($_LANG['write_env_config_file_failed']); return false; } } } /** * 鍒涘缓env閰嶇疆鏂囦欢 */ function test_api() { global $err, $_LANG; $api_url = get_h5_api_host(); $headers = array( 'Content-Type' => 'application/json;charset=utf-8' ); $data = array(); if (strpos($headers["Content-Type"], "/json") !== false) { $json = json_encode($data); } // Build headers list in HTTP format $headersList = array_map(function($key, $val) { return "$key: $val";}, array_keys($headers), $headers); $req = curl_init($api_url); curl_setopt($req, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($req, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($req, CURLOPT_HTTPHEADER, $headersList); curl_setopt($req, CURLOPT_RETURNTRANSFER, true); curl_setopt($req, CURLOPT_TIMEOUT, 60); // curl_setopt($req, CURLINFO_HEADER_OUT, true); curl_setopt($req, CURLOPT_URL, $api_url ."?". http_build_query($data)); $resp = curl_exec($req); $respCode = curl_getinfo($req, CURLINFO_HTTP_CODE); $respType = curl_getinfo($req, CURLINFO_CONTENT_TYPE); $error = curl_error($req); $errno = curl_errno($req); curl_close($req); /** type of error: * - curl connection error * - http status error 4xx, 5xx * - rest api error */ if ($errno > 0) { return false; } if($respCode != 200){ return false; } if (strpos($respType, "text/html") !== false) { $err->add($_LANG['test_appserver_failed']); } $data = json_decode($resp, true); if (isset($data["error"])) { $code = isset($data["code"]) ? $data["code"] : 400; $err->add($_LANG['test_appserver_failed']); } return true; } /** * 鑾峰彇h5/config/config.app.js鏂囦欢涓厤缃殑API_HOST * @return string|boolean */ function get_h5_api_host() { $h5Config = file_get_contents(ROOT_PATH . "h5/static/config.js"); if (preg_match("/'API_HOST': '(.*)'/i", $h5Config, $matches)) { return $matches[1]; } else { return false; } } function createQrCode($url){ if($url=="") return false; return QRCODE_URL.urlencode($url); } function createShortUrl($url){ if(!$url) return false; $short_url = file_get_contents(SHORT_URL.urlencode($url)); return $short_url?$short_url:$url; } function get_ad_slider(){ $sql = "select * from ".$GLOBALS['ecs']->table('ad')." where position_id = ".SLIDER_POSITION_ID; $result = $GLOBALS['db']->getAll($sql); return $result; } function get_ad_top_banner(){ $lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'zh_cn'; $sql = "select * from ".$GLOBALS['ecs']->table('ad')." where position_id = ".HOME_AD_TOP_BANNER; $result = $GLOBALS['db']->getAll($sql); foreach ($result as $key => $value) { $result[$key]['ad_name'] = $lang == 'en_us' ? $value['ad_ename'] : $value['ad_name']; $result[$key]['ad_code'] = $lang == 'en_us' ? $value['ad_ecode'] : $value['ad_code']; $result[$key]['link_man'] = $lang == 'en_us' ? $value['elink_man'] : $value['link_man']; } return $result; } function get_common_article($acid, $limit=0){ $sql = "select * from ".$GLOBALS['ecs']->table('article')." where is_open = 1 and cat_id = ".$acid; if($limit){ $sql .= " limit $limit"; } $result = $GLOBALS['db']->getAll($sql); return $result; } //鑾峰彇澶撮儴瀵艰埅鏂囩珷 function get_article_nav($acid=0){ $lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'zh_cn'; $sql = "select * from ".$GLOBALS['ecs']->table('article')." where is_open = 1 and cat_id = ".$acid; $result = $GLOBALS['db']->getAll($sql); //http://local.official.ecshop.com/category.php?id=2 //print_r($result); $regular = "/(category\.php)\?id=(\d)+$/i"; foreach ($result as $key => $value) { if(preg_match($regular, $value['link'], $matches)){ $result[$key]['category'] = get_child_tree($matches[2]); } $result[$key]['title'] = $lang == 'en_us' ? $value['title_en'] : $value['title']; $result[$key]['content'] = $lang == 'en_us' ? $value['content_en'] : $value['content']; } return $result; } ?>