diff --git a/application/controllers/cache.php b/application/controllers/cache.php index 8a1b6a78..7daf5e38 100644 --- a/application/controllers/cache.php +++ b/application/controllers/cache.php @@ -1,202 +1,195 @@ input->get('site_code')) { - $this->permission->is_admin(); - } - $this->load->model('Area_model'); - $this->load->model('InfoStructures_model'); - $this->load->model('Information_model'); - $this->site_code = $this->input->get('site_code') ? $this->input->get('site_code') : $this->config->item('site_code'); - } +if (! defined('BASEPATH')) { + exit('No direct script access allowed'); +} - /** - * - * 公有函数:扫描已有缓存文件并更新。 - * - * 必要参数: - * @param String $site_code - * - */ - public function update() - { - $returnType = $this->input->get('type'); - //设置缓存文件文件夹 - $cache_config = $this->config->item('cache'); - $current_cache_config = $cache_config[$this->site_code]; - $this->dir = $current_cache_config['cache_path']; - - //设置当前站点 - $this->current_domain = $current_cache_config['site_url']; //$this->config->item('site_url'); - //echo $this->config->item('site_url'); - //设置缓存更新接口及POST参数 - $this->cache_api = $current_cache_config['cache_api']; - $this->post_para = $current_cache_config['cache_api_para']; - //遍历缓存文件夹 - $this->tree($this->dir, $this->file, $this->path, $this->file_time); - //print_r($this->file); - //print_r($this->path); - //print_r($this->file_time); - //die(); - //按目录筛选结果 - $this->filter($this->file, $this->path); - - //整理需要传递到视图的数据 - $data['file'] = $this->file; - $data['path'] = $this->path; - $data['file_time'] = $this->file_time; - $data['cache_api'] = $this->cache_api; - $data['post_para'] = $this->post_para; - - if ($returnType === 'json') { - //print_r($cache_config[$this->site_code]); - //echo('json'); - //print_r($data['file']); - echo (json_encode($data['file'])); - } else { - //视图 - $this->load->view('cache/update', $data); - } +class Cache extends CI_Controller { + //缓存文件绝对路径 + private $dir = ''; + //存放缓存文件的数组 + private $file = []; + //存放缓存文件夹的数组 + private $path = []; + //缓存更新接口 + private $cache_api = ''; + //缓存更新参数 + private $post_para = ''; + //当前站点域名 + private $current_domain = ''; + //文件更新日期 + private $file_time = []; + + function __construct() { + parent::__construct(); + if (! $this->input->get('site_code')) { + $this->permission->is_admin(); } - - /** - * - * 公有函数:扫描已有缓存文件并更新。 - * - * 必要参数: - * @param String $site_code - * - */ - public function sitemap() - { - header("Content-type:text/xml"); - //设置缓存文件文件夹 - $cache_config = $this->config->item('cache'); - $current_cache_config = $cache_config[$this->site_code]; - $this->dir = $current_cache_config['cache_path']; - - //设置当前站点 - $this->current_domain = $this->config->item('site_url'); - //设置缓存更新接口及POST参数 - $this->cache_api = $current_cache_config['cache_api']; - $this->post_para = $current_cache_config['cache_api_para']; - //遍历缓存文件夹 - $this->tree($this->dir, $this->file, $this->path, $this->file_time); - //按目录筛选结果 - $this->filter($this->file, $this->path); - - //整理需要传递到视图的数据 - $data['file'] = $this->file; - $data['path'] = $this->path; - $data['file_time'] = $this->file_time; - $data['cache_api'] = $this->cache_api; - $data['post_para'] = $this->post_para; - - //排序file数组 - sort($data['file']); - - //生成sitemap - $dom = new DomDocument('1.0', 'utf-8'); - $urlset = $dom->createElement('urlset'); - $urlset->setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9'); - $dom->appendchild($urlset); - foreach ($data['file'] as $f) { - $url = $dom->createElement('url'); - $loc = $dom->createElement('loc'); - $text = $dom->createTextNode($f); - $loc->appendchild($text); - $url->appendchild($loc); - $urlset->appendchild($url); - } - - echo ($dom->saveXML()); + $this->load->model('Area_model'); + $this->load->model('InfoStructures_model'); + $this->load->model('Information_model'); + $this->site_code = $this->input->get('site_code') ? $this->input->get('site_code') : $this->config->item('site_code'); + } + + /** + * + * 公有函数:扫描已有缓存文件并更新。 + * + * 必要参数: + * @param String $site_code + * + */ + public function update() { + $returnType = $this->input->get('type'); + //设置缓存文件文件夹 + $cache_config = $this->config->item('cache'); + $current_cache_config = $cache_config[$this->site_code]; + $this->dir = $current_cache_config['cache_path']; + + //设置当前站点 + $this->current_domain = $current_cache_config['site_url']; //$this->config->item('site_url'); + //echo $this->config->item('site_url'); + //设置缓存更新接口及POST参数 + $this->cache_api = $current_cache_config['cache_api']; + $this->post_para = $current_cache_config['cache_api_para']; + //遍历缓存文件夹 + $this->tree($this->dir, $this->file, $this->path, $this->file_time); + //print_r($this->file); + //print_r($this->path); + //print_r($this->file_time); + //die(); + //按目录筛选结果 + $this->filter($this->file, $this->path); + + //整理需要传递到视图的数据 + $data['file'] = $this->file; + $data['path'] = $this->path; + $data['file_time'] = $this->file_time; + $data['cache_api'] = $this->cache_api; + $data['post_para'] = $this->post_para; + + if ($returnType === 'json') { + //print_r($cache_config[$this->site_code]); + //echo('json'); + //print_r($data['file']); + echo(json_encode($data['file'])); + } else { + //视图 + $this->load->view('cache/update', $data); } - - - /** - * - * 私有函数:递归遍历缓存文件夹,将目录存放到$path,文件存放到$file。 - * - * 必要参数: - * @param String $dir - 需要遍历的目录 - * @param Array $file - 存放文件结果的数组引用 - * @param Array $path - 存放路径结果的数组引用 - * @param Array $file_time - 存放文件更新日期的数组引用 - * - */ - private function tree($dir, &$file, &$path, &$file_time) - { - $mydir = dir($dir); - while ($f = $mydir->read()) { - if (is_dir("$dir/$f") && $f != "." && $f != ".." && (strpos($dir, '/cn/') === false) && (strpos($dir, '/amp/') === false) && (strpos($dir, '/js/') === false)) { - $path[] = "$dir/$f"; - $this->tree("$dir/$f", $file, $path, $file_time); - } else { - if ($f != '.' && $f != '..' && (strpos($f, '/cn/') === false) && (strpos($f, '/amp/') === false) && (strpos($f, '.pdf') === false) && (strpos($f, '.mobile.htm') === false) && (strpos($f, '/js/') === false) && (strpos($f, '.amp') === false)) { - $file_temp = str_replace('/index.htm###', '', $f . '###'); - $file_temp = str_replace('###', '', $file_temp); - $path_temp = str_replace($this->dir, '', $dir); - $url_temp = $this->current_domain . $path_temp . '/' . $file_temp; - $url_temp = str_replace('/index.htm', '/', $url_temp); - $file_time[$url_temp] = date("F d Y H:i:s", filemtime("$dir/$f")); - - $encode = mb_detect_encoding($url_temp, array('ASCII', 'GBK', 'ISO-8859-1', 'UTF-8')); - $_url_temp = mb_convert_encoding($url_temp, 'UTF8', $encode); - - $file[] = $_url_temp; - } - } - } - $mydir->close(); + } + + /** + * + * 公有函数:扫描已有缓存文件并更新。 + * + * 必要参数: + * @param String $site_code + * + */ + public function sitemap() { + header("Content-type:text/xml"); + //设置缓存文件文件夹 + $cache_config = $this->config->item('cache'); + $current_cache_config = $cache_config[$this->site_code]; + $this->dir = $current_cache_config['cache_path']; + + //设置当前站点 + $this->current_domain = $this->config->item('site_url'); + //设置缓存更新接口及POST参数 + $this->cache_api = $current_cache_config['cache_api']; + $this->post_para = $current_cache_config['cache_api_para']; + //遍历缓存文件夹 + $this->tree($this->dir, $this->file, $this->path, $this->file_time); + //按目录筛选结果 + $this->filter($this->file, $this->path); + + //整理需要传递到视图的数据 + $data['file'] = $this->file; + $data['path'] = $this->path; + $data['file_time'] = $this->file_time; + $data['cache_api'] = $this->cache_api; + $data['post_para'] = $this->post_para; + + //排序file数组 + sort($data['file']); + + //生成sitemap + $dom = new DomDocument('1.0', 'utf-8'); + $urlset = $dom->createElement('urlset'); + $urlset->setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9'); + $dom->appendchild($urlset); + foreach ($data['file'] as $f) { + $url = $dom->createElement('url'); + $loc = $dom->createElement('loc'); + $text = $dom->createTextNode($f); + $loc->appendchild($text); + $url->appendchild($loc); + $urlset->appendchild($url); } - - /** - * - * 私有函数:筛选目录和文件。 - * - * 必要参数: - * @param Array $file - 存放文件结果的数组引用 - * @param Array $path - 存放路径结果的数组引用 - * - * 可选参数:POST参数 - $_POST['p'] - * - */ - private function filter(&$file, &$path) - { - if (isset($_POST['p']) && !empty($_POST['p'])) { - //删选文件 - foreach ($file as &$f) { - (stripos($f, $_POST['p']) !== false) or $f = false; - } - $file = array_filter($file); - //删选目录 - foreach ($path as &$p) { - (stripos($p, $_POST['p']) !== false) or $p = false; - } - $path = array_filter($path); + echo($dom->saveXML()); + } + + /** + * + * 私有函数:递归遍历缓存文件夹,将目录存放到$path,文件存放到$file。 + * + * 必要参数: + * @param String $dir - 需要遍历的目录 + * @param Array $file - 存放文件结果的数组引用 + * @param Array $path - 存放路径结果的数组引用 + * @param Array $file_time - 存放文件更新日期的数组引用 + * + */ + private function tree($dir, &$file, &$path, &$file_time) { + $mydir = dir($dir); + while ($f = $mydir->read()) { + if (is_dir("$dir/$f") && $f != "." && $f != ".." && (strpos($dir, '/cn/') === false) && (strpos($dir, '/amp/') === false) && (strpos($dir, '/js/') === false) && (strpos($dir, 'stfolder') === false)) { + $path[] = "$dir/$f"; + $this->tree("$dir/$f", $file, $path, $file_time); + } else { + if ($f != '.' && $f != '..' && (strpos($f, '/cn/') === false) && (strpos($f, '/amp/') === false) && (strpos($f, '.pdf') === false) && (strpos($f, '.mobile.htm') === false) && (strpos($f, '/js/') === false) && (strpos($f, '.amp') === false)) { + $file_temp = str_replace('/index.htm###', '', $f . '###'); + $file_temp = str_replace('###', '', $file_temp); + $path_temp = str_replace($this->dir, '', $dir); + $url_temp = $this->current_domain . $path_temp . '/' . $file_temp; + $url_temp = str_replace('/index.htm', '/', $url_temp); + $file_time[$url_temp] = date("F d Y H:i:s", filemtime("$dir/$f")); + + $encode = mb_detect_encoding($url_temp, ['ASCII', 'GBK', 'ISO-8859-1', 'UTF-8']); + $_url_temp = mb_convert_encoding($url_temp, 'UTF8', $encode); + + $file[] = $_url_temp; } + } + } + $mydir->close(); + } + + /** + * + * 私有函数:筛选目录和文件。 + * + * 必要参数: + * @param Array $file - 存放文件结果的数组引用 + * @param Array $path - 存放路径结果的数组引用 + * + * 可选参数:POST参数 - $_POST['p'] + * + */ + private function filter(&$file, &$path) { + if (isset($_POST['p']) && ! empty($_POST['p'])) { + //删选文件 + foreach ($file as &$f) { + (stripos($f, $_POST['p']) !== false) or $f = false; + } + $file = array_filter($file); + //删选目录 + foreach ($path as &$p) { + (stripos($p, $_POST['p']) !== false) or $p = false; + } + $path = array_filter($path); } + } } //end of Cache