$temp_file, 'url' => substr($url, -4) == '.zip' ? $url : '', 'size' => FileSizeByteToUnit(filesize($file_path)), 'time' => date('Y-m-d H:i:s', filectime($file_path)), ]; } } closedir($dh); } } return $result; } /** * 源码包生成 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2018-12-21 * @desc description * @param [array] $params [输入参数] */ public static function Created($params = []) { // 是否https if(config('shopxo.is_develop') == false) { if(__MY_HTTP__ != 'https') { return DataReturn('请使用https协议', -1); } } // 初始化 self::Init($params); // 配置内容 if(empty($params['app_mini_title']) || empty($params['app_mini_describe'])) { return DataReturn('配置信息不能为空', -1); } // 源码包目录是否存在 if(!is_dir(self::$new_root)) { return DataReturn('源码包目录不存在', -1); } // 源码包目录是否有权限 if(!is_writable(self::$new_root)) { return DataReturn('源码包目录没有权限', -1); } // 目录不存在则创建 \base\FileUtil::CreateDir(self::$new_path); // 复制包目录 $new_dir = self::$new_path.DS.date('YmdHis'); if(\base\FileUtil::CopyDir(self::$old_path, $new_dir) != true) { return DataReturn('项目包复制失败', -2); } // 校验基础文件是否存在 if(!file_exists($new_dir.DS.'app.js') || !file_exists($new_dir.DS.'app.json')) { return DataReturn('包基础文件不存在,请重新生成', -3); } // 替换内容 // app.js $status = file_put_contents($new_dir.DS.'app.js', str_replace(['{{request_url}}', '{{application_title}}', '{{application_describe}}'], [__MY_URL__, $params['app_mini_title'], $params['app_mini_describe']], file_get_contents($new_dir.DS.'app.js'))); if($status === false) { return DataReturn('基础配置替换失败', -4); } // app.json $status = file_put_contents($new_dir.DS.'app.json', str_replace(['{{application_title}}'], [$params['app_mini_title']], file_get_contents($new_dir.DS.'app.json'))); if($status === false) { return DataReturn('基础配置替换失败', -4); } // 生成压缩包 $zip = new \base\ZipFolder(); if(!$zip->zip($new_dir.'.zip', $new_dir)) { return DataReturn('压缩包生成失败', -100); } // 生成成功删除目录 \base\FileUtil::UnlinkDir($new_dir); return DataReturn('生成成功', 0); } /** * 源码包删除 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2018-12-21 * @desc description * @param [array] $params [输入参数] */ public static function Delete($params = []) { // 参数 if(empty($params['id'])) { return DataReturn('操作id不能为空', -10); } // 初始化 self::Init($params); // 目录处理 $suffix = ''; if(substr($params['id'], -4) === '.zip') { $name = substr($params['id'], 0, strlen($params['id'])-4); $suffix = '.zip'; } else { $name = $params['id']; } // 防止路径回溯 $path = self::$new_path.DS.htmlentities(str_replace(array('.', '/', '\\', ':'), '', strip_tags($name))).$suffix; // 删除压缩包 if($suffix == '.zip') { $status = \base\FileUtil::UnlinkFile($path); } else { $status = \base\FileUtil::UnlinkDir($path); } if($status) { return DataReturn('删除成功'); } return DataReturn('删除失败或资源不存在', -100); } } ?>