model('regions');
$package = 'mainland';
if($params['required'] == 'true')
{
$req = ' vtype="area"';
}else{
$req = ' vtype='.$params['vtype'];
}
$objRegionsSelect = kernel::single('o2o_regions_select');
if(!$params['value'])
{
$html = '';
$html .= '';
$html .= $objRegionsSelect->get_area_select(null,$params);
$html .= '';
return $html;
}
else
{
list($package,$region_name,$region_id) = explode(':',$params['value']);
$arr_region_name = explode("/", $region_name);
$depth = count($arr_region_name);
if(!is_numeric($region_id))
{
$html = '';
$html .= '';
$html .= $objRegionsSelect->get_area_select(null,$params);
$html .= '';
return $html;
}
else
{
#地区级数
$regionsInfo = $regionsObj->dump(array('region_id'=>$region_id), 'p_region_id, region_grade');
$depth = $regionsInfo['region_grade'];
$p_region_id = $regionsInfo['p_region_id'];
#循环地区查询(最大程序上匹配地区)
$region = array();
while ($depth > 0)
{
$region_grade = 'region_' . $depth;
$sql = "SELECT b.region_id, b.p_region_id, b.region_grade FROM sdb_o2o_store_regions AS a
LEFT JOIN sdb_eccommon_regions AS b ON a.". $region_grade ."=b.region_id
WHERE a.". $region_grade ."=". $region_id;
$region = $regionsObj->db->selectRow($sql);
if($region)
{
break;
}
$depth--;
#上一级地区
$regionsInfo = $regionsObj->dump(array('region_id'=>$p_region_id), 'region_id, p_region_id');
$region_id = $regionsInfo['region_id'];
$p_region_id = $regionsInfo['p_region_id'];
}
unset($region_id, $depth, $p_region_id);
#格式化
$depth = $region['region_grade'];
$region_id = $region['region_id'];
unset($region, $regionsInfo);
#
$arr_regions = array();
$ret = '';
while($region_id && ($region = $regionsObj->dump($region_id,'region_id,local_name,p_region_id'))){
$params['depth'] = $depth--;
array_unshift($arr_regions,$region);
if($region_id = $region['p_region_id']){
$notice = "-";
$data = $objRegionsSelect->get_area_select($region['p_region_id'],$params,$region['region_id']);
if(!$data){
$notice = "";
}
$ret = ' '.$notice.' '.$objRegionsSelect->get_area_select($region['p_region_id'],$params,$region['region_id']).$ret.'';
}else{
$ret = ''.$objRegionsSelect->get_area_select(null,$params,$region['region_id']).$ret.'';
}
}
if(!$ret){
$ret = ''.$objRegionsSelect->get_area_select(null,$params,$region['region_id']).'';
}
return $ret;
}
}
}
}