|
|
<?php
|
|
|
define('IN_ASC', true);
|
|
|
|
|
|
require(dirname(__FILE__) . '/includes/init.php');
|
|
|
require_once(ROOT_PATH . '/includes/lib_order.php');
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 框架
|
|
|
/*------------------------------------------------------ */
|
|
|
if ($_REQUEST['act'] == '')
|
|
|
{
|
|
|
$smarty->assign('shop_url', urlencode($ecs->url()));
|
|
|
$smarty->display('index.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 頂部框架的內容
|
|
|
/*------------------------------------------------------ */
|
|
|
elseif ($_REQUEST['act'] == 'top')
|
|
|
{
|
|
|
// 獲得管理員設置的菜單
|
|
|
$lst = array();
|
|
|
$nav = $db->GetOne('SELECT nav_list FROM ' . $ecs->table('admin_user') . " WHERE user_id = '" . $_SESSION['admin_id'] . "'");
|
|
|
|
|
|
if (!empty($nav))
|
|
|
{
|
|
|
$arr = explode(',', $nav);
|
|
|
|
|
|
foreach ($arr AS $val)
|
|
|
{
|
|
|
$tmp = explode('|', $val);
|
|
|
$lst[$tmp[1]] = $tmp[0];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 獲得管理員設置的菜單
|
|
|
|
|
|
// 獲得管理員ID
|
|
|
$smarty->assign('send_mail_on',$_CFG['send_mail_on']);
|
|
|
$smarty->assign('nav_list', $lst);
|
|
|
$smarty->assign('admin_id', $_SESSION['admin_id']);
|
|
|
$smarty->assign('certi', $_CFG['certi']);
|
|
|
|
|
|
$smarty->display('top.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 計算器
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'calculator')
|
|
|
{
|
|
|
$smarty->display('calculator.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 左邊的框架
|
|
|
/*------------------------------------------------------ */
|
|
|
elseif ($_REQUEST['act'] == 'menu')
|
|
|
{
|
|
|
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]);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$smarty->assign('menus', $menus);
|
|
|
$smarty->assign('no_help', $_LANG['no_help']);
|
|
|
$smarty->assign('help_lang', $_CFG['lang']);
|
|
|
$smarty->assign('charset', EC_CHARSET);
|
|
|
$smarty->assign('admin_id', $_SESSION['admin_id']);
|
|
|
$smarty->display('menu.htm');
|
|
|
}
|
|
|
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 清除緩存
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'clear_cache')
|
|
|
{
|
|
|
clear_all_files();
|
|
|
|
|
|
sys_msg($_LANG['caches_cleared']);
|
|
|
}
|
|
|
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 主窗口,起始頁
|
|
|
/*------------------------------------------------------ */
|
|
|
elseif ($_REQUEST['act'] == 'main')
|
|
|
{
|
|
|
//開店嚮導第一步
|
|
|
if(isset($_SESSION['shop_guide']) && $_SESSION['shop_guide'] === true)
|
|
|
{
|
|
|
unset($_SESSION['shop_guide']);//銷燬session
|
|
|
|
|
|
ecs_header("Location: ./index.php?act=first\n");
|
|
|
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
$gd = gd_version();
|
|
|
|
|
|
/* 檢查文件目錄屬性 */
|
|
|
$warning = array();
|
|
|
|
|
|
if ($_CFG['shop_closed'])
|
|
|
{
|
|
|
$warning[] = $_LANG['shop_closed_tips'];
|
|
|
}
|
|
|
|
|
|
if (file_exists('../install'))
|
|
|
{
|
|
|
$warning[] = $_LANG['remove_install'];
|
|
|
}
|
|
|
|
|
|
if (file_exists('../upgrade'))
|
|
|
{
|
|
|
$warning[] = $_LANG['remove_upgrade'];
|
|
|
}
|
|
|
|
|
|
if (file_exists('../demo'))
|
|
|
{
|
|
|
$warning[] = $_LANG['remove_demo'];
|
|
|
}
|
|
|
|
|
|
$open_basedir = ini_get('open_basedir');
|
|
|
if (!empty($open_basedir))
|
|
|
{
|
|
|
/* 如果 open_basedir 不為空,則檢查是否包含了 upload_tmp_dir */
|
|
|
$open_basedir = str_replace(array("\\", "\\\\"), array("/", "/"), $open_basedir);
|
|
|
$upload_tmp_dir = ini_get('upload_tmp_dir');
|
|
|
|
|
|
if (empty($upload_tmp_dir))
|
|
|
{
|
|
|
if (stristr(PHP_OS, 'win'))
|
|
|
{
|
|
|
$upload_tmp_dir = getenv('TEMP') ? getenv('TEMP') : getenv('TMP');
|
|
|
$upload_tmp_dir = str_replace(array("\\", "\\\\"), array("/", "/"), $upload_tmp_dir);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$upload_tmp_dir = getenv('TMPDIR') === false ? '/tmp' : getenv('TMPDIR');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (!stristr($open_basedir, $upload_tmp_dir))
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['temp_dir_cannt_read'], $upload_tmp_dir);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../cert');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], 'cert', $_LANG['cert_cannt_write']);
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../' . DATA_DIR);
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], 'data', $_LANG['data_cannt_write']);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$result = file_mode_info('../' . DATA_DIR . '/afficheimg');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], DATA_DIR . '/afficheimg', $_LANG['afficheimg_cannt_write']);
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../' . DATA_DIR . '/brandlogo');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], DATA_DIR . '/brandlogo', $_LANG['brandlogo_cannt_write']);
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../' . DATA_DIR . '/cardimg');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], DATA_DIR . '/cardimg', $_LANG['cardimg_cannt_write']);
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../' . DATA_DIR . '/feedbackimg');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], DATA_DIR . '/feedbackimg', $_LANG['feedbackimg_cannt_write']);
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../' . DATA_DIR . '/packimg');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], DATA_DIR . '/packimg', $_LANG['packimg_cannt_write']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../images');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], 'images', $_LANG['images_cannt_write']);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$result = file_mode_info('../' . IMAGE_DIR . '/upload');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], IMAGE_DIR . '/upload', $_LANG['imagesupload_cannt_write']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../temp');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], 'images', $_LANG['tpl_cannt_write']);
|
|
|
}
|
|
|
|
|
|
$result = file_mode_info('../temp/backup');
|
|
|
if ($result < 2)
|
|
|
{
|
|
|
$warning[] = sprintf($_LANG['not_writable'], 'images', $_LANG['tpl_backup_cannt_write']);
|
|
|
}
|
|
|
|
|
|
if (!is_writeable('../' . DATA_DIR . '/order_print.html'))
|
|
|
{
|
|
|
$warning[] = $_LANG['order_print_canntwrite'];
|
|
|
}
|
|
|
clearstatcache();
|
|
|
|
|
|
$smarty->assign('warning_arr', $warning);
|
|
|
|
|
|
/* 管理員留言信息 */
|
|
|
$sql = 'SELECT message_id, sender_id, receiver_id, sent_time, readed, deleted, title, message, user_name ' .
|
|
|
'FROM ' . $ecs->table('admin_message') . ' AS a, ' . $ecs->table('admin_user') . ' AS b ' .
|
|
|
"WHERE a.sender_id = b.user_id AND a.receiver_id = '$_SESSION[admin_id]' AND ".
|
|
|
"a.readed = 0 AND deleted = 0 ORDER BY a.sent_time DESC";
|
|
|
$admin_msg = $db->GetAll($sql);
|
|
|
|
|
|
$smarty->assign('admin_msg', $admin_msg);
|
|
|
|
|
|
/* 取得支持貨到付款和不支持貨到付款的支付方式 */
|
|
|
$ids = get_pay_ids();
|
|
|
|
|
|
/* 已完成的訂單 */
|
|
|
$order['finished'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('order_info').
|
|
|
" WHERE 1 " . order_query_sql('finished'));
|
|
|
$status['finished'] = CS_FINISHED;
|
|
|
|
|
|
/* 待發貨的訂單: */
|
|
|
$order['await_ship'] = $db->GetOne('SELECT COUNT(*)'.
|
|
|
' FROM ' .$ecs->table('order_info') .
|
|
|
" WHERE 1 " . order_query_sql('await_ship'));
|
|
|
$status['await_ship'] = CS_AWAIT_SHIP;
|
|
|
|
|
|
/* 待付款的訂單: */
|
|
|
$order['await_pay'] = $db->GetOne('SELECT COUNT(*)'.
|
|
|
' FROM ' .$ecs->table('order_info') .
|
|
|
" WHERE 1 " . order_query_sql('await_pay'));
|
|
|
$status['await_pay'] = CS_AWAIT_PAY;
|
|
|
|
|
|
/* “未確認”的訂單 */
|
|
|
$order['unconfirmed'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('order_info').
|
|
|
" WHERE 1 " . order_query_sql('unconfirmed'));
|
|
|
$status['unconfirmed'] = OS_UNCONFIRMED;
|
|
|
|
|
|
// $today_start = mktime(0,0,0,date('m'),date('d'),date('Y'));
|
|
|
$order['stats'] = $db->getRow('SELECT COUNT(*) AS oCount, IFNULL(SUM(order_amount), 0) AS oAmount' .
|
|
|
' FROM ' .$ecs->table('order_info'));
|
|
|
|
|
|
$smarty->assign('order', $order);
|
|
|
$smarty->assign('status', $status);
|
|
|
|
|
|
/* 產品信息 */
|
|
|
$goods['total'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_alone_sale = 1 AND is_real = 1');
|
|
|
$virtual_card['total'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_alone_sale = 1 AND is_real=0 AND extension_code=\'virtual_card\'');
|
|
|
|
|
|
$goods['new'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_new = 1 AND is_real = 1');
|
|
|
$virtual_card['new'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_new = 1 AND is_real=0 AND extension_code=\'virtual_card\'');
|
|
|
|
|
|
$goods['best'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_best = 1 AND is_real = 1');
|
|
|
$virtual_card['best'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_best = 1 AND is_real=0 AND extension_code=\'virtual_card\'');
|
|
|
|
|
|
$goods['hot'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_hot = 1 AND is_real = 1');
|
|
|
$virtual_card['hot'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_hot = 1 AND is_real=0 AND extension_code=\'virtual_card\'');
|
|
|
|
|
|
$time = gmtime();
|
|
|
$goods['promote'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND promote_price>0' .
|
|
|
" AND promote_start_date <= '$time' AND promote_end_date >= '$time' AND is_real = 1");
|
|
|
$virtual_card['promote'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND promote_price>0' .
|
|
|
" AND promote_start_date <= '$time' AND promote_end_date >= '$time' AND is_real=0 AND extension_code='virtual_card'");
|
|
|
|
|
|
/* 缺貨產品 */
|
|
|
if ($_CFG['use_storage'])
|
|
|
{
|
|
|
$sql = 'SELECT COUNT(*) FROM ' .$ecs->table('goods'). ' WHERE is_delete = 0 AND goods_number <= warn_number AND is_real = 1';
|
|
|
$goods['warn'] = $db->GetOne($sql);
|
|
|
$sql = 'SELECT COUNT(*) FROM ' .$ecs->table('goods'). ' WHERE is_delete = 0 AND goods_number <= warn_number AND is_real=0 AND extension_code=\'virtual_card\'';
|
|
|
$virtual_card['warn'] = $db->GetOne($sql);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$goods['warn'] = 0;
|
|
|
$virtual_card['warn'] = 0;
|
|
|
}
|
|
|
$smarty->assign('goods', $goods);
|
|
|
$smarty->assign('virtual_card', $virtual_card);
|
|
|
|
|
|
/* 訪問統計信息 */
|
|
|
$today = local_getdate();
|
|
|
$sql = 'SELECT COUNT(*) FROM ' .$ecs->table('stats').
|
|
|
' WHERE access_time > ' . (mktime(0, 0, 0, $today['mon'], $today['mday'], $today['year']) - date('Z'));
|
|
|
|
|
|
$today_visit = $db->GetOne($sql);
|
|
|
$smarty->assign('today_visit', $today_visit);
|
|
|
|
|
|
$online_users = $sess->get_users_count();
|
|
|
$smarty->assign('online_users', $online_users);
|
|
|
|
|
|
/* 最近反饋 */
|
|
|
$sql = "SELECT COUNT(f.msg_id) ".
|
|
|
"FROM " . $ecs->table('feedback') . " AS f ".
|
|
|
"LEFT JOIN " . $ecs->table('feedback') . " AS r ON r.parent_id=f.msg_id " .
|
|
|
'WHERE f.parent_id=0 AND ISNULL(r.msg_id) ' ;
|
|
|
$smarty->assign('feedback_number', $db->GetOne($sql));
|
|
|
|
|
|
/* 未審核評論 */
|
|
|
$smarty->assign('comment_number', $db->getOne('SELECT COUNT(*) FROM ' . $ecs->table('comment') .
|
|
|
' WHERE status = 0 AND parent_id = 0'));
|
|
|
|
|
|
$mysql_ver = $db->version(); // 獲得 MySQL 版本
|
|
|
|
|
|
/* 系統信息 */
|
|
|
$sys_info['os'] = PHP_OS;
|
|
|
$sys_info['ip'] = $_SERVER['SERVER_ADDR'];
|
|
|
$sys_info['web_server'] = $_SERVER['SERVER_SOFTWARE'];
|
|
|
$sys_info['php_ver'] = PHP_VERSION;
|
|
|
$sys_info['mysql_ver'] = $mysql_ver;
|
|
|
$sys_info['zlib'] = function_exists('gzclose') ? $_LANG['yes']:$_LANG['no'];
|
|
|
$sys_info['safe_mode'] = (boolean) ini_get('safe_mode') ? $_LANG['yes']:$_LANG['no'];
|
|
|
$sys_info['safe_mode_gid'] = (boolean) ini_get('safe_mode_gid') ? $_LANG['yes'] : $_LANG['no'];
|
|
|
$sys_info['timezone'] = function_exists("date_default_timezone_get") ? date_default_timezone_get() : $_LANG['no_timezone'];
|
|
|
$sys_info['socket'] = function_exists('fsockopen') ? $_LANG['yes'] : $_LANG['no'];
|
|
|
|
|
|
if ($gd == 0)
|
|
|
{
|
|
|
$sys_info['gd'] = 'N/A';
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if ($gd == 1)
|
|
|
{
|
|
|
$sys_info['gd'] = 'GD1';
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$sys_info['gd'] = 'GD2';
|
|
|
}
|
|
|
|
|
|
$sys_info['gd'] .= ' (';
|
|
|
|
|
|
/* 檢查系統支持的圖片類型 */
|
|
|
if ($gd && (imagetypes() & IMG_JPG) > 0)
|
|
|
{
|
|
|
$sys_info['gd'] .= ' JPEG';
|
|
|
}
|
|
|
|
|
|
if ($gd && (imagetypes() & IMG_GIF) > 0)
|
|
|
{
|
|
|
$sys_info['gd'] .= ' GIF';
|
|
|
}
|
|
|
|
|
|
if ($gd && (imagetypes() & IMG_PNG) > 0)
|
|
|
{
|
|
|
$sys_info['gd'] .= ' PNG';
|
|
|
}
|
|
|
|
|
|
$sys_info['gd'] .= ')';
|
|
|
}
|
|
|
|
|
|
/* IP庫版本 */
|
|
|
$sys_info['ip_version'] = ecs_geoip('255.255.255.0');
|
|
|
|
|
|
/* 允許上傳的最大文件大小 */
|
|
|
$sys_info['max_filesize'] = ini_get('upload_max_filesize');
|
|
|
|
|
|
$smarty->assign('sys_info', $sys_info);
|
|
|
|
|
|
/* 缺貨登記 */
|
|
|
$smarty->assign('booking_goods', $db->getOne('SELECT COUNT(*) FROM ' . $ecs->table('booking_goods') . ' WHERE is_dispose = 0'));
|
|
|
|
|
|
/* 退款申請 */
|
|
|
$smarty->assign('new_repay', $db->getOne('SELECT COUNT(*) FROM ' . $ecs->table('user_account') . ' WHERE process_type = ' . SURPLUS_RETURN . ' AND is_paid = 0 '));
|
|
|
|
|
|
|
|
|
|
|
|
assign_query_info();
|
|
|
$smarty->assign('ecs_version', VERSION);
|
|
|
$smarty->assign('ecs_release', RELEASE);
|
|
|
$smarty->assign('ecs_lang', $_CFG['lang']);
|
|
|
$smarty->assign('ecs_charset', strtoupper(EC_CHARSET));
|
|
|
$smarty->assign('install_date', local_date($_CFG['date_format'], $_CFG['install_date']));
|
|
|
$smarty->display('start.htm');
|
|
|
}
|
|
|
elseif ($_REQUEST['act'] == 'main_api')
|
|
|
{
|
|
|
require_once(ROOT_PATH . '/includes/lib_base.php');
|
|
|
$data = read_static_cache('api_str');
|
|
|
|
|
|
if($data === false || API_TIME < date('Y-m-d H:i:s',time()-43200))
|
|
|
{
|
|
|
include_once(ROOT_PATH . 'includes/cls_transport.php');
|
|
|
$ecs_version = VERSION;
|
|
|
$ecs_lang = $_CFG['lang'];
|
|
|
$ecs_release = RELEASE;
|
|
|
$php_ver = PHP_VERSION;
|
|
|
$mysql_ver = $db->version();
|
|
|
$order['stats'] = $db->getRow('SELECT COUNT(*) AS oCount, IFNULL(SUM(order_amount), 0) AS oAmount' .
|
|
|
' FROM ' .$ecs->table('order_info'));
|
|
|
$ocount = $order['stats']['oCount'];
|
|
|
$oamount = $order['stats']['oAmount'];
|
|
|
$goods['total'] = $db->GetOne('SELECT COUNT(*) FROM ' .$ecs->table('goods').
|
|
|
' WHERE is_delete = 0 AND is_alone_sale = 1 AND is_real = 1');
|
|
|
$gcount = $goods['total'];
|
|
|
$ecs_charset = strtoupper(EC_CHARSET);
|
|
|
$ecs_user = $db->getOne('SELECT COUNT(*) FROM ' . $ecs->table('users'));
|
|
|
$ecs_template = $db->getOne('SELECT value FROM ' . $ecs->table('shop_config') . ' WHERE code = \'template\'');
|
|
|
$style = $db->getOne('SELECT value FROM ' . $ecs->table('shop_config') . ' WHERE code = \'stylename\'');
|
|
|
if($style == '')
|
|
|
{
|
|
|
$style = '0';
|
|
|
}
|
|
|
$ecs_style = $style;
|
|
|
$shop_url = urlencode($ecs->url());
|
|
|
|
|
|
$patch_file = file_get_contents(ROOT_PATH.ADMIN_PATH."/patch_num");
|
|
|
|
|
|
$apiget = "ver= $ecs_version &lang= $ecs_lang &release= $ecs_release &php_ver= $php_ver &mysql_ver= $mysql_ver &ocount= $ocount &oamount= $oamount &gcount= $gcount &charset= $ecs_charset &usecount= $ecs_user &template= $ecs_template &style= $ecs_style &url= $shop_url &patch= $patch_file ";
|
|
|
|
|
|
$t = new transport;
|
|
|
$api_comment = $t->request('http://api.shop.com/checkver.php', $apiget);
|
|
|
$api_str = $api_comment["body"];
|
|
|
echo $api_str;
|
|
|
|
|
|
$f=ROOT_PATH . 'data/config.php';
|
|
|
file_put_contents($f,str_replace("'API_TIME', '".API_TIME."'","'API_TIME', '".date('Y-m-d H:i:s',time())."'",file_get_contents($f)));
|
|
|
|
|
|
write_static_cache('api_str', $api_str);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
echo $data;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 開店嚮導第一步
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'first')
|
|
|
{
|
|
|
$smarty->assign('countries', get_regions());
|
|
|
$smarty->assign('provinces', get_regions(1, 1));
|
|
|
$smarty->assign('cities', get_regions(2, 2));
|
|
|
|
|
|
$sql = 'SELECT value from ' . $ecs->table('shop_config') . " WHERE code='shop_name'";
|
|
|
$shop_name = $db->getOne($sql);
|
|
|
|
|
|
$smarty->assign('shop_name', $shop_name);
|
|
|
|
|
|
$sql = 'SELECT value from ' . $ecs->table('shop_config') . " WHERE code='shop_title'";
|
|
|
$shop_title = $db->getOne($sql);
|
|
|
|
|
|
$smarty->assign('shop_title', $shop_title);
|
|
|
|
|
|
//獲取配送方式
|
|
|
// $modules = read_modules('../includes/modules/shipping');
|
|
|
$directory = ROOT_PATH . 'includes/modules/shipping';
|
|
|
$dir = @opendir($directory);
|
|
|
$set_modules = true;
|
|
|
$modules = array();
|
|
|
|
|
|
while (false !== ($file = @readdir($dir)))
|
|
|
{
|
|
|
if (preg_match("/^.*?\.php$/", $file))
|
|
|
{
|
|
|
if ($file != 'express.php')
|
|
|
{
|
|
|
include_once($directory. '/' .$file);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@closedir($dir);
|
|
|
unset($set_modules);
|
|
|
|
|
|
foreach ($modules AS $key => $value)
|
|
|
{
|
|
|
ksort($modules[$key]);
|
|
|
}
|
|
|
ksort($modules);
|
|
|
|
|
|
for ($i = 0; $i < count($modules); $i++)
|
|
|
{
|
|
|
$lang_file = ROOT_PATH.'languages/' .$_CFG['lang']. '/shipping/' .$modules[$i]['code']. '.php';
|
|
|
|
|
|
if (file_exists($lang_file))
|
|
|
{
|
|
|
include_once($lang_file);
|
|
|
}
|
|
|
|
|
|
$modules[$i]['name'] = $_LANG[$modules[$i]['code']];
|
|
|
$modules[$i]['desc'] = $_LANG[$modules[$i]['desc']];
|
|
|
$modules[$i]['insure_fee'] = empty($modules[$i]['insure'])? 0 : $modules[$i]['insure'];
|
|
|
$modules[$i]['cod'] = $modules[$i]['cod'];
|
|
|
$modules[$i]['install'] = 0;
|
|
|
}
|
|
|
$smarty->assign('modules', $modules);
|
|
|
|
|
|
unset($modules);
|
|
|
|
|
|
//獲取支付方式
|
|
|
$modules = read_modules('../includes/modules/payment');
|
|
|
|
|
|
for ($i = 0; $i < count($modules); $i++)
|
|
|
{
|
|
|
$code = $modules[$i]['code'];
|
|
|
$modules[$i]['name'] = $_LANG[$modules[$i]['code']];
|
|
|
if (!isset($modules[$i]['pay_fee']))
|
|
|
{
|
|
|
$modules[$i]['pay_fee'] = 0;
|
|
|
}
|
|
|
$modules[$i]['desc'] = $_LANG[$modules[$i]['desc']];
|
|
|
}
|
|
|
// $modules[$i]['install'] = '0';
|
|
|
$smarty->assign('modules_payment', $modules);
|
|
|
|
|
|
assign_query_info();
|
|
|
|
|
|
$smarty->assign('ur_here', $_LANG['ur_config']);
|
|
|
$smarty->display('setting_first.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 開店嚮導第二步
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'second')
|
|
|
{
|
|
|
admin_priv('shop_config');
|
|
|
|
|
|
$shop_name = empty($_POST['shop_name']) ? '' : $_POST['shop_name'] ;
|
|
|
$shop_title = empty($_POST['shop_title']) ? '' : $_POST['shop_title'] ;
|
|
|
$shop_country = empty($_POST['shop_country']) ? '' : intval($_POST['shop_country']);
|
|
|
$shop_province = empty($_POST['shop_province']) ? '' : intval($_POST['shop_province']);
|
|
|
$shop_city = empty($_POST['shop_city']) ? '' : intval($_POST['shop_city']);
|
|
|
$shop_address = empty($_POST['shop_address']) ? '' : $_POST['shop_address'] ;
|
|
|
$shipping = empty($_POST['shipping']) ? '' : $_POST['shipping'];
|
|
|
$payment = empty($_POST['payment']) ? '' : $_POST['payment'];
|
|
|
|
|
|
if(!empty($shop_name))
|
|
|
{
|
|
|
$sql = 'UPDATE ' . $ecs->table('shop_config') . " SET value = '$shop_name' WHERE code = 'shop_name'";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
if(!empty($shop_title))
|
|
|
{
|
|
|
$sql = 'UPDATE ' . $ecs->table('shop_config') . " SET value = '$shop_title' WHERE code = 'shop_title'";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
if(!empty($shop_address))
|
|
|
{
|
|
|
$sql = 'UPDATE ' . $ecs->table('shop_config') . " SET value = '$shop_address' WHERE code = 'shop_address'";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
if(!empty($shop_country))
|
|
|
{
|
|
|
$sql = 'UPDATE ' . $ecs->table('shop_config') . "SET value = '$shop_country' WHERE code='shop_country'";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
if(!empty($shop_province))
|
|
|
{
|
|
|
$sql = 'UPDATE ' . $ecs->table('shop_config') . "SET value = '$shop_province' WHERE code='shop_province'";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
if(!empty($shop_city))
|
|
|
{
|
|
|
$sql = 'UPDATE ' . $ecs->table('shop_config') . "SET value = '$shop_city' WHERE code='shop_city'";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
//設置配送方式
|
|
|
if(!empty($shipping))
|
|
|
{
|
|
|
$set_modules = true;
|
|
|
include_once(ROOT_PATH . 'includes/modules/shipping/' . $shipping . '.php');
|
|
|
$sql = "SELECT shipping_id FROM " .$ecs->table('shipping'). " WHERE shipping_code = '$shipping'";
|
|
|
$shipping_id = $db->GetOne($sql);
|
|
|
|
|
|
if($shipping_id <= 0)
|
|
|
{
|
|
|
$insure = empty($modules[0]['insure']) ? 0 : $modules[0]['insure'];
|
|
|
$sql = "INSERT INTO " . $ecs->table('shipping') . " (" .
|
|
|
"shipping_code, shipping_name, shipping_desc, insure, support_cod, enabled" .
|
|
|
") VALUES (" .
|
|
|
"'" . addslashes($modules[0]['code']). "', '" . addslashes($_LANG[$modules[0]['code']]) . "', '" .
|
|
|
addslashes($_LANG[$modules[0]['desc']]) . "', '$insure', '" . intval($modules[0]['cod']) . "', 1)";
|
|
|
$db->query($sql);
|
|
|
$shipping_id = $db->insert_Id();
|
|
|
}
|
|
|
|
|
|
//設置配送區域
|
|
|
$area_name = empty($_POST['area_name']) ? '' : $_POST['area_name'];
|
|
|
if(!empty($area_name))
|
|
|
{
|
|
|
$sql = "SELECT shipping_area_id FROM " .$ecs->table("shipping_area").
|
|
|
" WHERE shipping_id='$shipping_id' AND shipping_area_name='$area_name'";
|
|
|
$area_id = $db->getOne($sql);
|
|
|
|
|
|
if($area_id <= 0)
|
|
|
{
|
|
|
$config = array();
|
|
|
foreach ($modules[0]['configure'] AS $key => $val)
|
|
|
{
|
|
|
$config[$key]['name'] = $val['name'];
|
|
|
$config[$key]['value'] = $val['value'];
|
|
|
}
|
|
|
|
|
|
$count = count($config);
|
|
|
$config[$count]['name'] = 'free_money';
|
|
|
$config[$count]['value'] = 0;
|
|
|
|
|
|
/* 如果支持貨到付款,則允許設置貨到付款支付費用 */
|
|
|
if ($modules[0]['cod'])
|
|
|
{
|
|
|
$count++;
|
|
|
$config[$count]['name'] = 'pay_fee';
|
|
|
$config[$count]['value'] = make_semiangle(0);
|
|
|
}
|
|
|
|
|
|
$sql = "INSERT INTO " .$ecs->table('shipping_area').
|
|
|
" (shipping_area_name, shipping_id, configure) ".
|
|
|
"VALUES" . " ('$area_name', '$shipping_id', '" .serialize($config). "')";
|
|
|
$db->query($sql);
|
|
|
$area_id = $db->insert_Id();
|
|
|
}
|
|
|
|
|
|
$region_id = empty($_POST['shipping_country']) ? 1 : intval($_POST['shipping_country']);
|
|
|
$region_id = empty($_POST['shipping_province']) ? $region_id : intval($_POST['shipping_province']);
|
|
|
$region_id = empty($_POST['shipping_city']) ? $region_id : intval($_POST['shipping_city']);
|
|
|
$region_id = empty($_POST['shipping_district']) ? $region_id : intval($_POST['shipping_district']);
|
|
|
|
|
|
/* 添加選定的城市和地區 */
|
|
|
$sql = "REPLACE INTO ".$ecs->table('area_region')." (shipping_area_id, region_id) VALUES ('$area_id', '$region_id')";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
unset($modules);
|
|
|
|
|
|
if(!empty($payment))
|
|
|
{
|
|
|
/* 取相應插件信息 */
|
|
|
$set_modules = true;
|
|
|
include_once(ROOT_PATH.'includes/modules/payment/' . $payment . '.php');
|
|
|
|
|
|
$pay_config = array();
|
|
|
if (isset($_REQUEST['cfg_value']) && is_array($_REQUEST['cfg_value']))
|
|
|
{
|
|
|
for ($i = 0; $i < count($_POST['cfg_value']); $i++)
|
|
|
{
|
|
|
$pay_config[] = array('name' => trim($_POST['cfg_name'][$i]),
|
|
|
'type' => trim($_POST['cfg_type'][$i]),
|
|
|
'value' => trim($_POST['cfg_value'][$i])
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$pay_config = serialize($pay_config);
|
|
|
/* 安裝,檢查該支付方式是否曾經安裝過 */
|
|
|
$sql = "SELECT COUNT(*) FROM " . $ecs->table('payment') . " WHERE pay_code = '$payment'";
|
|
|
if ($db->GetOne($sql) > 0)
|
|
|
{
|
|
|
$sql = "UPDATE " . $ecs->table('payment') .
|
|
|
" SET pay_config = '$pay_config'," .
|
|
|
" enabled = '1' " .
|
|
|
"WHERE pay_code = '$payment' LIMIT 1";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// $modules = read_modules('../includes/modules/payment');
|
|
|
|
|
|
$payment_info = array();
|
|
|
$payment_info['name'] = $_LANG[$modules[0]['code']];
|
|
|
$payment_info['pay_fee'] = empty($modules[0]['pay_fee']) ? 0 : $modules[0]['pay_fee'];
|
|
|
$payment_info['desc'] = $_LANG[$modules[0]['desc']];
|
|
|
|
|
|
$sql = "INSERT INTO " . $ecs->table('payment') . " (pay_code, pay_name, pay_desc, pay_config, is_cod, pay_fee, enabled, is_online)" .
|
|
|
"VALUES ('$payment', '$payment_info[name]', '$payment_info[desc]', '$pay_config', '0', '$payment_info[pay_fee]', '1', '1')";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
clear_all_files();
|
|
|
|
|
|
assign_query_info();
|
|
|
|
|
|
$smarty->assign('ur_here', $_LANG['ur_add']);
|
|
|
$smarty->display('setting_second.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 開店嚮導第三步
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'third')
|
|
|
{
|
|
|
admin_priv('goods_manage');
|
|
|
|
|
|
$good_name = empty($_POST['good_name']) ? '' : $_POST['good_name'];
|
|
|
$good_number = empty($_POST['good_number']) ? '' : $_POST['good_number'];
|
|
|
$good_category = empty($_POST['good_category']) ? '' : $_POST['good_category'];
|
|
|
$good_brand = empty($_POST['good_brand']) ? '' : $_POST['good_brand'];
|
|
|
$good_price = empty($_POST['good_price']) ? 0 : $_POST['good_price'];
|
|
|
$good_name = empty($_POST['good_name']) ? '' : $_POST['good_name'];
|
|
|
$is_best = empty($_POST['is_best']) ? 0 : 1;
|
|
|
$is_new = empty($_POST['is_new']) ? 0 : 1;
|
|
|
$is_hot = empty($_POST['is_hot']) ? 0 :1;
|
|
|
$good_brief = empty($_POST['good_brief']) ? '' : $_POST['good_brief'];
|
|
|
$market_price = $good_price * 1.2;
|
|
|
|
|
|
if(!empty($good_category))
|
|
|
{
|
|
|
if (cat_exists($good_category, 0))
|
|
|
{
|
|
|
/* 同級別下不能有重複的分類名稱 */
|
|
|
$link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');
|
|
|
sys_msg($_LANG['catname_exist'], 0, $link);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(!empty($good_brand))
|
|
|
{
|
|
|
if (brand_exists($good_brand))
|
|
|
{
|
|
|
/* 同級別下不能有重複的品牌名稱 */
|
|
|
$link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');
|
|
|
sys_msg($_LANG['brand_name_exist'], 0, $link);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$brand_id = 0;
|
|
|
if(!empty($good_brand))
|
|
|
{
|
|
|
$sql = 'INSERT INTO ' . $ecs->table('brand') . " (brand_name, is_show)" .
|
|
|
" values('" . $good_brand . "', '1')";
|
|
|
$db->query($sql);
|
|
|
|
|
|
$brand_id = $db->insert_Id();
|
|
|
}
|
|
|
|
|
|
if(!empty($good_category))
|
|
|
{
|
|
|
$sql = 'INSERT INTO ' . $ecs->table('category') . " (cat_name, parent_id, is_show)" .
|
|
|
" values('" . $good_category . "', '0', '1')";
|
|
|
$db->query($sql);
|
|
|
|
|
|
$cat_id = $db->insert_Id();
|
|
|
|
|
|
//貨號
|
|
|
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_goods.php');
|
|
|
$max_id = $db->getOne("SELECT MAX(goods_id) + 1 FROM ".$ecs->table('goods'));
|
|
|
$goods_sn = generate_goods_sn($max_id);
|
|
|
|
|
|
include_once(ROOT_PATH . 'includes/cls_image.php');
|
|
|
$image = new cls_image($_CFG['bgcolor']);
|
|
|
|
|
|
if(!empty($good_name))
|
|
|
{
|
|
|
/* 檢查圖片:如果有錯誤,檢查尺寸是否超過最大值;否則,檢查文件類型 */
|
|
|
if (isset($_FILES['goods_img']['error'])) // php 4.2 版本才支持 error
|
|
|
{
|
|
|
// 最大上傳文件大小
|
|
|
$php_maxsize = ini_get('upload_max_filesize');
|
|
|
$htm_maxsize = '2M';
|
|
|
|
|
|
// 產品圖片
|
|
|
if ($_FILES['goods_img']['error'] == 0)
|
|
|
{
|
|
|
if (!$image->check_img_type($_FILES['goods_img']['type']))
|
|
|
{
|
|
|
sys_msg($_LANG['invalid_goods_img'], 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
elseif ($_FILES['goods_img']['error'] == 1)
|
|
|
{
|
|
|
sys_msg(sprintf($_LANG['goods_img_too_big'], $php_maxsize), 1, array(), false);
|
|
|
}
|
|
|
elseif ($_FILES['goods_img']['error'] == 2)
|
|
|
{
|
|
|
sys_msg(sprintf($_LANG['goods_img_too_big'], $htm_maxsize), 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
/* 4。1版本 */
|
|
|
else
|
|
|
{
|
|
|
// 產品圖片
|
|
|
if ($_FILES['goods_img']['tmp_name'] != 'none')
|
|
|
{
|
|
|
if (!$image->check_img_type($_FILES['goods_img']['type']))
|
|
|
{
|
|
|
sys_msg($_LANG['invalid_goods_img'], 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
$goods_img = ''; // 初始化產品圖片
|
|
|
$goods_thumb = ''; // 初始化產品縮略圖
|
|
|
$original_img = ''; // 初始化原始圖片
|
|
|
$old_original_img = ''; // 初始化原始圖片舊圖
|
|
|
// 如果上傳了產品圖片,相應處理
|
|
|
if ($_FILES['goods_img']['tmp_name'] != '' && $_FILES['goods_img']['tmp_name'] != 'none')
|
|
|
{
|
|
|
|
|
|
$original_img = $image->upload_image($_FILES['goods_img']); // 原始圖片
|
|
|
if ($original_img === false)
|
|
|
{
|
|
|
sys_msg($image->error_msg(), 1, array(), false);
|
|
|
}
|
|
|
$goods_img = $original_img; // 產品圖片
|
|
|
|
|
|
/* 複製一份相冊圖片 */
|
|
|
$img = $original_img; // 相冊圖片
|
|
|
$pos = strpos(basename($img), '.');
|
|
|
$newname = dirname($img) . '/' . $image->random_filename() . substr(basename($img), $pos);
|
|
|
if (!copy('../' . $img, '../' . $newname))
|
|
|
{
|
|
|
sys_msg('fail to copy file: ' . realpath('../' . $img), 1, array(), false);
|
|
|
}
|
|
|
$img = $newname;
|
|
|
|
|
|
$gallery_img = $img;
|
|
|
$gallery_thumb = $img;
|
|
|
|
|
|
// 如果系統支持GD,縮放產品圖片,且給產品圖片和相冊圖片加水印
|
|
|
if ($image->gd_version() > 0 && $image->check_img_function($_FILES['goods_img']['type']))
|
|
|
{
|
|
|
// 如果設置大小不為0,縮放圖片
|
|
|
if ($_CFG['image_width'] != 0 || $_CFG['image_height'] != 0)
|
|
|
{
|
|
|
$goods_img = $image->make_thumb('../'. $goods_img , $GLOBALS['_CFG']['image_width'], $GLOBALS['_CFG']['image_height']);
|
|
|
if ($goods_img === false)
|
|
|
{
|
|
|
sys_msg($image->error_msg(), 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$newname = dirname($img) . '/' . $image->random_filename() . substr(basename($img), $pos);
|
|
|
if (!copy('../' . $img, '../' . $newname))
|
|
|
{
|
|
|
sys_msg('fail to copy file: ' . realpath('../' . $img), 1, array(), false);
|
|
|
}
|
|
|
$gallery_img = $newname;
|
|
|
|
|
|
// 加水印
|
|
|
if (intval($_CFG['watermark_place']) > 0 && !empty($GLOBALS['_CFG']['watermark']))
|
|
|
{
|
|
|
if ($image->add_watermark('../'.$goods_img,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']) === false)
|
|
|
{
|
|
|
sys_msg($image->error_msg(), 1, array(), false);
|
|
|
}
|
|
|
|
|
|
if ($image->add_watermark('../'. $gallery_img,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']) === false)
|
|
|
{
|
|
|
sys_msg($image->error_msg(), 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 相冊縮略圖
|
|
|
if ($_CFG['thumb_width'] != 0 || $_CFG['thumb_height'] != 0)
|
|
|
{
|
|
|
$gallery_thumb = $image->make_thumb('../' . $img, $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
|
|
|
if ($gallery_thumb === false)
|
|
|
{
|
|
|
sys_msg($image->error_msg(), 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
/* 複製一份原圖 */
|
|
|
$pos = strpos(basename($img), '.');
|
|
|
$gallery_img = dirname($img) . '/' . $image->random_filename() . substr(basename($img), $pos);
|
|
|
if (!copy('../' . $img, '../' . $gallery_img))
|
|
|
{
|
|
|
sys_msg('fail to copy file: ' . realpath('../' . $img), 1, array(), false);
|
|
|
}
|
|
|
$gallery_thumb = '';
|
|
|
}
|
|
|
}
|
|
|
// 未上傳,如果自動選擇生成,且上傳了產品圖片,生成所略圖
|
|
|
if (!empty($original_img))
|
|
|
{
|
|
|
// 如果設置縮略圖大小不為0,生成縮略圖
|
|
|
if ($_CFG['thumb_width'] != 0 || $_CFG['thumb_height'] != 0)
|
|
|
{
|
|
|
$goods_thumb = $image->make_thumb('../' . $original_img, $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
|
|
|
if ($goods_thumb === false)
|
|
|
{
|
|
|
sys_msg($image->error_msg(), 1, array(), false);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$goods_thumb = $original_img;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
$sql = 'INSERT INTO ' . $ecs->table('goods') . "(goods_name, goods_sn, goods_number, cat_id, brand_id, goods_brief, shop_price, market_price, goods_img, goods_thumb, original_img,add_time, last_update,
|
|
|
is_best, is_new, is_hot)" .
|
|
|
"VALUES('$good_name', '$goods_sn', '$good_number', '$cat_id', '$brand_id', '$good_brief', '$good_price'," .
|
|
|
" '$market_price', '$goods_img', '$goods_thumb', '$original_img','" . gmtime() . "', '". gmtime() . "', '$is_best', '$is_new', '$is_hot')";
|
|
|
|
|
|
$db->query($sql);
|
|
|
$good_id = $db->insert_id();
|
|
|
/* 如果有圖片,把產品圖片加入圖片相冊 */
|
|
|
if (isset($img))
|
|
|
{
|
|
|
$sql = "INSERT INTO " . $ecs->table('goods_gallery') . " (goods_id, img_url, img_desc, thumb_url, img_original) " .
|
|
|
"VALUES ('$good_id', '$gallery_img', '', '$gallery_thumb', '$img')";
|
|
|
$db->query($sql);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
assign_query_info();
|
|
|
// $smarty->assign('ur_here', '開店嚮導-添加產品');
|
|
|
$smarty->display('setting_third.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 關於 shop
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'about_us')
|
|
|
{
|
|
|
assign_query_info();
|
|
|
$smarty->display('about_us.htm');
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 拖動的幀
|
|
|
/*------------------------------------------------------ */
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'drag')
|
|
|
{
|
|
|
$smarty->display('drag.htm');;
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- 檢查訂單
|
|
|
/*------------------------------------------------------ */
|
|
|
elseif ($_REQUEST['act'] == 'check_order')
|
|
|
{
|
|
|
if (empty($_SESSION['last_check']))
|
|
|
{
|
|
|
$_SESSION['last_check'] = gmtime();
|
|
|
|
|
|
make_json_result('', '', array('new_orders' => 0, 'new_paid' => 0));
|
|
|
}
|
|
|
|
|
|
/* 新訂單 */
|
|
|
$sql = 'SELECT COUNT(*) FROM ' . $ecs->table('order_info').
|
|
|
" WHERE add_time >= '$_SESSION[last_check]'";
|
|
|
$arr['new_orders'] = $db->getOne($sql);
|
|
|
|
|
|
/* 新付款的訂單 */
|
|
|
$sql = 'SELECT COUNT(*) FROM '.$ecs->table('order_info').
|
|
|
' WHERE pay_time >= ' . $_SESSION['last_check'];
|
|
|
$arr['new_paid'] = $db->getOne($sql);
|
|
|
|
|
|
$_SESSION['last_check'] = gmtime();
|
|
|
|
|
|
if (!(is_numeric($arr['new_orders']) && is_numeric($arr['new_paid'])))
|
|
|
{
|
|
|
make_json_error($db->error());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
make_json_result('', '', $arr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- Totolist操作
|
|
|
/*------------------------------------------------------ */
|
|
|
elseif ($_REQUEST['act'] == 'save_todolist')
|
|
|
{
|
|
|
$content = json_str_iconv($_POST["content"]);
|
|
|
$sql = "UPDATE" .$GLOBALS['ecs']->table('admin_user'). " SET todolist='" . $content . "' WHERE user_id = " . $_SESSION['admin_id'];
|
|
|
$GLOBALS['db']->query($sql);
|
|
|
}
|
|
|
|
|
|
elseif ($_REQUEST['act'] == 'get_todolist')
|
|
|
{
|
|
|
$sql = "SELECT todolist FROM " .$GLOBALS['ecs']->table('admin_user'). " WHERE user_id = " . $_SESSION['admin_id'];
|
|
|
$content = $GLOBALS['db']->getOne($sql);
|
|
|
echo $content;
|
|
|
}
|
|
|
// 郵件羣發處理
|
|
|
elseif ($_REQUEST['act'] == 'send_mail')
|
|
|
{
|
|
|
if ($_CFG['send_mail_on'] == 'off')
|
|
|
{
|
|
|
make_json_result('', $_LANG['send_mail_off'], 0);
|
|
|
exit();
|
|
|
}
|
|
|
$sql = "SELECT * FROM " . $ecs->table('email_sendlist') . " ORDER BY pri DESC, last_send ASC LIMIT 1";
|
|
|
$row = $db->getRow($sql);
|
|
|
|
|
|
//發送列表為空
|
|
|
if (empty($row['id']))
|
|
|
{
|
|
|
make_json_result('', $_LANG['mailsend_null'], 0);
|
|
|
}
|
|
|
|
|
|
//發送列表不為空,郵件地址為空
|
|
|
if (!empty($row['id']) && empty($row['email']))
|
|
|
{
|
|
|
$sql = "DELETE FROM " . $ecs->table('email_sendlist') . " WHERE id = '$row[id]'";
|
|
|
$db->query($sql);
|
|
|
$count = $db->getOne("SELECT COUNT(*) FROM " . $ecs->table('email_sendlist'));
|
|
|
make_json_result('', $_LANG['mailsend_skip'], array('count' => $count, 'goon' => 1));
|
|
|
}
|
|
|
|
|
|
//查詢相關模板
|
|
|
$sql = "SELECT * FROM " . $ecs->table('mail_templates') . " WHERE template_id = '$row[template_id]'";
|
|
|
$rt = $db->getRow($sql);
|
|
|
|
|
|
//如果是模板,則將已存入email_sendlist的內容作為郵件內容
|
|
|
//否則即是雜質,將mail_templates調出的內容作為郵件內容
|
|
|
if ($rt['type'] == 'template')
|
|
|
{
|
|
|
$rt['template_content'] = $row['email_content'];
|
|
|
}
|
|
|
|
|
|
if ($rt['template_id'] && $rt['template_content'])
|
|
|
{
|
|
|
if (send_mail('', $row['email'], $rt['template_subject'], $rt['template_content'], $rt['is_html']))
|
|
|
{
|
|
|
//發送成功
|
|
|
|
|
|
//從列表中刪除
|
|
|
$sql = "DELETE FROM " . $ecs->table('email_sendlist') . " WHERE id = '$row[id]'";
|
|
|
$db->query($sql);
|
|
|
|
|
|
//剩餘列表數
|
|
|
$count = $db->getOne("SELECT COUNT(*) FROM " . $ecs->table('email_sendlist'));
|
|
|
|
|
|
if($count > 0)
|
|
|
{
|
|
|
$msg = sprintf($_LANG['mailsend_ok'],$row['email'],$count);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$msg = sprintf($_LANG['mailsend_finished'],$row['email']);
|
|
|
}
|
|
|
make_json_result('', $msg, array('count' => $count));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//發送出錯
|
|
|
|
|
|
if ($row['error'] < 3)
|
|
|
{
|
|
|
$time = time();
|
|
|
$sql = "UPDATE " . $ecs->table('email_sendlist') . " SET error = error + 1, pri = 0, last_send = '$time' WHERE id = '$row[id]'";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//將出錯超次的紀錄刪除
|
|
|
$sql = "DELETE FROM " . $ecs->table('email_sendlist') . " WHERE id = '$row[id]'";
|
|
|
}
|
|
|
$db->query($sql);
|
|
|
|
|
|
$count = $db->getOne("SELECT COUNT(*) FROM " . $ecs->table('email_sendlist'));
|
|
|
make_json_result('', sprintf($_LANG['mailsend_fail'],$row['email']), array('count' => $count));
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//無效的郵件隊列
|
|
|
$sql = "DELETE FROM " . $ecs->table('email_sendlist') . " WHERE id = '$row[id]'";
|
|
|
$db->query($sql);
|
|
|
$count = $db->getOne("SELECT COUNT(*) FROM " . $ecs->table('email_sendlist'));
|
|
|
make_json_result('', sprintf($_LANG['mailsend_fail'],$row['email']), array('count' => $count));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*------------------------------------------------------ */
|
|
|
//-- license操作
|
|
|
/*------------------------------------------------------ */
|
|
|
elseif ($_REQUEST['act'] == 'license')
|
|
|
{
|
|
|
$is_ajax = $_GET['is_ajax'];
|
|
|
|
|
|
if (isset($is_ajax) && $is_ajax)
|
|
|
{
|
|
|
// license 檢查
|
|
|
include_once(ROOT_PATH . 'includes/cls_transport.php');
|
|
|
include_once(ROOT_PATH . 'includes/cls_json.php');
|
|
|
include_once(ROOT_PATH . 'includes/lib_main.php');
|
|
|
include_once(ROOT_PATH . 'includes/lib_license.php');
|
|
|
|
|
|
$license = license_check();
|
|
|
switch ($license['flag'])
|
|
|
{
|
|
|
case 'login_succ':
|
|
|
if (isset($license['request']['info']['service']['shop_b2c']['cert_auth']['auth_str']) && $license['request']['info']['service']['shop_b2c']['cert_auth']['auth_str'] != '')
|
|
|
{
|
|
|
make_json_result(process_login_license($license['request']['info']['service']['shop_b2c']['cert_auth']));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
make_json_error(0);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case 'login_fail':
|
|
|
case 'login_ping_fail':
|
|
|
make_json_error(0);
|
|
|
break;
|
|
|
|
|
|
case 'reg_succ':
|
|
|
$_license = license_check();
|
|
|
switch ($_license['flag'])
|
|
|
{
|
|
|
case 'login_succ':
|
|
|
if (isset($_license['request']['info']['service']['shop_b2c']['cert_auth']['auth_str']) && $_license['request']['info']['service']['shop_b2c']['cert_auth']['auth_str'] != '')
|
|
|
{
|
|
|
make_json_result(process_login_license($license['request']['info']['service']['shop_b2c']['cert_auth']));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
make_json_error(0);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case 'login_fail':
|
|
|
case 'login_ping_fail':
|
|
|
make_json_error(0);
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case 'reg_fail':
|
|
|
case 'reg_ping_fail':
|
|
|
make_json_error(0);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
make_json_error(0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* license check
|
|
|
* @return bool
|
|
|
*/
|
|
|
function license_check()
|
|
|
{
|
|
|
// return 返回數組
|
|
|
$return_array = array();
|
|
|
|
|
|
// 取出網店 license
|
|
|
$license = get_shop_license();
|
|
|
|
|
|
// 檢測網店 license
|
|
|
if (!empty($license['certificate_id']) && !empty($license['token']) && !empty($license['certi']))
|
|
|
{
|
|
|
// license(登錄)
|
|
|
$return_array = license_login();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// license(註冊)
|
|
|
$return_array = license_reg();
|
|
|
}
|
|
|
|
|
|
return $return_array;
|
|
|
}
|
|
|
?>
|