Authored by hf

code review by fei.hong: do merge develop code change Plugin

... ... @@ -10,9 +10,9 @@ class Helpers
/**
* 构建网站的URL
*
*
* 备注:所有的URL构建都尽量使用该方法,便于以后维护.
*
*
* @param string $uri 如 "/passport/reg/index"
* @param array $param 参数项 array(key1 => value1, key2 => value2,),默认为array()
* @param string $module 模块名 如"index"表示默认, "guang"表示逛,"list"表示商品列表,"search"表示搜索
... ... @@ -53,7 +53,7 @@ class Helpers
/**
* 根据尺寸获得图片url
*
*
* @param string $url 路径
* @param integer $width 图片宽度
* @param integer $height 图片高度
... ... @@ -67,7 +67,7 @@ class Helpers
/**
* 获取过滤APP里附加参数后的URL链接
*
*
* @param string $url 路径
* @return string 去除掉如&openby:yohobuy={"action":"go.brand"}这样的APP附加参数
*/
... ... @@ -84,7 +84,7 @@ class Helpers
/**
* 根据用户访问的COOKIE判断出性别
*
*
* @return string
*/
public static function getGenderByCookie()
... ... @@ -102,7 +102,7 @@ class Helpers
/**
* 根据用户访问的COOKIE判断出频道
*
*
* @return int
*/
public static function getChannelByCookie()
... ... @@ -124,19 +124,18 @@ class Helpers
/**
* 从用户加入购物车的COOKIE取出购物车凭证
*
*
* @return string
*/
public static function getShoppingKeyByCookie()
{
$cookie = isset($_COOKIE['_SPK']) ? $_COOKIE['_SPK'] : '';
return $cookie;
}
/**
* 获取商品的ICON
*
*
* @param int $type
* @return array
*/
... ... @@ -191,12 +190,12 @@ class Helpers
*/
public static function transPrice($price)
{
return number_format($price, 2, '.', '');
return !empty($price) ? number_format($price, 2, '.', '') : 0;
}
/**
* 格式化商品信息
*
*
* @param array $productData 需要格式化的商品数据
* @param bool $showTags 控制是否显示标签
* @param bool $showNew 控制是否显示NEW图标
... ... @@ -219,9 +218,19 @@ class Helpers
$productData['market_price'] = false;
}
// 如果$productData['default_images']为空,就取$productData['goods_list']中第一个,为空就不处理
if (empty($productData['default_images'])) {
$productData['default_images'] = $productData['goods_list'][0]['images_url'];
// 判别默认的商品是否将默认的图片URL赋值到skn
$flag = false;
// 如果设置了默认图片,就取默认的图片
foreach ($productData['goods_list'] as $oneGoods) {
// 此skc是默认的,则将图片赋值给skn
if ($oneGoods['is_default'] === 'Y') {
$productData['default_images'] = self::procProductImg($oneGoods);
$flag = true;
}
}
// 如果还未赋值,则取第一个skc产品的默认图片
if (!$flag) {
$productData['default_images'] = self::procProductImg($productData['goods_list'][0]);
}
$result = array();
... ... @@ -237,8 +246,8 @@ class Helpers
}
$result['is_soon_sold_out'] = ($productData['is_soon_sold_out'] === 'Y');
$result['url'] = self::url('/product/pro_' . $productData['product_id'] . '_'
. $productData['goods_list'][0]['goods_id']
. '/' . $productData['cn_alphabet'] . '.html');
. $productData['goods_list'][0]['goods_id']
. '/' . $productData['cn_alphabet'] . '.html');
// APP访问需要加附加的参数
// 备注:如果以后APP的接口太多,可以把这边参数提取出来,变成一个公共的方法来生成,便于以后管理维护
if ($isApp) {
... ... @@ -260,7 +269,7 @@ class Helpers
}
// 打折与其它组合则隐藏打折
elseif ($result['tags']['is_discount'] &&
($result['tags']['is_new'] || $result['tags']['is_limited'] || $result['tags']['is_yohood'] || $result['tags']['is_advance'])) {
($result['tags']['is_new'] || $result['tags']['is_limited'] || $result['tags']['is_yohood'] || $result['tags']['is_advance'])) {
$result['tags']['is_discount'] = false;
}
// YOHOOD和新品组合显示YOHOOD
... ... @@ -273,8 +282,30 @@ class Helpers
}
/**
* 根据性别来决定 默认图片获取字段 如果是 2、3
*
* 则优先从cover2 --》 cover1 -- 》 images_url
* 否则优先从cover1 --》 cover2 -- 》 images_url
*
* @param array $images
* @return string 商品图片
*/
public static function procProductImg($images)
{
$imgUrl = isset($images['images_url']) ? $images['images_url'] : '';
$cover1 = isset($images['cover_1']) ? $images['cover_1'] : '';
$cover2 = isset($images['cover_2']) ? $images['cover_2'] : '';
$gender = self::getGenderByCookie();
if ($gender === '2,3') {
return !empty($cover2) ? $cover2 : (!empty($cover1) ? $cover1 : $imgUrl);
} else {
return !empty($cover1) ? $cover1 : (!empty($cover2) ? $cover2 : $imgUrl);
}
}
/**
* 格式化资讯文章
*
*
* @param array $articleData 需要格式化的资讯数据
* @param bool $showTag 是否显示左上角标签
* @param mixed $isApp 是否显示分享,在APP客户端里嵌入需要传url链接
... ... @@ -349,7 +380,7 @@ class Helpers
/**
* 格式化广告焦点图数据
*
*
* @param array $bannerData 需要格式化的广告图数据
* @param int $width 图片的宽度
* @param int $height 图片的高度
... ... @@ -371,7 +402,7 @@ class Helpers
/**
* 生成公开的TOKEN凭证
*
*
* @param string $string 字符串
* @return string
*/
... ... @@ -382,7 +413,7 @@ class Helpers
/**
* 验证TOKEN凭证
*
*
* @param string $string 字符串
* @param string $token 公开访问TOKEN
* @return bool
... ... @@ -398,7 +429,7 @@ class Helpers
/**
* 验证手机是否合法
*
*
* @param int $mobile
* @return boolean
*/
... ... @@ -412,7 +443,7 @@ class Helpers
/**
* 验证密码是否合法
*
*
* @param int $password
* @return boolean
*/
... ... @@ -426,7 +457,7 @@ class Helpers
/**
* 验证邮箱是否合法
*
*
* @param string $email
* @return boolean
*/
... ... @@ -439,19 +470,18 @@ class Helpers
}
/**
* 验证国际手机号是否合法
*
* 验证国际手机号是否合法
*
* @param string $areaMobile
* @param int $area
* @return boolean
*/
public static function verifyAreaMobile($areaMobile, $area)
public static function verifyAreaMobile($areaMobile)
{
if (empty($areaMobile)) {
return false;
}
if (!strpos($areaMobile, '-')) {
return self::areaMobielVerify($areaMobile, $area);
return self::areaMobielVerify($areaMobile);
} else {
$mobileData = explode('-', $areaMobile);
if (count($mobileData) != 2) {
... ... @@ -462,6 +492,26 @@ class Helpers
}
/**
* 根据url获取拼接之后的地址,用于用户清理缓存
* @param string $url url地址
* @param string $channel 频道,默认为woman
*
* @return string 处理之后的地址
*/
public static function transUrl($url, $channel='woman')
{
$extra = '';
if(!empty($url) && stripos($url, '?') === false) {
$extra = '?channel='.$channel;
}
if(!empty($url) && stripos($url, '?') !== false){
$extra = '&channel='.$channel;
}
return $url . $extra;
}
/**
* 各国手机号规则
*/
private static function areaMobielVerify($mobile, $area = 86)
... ... @@ -520,7 +570,7 @@ class Helpers
/**
* 格式化订单商品
*
*
* @param array $orderGoods 订单
* @param int $count 计订单件数
* @param bool $haveLink 控制是否需要商品链接
... ... @@ -558,7 +608,7 @@ class Helpers
return $arr;
}
/**
/**
* 格式化购物车商品
*
* @param array $cartGoods 购物车商品列表
... ... @@ -662,7 +712,7 @@ class Helpers
return $arr;
}
/**
* 订单状态,按订单支付类型和订单状态
* @var array
... ... @@ -711,7 +761,7 @@ class Helpers
/**
* 获取会员的级别
*
*
* @param string $vipInfo
* @return int
*/
... ... @@ -739,9 +789,9 @@ class Helpers
/**
* 同步用户的会话
*
*
* 转向老的PHP服务器上处理, 因购物车相关的操作会依赖SESSION
*
*
* @param int $uid 用户ID
* @param string $refer 访问来源
* @param string $callback 回调方法名
... ... @@ -750,14 +800,14 @@ class Helpers
public static function syncUserSession($uid, $refer = '', $callback = 'call')
{
return 'http://mapi.yohobuy.com/Passport/session/index?callback=' . $callback
. '&sign=' . md5(md5($uid . 'Js8Yn0!EwPM45-ws')) . '&uid=' . $uid . '&go=' . $refer;
. '&sign=' . md5(md5($uid . 'Js8Yn0!EwPM45-ws')) . '&uid=' . $uid . '&go=' . $refer;
}
/**
* 退出清除用户的会话
*
*
* 转向老的PHP服务器上处理, 因购物车相关的操作会依赖SESSION
*
*
* @param int $uid 用户ID
* @param string $refer 访问来源
* @param string $callback 回调方法名
... ... @@ -766,7 +816,50 @@ class Helpers
public static function logoutSession($token, $refer = '', $callback = 'call')
{
return 'http://mapi.yohobuy.com/Passport/session/logout?callback=' . $callback
. '&sign=' . md5(md5('Js8Yn0!EwPM45-ws')) . '&token=' . $token . '&go=' . $refer;
. '&sign=' . md5(md5('Js8Yn0!EwPM45-ws')) . '&token=' . $token . '&go=' . $refer;
}
/**
* 根据skc获取商品链接
* @param unknown $productSkc
* @return string
*/
public static function getUrlBySkc($product_id, $goods_id, $cn_alphabet='')
{
if (empty($cn_alphabet)) {
$cn_alphabet = 'goods.html';
}
return 'http://item.yohobuy.com/product/pro_' . $product_id . '_' . $goods_id . '/' . $cn_alphabet. '.html';
}
/**
* 获取真实IP
*
* @return string
*/
public static function getClientIp()
{
$ip = '0.0.0.0';
if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '')
$ip = $_SERVER['HTTP_CLIENT_IP'];
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '')
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '')
$ip = $_SERVER['REMOTE_ADDR'];
return $ip;
}
/**
* 组合国际手机号
* @param $area
* @param $mobile
* @return string
*/
public static function makeMobile($area, $mobile)
{
if(empty($area) || $area == 86){
return $mobile;
}
return $area.'-'.$mobile;
}
}
... ...