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.
 
 
 
 

348 lines
11 KiB

<?php
/**
* ECSHOP 地区列表管理文件
* ============================================================================
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecmoban.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: liubo $
* $Id: area_manage.php 17217 2011-01-19 06:29:08Z liubo $
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
$exc = new exchange($ecs->table('region'), $db, 'region_id', 'region_name');
/* act操作项的初始化 */
if (empty($_REQUEST['act']))
{
$_REQUEST['act'] = 'list';
}
else
{
$_REQUEST['act'] = trim($_REQUEST['act']);
}
/*------------------------------------------------------ */
//-- 列出某地区下的所有地区列表
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'list')
{
admin_priv('area_list');
/* 取得参数:上级地区id */
$region_id = empty($_REQUEST['pid']) ? 0 : intval($_REQUEST['pid']);
$smarty->assign('parent_id', $region_id);
/* 取得列表显示的地区的类型 */
if ($region_id == 0)
{
$region_type = 0;
}
else
{
$region_type = $exc->get_name($region_id, 'region_type') + 1;
}
$smarty->assign('region_type', $region_type);
/* 获取地区列表 */
$region_arr = area_list($region_id);
$smarty->assign('region_arr', $region_arr);
/* 当前的地区名称 */
if ($region_id > 0)
{
$area_name = $exc->get_name($region_id);
$area = '[ '. $area_name . ' ] ';
if ($region_arr)
{
$area .= $region_arr[0]['type'];
}
}
else
{
$area = $_LANG['country'];
}
$smarty->assign('area_here', $area);
/* 返回上一级的链接 */
if ($region_id > 0)
{
$parent_id = $exc->get_name($region_id, 'parent_id');
$action_link = array('text' => $_LANG['back_page'], 'href' => 'area_manage.php?act=list&&pid=' . $parent_id);
}
else
{
$action_link = array('text' => $_LANG['create_region_initial'], 'href'=>'area_manage.php?act=create_region_initial');
}
$smarty->assign('action_link', $action_link);
/* 赋值模板显示 */
$smarty->assign('ur_here', $_LANG['05_area_list']);
$smarty->assign('full_page', 1);
assign_query_info();
$smarty->display('area_list.htm');
}
/*------------------------------------------------------ */
//-- 恢复默认地区 by wu
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'restore_region')
{
admin_priv('area_list');
$link[] = array('text' => $_LANG['go_back'], 'href' => 'area_manage.php?act=list');
//清空数据表
$sql = " TRUNCATE TABLE ".$GLOBALS['ecs']->table('region');
$GLOBALS['db']->query($sql);
//插入数据
$sql = " INSERT INTO ".$GLOBALS['ecs']->table('region')." SELECT * FROM ".$GLOBALS['ecs']->table('region_backup');
if($GLOBALS['db']->query($sql))
{
sys_msg($_LANG['restore_success'], 0, $link);
}
else
{
sys_msg($_LANG['restore_failure'], 0, $link);
}
}
/*------------------------------------------------------ */
//-- 生成地区首字母
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'create_region_initial')
{
admin_priv('area_list');
$heads='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>生成地区首字母</title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="styles/general.css" rel="stylesheet" type="text/css" />
<link href="styles/main.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function showmessage(message,ext) {
document.getElementById("notice1").innerHTML += message + "<br/>";
if (ext==1){
document.getElementById("zload").innerHTML="";
}
document.getElementById("notice").scrollTop = 100000000;
}
</script>
<style type="text/css">
.main-div{ width:98%; margin:10px auto;}
.main-div div{ padding:10px 0px 0px 10px;}
#notice{ height:620px; overflow-y:auto;}
</style>
</head>
<body>
<h1>
<span class="action-span"><a id="actionSpan" href="area_manage.php?act=list">返回上一页</a></span>
<span class="action-span1"><a href="index.php?act=main">生成地区首字母</a></span><div style="clear:both"></div>
</h1>
<div class="main-div">
<div id="notice">
<div id="notice1"></div>
<div id="zload"><img src="../data/afficheimg/zoomloader.gif" class="yuantu"></div>
</div>
</div>
<div id="footer">
' .$_LANG['copyright']. '
</div>
</body>
</html>';
$region_list = get_city_region();
$stime = sc_stime();
flush_echo($heads);
$pin=new pin();
$arr = array();
//26个英文字母数组
$letters=array('A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');
foreach($region_list as $key=>$region){
/* 设置最长执行时间为10分钟 */
@set_time_limit(600);
foreach($letters as $val)
{
if(strtolower($val)==substr($pin->Pinyin($region['region_name'], EC_CHARSET),0,1))
{
$region_list[$key]['initial'] = $val;
@$arr[$val][$key]=$region_list[$key];
}
}
show_js_message("<div><font>" . "市级地区ID:[" . $region['region_id'] ."]&nbsp;&nbsp;市级地区名称:". $region['region_name'] . "&nbsp;&nbsp;首字母:" .$region_list[$key]['initial'] . "</font></div>" , 1);
}
write_static_cache('pin_regions', $arr, '/data/sc_file/');
$pass_time = sc_timer($stime);
show_js_message('总用时:'.$pass_time.'秒' . "&nbsp;&nbsp;<font style='color:#666;'>(备注:当仓库里面的地区删除或增加时,生成一次,并更新后台缓存,务必避免连续操作生成.</font>)");
}
/*------------------------------------------------------ */
//-- 添加新的地区
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'add_area')
{
check_authz_json('area_list');
$parent_id = intval($_POST['parent_id']);
$region_name = json_str_iconv(trim($_POST['region_name']));
$region_type = intval($_POST['region_type']);
if (empty($region_name))
{
make_json_error($_LANG['region_name_empty']);
}
/* 查看区域是否重复 */
if (!$exc->is_only('region_name', $region_name, 0, "parent_id = '$parent_id'"))
{
make_json_error($_LANG['region_name_exist']);
}
$sql = "INSERT INTO " . $ecs->table('region') . " (parent_id, region_name, region_type) ".
"VALUES ('$parent_id', '$region_name', '$region_type')";
if ($GLOBALS['db']->query($sql, 'SILENT'))
{
admin_log($region_name, 'add','area');
/* 获取地区列表 */
$region_arr = area_list($parent_id);
$smarty->assign('region_arr', $region_arr);
$smarty->assign('region_type', $region_type);
make_json_result($smarty->fetch('area_list.htm'));
}
else
{
make_json_error($_LANG['add_area_error']);
}
}
/*------------------------------------------------------ */
//-- 编辑区域名称
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'edit_area_name')
{
check_authz_json('area_list');
$id = intval($_POST['id']);
$region_name = json_str_iconv(trim($_POST['val']));
if (empty($region_name))
{
make_json_error($_LANG['region_name_empty']);
}
$msg = '';
/* 查看区域是否重复 */
$parent_id = $exc->get_name($id, 'parent_id');
if (!$exc->is_only('region_name', $region_name, $id, "parent_id = '$parent_id'"))
{
make_json_error($_LANG['region_name_exist']);
}
if ($exc->edit("region_name = '$region_name'", $id))
{
admin_log($region_name, 'edit', 'area');
make_json_result(stripslashes($region_name));
}
else
{
make_json_error($db->error());
}
}
/*------------------------------------------------------ */
//-- 删除区域
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'drop_area')
{
check_authz_json('area_list');
$id = intval($_REQUEST['id']);
$sql = "SELECT * FROM " . $ecs->table('region') . " WHERE region_id = '$id'";
$region = $db->getRow($sql);
// /* 如果底下有下级区域,不能删除 */
// $sql = "SELECT COUNT(*) FROM " . $ecs->table('region') . " WHERE parent_id = '$id'";
// if ($db->getOne($sql) > 0)
// {
// make_json_error($_LANG['parent_id_exist']);
// }
$region_type=$region['region_type'];
$delete_region[]=$id;
$new_region_id =$id;
if($region_type<6)
{
for($i=1;$i<6-$region_type;$i++)
{
$new_region_id=new_region_id($new_region_id);
if(count($new_region_id))
{
$delete_region=array_merge($delete_region,$new_region_id);
}
else
{
continue;
}
}
}
$sql="DELETE FROM ". $ecs->table("region")."WHERE region_id".db_create_in($delete_region);
$db->query($sql);
if ($exc->drop($id))
{
admin_log(addslashes($region['region_name']), 'remove', 'area');
/* 获取地区列表 */
$region_arr = area_list($region['parent_id']);
$smarty->assign('region_arr', $region_arr);
$smarty->assign('region_type', $region['region_type']);
make_json_result($smarty->fetch('area_list.htm'));
}
else
{
make_json_error($db->error());
}
}
function new_region_id($region_id)
{
$regions_id=array();
if(empty($region_id))
{
return $regions_id;
}
$sql="SELECT region_id FROM ". $GLOBALS['ecs']->table("region")."WHERE parent_id ".db_create_in($region_id);
$result=$GLOBALS['db']->getAll($sql);
foreach($result as $val)
{
$regions_id[]=$val['region_id'];
}
return $regions_id;
}
?>