public function run(&$content) { if (C('TMPL_STRIP_SPACE')) { preg_match_all("/<script[\\s\\S]*?>([\\s\\S]*?)<\\/script>/i", $content, $scripta); preg_match_all("/<style[\\s\\S]*?>([\\s\\S]*?)<\\/style>/i", $content, $stylea); $comhtml = $this->delHtml($content); preg_match_all("/<script[\\s\\S]*?>([\\s\\S]*?)<\\/script>/i", $comhtml, $scriptb); preg_match_all("/<style[\\s\\S]*?>([\\s\\S]*?)<\\/style>/i", $comhtml, $styleb); foreach ($stylea[0] as $k => $v) { $cssmin[$k] = Cssmin::minify($v); } foreach ($scripta[0] as $key => $value) { if (empty(Jsmin::minify($scripta[1][$key]))) { $jsmin[$key] = $scriptb[0][$key]; } else { $jsmin[$key] = Jsmin::minify($value); } } $content = str_replace($scriptb[0], $jsmin, $comhtml); $content = str_replace($styleb[0], $cssmin, $content); if (C('HTML_CACHE_ON') && defined('HTML_FILE_NAME') && !preg_match('/Status.*[345]{1}\\d{2}/i', implode(' ', headers_list())) && !preg_match('/(-[a-z0-9]{2}){3,}/i', HTML_FILE_NAME)) { //静态文件写入 Storage::put(HTML_FILE_NAME, $content, 'html'); } } }
public function run(&$params) { // 开启静态缓存 if (IS_GET && C('HTML_CACHE_ON')) { $cacheTime = $this->requireHtmlCache(); if (false !== $cacheTime && $this->checkHTMLCache(HTML_FILE_NAME, $cacheTime)) { $mtime = self::fileMTime(HTML_FILE_NAME); if (!empty($_SERVER['HTTP_IF_NONE_MATCH'])) { if ($_SERVER['HTTP_IF_NONE_MATCH'] >= $mtime) { header('Etag:' . $_SERVER['HTTP_IF_NONE_MATCH'], true, 304); exit; } self::httpCached($mtime, false); } else { self::httpCached($mtime); } header('Etag:' . $mtime, true, 200); //静态页面有效 // 读取静态页面输出 echo Storage::read(HTML_FILE_NAME, 'html'); exit; } $mtime = NOW_TIME + 5; header('Etag:' . $mtime, true, 200); self::httpCached($mtime, false); } }
public function run(&$content) { if (C('HTML_CACHE_ON') && defined('HTML_FILE_NAME')) { //静态文件写入 Storage::put(HTML_FILE_NAME, $content, 'html'); } }
$layoutFile = THEME_PATH . C('LAYOUT_NAME') . C('TMPL_TEMPLATE_SUFFIX'); if (filemtime($layoutFile) > Storage::get($tmplCacheFile, 'mtime')) { return false; } } // 缓存有效 return true; } /**
protected function _initialize() { if (Storage::has('./Conf/install.lock')) { $this->error('已经成功安装了本系统,请不要重复安装!', U('Home/Index/index')); } elseif ($_SERVER[ENV_PRE . 'DEV_MODE'] == true) { $this->error('系统处于开发模式,无需安装!', U('Home/Index/index')); } }
public function Update() { $return = \Think\Storage::put(APP_PATH . 'Common/Conf/Temp.php', '<?php return ' . var_export($_POST, true) . ';', 'F'); if ($return == true) { $this->success('<p>' . L('success') . '</p>'); } else { $this->error('<p>更新失败,请检查这个目录下的0777权限</p>'); } }
protected function _initialize() { if (session('step') === null) { session('step', 0); } if (Storage::has(MODULE_PATH . 'Data/install.lock')) { $this->error('已经成功安装了系统,请不要重复安装!', U('Home/Index/index')); } }
protected function _initialize() { if (session('step') === null) { $this->redirect('Index/index'); } if (Storage::has(MODULE_PATH . 'Data/install.lock')) { $this->error('已经成功安装了Zcms,请不要重复安装!'); } }
public function Update() { $confpath = \Think\Storage::put(APP_PATH.'Common/Conf/Settings.php', '<?php return '.var_export($_POST,true).';', 'F'); if ($confpath==true){ $this->success('<p>修改配置成功!</p>'); } else { $this->error('<p>修改配置失败,请检查这个目录下的0777权限</p>'); } }
public function Update() { $Picture = \Think\Storage::put(APP_PATH.'Common/Conf/Picture.php', '<?php return '.var_export($_POST,true).';', 'F'); if ($Picture == true) { $this->success('<p>设置成功!</p>'); } else { $this->error('<p>设置失败,请检查这个目录下的0777权限</p>'); } }
{ // 行为扩展的执行入口必须是run public function run(&$content) { //2014-11-28 修改 如果有HTTP 4xx 3xx 5xx 头部,禁止存储 //2014-12-1 修改 对注入的网址 防止生成,例如 /game/lst/SortType/hot/-e8-90-8c-e5-85-94-e7-88-b1-e6-b6-88-e9-99-a4/-e8-bf-9b-e5-87-bb-e7-9a-84-e9-83-a8-e8-90-bd/-e9-a3-8e-e4-ba-91-e5-a4-a9-e4-b8-8b/index.shtml if (C('HTML_CACHE_ON') && defined('HTML_FILE_NAME') && !preg_match('/Status.*[345]{1}\\d{2}/i', implode(' ', headers_list())) && !preg_match('/(-[a-z0-9]{2}){3,}/i', HTML_FILE_NAME)) { //静态文件写入 Storage::put(HTML_FILE_NAME, $content, 'html');
public function Update() { $return = \Think\Storage::put(APP_PATH . 'Common/Conf/Lang.php', '<?php return ' . var_export($_POST, true) . ';', 'F'); if ($return == true) { $this->success('<p>' . L('lang_success') . '</p>', __ROOT__ . '/Admin/Lang?l=' . C('LANG_LIST')); } else { $this->error('<p>' . L('lang_error') . '</p>'); } }
public function index() { if (Storage::has(APP_PATH . 'Common/Conf/install.lock')) { $this->error('已经成功安装了Gms管理系统,请不要重复安装!'); } session_destroy(); session_start(); session('step', 0); session('error', false); $this->display(); }
/** * 获取模块列表 * @param string $addon_dir * @author jry <*****@*****.**> */ public function getAll() { //获取除了Common等系统模块外的用户模块(文件夹下必须有$install_file定义的安装描述文件) $dirs = array_map('basename', glob(APP_PATH . '*', GLOB_ONLYDIR)); foreach ($dirs as $dir) { $config_file = realpath(APP_PATH . $dir) . '/' . $this->install_file(); if (Storage::has($config_file)) { $module_dir_list[] = $dir; $temp_arr = (include $config_file); $temp_arr['info']['status'] = -1; //未安装 $module_list[$temp_arr['info']['name']] = $temp_arr['info']; } } //获取系统已经安装的模块信息 $installed_module_list = $this->field(true)->order('sort asc,id desc')->select(); if ($installed_module_list) { foreach ($installed_module_list as &$module) { $module_list[$module['name']] = $module; } //系统已经安装的模块信息与文件夹下模块信息合并 $module_list = array_merge($module_list, $module_list); } foreach ($module_list as &$val) { switch ($val['status']) { case '-2': //损坏 $val['status'] = '<span class="text-danger">损坏</span>'; $val['right_button'] = '<a class="label label-danger ajax-get" href="' . U('setStatus', array('status' => 'delete', 'ids' => $val['id'])) . '">删除记录</a>'; break; case '-1': //未安装 $val['status'] = '<i class="fa fa-download text-success"></i>'; $val['right_button'] = '<a class="label label-success ajax-get" href="' . U('install?name=' . $val['name']) . '">安装</a>'; break; case '0': //禁用 $val['status'] = '<i class="fa fa-ban text-danger"></i>'; $val['right_button'] .= '<a class="label label-info ajax-get" href="' . U('updateInfo?id=' . $val['id']) . '">更新菜单</a> '; $val['right_button'] .= '<a class="label label-success ajax-get" href="' . U('setStatus', array('status' => 'resume', 'ids' => $val['id'])) . '">启用</a> '; $val['right_button'] .= '<a class="label label-danger ajax-get" href="' . U('uninstall', array('id' => $val['id'])) . '">卸载</a> '; break; case '1': //正常 $val['status'] = '<i class="fa fa-check text-success"></i>'; $val['right_button'] .= '<a class="label label-info ajax-get" href="' . U('updateInfo?id=' . $val['id']) . '">更新菜单</a> '; $val['right_button'] .= '<a class="label label-warning ajax-get" href="' . U('setStatus', array('status' => 'forbid', 'ids' => $val['id'])) . '">禁用</a> '; $val['right_button'] .= '<a class="label label-danger ajax-get" href="' . U('uninstall', array('id' => $val['id'])) . '">卸载</a> '; break; } } return $module_list; }
/** * 获取模块列表 * @param string $addon_dir */ public function getAllModule() { //获取除了Common等系统模块外的用户模块(文件夹下必须有oneshop.php) $dirs = array_map('basename', glob(APP_PATH . '*', GLOB_ONLYDIR)); foreach ($dirs as $dir) { $config_file = realpath(APP_PATH . $dir) . '/oneshop.php'; if (Storage::has($config_file)) { $module_dir_list[] = $dir; $temp_arr = (include $config_file); $temp_arr['info']['status'] = -1; //未安装 $module_list[$temp_arr['info']['name']] = $temp_arr['info']; } } //获取系统已经安装的模块信息 if ($module_dir_list) { $map['name'] = array('in', $module_dir_list); } $installed_module_list = $this->where($map)->field(true)->order('sort asc,id desc')->select(); if ($installed_module_list) { foreach ($installed_module_list as $module) { $module_list[$module['name']] = $module; } //系统已经安装的模块信息与文件夹下模块信息合并 $module_list = array_merge($module_list, $module_list); } foreach ($module_list as &$val) { switch ($val['status']) { case '-1': //未安装 $val['status'] = '<i class="glyphicon glyphicon-download-alt" style="color:green"></i>'; $val['right_button'] = '<a class="ajax-get" href="' . U('install?name=' . $val['name']) . '">安装</a>'; break; case '0': //禁用 $val['status'] = '<i class="glyphicon glyphicon-ban-circle" style="color:red"></i>'; $val['right_button'] .= '<a class="ajax-get" href="' . U('updateModuleInfo?id=' . $val['id']) . '">更新菜单</a> '; $val['right_button'] .= '<a class="ajax-get" href="' . U('setStatus', array('status' => 'resume', 'ids' => $val['id'])) . '">启用</a> '; $val['right_button'] .= '<a class="ajax-get" href="' . U('setStatus', array('status' => 'uninstall', 'ids' => $val['id'])) . '">卸载</a> '; break; case '1': //正常 $val['status'] = '<i class="glyphicon glyphicon-ok" style="color:green"></i>'; $val['right_button'] .= '<a class="ajax-get" href="' . U('updateModuleInfo?id=' . $val['id']) . '">更新菜单</a> '; $val['right_button'] .= '<a class="ajax-get" href="' . U('setStatus', array('status' => 'forbid', 'ids' => $val['id'])) . '">禁用</a> '; $val['right_button'] .= '<a class="ajax-get" href="' . U('setStatus', array('status' => 'uninstall', 'ids' => $val['id'])) . '">卸载</a> '; break; } } return $module_list; }
/** * 获取主题列表 * @param string $addon_dir * @author jry <*****@*****.**> */ public function getAll() { //获取所有主题(文件夹下必须有$install_file定义的安装描述文件) $path = './Theme/'; $dirs = array_map('basename', glob($path . '*', GLOB_ONLYDIR)); foreach ($dirs as $dir) { $config_file = realpath($path . $dir) . '/' . $this->install_file(); if (Storage::has($config_file)) { $theme_dir_list[] = $dir; $temp_arr = (include $config_file); $temp_arr['info']['status'] = -1; //未安装 $theme_list[$temp_arr['info']['name']] = $temp_arr['info']; } } // 获取系统已经安装的主题信息 if ($theme_dir_list) { $map['name'] = array('in', $theme_dir_list); } else { return false; } $installed_theme_list = $this->where($map)->field(true)->order('sort asc,id desc')->select(); if ($installed_theme_list) { foreach ($installed_theme_list as $theme) { $theme_list[$theme['name']] = $theme; } //系统已经安装的主题信息与文件夹下主题信息合并 $theme_list = array_merge($theme_list, $theme_list); } foreach ($theme_list as &$val) { switch ($val['status']) { case '-1': //未安装 $val['status'] = '<i class="fa fa-download" style="color:green"></i>'; $val['right_button'] = '<a class="label label-success ajax-get" href="' . U('install?name=' . $val['name']) . '">安装</a>'; break; default: $val['status'] = '<i class="fa fa-check" style="color:green"></i>'; if ($val['current']) { $val['right_button'] .= '<span class="label label-success" href="#">我是当前主题</span> '; } else { $val['right_button'] .= '<a class="label label-danger ajax-get" href="' . U('setCurrent', array('id' => $val['id'])) . '">设为当前主题</a> '; } $val['right_button'] .= '<a class="label label-info ajax-get" href="' . U('updateInfo?id=' . $val['id']) . '">更新信息</a> '; $val['right_button'] .= '<a class="label label-primary" href="' . U('edit?id=' . $val['id']) . '">编辑</a> '; $val['right_button'] .= '<a class="label label-danger ajax-get" href="' . U('uninstall', array('id' => $val['id'])) . '">卸载</a> '; break; } } return $theme_list; }
public function complete() { $step = session('step'); if (!$step) { $this->error('请正确安装系统', U('index')); } elseif ($step != 3) { $this->error('请正确安装系统', U('Install/step' . $step)); } //写入安装锁定文件 Storage::put(APP_PATH . 'Common/Conf/install.lock', 'lock'); session('step', null); session('error', null); $this->display(); }
public function run(&$content) { if (!APP_DEBUG && C('BUILD_LITE_RUNTIME')) { $litefile = RUNTIME_PATH . APP_MODE . '~lite.php'; $runtimefile = RUNTIME_PATH . APP_MODE . '~runtime.php'; if (!Storage::has($litefile)) { $defs = get_defined_constants(TRUE); $content = Storage::read($runtimefile); // $content .= 'namespace { $GLOBALS[\'_beginTime\'] = microtime(TRUE);'; $content .= compile(CORE_PATH . 'Think' . EXT); $content .= 'namespace {' . $this->array_define($defs['user']) . 'Think\\Think::start();}'; Storage::put($litefile, $content); } } }
public function complete() { $step = session('step'); if (!$step) { $this->redirect('index'); } elseif ($step != 3) { $this->redirect("Install/step{$step}"); } Storage::put(MODULE_PATH . 'Data/install.lock', 'lock'); //创建配置文件 $this->assign('info', session('config_file')); session('step', null); session('error', null); $this->display(); }
public function index() { if (is_file(APP_PATH . 'User/Conf/config.php')) { // 已经安装过了 执行更新程序 session('update', true); $msg = '请删除install.lock文件后再运行升级!'; } else { $msg = '已经成功安装了OneThink,请不要重复安装!'; } if (Storage::has(MODULE_PATH . 'Data/install.lock')) { $this->error($msg); } session_destroy(); session_start(); session('step', 0); session('error', false); $this->display(); }
public function complete() { $step = session('step'); if (!$step) { $this->redirect('index'); } elseif ($step != 3) { $this->redirect("Install/step{$step}"); } // 写入安装锁定文件 Storage::put('./Data/install.lock', 'lock'); if (!session('update')) { //创建配置文件 $this->assign('info', session('config_file')); } session('step', null); session('error', null); session('update', null); $this->display(); }
protected function _initialize() { if (Storage::has('Conf/install.lock')) { $this->error('已经成功安装,请不要重复安装!'); } }
/** * 检查静态HTML文件是否有效 * 如果无效需要重新更新 * @access public * @param string $cacheFile 静态文件名 * @param integer $cacheTime 缓存有效期 * @return boolean */ public static function checkHTMLCache($cacheFile = '', $cacheTime = '') { if (!is_file($cacheFile) && 'sae' != APP_MODE) { return false; } elseif (filemtime(\Think\Think::instance('Think\\View')->parseTemplate()) > Storage::get($cacheFile, 'mtime', 'html')) { // 模板文件如果更新静态文件需要更新 return false; } elseif (!is_numeric($cacheTime) && function_exists($cacheTime)) { return $cacheTime($cacheFile); } elseif ($cacheTime != 0 && NOW_TIME > Storage::get($cacheFile, 'mtime', 'html') + $cacheTime) { // 文件是否在有效期 return false; } //静态文件有效 return true; }
/** * 文件删除 * @param string $filename 文件名 * @param string $type 其他参数 * @return bool */ function file_delete($filename, $type = '') { switch (strtoupper(C('FILE_UPLOAD_TYPE'))) { case 'SAE': $arr = explode('/', ltrim($filename, './')); $domain = array_shift($arr); $filePath = implode('/', $arr); $s = new SaeStorage(); return $s->delete($domain, $filePath); break; case 'FTP': $storage = new \Common\Plugin\Ftp(); return $storage->unlink($filename); break; default: return \Think\Storage::unlink($filename, $type); } }
/** * 创建静态页面 * @access protected * @htmlfile 生成的静态文件名称 * @htmlpath 生成的静态文件路径 * @param string $templateFile 指定要调用的模板文件 * 默认为空 由系统自动定位模板文件 * @return string */ protected function buildHtml($htmlfile = '', $htmlpath = '', $templateFile = '') { $content = $this->fetch($templateFile); $htmlpath = !empty($htmlpath) ? $htmlpath : HTML_PATH; $htmlfile = $htmlpath . $htmlfile . C('HTML_FILE_SUFFIX'); Storage::put($htmlfile, $content, 'html'); return $content; }
protected function _initialize() { if (Storage::has(MODULE_PATH . 'Data/install.lock')) { $this->error('已经成功安装了Amango,请不要重复安装!'); } }
public function complete() { if (session('step') !== '4') { $this->error('请正确安装系统', U('step1')); } //写入安装锁定文件(只能在最后一步写入锁定文件,因为锁定文件写入后安装模块将无法访问) Storage::put('./Data/install.lock', 'lock'); session('step', null); session('error', null); $this->assign('meta_title', "完成"); $this->display(); }
/** * 检查静态HTML文件是否有效 * 如果无效需要重新更新 * @access public * @param string $cacheFile 静态文件名 * @param integer $cacheTime 缓存有效期 * @return boolean */ public static function checkHTMLCache($cacheFile = '', $cacheTime = '') { if (!is_file($cacheFile) && 'sae' != APP_MODE) { return false; } elseif (filemtime(C('TEMPLATE_NAME')) > Storage::get($cacheFile, 'mtime', 'html')) { // 模板文件如果更新静态文件需要更新 return false; } elseif (!is_numeric($cacheTime) && function_exists($cacheTime)) { return $cacheTime($cacheFile); } elseif ($cacheTime != 0 && NOW_TIME > Storage::get($cacheFile, 'mtime', 'html') + $cacheTime) { // 文件是否在有效期 return false; } //静态文件有效 return true; }
protected function _initialize() { if (Storage::has('./Data/install.lock')) { $this->error('已经成功安装了PhPluSer,请不要重复安装!'); } }
/** * 删除文件 */ public function fileDelete($filename) { $filename = urldecode($filename); $filename = preg_replace("/\\.+/", '.', $filename); //屏蔽非法路径 $filename = $this->fileBathPath . $filename; if (\Think\Storage::has($filename)) { if (\Think\Storage::unlink($filename)) { $this->success('操作成功'); } } $this->error('操作失败'); }