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;
}
?>