You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1025 lines
37 KiB

<?php
/**
* ECSHOP
* ============================================================================
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecmoban.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
*
* $Author: liubo $
* $Id: goods_export.php 17217 2011-01-19 06:29:08Z liubo $
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
require_once(ROOT_PATH . '/' . ADMIN_PATH . '/includes/lib_goods.php');
if ($_REQUEST['act'] == 'goods_export')
{
/* 检查权限 */
admin_priv('goods_export');
$smarty->assign('ur_here', $_LANG['14_goods_export']);
$smarty->assign('cat_list', cat_list_one(0));
$smarty->assign('brand_list', get_brand_list());
$smarty->assign('goods_type_list', goods_type_list(0));
$goods_fields = my_array_merge($_LANG['custom'], get_attributes());
$data_format_array = array(
'ecshop' => $_LANG['export_ecshop'],
'taobao V4.3' => $_LANG['export_taobao_v43'],
'taobao V4.6' => $_LANG['export_taobao_v46'],
'taobao' => $_LANG['export_taobao'],
'paipai' => $_LANG['export_paipai'],
'paipai4' => $_LANG['export_paipai4'],
'custom' => $_LANG['export_custom'],
);
$smarty->assign('data_format', $data_format_array);
$smarty->assign('goods_fields', $goods_fields);
assign_query_info();
$smarty->display('goods_export.htm');
}
elseif ($_REQUEST['act'] == 'act_export_taobao')
{
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$goods_class = intval($_POST['goods_class']);
$post_express = floatval($_POST['post_express']);
$express = floatval($_POST['express']);
$ems = floatval($_POST['ems']);
$shop_province = '""';
$shop_city = '""';
if ($_CFG['shop_province'] || $_CFG['shop_city'])
{
$sql = "SELECT region_id, region_name FROM " . $ecs->table('region') . " WHERE region_id IN ('$_CFG[shop_province]', '$_CFG[shop_city]')";
$arr = $db->getAll($sql);
if ($arr)
{
if (count($arr) == 1)
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
}
else
{
$shop_city = '"' . $arr[0]['region_name'] . '"' ;
}
}
else
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
$shop_city = '"' . $arr[1]['region_name'] . '"';
}
else
{
$shop_province = '"' . $arr[1]['region_name'] . '"' ;
$shop_city = '"' . $arr[0]['region_name'] . '"';
}
}
}
}
$sql = "SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_number, g.goods_desc, g.goods_img ".
" FROM " . $ecs->table('goods') . " AS g ". $where;
$res = $db->query($sql);
/* csv文件数组 */
$goods_value = array('goods_name'=>'""', 'goods_class'=>$goods_class, 'shop_class'=>0, 'new_level'=>5, 'province'=>$shop_province, 'city'=>$shop_city, 'sell_type'=>'"b"', 'shop_price'=>0, 'add_price'=>0, 'goods_number'=>0, 'die_day'=>14, 'load_type'=>1, 'post_express'=>$post_express, 'ems'=>$ems, 'express'=>$express, 'pay_type'=>2, 'allow_alipay'=>1, 'invoice'=>0, 'repair'=>0, 'resend'=>1, 'is_store'=>0, 'window'=>0, 'add_time'=>'"1980-1-1 0:00:00"', 'story'=>'""', 'goods_desc'=>'""', 'goods_img'=>'""', 'goods_attr'=>'""', 'group_buy'=>0, 'group_buy_num'=>0, 'template'=>0, 'discount'=>0, 'modify_time'=>'""', 'upload_status'=>100, 'img_status'=>1);
$content = implode(",", $_LANG['taobao']) . "\n";
while ($row = $db->fetchRow($res))
{
$goods_value['goods_name'] = '"' . $row['goods_name'] . '"';
$goods_value['shop_price'] = $row['shop_price'];
$goods_value['goods_number'] = $row['goods_number'];
$goods_value['goods_desc'] = replace_special_char($row['goods_desc']);
$goods_value['goods_img'] = '"' . $row['goods_img'] . '"';
$content .= implode("\t", $goods_value) . "\n";
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_img']), $row['goods_img']);
}
}
if (EC_CHARSET != 'utf-8')
{
$content = ecs_iconv(EC_CHARSET, 'utf-8', $content);
}
$zip->add_file("\xFF\xFE" . utf82u2($content), 'goods_list.csv');
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
elseif ($_REQUEST['act'] == 'act_export_taobao V4.3')
{
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$goods_class = intval($_POST['goods_class']);
$post_express = floatval($_POST['post_express']);
$express = floatval($_POST['express']);
$ems = floatval($_POST['ems']);
$shop_province = '""';
$shop_city = '""';
if ($_CFG['shop_province'] || $_CFG['shop_city'])
{
$sql = "SELECT region_id, region_name FROM " . $ecs->table('region') . " WHERE region_id IN ('$_CFG[shop_province]', '$_CFG[shop_city]')";
$arr = $db->getAll($sql);
if ($arr)
{
if (count($arr) == 1)
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
}
else
{
$shop_city = '"' . $arr[0]['region_name'] . '"' ;
}
}
else
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
$shop_city = '"' . $arr[1]['region_name'] . '"';
}
else
{
$shop_province = '"' . $arr[1]['region_name'] . '"' ;
$shop_city = '"' . $arr[0]['region_name'] . '"';
}
}
}
}
$sql = "SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_number, g.goods_desc, g.goods_img ".
" FROM " . $ecs->table('goods') . " AS g ". $where;
$res = $db->query($sql);
/* csv文件数组 */
$goods_value = array('goods_name'=>'""', 'goods_class'=>$goods_class, 'shop_class'=>0, 'new_level'=>5, 'province'=>$shop_province, 'city'=>$shop_city, 'sell_type'=>'"b"', 'shop_price'=>0, 'add_price'=>0, 'goods_number'=>0, 'die_day'=>14, 'load_type'=>1, 'post_express'=>$post_express, 'ems'=>$ems, 'express'=>$express, 'pay_type'=>2, 'allow_alipay'=>1, 'invoice'=>0, 'repair'=>0, 'resend'=>1, 'is_store'=>0, 'window'=>0, 'add_time'=>'"1980-1-1 0:00:00"', 'story'=>'""', 'goods_desc'=>'""', 'goods_img'=>'""', 'goods_attr'=>'""', 'group_buy'=>0, 'group_buy_num'=>0, 'template'=>0, 'discount'=>0, 'modify_time'=>'""', 'upload_status'=>100, 'img_status'=>1);
$content = implode("\t", $_LANG['taobao']) . "\n";
while ($row = $db->fetchRow($res))
{
$goods_value['goods_name'] = '"' . $row['goods_name'] . '"';
$goods_value['shop_price'] = $row['shop_price'];
$goods_value['goods_number'] = $row['goods_number'];
$goods_value['goods_desc'] = replace_special_char($row['goods_desc']);
$goods_value['goods_img'] = '"' . $row['goods_img'] . '"';
$content .= implode("\t", $goods_value) . "\n";
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_img']), $row['goods_img']);
}
}
if (EC_CHARSET != 'utf-8')
{
$content = ecs_iconv(EC_CHARSET, 'utf-8', $content);
}
$zip->add_file("\xFF\xFE" . utf82u2($content), 'goods_list.csv');
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
/* 从淘宝导入数据 */
elseif ($_REQUEST['act'] == 'import_taobao')
{
$smarty->display('import_taobao.htm');
}
elseif($_REQUEST['act'] == 'act_export_ecshop')
{
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$sql = "SELECT g.*, b.brand_name as brandname " .
" FROM " . $ecs->table('goods') . " AS g LEFT JOIN " . $ecs->table('brand') . " AS b " .
"ON g.brand_id = b.brand_id" . $where;
$res = $db->query($sql);
/* csv文件数组 */
$goods_value = array();
$goods_value['goods_name'] = '""';
$goods_value['goods_sn'] = '""';
$goods_value['brand_name'] = '""';
$goods_value['market_price'] = 0;
$goods_value['shop_price'] = 0;
$goods_value['integral'] = 0;
$goods_value['original_img'] = '""';
$goods_value['goods_img'] = '""';
$goods_value['goods_thumb'] = '""';
$goods_value['keywords'] = '""';
$goods_value['goods_brief'] = '""';
$goods_value['goods_desc'] = '""';
$goods_value['goods_weight'] = 0;
$goods_value['goods_number'] = 0;
$goods_value['warn_number'] = 0;
$goods_value['is_best'] = 0;
$goods_value['is_new'] = 0;
$goods_value['is_hot'] = 0;
$goods_value['is_on_sale'] = 1;
$goods_value['is_alone_sale'] = 1;
$goods_value['is_real'] = 1;
$content = '"' . implode('","', $_LANG['ecshop']) . "\"\n";
while ($row = $db->fetchRow($res))
{
$goods_value['goods_name'] = '"' . $row['goods_name'] . '"';
$goods_value['goods_sn'] = '"' . $row['goods_sn'] . '"';
$goods_value['brand_name'] = '"' . $row['brandname'] . '"';
$goods_value['market_price'] = $row['market_price'];
$goods_value['shop_price'] = $row['shop_price'];
$goods_value['integral'] = $row['integral'];
$goods_value['original_img'] = '"' . $row['original_img'] . '"';
$goods_value['goods_img'] = '"' . $row['goods_img'] . '"';
$goods_value['goods_thumb'] = '"' . $row['goods_thumb'] . '"';
$goods_value['keywords'] = '"' . $row['keywords'] . '"';
$goods_value['goods_brief'] = '"' . replace_special_char($row['goods_brief'], false) . '"';
$goods_value['goods_desc'] = '"' . replace_special_char($row['goods_desc'], false) . '"';
$goods_value['goods_weight'] = $row['goods_weight'];
$goods_value['goods_number'] = $row['goods_number'];
$goods_value['warn_number'] = $row['warn_number'];
$goods_value['is_best'] = $row['is_best'];
$goods_value['is_new'] = $row['is_new'];
$goods_value['is_hot'] = $row['is_hot'];
$goods_value['is_on_sale'] = $row['is_on_sale'];
$goods_value['is_alone_sale'] = $row['is_alone_sale'];
$goods_value['is_real'] = $row['is_real'];
$content .= implode(",", $goods_value) . "\n";
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_img']), $row['goods_img']);
}
if (!empty($row['original_img']) && is_file(ROOT_PATH . $row['original_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['original_img']), $row['original_img']);
}
if (!empty($row['goods_thumb']) && is_file(ROOT_PATH . $row['goods_thumb']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_thumb']), $row['goods_thumb']);
}
}
$charset = empty($_POST['charset']) ? 'UTF8' : trim($_POST['charset']);
$zip->add_file(ecs_iconv(EC_CHARSET, $charset, $content), 'goods_list.csv');
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
elseif ($_REQUEST['act'] == 'act_export_paipai')
{
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$post_express = floatval($_POST['post_express']);
$express = floatval($_POST['express']);
if ($post_express < 0)
{
$post_express = 10;
}
if ($express < 0)
{
$express = 20;
}
$shop_province = '""';
$shop_city = '""';
if ($_CFG['shop_province'] || $_CFG['shop_city'])
{
$sql = "SELECT region_id, region_name FROM " . $ecs->table('region') . " WHERE region_id IN ('$_CFG[shop_province]', '$_CFG[shop_city]')";
$arr = $db->getAll($sql);
if ($arr)
{
if (count($arr) == 1)
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
}
else
{
$shop_city = '"' . $arr[0]['region_name'] . '"' ;
}
}
else
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
$shop_city = '"' . $arr[1]['region_name'] . '"';
}
else
{
$shop_province = '"' . $arr[1]['region_name'] . '"' ;
$shop_city = '"' . $arr[0]['region_name'] . '"';
}
}
}
}
$sql = "SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_number, g.goods_desc, g.goods_img ".
" FROM " . $ecs->table('goods') . " AS g ". $where;
$res = $db->query($sql);
$goods_value = array();
$goods_value['id'] = -1;
$goods_value['tree_node_id'] = -1;
$goods_value['old_tree_node_id'] = -1;
$goods_value['title'] = '""';
$goods_value['id_in_web'] = '""';
$goods_value['auctionType'] = '"b"';
$goods_value['category'] = 0;
$goods_value['shopCategoryId'] = '""';
$goods_value['pictURL'] = '""';
$goods_value['quantity'] = 0;
$goods_value['duration'] = 14;
$goods_value['startDate'] = '""';
$goods_value['stuffStatus'] = 5;
$goods_value['price'] = 0;
$goods_value['increment'] = 0;
$goods_value['prov'] = $shop_province;
$goods_value['city'] = $shop_city;
$goods_value['shippingOption'] = 1;
$goods_value['ordinaryPostFee'] = $post_express;
$goods_value['fastPostFee'] = $express;
$goods_value['paymentOption'] = 5;
$goods_value['haveInvoice'] = 0;
$goods_value['haveGuarantee'] = 0;
$goods_value['secureTradeAgree'] = 1;
$goods_value['autoRepost'] = 1;
$goods_value['shopWindow'] = 0;
$goods_value['failed_reason'] = '""';
$goods_value['pic_size'] = 0;
$goods_value['pic_filename'] = '""';
$goods_value['pic'] = '""';
$goods_value['description'] = '""';
$goods_value['story'] = '""';
$goods_value['putStore'] = 0;
$goods_value['pic_width'] = 80;
$goods_value['pic_height'] = 80;
$goods_value['skin'] = 0;
$goods_value['prop'] = '""';
$content = '"' . implode('","', $_LANG['paipai']) . "\"\n";
while ($row = $db->fetchRow($res))
{
$goods_value['title'] = '"' . $row['goods_name'] . '"';
$goods_value['price'] = $row['shop_price'];
$goods_value['quantity'] = $row['goods_number'];
$goods_value['description'] = replace_special_char($row['goods_desc']);
$goods_value['pic_filename'] = '"' . $row['goods_img'] . '"';
$content .= implode(",", $goods_value) . "\n";
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_img']), $row['goods_img']);
}
}
if (EC_CHARSET == 'utf-8')
{
$zip->add_file(ecs_iconv('UTF8', 'GB2312', $content), 'goods_list.csv');
}
else
{
$zip->add_file($content, 'goods_list.csv');
}
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
elseif ($_REQUEST['act'] == 'act_export_paipai4')
{
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$post_express = floatval($_POST['post_express']);
$express = floatval($_POST['express']);
if ($post_express < 0)
{
$post_express = 10;
}
if ($express < 0)
{
$express = 20;
}
$shop_province = '""';
$shop_city = '""';
if ($_CFG['shop_province'] || $_CFG['shop_city'])
{
$sql = "SELECT region_id, region_name FROM " . $ecs->table('region') . " WHERE region_id IN ('$_CFG[shop_province]', '$_CFG[shop_city]')";
$arr = $db->getAll($sql);
if ($arr)
{
if (count($arr) == 1)
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
}
else
{
$shop_city = '"' . $arr[0]['region_name'] . '"' ;
}
}
else
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
$shop_city = '"' . $arr[1]['region_name'] . '"';
}
else
{
$shop_province = '"' . $arr[1]['region_name'] . '"' ;
$shop_city = '"' . $arr[0]['region_name'] . '"';
}
}
}
}
$sql = "SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_number, g.goods_desc, g.goods_img ".
" FROM " . $ecs->table('goods') . " AS g ". $where;
$res = $db->query($sql);
$goods_value = array();
$goods_value['id'] = -1;
$goods_value['goods_name'] = '""';
$goods_value['auctionType'] = '"b"';
$goods_value['category'] = 0;
$goods_value['shopCategoryId'] = '""';
$goods_value['quantity'] = 0;
$goods_value['duration'] = 14;
$goods_value['startDate'] = '""';
$goods_value['stuffStatus'] = 5;
$goods_value['price'] = 0;
$goods_value['increment'] = 0;
$goods_value['prov'] = $shop_province;
$goods_value['city'] = $shop_city;
$goods_value['shippingOption'] = 1;
$goods_value['ordinaryPostFee'] = $post_express;
$goods_value['fastPostFee'] = $express;
$goods_value['buyLimit'] = 0;
$goods_value['paymentOption'] = 5;
$goods_value['haveInvoice'] = 0;
$goods_value['haveGuarantee'] = 0;
$goods_value['secureTradeAgree'] = 1;
$goods_value['autoRepost'] = 1;
$goods_value['failed_reason'] = '""';
$goods_value['pic_filename'] = '""';
$goods_value['description'] = '""';
$goods_value['shelfOption'] = 0;
$goods_value['skin'] = 0;
$goods_value['attr'] = '""';
$goods_value['chengBao'] = '""';
$goods_value['shopWindow'] = 0;
$content = '"' . implode('","', $_LANG['paipai4']) . "\"\n";
while ($row = $db->fetchRow($res))
{
$goods_value['goods_name'] = '"' . $row['goods_name'] . '"';
$goods_value['price'] = $row['shop_price'];
$goods_value['quantity'] = $row['goods_number'];
$goods_value['description'] = replace_special_char($row['goods_desc']);
$goods_value['pic_filename'] = '"' . $row['goods_img'] . '"';
$content .= implode(",", $goods_value) . "\n";
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_img']), $row['goods_img']);
}
}
if (EC_CHARSET == 'utf-8')
{
$zip->add_file(ecs_iconv('UTF8', 'GB2312', $content), 'goods_list.csv');
}
else
{
$zip->add_file($content, 'goods_list.csv');
}
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
/* 从拍拍网导入数据 */
elseif ($_REQUEST['act'] == 'import_paipai')
{
$smarty->display('import_paipai.htm');
}
/* 处理Ajax调用 */
elseif ($_REQUEST['act'] == 'get_goods_fields')
{
$cat_id = isset($_REQUEST['cat_id'])?intval($_REQUEST['cat_id']):0;
$goods_fields = my_array_merge($_LANG['custom'], get_attributes($cat_id));
make_json_result($goods_fields);
}
elseif ($_REQUEST['act'] == 'act_export_custom')
{
/* 检查输出列 */
if (empty ($_POST['custom_goods_export']))
{
sys_msg($_LANG['custom_goods_field_not_null'], 1, array(), false);
}
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$sql = "SELECT g.*, b.brand_name as brandname " .
" FROM " . $ecs->table('goods') . " AS g LEFT JOIN " . $ecs->table('brand') . " AS b " .
"ON g.brand_id = b.brand_id" . $where;
$res = $db->query($sql);
$goods_fields = explode(',', $_POST['custom_goods_export']);
$goods_field_name = set_goods_field_name($goods_fields, $_LANG['custom']);
/* csv文件数组 */
$goods_field_value = array();
foreach ($goods_fields as $field)
{
if ($field == 'market_price' || $field == 'shop_price' || $field == 'integral' || $field == 'goods_weight' || $field == 'goods_number' || $field == 'warn_number' || $field == 'is_best' || $field == 'is_new' || $field == 'is_hot')
{
$goods_field_value[$field] = 0;
}
elseif ($field == 'is_on_sale' || $field == 'is_alone_sale' || $field == 'is_real')
{
$goods_field_value[$field] = 1;
}
else
{
$goods_field_value[$field] = '""';
}
}
$content = '"' . implode('","', $goods_field_name) . "\"\n";
while ($row = $db->fetchRow($res))
{
$goods_value = $goods_field_value;
isset($goods_value['goods_name']) && ($goods_value['goods_name'] = '"' . $row['goods_name'] . '"');
isset($goods_value['goods_sn']) && ($goods_value['goods_sn'] = '"' . $row['goods_sn'] . '"');
isset($goods_value['brand_name']) && ($goods_value['brand_name'] = $row['brandname']);
isset($goods_value['market_price']) && ($goods_value['market_price'] = $row['market_price']);
isset($goods_value['shop_price']) && ($goods_value['shop_price'] = $row['shop_price']);
isset($goods_value['integral']) && ($goods_value['integral'] = $row['integral']);
isset($goods_value['original_img']) && ($goods_value['original_img'] = '"' . $row['original_img'] . '"');
isset($goods_value['keywords']) && ($goods_value['keywords'] = '"' . $row['keywords'] . '"');
isset($goods_value['goods_brief']) && ($goods_value['goods_brief'] = '"' . replace_special_char($row['goods_brief']) . '"');
isset($goods_value['goods_desc']) && ($goods_value['goods_desc'] = '"' . replace_special_char($row['goods_desc']) . '"');
isset($goods_value['goods_weight']) && ($goods_value['goods_weight'] = $row['goods_weight']);
isset($goods_value['goods_number']) && ($goods_value['goods_number'] = $row['goods_number']);
isset($goods_value['warn_number']) && ($goods_value['warn_number'] = $row['warn_number']);
isset($goods_value['is_best']) && ($goods_value['is_best'] = $row['is_best']);
isset($goods_value['is_new']) && ($goods_value['is_new'] = $row['is_new']);
isset($goods_value['is_hot']) && ($goods_value['is_hot'] = $row['is_hot']);
isset($goods_value['is_on_sale']) && ($goods_value['is_on_sale'] = $row['is_on_sale']);
isset($goods_value['is_alone_sale']) && ($goods_value['is_alone_sale'] = $row['is_alone_sale']);
isset($goods_value['is_real']) && ($goods_value['is_real'] = $row['is_real']);
$sql = "SELECT `attr_id`, `attr_value` FROM " . $ecs->table('goods_attr') . " WHERE `goods_id` = '" . $row['goods_id'] . "'";
$query = $db->query($sql);
while ($attr = $db->fetchRow($query))
{
if (in_array($attr['attr_id'], $goods_fields))
{
$goods_value[$attr['attr_id']] = '"' . $attr['attr_value'] . '"';
}
}
$content .= implode(",", $goods_value) . "\n";
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH . $row['goods_img']), $row['goods_img']);
}
}
$charset = empty($_POST['charset_custom']) ? 'UTF8' : trim($_POST['charset_custom']);
$zip->add_file(ecs_iconv(EC_CHARSET, $charset, $content), 'goods_list.csv');
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
elseif ($_REQUEST['act'] == 'get_goods_list')
{
include_once(ROOT_PATH . 'includes/cls_json.php');
$json = new JSON;
$filters = $json->decode($_REQUEST['JSON']);
$arr = get_goods_list($filters);
$opt = array();
foreach ($arr AS $key => $val)
{
$opt[] = array('goods_id' => $val['goods_id'],
'goods_name' => $val['goods_name']
);
}
make_json_result($opt);
}
elseif ($_REQUEST['act'] == 'act_export_taobao V4.6')
{
/* 检查权限 */
admin_priv('goods_export');
include_once('includes/cls_phpzip.php');
$zip = new PHPZip;
$where = get_export_where_sql($_POST);
$goods_class = intval($_POST['goods_class']);
$post_express = floatval($_POST['post_express']);
$express = floatval($_POST['express']);
$ems = floatval($_POST['ems']);
$shop_province = '""';
$shop_city = '""';
if ($_CFG['shop_province'] || $_CFG['shop_city'])
{
$sql = "SELECT region_id, region_name FROM " . $ecs->table('region') . " WHERE region_id IN ('$_CFG[shop_province]', '$_CFG[shop_city]')";
$arr = $db->getAll($sql);
if ($arr)
{
if (count($arr) == 1)
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
}
else
{
$shop_city = '"' . $arr[0]['region_name'] . '"' ;
}
}
else
{
if ($arr[0]['region_id'] == $_CFG['shop_province'])
{
$shop_province = '"' . $arr[0]['region_name'] . '"' ;
$shop_city = '"' . $arr[1]['region_name'] . '"';
}
else
{
$shop_province = '"' . $arr[1]['region_name'] . '"' ;
$shop_city = '"' . $arr[0]['region_name'] . '"';
}
}
}
}
$sql = "SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_number, g.goods_desc, g.goods_img ".
" FROM " . $ecs->table('goods') . " AS g ". $where;
$res = $db->query($sql);
/* csv文件数组 */
$goods_value = array('goods_name'=>'', 'goods_class'=>$goods_class, 'shop_class'=>0, 'new_level'=>0, 'province'=>$shop_province, 'city'=>$shop_city, 'sell_type'=>'"b"', 'shop_price'=>0, 'add_price'=>0, 'goods_number'=>0, 'die_day'=>14, 'load_type'=>1, 'post_express'=>$post_express, 'ems'=>$ems, 'express'=>$express, 'pay_type'=>'', 'allow_alipay'=>'', 'invoice'=>0, 'repair'=>0, 'resend'=>1, 'is_store'=>0, 'window'=>0, 'add_time'=>'"1980-1-1 0:00:00"', 'story'=>'', 'goods_desc'=>'', 'goods_img'=>'', 'goods_attr'=>'', 'group_buy'=>'', 'group_buy_num'=>'', 'template'=>0, 'discount'=>0, 'modify_time'=>'"2011-5-1 0:00:00"', 'upload_status'=>100, 'img_status'=>1,'img_status'=>'','rebate_proportion'=>0,'new_goods_img'=>'','video'=>'','marketing_property_mix'=>'','user_input_ID_numbers'=>'','input_user_name_value'=>'','sellers_code'=>'','another_of_marketing_property'=>'','charge_type'=>'0','treasure_number'=>'','ID_number'=>'',);
$content = implode("\t", $_LANG['taobao46']) . "\n";
while ($row = $db->fetchRow($res))
{
/* 压缩图片 */
if (!empty($row['goods_img']) && is_file(ROOT_PATH . $row['goods_img']))
{
$row['new_goods_img']=preg_replace("/(^images\/)+(.*)(.gif|.jpg|.jpeg|.png)$/", "\${2}.tbi", $row['goods_img']);
@copy(ROOT_PATH .$row['goods_img'],ROOT_PATH ."images\/".$row['new_goods_img']);
if(is_file(ROOT_PATH ."images\/". $row['new_goods_img']))
{
$zip->add_file(file_get_contents(ROOT_PATH ."images\/". $row['new_goods_img']), $row['new_goods_img']);
unlink(ROOT_PATH ."images\/".$row['new_goods_img']);
}
}
$goods_value['goods_name'] = '"' . $row['goods_name'] . '"';
$goods_value['shop_price'] = $row['shop_price'];
$goods_value['goods_number'] = $row['goods_number'];
$goods_value['goods_desc'] = replace_special_char($row['goods_desc']);
if(!empty($row['new_goods_img']))
{
$row['new_goods_img']=str_ireplace('/','\\',$row['new_goods_img'],$row['new_goods_img']);
$row['new_goods_img']=str_ireplace('.tbi','',$row['new_goods_img'],$row['new_goods_img']);
$goods_value['new_goods_img'] = '"' . $row['new_goods_img'] . ':0:0:|;'.'"';
}
$content .= implode("\t", $goods_value) . "\n";
}
if (EC_CHARSET != 'utf-8')
{
$content = ecs_iconv(EC_CHARSET, 'utf-8', $content);
}
$zip->add_file("\xFF\xFE" . utf82u2($content), 'goods_list.csv');
header("Content-Disposition: attachment; filename=goods_list.zip");
header("Content-Type: application/unknown");
die($zip->file());
}
/**
*
*
* @access public
* @param
*
* @return void
*/
function utf82u2($str)
{
$len = strlen($str);
$start = 0;
$result = '';
if ($len == 0)
{
return $result;
}
while ($start < $len)
{
$num = ord($str{$start});
if ($num < 127)
{
$result .= chr($num) . chr($num >> 8);
$start += 1;
}
else
{
if ($num < 192)
{
/* 无效字节 */
$start ++;
}
elseif ($num < 224)
{
if ($start + 1 < $len)
{
$num = (ord($str{$start}) & 0x3f) << 6;
$num += ord($str{$start+1}) & 0x3f;
$result .= chr($num & 0xff) . chr($num >> 8) ;
}
$start += 2;
}
elseif ($num < 240)
{
if ($start + 2 < $len)
{
$num = (ord($str{$start}) & 0x1f) << 12;
$num += (ord($str{$start+1}) & 0x3f) << 6;
$num += ord($str{$start+2}) & 0x3f;
$result .= chr($num & 0xff) . chr($num >> 8) ;
}
$start += 3;
}
elseif ($num < 248)
{
if ($start + 3 < $len)
{
$num = (ord($str{$start}) & 0x0f) << 18;
$num += (ord($str{$start+1}) & 0x3f) << 12;
$num += (ord($str{$start+2}) & 0x3f) << 6;
$num += ord($str{$start+3}) & 0x3f;
$result .= chr($num & 0xff) . chr($num >> 8) . chr($num >>16);
}
$start += 4;
}
elseif ($num < 252)
{
if ($start + 4 < $len)
{
/* 不做处理 */
}
$start += 5;
}
else
{
if ($start + 5 < $len)
{
/* 不做处理 */
}
$start += 6;
}
}
}
return $result;
}
/**
*
*
* @access public
* @param
*
* @return string
*/
function image_path_format($content)
{
$prefix = 'http://' . $_SERVER['SERVER_NAME'];
$pattern = '/(background|src)=[\'|\"]((?!http:\/\/).*?)[\'|\"]/i';
$replace = "$1='" . $prefix . "$2'";
return preg_replace($pattern, $replace, $content);
}
/**
* 获取商品类型属性
*
* @param int $cat_id 商品类型ID
*
* @return array
*/
function get_attributes($cat_id = 0)
{
$sql = "SELECT `attr_id`, `cat_id`, `attr_name` FROM " . $GLOBALS['ecs']->table('attribute') . " ";
if (!empty($cat_id))
{
$cat_id = intval($cat_id);
$sql .= " WHERE `cat_id` = '{$cat_id}' ";
}
$sql .= " ORDER BY `cat_id` ASC, `attr_id` ASC ";
$attributes = array();
$query = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($query))
{
$attributes[$row['attr_id']] = $row['attr_name'];
}
return $attributes;
}
/**
* 设置导出商品字段名
*
* @param array $array 字段数组
* @param array $lang 字段名
*
* @return array
*/
function set_goods_field_name($array, $lang)
{
$tmp_fields = $array;
foreach ($array as $key => $value)
{
if (isset($lang[$value]))
{
$tmp_fields[$key] = $lang[$value];
}
else
{
$tmp_fields[$key] = $GLOBALS['db']->getOne("SELECT `attr_name` FROM " . $GLOBALS['ecs']->table('attribute') . " WHERE `attr_id` = '" . intval($value) . "'");
}
}
return $tmp_fields;
}
/**
* 数组合并
*
* @param array $array1 数组1
* @param array $array2 数组2
*
* @return array
*/
function my_array_merge($array1, $array2)
{
$new_array = $array1;
foreach ($array2 as $key => $val)
{
$new_array[$key] = $val;
}
return $new_array;
}
/**
* 生成商品导出过滤条件
*
* @param array $filter 过滤条件数组
*
* @return string
*/
function get_export_where_sql($filter)
{
$where = '';
if (!empty($filter['goods_ids']))
{
$goods_ids = explode(',', $filter['goods_ids']);
if (is_array($goods_ids) && !empty($goods_ids))
{
$goods_ids = array_unique($goods_ids);
$goods_ids = "'" . implode("','", $goods_ids) . "'";
}
else
{
$goods_ids = "'0'";
}
$where = " WHERE g.is_delete = 0 AND g.goods_id IN (" . $goods_ids . ") ";
}
else
{
$_filter = new StdClass();
$_filter->cat_id = $filter['cat_id'];
$_filter->brand_id = $filter['brand_id'];
$_filter->keyword = $filter['keyword'];
$where = get_where_sql_unpre($_filter);
}
return $where;
}
/**
* 替换影响csv文件的字符
*
* @param $str string 处理字符串
*/
function replace_special_char($str, $replace = true)
{
$str = str_replace("\r\n", "", image_path_format($str));
$str = str_replace("\t", " ", $str);
$str = str_replace("\n", "", $str);
if ($replace == true)
{
$str = '"' . str_replace('"', '""', $str) . '"';
}
return $str;
}
?>