123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <?php
- final class areacache {
- public static function getCache($type, $param = "") {
- $type = strtoupper($type[0]) . strtolower(substr($type, 1));
- $function = "get" . $type . "Cache";
- try {
- do {
- if (method_exists(areacache, $function)) {
- break;
- } else {
- $error = lang('please_check_your_cache_type');
- throw new Exception($error);
- }
- } while (0);
- } catch (Exception $e) {
- Exception($e->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 = "<?php \r\n";
- $tmp.= "\$data = array(\r\n";
- if (is_array($result)) {
- foreach ($result as $k => $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 = "<?php \r\n";
- $tmp.= "\$data = array(\r\n";
- if (is_array($result)) {
- foreach ($result as $k => $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 = "<?php \r\n";
- $tmp.= "\$area_array = array(\r\n";
- if (is_array($result)) {
- foreach ($result as $k => $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);
- }
- }
- ?>
|