getMessage(), "", "exception"); } $result = self::$function($param); return $result; } private static function getAreaCache($param) { $deep = $param['deep']; $cache_file = ROOT_PATH . "extend" . DIRECTORY_SEPARATOR . "area" . DIRECTORY_SEPARATOR . "area_" . $deep . ".php"; if (file_exists($cache_file) && empty($param['new'])) { require ($cache_file); return $data; } $where = array('area_deep' => $deep); $order = "area_sort asc"; $area_mod = model('area'); $result = $area_mod->getAreaList($where, '*', '', 0, $order); $tmp = " $v) { $tmp.= "\tarray(\r\n"; $tmp.= "\t\t'area_id'=>'" . $v['area_id'] . "',\r\n"; $tmp.= "\t\t'area_name'=>'" . htmlspecialchars($v['area_name']) . "',\r\n"; $tmp.= "\t\t'area_region'=>'" . htmlspecialchars($v['area_region']) . "',\r\n"; $tmp.= "\t\t'area_parent_id'=>'" . $v['area_parent_id'] . "',\r\n"; $tmp.= "\t\t'area_sort'=>'" . $v['area_sort'] . "',\r\n"; $tmp.= "\t\t'area_deep'=>'" . $v['area_deep'] . "',\r\n"; $tmp.= "\t),\r\n"; } } $tmp.= ");"; try { $fp = @fopen($cache_file, "wb+"); if (fwrite($fp, $tmp) === FALSE) { $error = lang('please_check_your_system_chmod_area'); throw new Exception(); } @fclose($fp); require ($cache_file); return $data; } catch (Exception $e) { exception($e->getMessage(), "", "exception"); } } public static function makeallcache($type) { switch ($type) { case "area": $file_list = read_file_list(ROOT_PATH . "extend" . DIRECTORY_SEPARATOR . "area"); if (is_array($file_list)) { foreach ($file_list as $v) { @unlink(ROOT_PATH . "extend" . DIRECTORY_SEPARATOR . "area" . DIRECTORY_SEPARATOR . $v); } } $maxdeep = 1; default: $where = array('area_deep' => $maxdeep); $order = "area_sort asc"; $area_mod = model('area'); $result = $area_mod->getAreaList($where, '*', '', 0, $order); if (!empty($result)) { $cache_file_area = ROOT_PATH . "extend" . DIRECTORY_SEPARATOR . "area" . DIRECTORY_SEPARATOR . "area_" . $maxdeep . ".php"; $tmp = " $v) { $tmp.= "\tarray(\r\n"; $tmp.= "\t\t'area_id'=>'" . $v['area_id'] . "',\r\n"; $tmp.= "\t\t'area_name'=>'" . htmlspecialchars($v['area_name']) . "',\r\n"; $tmp.= "\t\t'area_region'=>'" . htmlspecialchars($v['area_region']) . "',\r\n"; $tmp.= "\t\t'area_parent_id'=>'" . $v['area_parent_id'] . "',\r\n"; $tmp.= "\t\t'area_sort'=>'" . $v['area_sort'] . "',\r\n"; $tmp.= "\t\t'area_deep'=>'" . $v['area_deep'] . "',\r\n"; $tmp.= "\t),\r\n"; } } $tmp.= ");"; try { $fp = @fopen($cache_file_area, "wb+"); if (fwrite($fp, $tmp) === FALSE) { $error = lang('please_check_your_system_chmod_area'); throw new Exception(); } unset($tmp); @fclose($fp); } catch (Exception $e) { exception($e->getMessage(), "", "exception"); } } ++$maxdeep; } } function del_DirAndFile($dirName) { if (is_dir($dirName)) { if ($handle = opendir("$dirName")) { while (false !== ( $item = readdir($handle) )) { if ($item != "." && $item != "..") { if (is_dir("$dirName/$item")) { del_DirAndFile("$dirName/$item"); } else { unlink("$dirName/$item"); } } } closedir($handle); rmdir($dirName); } } } public static function deleteCacheFile() { $dirName = ROOT_PATH . "extend" . DIRECTORY_SEPARATOR . "area"; if (is_dir($dirName)) { if ($handle = opendir("$dirName")) { while (false !== ( $item = readdir($handle) )) { if ($item != "." && $item != "..") { if (is_dir("$dirName/$item")) { del_DirAndFile("$dirName/$item"); } else { unlink("$dirName/$item"); } } } closedir($handle); } } } //自动更新“area_datas.js” public static function updateAreaArrayJs() { $cache_file = PUBLIC_PATH . DIRECTORY_SEPARATOR . "static" . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "area_datas.js"; $field = "area_parent_id"; $order = "area_parent_id ASC"; $group = "area_parent_id"; $area_mod = model('area'); $result = $area_mod->getAreaList(array(), $field, $group, 0, $order); $tmp = "ds_a = new Array();\n"; if (is_array($result)) { foreach ($result as $k => $v) { $tmp.="ds_a[" . $v['area_parent_id'] . "]=["; $tmp_sub = ""; //子地区 $where = "area_parent_id = '" . $v['area_parent_id'] . "'"; $order = "area_sort ASC,area_id ASC"; $result_sub = $area_mod->getAreaList($where, '*', '', 0, $order); if (is_array($result_sub)) { foreach ($result_sub as $k_sub => $v_sub) { if ($tmp_sub == "") { $tmp_sub = "['" . $v_sub['area_id'] . "','" . $v_sub['area_name'] . "']"; } else { $tmp_sub .= ",['" . $v_sub['area_id'] . "','" . $v_sub['area_name'] . "']"; } } } $tmp.=$tmp_sub; $tmp.="];\n"; } } $fp = fopen($cache_file, "wb+"); fwrite($fp, $tmp); fclose($fp); } //自动更新“area_datas.php” public static function updateAreaPhp() { $cache_file = PUBLIC_PATH . DIRECTORY_SEPARATOR . "static" . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "area_datas.php"; $order = "area_deep asc ,area_sort ASC,area_id ASC"; $area_mod = model('area'); $result = $area_mod->getAreaList(array(), '*', '', 0, $order); $tmp = " $v) { $tmp.= "\t" . $v['area_id'] . " => array ( 'area_name' => '" . $v['area_name'] . "', 'area_parent_id' => '" . $v['area_parent_id'] . "', ),"; } } $tmp.= ");"; $fp = fopen($cache_file, "wb+"); fwrite($fp, $tmp); fclose($fp); } } ?>