2022-11-14 15:49:28 +00:00
< ? php
if ( ! defined ( 'IN_ECS' ))
{
die ( 'Hacking attempt' );
}
/**
* 创建像这样的查询 : " 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 $mobile_phone
* 需要验证的手机号码
*
* @ return bool
*/
function is_mobile ( $mobile_phone )
{
$chars = " /^09[0-9] { 8} $ / " ;
if ( preg_match ( $chars , $mobile_phone ))
{
return true ;
}
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 );
}
function assign_menu_info ()
{
global $_LANG ;
include_once ( 'includes/inc_menu.php' );
include_once ( 'includes/inc_priv.php' );
foreach ( $modules AS $key => $value )
{
ksort ( $modules [ $key ]);
}
ksort ( $modules );
foreach ( $modules AS $key => $val )
{
$menus [ $key ][ 'label' ] = $_LANG [ $key ];
if ( is_array ( $val ))
{
foreach ( $val AS $k => $v )
{
if ( isset ( $purview [ $k ]))
{
if ( is_array ( $purview [ $k ]))
{
$boole = false ;
foreach ( $purview [ $k ] as $action )
{
$boole = $boole || admin_priv ( $action , '' , false );
}
if ( ! $boole )
{
continue ;
}
}
else
{
if ( ! admin_priv ( $purview [ $k ], '' , false ))
{
continue ;
}
}
}
if ( $k == 'ucenter_setup' && $_CFG [ 'integrate_code' ] != 'ucenter' )
{
continue ;
}
$menus [ $key ][ 'children' ][ $k ][ 'label' ] = $_LANG [ $k ];
$menus [ $key ][ 'children' ][ $k ][ 'action' ] = $v ;
}
}
else
{
$menus [ $key ][ 'action' ] = $val ;
}
// 如果children的子元素长度为0则删除该组
if ( empty ( $menus [ $key ][ 'children' ]))
{
unset ( $menus [ $key ]);
}
}
$GLOBALS [ 'smarty' ] -> assign ( 'menus' , $menus );
$GLOBALS [ 'smarty' ] -> assign ( 'no_help' , $_LANG [ 'no_help' ]);
$GLOBALS [ 'smarty' ] -> assign ( 'help_lang' , $_CFG [ 'lang' ]);
$GLOBALS [ 'smarty' ] -> assign ( 'charset' , EC_CHARSET );
$GLOBALS [ 'smarty' ] -> assign ( 'admin_id' , $_SESSION [ 'admin_id' ]);
}
/**
* 创建地区的返回信息
*
* @ 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 );
}
function get_banks ( $parent = 0 )
{
$sql = 'SELECT bank_code, bank_name FROM ' . $GLOBALS [ 'ecs' ] -> table ( 'bank' ) .
" WHERE parent_id = ' $parent ' order by bank_code " ;
return $GLOBALS [ 'db' ] -> GetAll ( $sql );
}
function get_gamename_by_id ( $id = 0 )
{
if ( $id > 0 ){
$sql = 'SELECT games_name FROM ' . $GLOBALS [ 'ecs' ] -> table ( 'games' ) .
" WHERE games_id = ' $id ' " ;
return $GLOBALS [ 'db' ] -> GetOne ( $sql );
} else {
return '電子錢包' ;
}
}
/**
* 初始化会员数据整合类
*
* @ 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 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' ]))
{
/* 如果没有版本号则默认为2.0.5 */
$GLOBALS [ '_CFG' ][ 'ecs_version' ] = 'v2.0.5' ;
}
//限定语言项
$lang_array = array ( 'zh_cn' , 'zh_tw' , 'en_us' );
if ( empty ( $arr [ 'lang' ]) || ! in_array ( $arr [ 'lang' ], $lang_array ))
{
$arr [ 'lang' ] = 'zh_tw' ; // 默认语言为简体中文
}
if ( empty ( $arr [ 'integrate_code' ]))
{
2023-06-27 20:27:57 +00:00
$arr [ 'integrate_code' ] = 'ecshop' ;
2022-11-14 15:49:28 +00:00
}
write_static_cache ( 'shop_config' , $arr );
}
else
{
$arr = $data ;
}
return $arr ;
}
/**
* 获得指定分类下所有底层分类的ID
*
* @ access public
* @ param integer $cat 指定的分类ID
* @ 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 指定的分类ID
*
* @ 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 ] 模板代码
*
* @ 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 [ '_CFG' ][ 'currency_format' ], $price );
}
/**
* 获取指定 id snatch 活动的结果
*
* @ access public
* @ param int $id snatch_id
*
* @ return array array ( user_name , bie_price , bid_time , num )
* num通常为1, 如果为2表示有2个用户取到最小值, 但结果只返回最早出价用户。
*/
function get_snatch_result ( $id )
{
$sql = 'SELECT u.user_id, u.user_name, 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 .= '<script type="text/javascript" src="' . $val . '"></script>' ;
}
else
{
$str .= '<script type="text/javascript" src="js/' . $val . '"></script>' ;
}
}
}
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 .= " <option value='1'>1</option> " ;
for ( $i = 2 ; $i < $count ; $i += $step )
{
$step = ( $i >= $page + $len - 1 || $i <= $page - $len + 1 ) ? $len : 1 ;
$str .= " <option value=' $i ' " ;
$str .= $page == $i ? " selected='true' " : '' ;
$str .= " > $i </option> " ;
}
if ( $count > 1 )
{
$str .= " <option value=' $count ' " ;
$str .= $page == $count ? " selected='true' " : '' ;
$str .= " > $count </option> " ;
}
}
return $str ;
}
/**
* 重写 URL 地址
*
* @ access public
* @ param string $app 执行程序
* @ param array $params 参数数组
* @ param string $append 附加字串
* @ param integer $page 页数
* @ param string $keywords 搜索关键词字符串
* @ return void
*/
function build_uri ( $app , $params , $append = '' , $page = 0 , $keywords = '' , $size = 0 )
{
static $rewrite = NULL ;
if ( $rewrite === NULL )
{
$rewrite = intval ( $GLOBALS [ '_CFG' ][ 'rewrite' ]);
}
$args = array ( 'cid' => 0 ,
'gid' => 0 ,
'bid' => 0 ,
'acid' => 0 ,
'aid' => 0 ,
'sid' => 0 ,
'gbid' => 0 ,
'auid' => 0 ,
'sort' => '' ,
'order' => '' ,
);
extract ( array_merge ( $args , $params ));
$uri = '' ;
switch ( $app )
{
case 'category' :
if ( empty ( $cid ))
{
return false ;
}
else
{
if ( $rewrite )
{
$uri = 'category-' . $cid ;
if ( isset ( $bid ))
{
$uri .= '-b' . $bid ;
}
if ( isset ( $price_min ))
{
$uri .= '-min' . $price_min ;
}
if ( isset ( $price_max ))
{
$uri .= '-max' . $price_max ;
}
if ( isset ( $filter_attr ))
{
$uri .= '-attr' . $filter_attr ;
}
if ( ! empty ( $page ))
{
$uri .= '-' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '-' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '-' . $order ;
}
}
else
{
$uri = 'category.php?id=' . $cid ;
if ( ! empty ( $bid ))
{
$uri .= '&brand=' . $bid ;
}
if ( isset ( $price_min ))
{
$uri .= '&price_min=' . $price_min ;
}
if ( isset ( $price_max ))
{
$uri .= '&price_max=' . $price_max ;
}
if ( ! empty ( $filter_attr ))
{
$uri .= '&filter_attr=' . $filter_attr ;
}
if ( ! empty ( $page ))
{
$uri .= '&page=' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '&sort=' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '&order=' . $order ;
}
}
}
break ;
case 'goods' :
if ( empty ( $gid ))
{
return false ;
}
else
{
$uri = $rewrite ? 'goods-' . $gid : 'goods.php?id=' . $gid ;
}
break ;
case 'brand' :
if ( empty ( $bid ))
{
return false ;
}
else
{
if ( $rewrite )
{
$uri = 'brand-' . $bid ;
if ( isset ( $cid ))
{
$uri .= '-c' . $cid ;
}
if ( ! empty ( $page ))
{
$uri .= '-' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '-' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '-' . $order ;
}
}
else
{
$uri = 'brand.php?id=' . $bid ;
if ( ! empty ( $cid ))
{
$uri .= '&cat=' . $cid ;
}
if ( ! empty ( $page ))
{
$uri .= '&page=' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '&sort=' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '&order=' . $order ;
}
}
}
break ;
case 'article_cat' :
if ( empty ( $acid ))
{
return false ;
}
else
{
if ( $rewrite )
{
$uri = 'article_cat-' . $acid ;
if ( ! empty ( $page ))
{
$uri .= '-' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '-' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '-' . $order ;
}
if ( ! empty ( $keywords ))
{
$uri .= '-' . $keywords ;
}
}
else
{
$uri = 'article_cat.php?id=' . $acid ;
if ( ! empty ( $page ))
{
$uri .= '&page=' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '&sort=' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '&order=' . $order ;
}
if ( ! empty ( $keywords ))
{
$uri .= '&keywords=' . $keywords ;
}
}
}
break ;
case 'article' :
if ( empty ( $aid ))
{
return false ;
}
else
{
$uri = $rewrite ? 'article-' . $aid : 'article.php?id=' . $aid ;
}
break ;
case 'group_buy' :
if ( empty ( $gbid ))
{
return false ;
}
else
{
$uri = $rewrite ? 'group_buy-' . $gbid : 'group_buy.php?act=view&id=' . $gbid ;
}
break ;
case 'auction' :
if ( empty ( $auid ))
{
return false ;
}
else
{
$uri = $rewrite ? 'auction-' . $auid : 'auction.php?act=view&id=' . $auid ;
}
break ;
case 'snatch' :
if ( empty ( $sid ))
{
return false ;
}
else
{
$uri = $rewrite ? 'snatch-' . $sid : 'snatch.php?id=' . $sid ;
}
break ;
case 'search' :
break ;
case 'exchange' :
if ( $rewrite )
{
$uri = 'exchange-' . $cid ;
if ( isset ( $price_min ))
{
$uri .= '-min' . $price_min ;
}
if ( isset ( $price_max ))
{
$uri .= '-max' . $price_max ;
}
if ( ! empty ( $page ))
{
$uri .= '-' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '-' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '-' . $order ;
}
}
else
{
$uri = 'exchange.php?cat_id=' . $cid ;
if ( isset ( $price_min ))
{
$uri .= '&integral_min=' . $price_min ;
}
if ( isset ( $price_max ))
{
$uri .= '&integral_max=' . $price_max ;
}
if ( ! empty ( $page ))
{
$uri .= '&page=' . $page ;
}
if ( ! empty ( $sort ))
{
$uri .= '&sort=' . $sort ;
}
if ( ! empty ( $order ))
{
$uri .= '&order=' . $order ;
}
}
break ;
case 'exchange_goods' :
if ( empty ( $gid ))
{
return false ;
}
else
{
$uri = $rewrite ? 'exchange-id' . $gid : 'exchange.php?id=' . $gid . '&act=view' ;
}
break ;
default :
return false ;
break ;
}
if ( $rewrite )
{
if ( $rewrite == 2 && ! empty ( $append ))
{
$uri .= '-' . urlencode ( preg_replace ( '/[\.|\/|\?|&|\+|\\\|\'|"|,]+/' , '' , $append ));
}
$uri .= '.html' ;
}
if (( $rewrite == 2 ) && ( strpos ( strtolower ( EC_CHARSET ), 'utf' ) !== 0 ))
{
$uri = urlencode ( $uri );
}
return $uri ;
}
/**
* 格式化重量: 小于1千克用克表示, 否则用千克表示
* @ param float $weight 重量
* @ return string 格式化后的重量
*/
function formated_weight ( $weight )
{
$weight = round ( floatval ( $weight ), 3 );
if ( $weight > 0 )
{
if ( $weight < 1 )
{
/* 小于1千克, 用克表示 */
return intval ( $weight * 1000 ) . $GLOBALS [ '_LANG' ][ 'gram' ];
}
else
{
/* 大于1千克, 用千克表示 */
return $weight . $GLOBALS [ '_LANG' ][ 'kilogram' ];
}
}
else
{
return 0 ;
}
}
/**
* 记录帐户变动
* @ param int $user_id 用户id
* @ param float $user_money 可用余额变动
* @ param float $frozen_money 冻结余额变动
* @ param int $rank_points 等级积分变动
* @ param int $pay_points 消费积分变动
* @ param string $change_desc 变动说明
* @ param int $change_type 变动类型:参见常量文件
* @ return void
*/
function log_account_change ( $user_id , $user_money = 0 , $frozen_money = 0 , $rank_points = 0 , $pay_points = 0 , $change_desc = '' , $change_type = ACT_OTHER , $token = '' )
{
/* 插入帐户变动记录 */
$account_log = array (
'user_id' => $user_id ,
'user_money' => $user_money ,
'frozen_money' => $frozen_money ,
'rank_points' => $rank_points ,
'pay_points' => $pay_points ,
'change_time' => gmtime (),
'change_desc' => $change_desc ,
'change_type' => $change_type ,
'token' => $token
);
$GLOBALS [ 'db' ] -> autoExecute ( $GLOBALS [ 'ecs' ] -> table ( 'account_log' ), $account_log , 'INSERT' );
if ( $user_money != 0 && ( $change_type == 0 || $change_type == 1 )){
$uniqid = $change_type . uniqid ();
$sql = " INSERT INTO " . $GLOBALS [ 'ecs' ] -> table ( 'bet_log' ) . " (user_id,game_id,gameType,game_num,bet_num,bet_time,cal_time,bet_amount,valid_amount,win_or_loss,comm_amount,state,table_id,bet_type,other) " .
" VALUES (' " . $user_id . " ', '1','0','0',' " . $uniqid . " ',' " . time () . " ',' " . time () . " ','0','0','0','0','0','0','0','') " ;
$GLOBALS [ 'db' ] -> query ( $sql );
}
if ( $user_money != 0 && $change_type == 0 ){
$sql = " update " . $GLOBALS [ 'ecs' ] -> table ( 'users' ) . " set sdeposit=sdeposit+ " . abs ( $user_money ) . " ,deposit=deposit+1 where user_id= " . $user_id ;
$GLOBALS [ 'db' ] -> query ( $sql );
}
/* 更新用户信息 */
$sql = " UPDATE " . $GLOBALS [ 'ecs' ] -> table ( 'users' ) .
" SET user_money = user_money + (' $user_money '), " .
" frozen_money = frozen_money + (' $frozen_money '), " .
" rank_points = rank_points + (' $rank_points '), " ;
$sql .= " pay_points = pay_points + (' $pay_points ') " .
" WHERE user_id = ' $user_id ' LIMIT 1 " ;
$GLOBALS [ 'db' ] -> query ( $sql );
}
/**
* 获得指定分类下的子分类的数组
*
* @ access public
* @ param int $cat_id 分类的ID
* @ param int $selected 当前选中分类的ID
* @ param boolean $re_type 返回的类型 : 值为真时返回下拉列表 , 否则返回数组
* @ param int $level 限定返回的级数。为0时返回所有级数
* @ return mix
*/
function article_cat_list ( $cat_id = 0 , $selected = 0 , $re_type = true , $level = 0 )
{
static $res = NULL ;
if ( $res === NULL )
{
$data = read_static_cache ( 'art_cat_pid_releate' );
if ( $data === false )
{
$sql = " SELECT c.*, COUNT(s.cat_id) AS has_children, COUNT(a.article_id) AS aricle_num " .
' FROM ' . $GLOBALS [ 'ecs' ] -> table ( 'article_cat' ) . " AS c " .
" LEFT JOIN " . $GLOBALS [ 'ecs' ] -> table ( 'article_cat' ) . " AS s ON s.parent_id=c.cat_id " .
" LEFT JOIN " . $GLOBALS [ 'ecs' ] -> table ( 'article' ) . " AS a ON a.cat_id=c.cat_id " .
" GROUP BY c.cat_id " .
" ORDER BY parent_id, sort_order ASC " ;
$res = $GLOBALS [ 'db' ] -> getAll ( $sql );
write_static_cache ( 'art_cat_pid_releate' , $res );
}
else
{
$res = $data ;
}
}
if ( empty ( $res ) == true )
{
return $re_type ? '' : array ();
}
$options = article_cat_options ( $cat_id , $res ); // 获得指定分类下的子分类的数组
/* 截取到指定的缩减级别 */
if ( $level > 0 )
{
if ( $cat_id == 0 )
{
$end_level = $level ;
}
else
{
$first_item = reset ( $options ); // 获取第一个元素
$end_level = $first_item [ 'level' ] + $level ;
}
/* 保留level小于end_level的部分 */
foreach ( $options AS $key => $val )
{
if ( $val [ 'level' ] >= $end_level )
{
unset ( $options [ $key ]);
}
}
}
$pre_key = 0 ;
foreach ( $options AS $key => $value )
{
$options [ $key ][ 'has_children' ] = 1 ;
if ( $pre_key > 0 )
{
if ( $options [ $pre_key ][ 'cat_id' ] == $options [ $key ][ 'parent_id' ])
{
$options [ $pre_key ][ 'has_children' ] = 1 ;
}
}
$pre_key = $key ;
}
if ( $re_type == true )
{
$select = '' ;
foreach ( $options AS $var )
{
$select .= '<option value="' . $var [ 'cat_id' ] . '" ' ;
$select .= ' cat_type="' . $var [ 'cat_type' ] . '" ' ;
$select .= ( $selected == $var [ 'cat_id' ]) ? " selected='ture' " : '' ;
$select .= '>' ;
if ( $var [ 'level' ] > 0 )
{
$select .= str_repeat ( ' ' , $var [ 'level' ] * 4 );
}
$select .= htmlspecialchars ( addslashes ( $var [ 'cat_name' ])) . '</option>' ;
}
return $select ;
}
else
{
foreach ( $options AS $key => $value )
{
$options [ $key ][ 'url' ] = build_uri ( 'article_cat' , array ( 'acid' => $value [ 'cat_id' ]), $value [ 'cat_name' ]);
}
return $options ;
}
}
/**
* 过滤和排序所有文章分类,返回一个带有缩进级别的数组
*
* @ access 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 ;
}
}
/**
* 调用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 ;
}
}
function check_mobile (){
$useragent = $_SERVER [ 'HTTP_USER_AGENT' ];
if ( preg_match ( '/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i' , $useragent ) || preg_match ( '/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i' , substr ( $useragent , 0 , 4 ))){
return true ;
}
return false ;
}
?>