diff --git a/composer.lock b/composer.lock index e3ba31c32e62bcb27e166a914f166b3886e31ad5..1935985874eb66f011515cb3dfeb132618ab9ab5 100644 --- a/composer.lock +++ b/composer.lock @@ -52,20 +52,30 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.14.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", "shasum": "" }, "require": { - "php": ">=5.2" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" }, "type": "library", "autoload": { @@ -97,22 +107,22 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, - "time": "2021-12-25T01:21:49+00:00" + "time": "2022-09-18T07:06:19+00:00" }, { "name": "league/flysystem", - "version": "1.1.9", + "version": "1.1.10", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", "shasum": "" }, "require": { @@ -185,7 +195,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" }, "funding": [ { @@ -193,7 +203,7 @@ "type": "other" } ], - "time": "2021-12-09T09:40:50+00:00" + "time": "2022-10-04T09:16:37+00:00" }, { "name": "league/flysystem-cached-adapter", @@ -405,16 +415,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.6.4", + "version": "v6.6.5", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b" + "reference": "8b6386d7417526d1ea4da9edb70b8352f7543627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b", - "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8b6386d7417526d1ea4da9edb70b8352f7543627", + "reference": "8b6386d7417526d1ea4da9edb70b8352f7543627", "shasum": "" }, "require": { @@ -438,8 +448,8 @@ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", + "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" }, "type": "library", "autoload": { @@ -471,7 +481,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.5" }, "funding": [ { @@ -479,7 +489,7 @@ "type": "github" } ], - "time": "2022-08-22T09:22:00+00:00" + "time": "2022-10-07T12:23:10+00:00" }, { "name": "psr/cache", @@ -1094,16 +1104,16 @@ }, { "name": "topthink/framework", - "version": "v6.0.13", + "version": "v6.0.14", "source": { "type": "git", "url": "https://github.com/top-think/framework.git", - "reference": "126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6" + "reference": "e621c239492d4f7e276e166b16aba3fb933d501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6", - "reference": "126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6", + "url": "https://api.github.com/repos/top-think/framework/zipball/e621c239492d4f7e276e166b16aba3fb933d501e", + "reference": "e621c239492d4f7e276e166b16aba3fb933d501e", "shasum": "" }, "require": { @@ -1155,9 +1165,9 @@ ], "support": { "issues": "https://github.com/top-think/framework/issues", - "source": "https://github.com/top-think/framework/tree/v6.0.13" + "source": "https://github.com/top-think/framework/tree/v6.0.14" }, - "time": "2022-07-15T02:52:08+00:00" + "time": "2022-10-25T14:45:56+00:00" }, { "name": "topthink/think-helper", @@ -1207,16 +1217,16 @@ }, { "name": "topthink/think-orm", - "version": "v2.0.54", + "version": "v2.0.55", "source": { "type": "git", "url": "https://github.com/top-think/think-orm.git", - "reference": "97b061b47616301ff29fbd4c35ed9184e1162e4e" + "reference": "e1974a4c3b1b4c5b808fcc0863fc254e711dee13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/97b061b47616301ff29fbd4c35ed9184e1162e4e", - "reference": "97b061b47616301ff29fbd4c35ed9184e1162e4e", + "url": "https://api.github.com/repos/top-think/think-orm/zipball/e1974a4c3b1b4c5b808fcc0863fc254e711dee13", + "reference": "e1974a4c3b1b4c5b808fcc0863fc254e711dee13", "shasum": "" }, "require": { @@ -1256,9 +1266,9 @@ ], "support": { "issues": "https://github.com/top-think/think-orm/issues", - "source": "https://github.com/top-think/think-orm/tree/v2.0.54" + "source": "https://github.com/top-think/think-orm/tree/v2.0.55" }, - "time": "2022-07-05T05:25:51+00:00" + "time": "2022-09-27T14:18:43+00:00" }, { "name": "xia/migration", @@ -1312,21 +1322,21 @@ "packages-dev": [ { "name": "topthink/think-trace", - "version": "v1.4", + "version": "v1.5", "source": { "type": "git", "url": "https://github.com/top-think/think-trace.git", - "reference": "9a9fa8f767b6c66c5a133ad21ca1bc96ad329444" + "reference": "55027fd79abb744f32a3be8d9e1ccf873a3ca9b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-trace/zipball/9a9fa8f767b6c66c5a133ad21ca1bc96ad329444", - "reference": "9a9fa8f767b6c66c5a133ad21ca1bc96ad329444", + "url": "https://api.github.com/repos/top-think/think-trace/zipball/55027fd79abb744f32a3be8d9e1ccf873a3ca9b7", + "reference": "55027fd79abb744f32a3be8d9e1ccf873a3ca9b7", "shasum": "" }, "require": { "php": ">=7.1.0", - "topthink/framework": "^6.0.0" + "topthink/framework": "^6.0" }, "type": "library", "extra": { @@ -1357,9 +1367,9 @@ "description": "thinkphp debug trace", "support": { "issues": "https://github.com/top-think/think-trace/issues", - "source": "https://github.com/top-think/think-trace/tree/v1.4" + "source": "https://github.com/top-think/think-trace/tree/v1.5" }, - "time": "2020-06-29T05:27:28+00:00" + "time": "2022-10-26T07:56:45+00:00" } ], "aliases": [], diff --git a/public/static/js/admin.js b/public/static/js/admin.js index 4904fd582d51ef4219853f14ef0e015afdfaf10a..0d13ae3de98e2babe723d33d0098f735d4bdc21c 100644 --- a/public/static/js/admin.js +++ b/public/static/js/admin.js @@ -873,7 +873,6 @@ function openIframeDialog(url, title, options) { /** * 打开地图对话框 - * * @param url * @param title * @param options @@ -915,61 +914,31 @@ function openMapDialog(url, title, options, callback) { * @param multi 是否可以多选 * @param filetype 文件类型,image,video,audio,file * @param app 应用名,CMF的应用名 + * @param openIn 打开窗口 */ -function openUploadDialog(dialog_title, callback, extra_params, multi, filetype, app) { - Wind.css('artDialog'); +function openUploadDialog(dialog_title, callback, extra_params, multi, filetype, app, openIn) { multi = multi ? 1 : 0; filetype = filetype ? filetype : 'image'; app = app ? app : GV.APP; var params = '&multi=' + multi + '&filetype=' + filetype + '&app=' + app; - openIframeLayer(GV.ROOT + 'user/Asset/webuploader?' + params, dialog_title, { - btn: ['确定'], - area: ['600px', '450px'], - yes: function (index, layero) { + openIn = openIn ? openIn : window; + openIn.openIframeLayer(GV.ROOT + 'user/Asset/webuploader?' + params, dialog_title, { + btn: ['确定'], area: ['600px', '450px'], yes: function (index, layero) { if (typeof callback == 'function') { - var body = layer.getChildFrame('body', index); + // var body = openIn.layer.getChildFrame('body', index); //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method(); - var iframeWin = window[layero.find('iframe')[0]['name']]; + var iframeWin = openIn[layero.find('iframe')[0]['name']]; var files = iframeWin.get_selected_files(); console.log(files); if (files && files.length > 0) { callback.apply(this, [this, files, extra_params]); - layer.close(index); + openIn.layer.close(index); } else { // return false; } - - } } - }) - return; - Wind.use("artDialog", "iframeTools", function () { - art.dialog.open(GV.ROOT + 'user/Asset/webuploader?' + params, { - title: dialog_title, - id: new Date().getTime(), - width: '600px', - height: '350px', - lock: true, - fixed: true, - background: "#CCCCCC", - opacity: 0, - ok: function () { - if (typeof callback == 'function') { - var iframewindow = this.iframe.contentWindow; - var files = iframewindow.get_selected_files(); - console.log(files); - if (files && files.length > 0) { - callback.apply(this, [this, files, extra_params]); - } else { - return false; - } - - } - }, - cancel: true - }); }); } @@ -980,34 +949,56 @@ function openUploadDialog(dialog_title, callback, extra_params, multi, filetype, * @param filetype 文件类型,image,video,audio,file * @param extra_params 额外参数,object * @param app 应用名,CMF的应用名 + * @param openIn 打开窗口 */ -function uploadOne(dialog_title, input_selector, filetype, extra_params, app) { +function uploadOne(dialog_title, input_selector, filetype, extra_params, app, openIn) { filetype = filetype ? filetype : 'file'; openUploadDialog(dialog_title, function (dialog, files) { $(input_selector).val(files[0].filepath); $(input_selector + '-preview').attr('href', files[0].preview_url); - $(input_selector + '-name').val(files[0].name); $(input_selector + '-name-text').text(files[0].name); - }, extra_params, 0, filetype, app); + }, extra_params, 0, filetype, app, openIn); } /** - * 单个图片上传 + * 单个文件上传(在父级窗口打开) * @param dialog_title 上传对话框标题 * @param input_selector 图片容器 + * @param filetype 文件类型,image,video,audio,file * @param extra_params 额外参数,object * @param app 应用名,CMF的应用名 */ -function uploadOneImage(dialog_title, input_selector, extra_params, app) { +function parentUploadOne(dialog_title, input_selector, filetype, extra_params, app) { + uploadOne(dialog_title, input_selector, filetype, extra_params, app, parent); +} + +/** + * 单个图片上传 + * @param dialog_title 上传对话框标题 + * @param input_selector 图片容器 + * @param extra_params 额外参数,object + * @param app 应用名,CMF的应用名 + * @param openIn 打开窗口 + */ +function uploadOneImage(dialog_title, input_selector, extra_params, app, openIn) { openUploadDialog(dialog_title, function (dialog, files) { $(input_selector).val(files[0].filepath); $(input_selector + '-preview').attr('src', files[0].preview_url); - $(input_selector + '-name').val(files[0].name); $(input_selector + '-name-text').text(files[0].name); + }, extra_params, 0, 'image', app, openIn); +} - }, extra_params, 0, 'image', app); +/** + * 单个图片上传(在父级窗口打开) + * @param dialog_title 上传对话框标题 + * @param input_selector 图片容器 + * @param extra_params 额外参数,object + * @param app 应用名,CMF的应用名 + */ +function parentUploadOneImage(dialog_title, input_selector, extra_params, app) { + uploadOneImage(dialog_title, input_selector, extra_params, app, parent); } /** @@ -1016,9 +1007,10 @@ function uploadOneImage(dialog_title, input_selector, extra_params, app) { * @param container_selector 图片容器 * @param item_tpl_wrapper_id 单个图片html模板容器id * @param extra_params 额外参数,object - * @param app 应用名,CMF 的应用名 + * @param app 应用名,CMF的应用名 + * @param openIn 打开窗口 */ -function uploadMultiImage(dialog_title, container_selector, item_tpl_wrapper_id, extra_params, app) { +function uploadMultiImage(dialog_title, container_selector, item_tpl_wrapper_id, extra_params, app, openIn) { openUploadDialog(dialog_title, function (dialog, files) { var tpl = $('#' + item_tpl_wrapper_id).html(); var html = ''; @@ -1033,7 +1025,19 @@ function uploadMultiImage(dialog_title, container_selector, item_tpl_wrapper_id, }); $(container_selector).append(html); - }, extra_params, 1, 'image', app); + }, extra_params, 1, 'image', app, openIn); +} + +/** + * 多图上传(在父级窗口打开) + * @param dialog_title 上传对话框标题 + * @param container_selector 图片容器 + * @param item_tpl_wrapper_id 单个图片html模板容器id + * @param extra_params 额外参数,object + * @param app 应用名,CMF的应用名 + */ +function parentUploadMultiImage(dialog_title, container_selector, item_tpl_wrapper_id, extra_params, app) { + uploadMultiImage(dialog_title, container_selector, item_tpl_wrapper_id, extra_params, app, parent) } /** @@ -1044,8 +1048,9 @@ function uploadMultiImage(dialog_title, container_selector, item_tpl_wrapper_id, * @param filetype 文件类型,image,video,audio,file * @param extra_params 额外参数,object * @param app 应用名,CMF 的应用名 + * @param openIn 打开窗口 */ -function uploadMultiFile(dialog_title, container_selector, item_tpl_wrapper_id, filetype, extra_params, app) { +function uploadMultiFile(dialog_title, container_selector, item_tpl_wrapper_id, filetype, extra_params, app, openIn) { filetype = filetype ? filetype : 'file'; openUploadDialog(dialog_title, function (dialog, files) { var tpl = $('#' + item_tpl_wrapper_id).html(); @@ -1061,7 +1066,20 @@ function uploadMultiFile(dialog_title, container_selector, item_tpl_wrapper_id, }); $(container_selector).append(html); - }, extra_params, 1, filetype, app); + }, extra_params, 1, filetype, app, openIn); +} + +/** + * 多文件上传 + * @param dialog_title 上传对话框标题 + * @param container_selector 图片容器 + * @param item_tpl_wrapper_id 单个图片html模板容器id + * @param filetype 文件类型,image,video,audio,file + * @param extra_params 额外参数,object + * @param app 应用名,CMF 的应用名 + */ +function parentUploadMultiFile(dialog_title, container_selector, item_tpl_wrapper_id, filetype, extra_params, app, openIn) { + uploadMultiFile(dialog_title, container_selector, item_tpl_wrapper_id, filetype, extra_params, app, parent) } /** diff --git a/public/themes/default/demo/index.html b/public/themes/default/demo/index.html index 866685d59e1781ba84916434c61680b79f303b2e..fc3cfccad2f5422411aecabd0468dbef2f89db2e 100644 --- a/public/themes/default/demo/index.html +++ b/public/themes/default/demo/index.html @@ -6,8 +6,10 @@ ThinkCMF {$site_info.site_name|default=''} - - + + + + @@ -100,13 +102,13 @@

请用键盘上的方向键或空格键导航

- - + diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 2ec2895e0a6e98df3b822c557e734df6aac673d9..27e5bc9f8907500153e691a8d946d47e974e16af 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -11,7 +11,7 @@ return array( 'think\\trace\\' => array($vendorDir . '/topthink/think-trace/src'), 'think\\migration\\' => array($vendorDir . '/xia/migration/src'), 'think\\captcha\\' => array($vendorDir . '/thinkcmf/cmf-captcha/src'), - 'think\\' => array($vendorDir . '/thinkcmf/cmf/think', $vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src'), + 'think\\' => array($vendorDir . '/thinkcmf/cmf/think', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/framework/src/think'), 'themes\\' => array($baseDir . '/public/themes'), 'plugins\\' => array($baseDir . '/public/plugins'), 'mindplay\\annotations\\' => array($vendorDir . '/mindplay/annotations/src/annotations'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 016fc2359d7cf4069ea571550f391f306111dbfd..e009cea4118e378f9d5ad826334896b99e811a58 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -92,9 +92,9 @@ class ComposerStaticInit409e436a19c882513f3c7d0ffdfd059f 'think\\' => array ( 0 => __DIR__ . '/..' . '/thinkcmf/cmf/think', - 1 => __DIR__ . '/..' . '/topthink/framework/src/think', - 2 => __DIR__ . '/..' . '/topthink/think-helper/src', - 3 => __DIR__ . '/..' . '/topthink/think-orm/src', + 1 => __DIR__ . '/..' . '/topthink/think-helper/src', + 2 => __DIR__ . '/..' . '/topthink/think-orm/src', + 3 => __DIR__ . '/..' . '/topthink/framework/src/think', ), 'themes\\' => array ( diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 7e4f449711becc349977e841124188b8cc402603..f7f1dad61b7b51587d3b4949188e6dcd3d81a50a 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -49,32 +49,42 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.14.0", - "version_normalized": "4.14.0.0", + "version": "v4.16.0", + "version_normalized": "4.16.0.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", "shasum": "" }, "require": { - "php": ">=5.2" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, - "time": "2021-12-25T01:21:49+00:00", + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" + }, + "time": "2022-09-18T07:06:19+00:00", "type": "library", "installation-source": "dist", "autoload": { - "psr-0": { - "HTMLPurifier": "library/" - }, "files": [ "library/HTMLPurifier.composer.php" ], + "psr-0": { + "HTMLPurifier": "library/" + }, "exclude-from-classmap": [ "/library/HTMLPurifier/Language/" ] @@ -97,23 +107,23 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, "install-path": "../ezyang/htmlpurifier" }, { "name": "league/flysystem", - "version": "1.1.9", - "version_normalized": "1.1.9.0", + "version": "1.1.10", + "version_normalized": "1.1.10.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", "shasum": "" }, "require": { @@ -143,7 +153,7 @@ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" }, - "time": "2021-12-09T09:40:50+00:00", + "time": "2022-10-04T09:16:37+00:00", "type": "library", "extra": { "branch-alias": { @@ -188,7 +198,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" }, "funding": [ { @@ -420,17 +430,17 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.6.4", - "version_normalized": "6.6.4.0", + "version": "v6.6.5", + "version_normalized": "6.6.5.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b" + "reference": "8b6386d7417526d1ea4da9edb70b8352f7543627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b", - "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8b6386d7417526d1ea4da9edb70b8352f7543627", + "reference": "8b6386d7417526d1ea4da9edb70b8352f7543627", "shasum": "" }, "require": { @@ -454,10 +464,10 @@ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", + "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" }, - "time": "2022-08-22T09:22:00+00:00", + "time": "2022-10-07T12:23:10+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -489,7 +499,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.5" }, "funding": [ { @@ -1151,17 +1161,17 @@ }, { "name": "topthink/framework", - "version": "v6.0.13", - "version_normalized": "6.0.13.0", + "version": "v6.0.14", + "version_normalized": "6.0.14.0", "source": { "type": "git", "url": "https://github.com/top-think/framework.git", - "reference": "126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6" + "reference": "e621c239492d4f7e276e166b16aba3fb933d501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6", - "reference": "126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6", + "url": "https://api.github.com/repos/top-think/framework/zipball/e621c239492d4f7e276e166b16aba3fb933d501e", + "reference": "e621c239492d4f7e276e166b16aba3fb933d501e", "shasum": "" }, "require": { @@ -1183,7 +1193,7 @@ "mockery/mockery": "^1.2", "phpunit/phpunit": "^7.0" }, - "time": "2022-07-15T02:52:08+00:00", + "time": "2022-10-25T14:45:56+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1215,7 +1225,7 @@ ], "support": { "issues": "https://github.com/top-think/framework/issues", - "source": "https://github.com/top-think/framework/tree/v6.0.13" + "source": "https://github.com/top-think/framework/tree/v6.0.14" }, "install-path": "../topthink/framework" }, @@ -1270,17 +1280,17 @@ }, { "name": "topthink/think-orm", - "version": "v2.0.54", - "version_normalized": "2.0.54.0", + "version": "v2.0.55", + "version_normalized": "2.0.55.0", "source": { "type": "git", "url": "https://github.com/top-think/think-orm.git", - "reference": "97b061b47616301ff29fbd4c35ed9184e1162e4e" + "reference": "e1974a4c3b1b4c5b808fcc0863fc254e711dee13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/97b061b47616301ff29fbd4c35ed9184e1162e4e", - "reference": "97b061b47616301ff29fbd4c35ed9184e1162e4e", + "url": "https://api.github.com/repos/top-think/think-orm/zipball/e1974a4c3b1b4c5b808fcc0863fc254e711dee13", + "reference": "e1974a4c3b1b4c5b808fcc0863fc254e711dee13", "shasum": "" }, "require": { @@ -1294,7 +1304,7 @@ "require-dev": { "phpunit/phpunit": "^7|^8|^9.5" }, - "time": "2022-07-05T05:25:51+00:00", + "time": "2022-09-27T14:18:43+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1322,30 +1332,30 @@ ], "support": { "issues": "https://github.com/top-think/think-orm/issues", - "source": "https://github.com/top-think/think-orm/tree/v2.0.54" + "source": "https://github.com/top-think/think-orm/tree/v2.0.55" }, "install-path": "../topthink/think-orm" }, { "name": "topthink/think-trace", - "version": "v1.4", - "version_normalized": "1.4.0.0", + "version": "v1.5", + "version_normalized": "1.5.0.0", "source": { "type": "git", "url": "https://github.com/top-think/think-trace.git", - "reference": "9a9fa8f767b6c66c5a133ad21ca1bc96ad329444" + "reference": "55027fd79abb744f32a3be8d9e1ccf873a3ca9b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-trace/zipball/9a9fa8f767b6c66c5a133ad21ca1bc96ad329444", - "reference": "9a9fa8f767b6c66c5a133ad21ca1bc96ad329444", + "url": "https://api.github.com/repos/top-think/think-trace/zipball/55027fd79abb744f32a3be8d9e1ccf873a3ca9b7", + "reference": "55027fd79abb744f32a3be8d9e1ccf873a3ca9b7", "shasum": "" }, "require": { "php": ">=7.1.0", - "topthink/framework": "^6.0.0" + "topthink/framework": "^6.0" }, - "time": "2020-06-29T05:27:28+00:00", + "time": "2022-10-26T07:56:45+00:00", "type": "library", "extra": { "think": { @@ -1376,7 +1386,7 @@ "description": "thinkphp debug trace", "support": { "issues": "https://github.com/top-think/think-trace/issues", - "source": "https://github.com/top-think/think-trace/tree/v1.4" + "source": "https://github.com/top-think/think-trace/tree/v1.5" }, "install-path": "../topthink/think-trace" }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 92bab3216a16a0d3d9fab588494c63e056f5bc2d..17711ac847d2d313937a815b8e5dc347c60db365 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -20,21 +20,21 @@ 'dev_requirement' => false, ), 'ezyang/htmlpurifier' => array( - 'pretty_version' => 'v4.14.0', - 'version' => '4.14.0.0', + 'pretty_version' => 'v4.16.0', + 'version' => '4.16.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../ezyang/htmlpurifier', 'aliases' => array(), - 'reference' => '12ab42bd6e742c70c0a52f7b82477fcd44e64b75', + 'reference' => '523407fb06eb9e5f3d59889b3978d5bfe94299c8', 'dev_requirement' => false, ), 'league/flysystem' => array( - 'pretty_version' => '1.1.9', - 'version' => '1.1.9.0', + 'pretty_version' => '1.1.10', + 'version' => '1.1.10.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/flysystem', 'aliases' => array(), - 'reference' => '094defdb4a7001845300334e7c1ee2335925ef99', + 'reference' => '3239285c825c152bcc315fe0e87d6b55f5972ed1', 'dev_requirement' => false, ), 'league/flysystem-cached-adapter' => array( @@ -80,12 +80,12 @@ ), ), 'phpmailer/phpmailer' => array( - 'pretty_version' => 'v6.6.4', - 'version' => '6.6.4.0', + 'pretty_version' => 'v6.6.5', + 'version' => '6.6.5.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpmailer/phpmailer', 'aliases' => array(), - 'reference' => 'a94fdebaea6bd17f51be0c2373ab80d3d681269b', + 'reference' => '8b6386d7417526d1ea4da9edb70b8352f7543627', 'dev_requirement' => false, ), 'psr/cache' => array( @@ -215,12 +215,12 @@ 'dev_requirement' => false, ), 'topthink/framework' => array( - 'pretty_version' => 'v6.0.13', - 'version' => '6.0.13.0', + 'pretty_version' => 'v6.0.14', + 'version' => '6.0.14.0', 'type' => 'library', 'install_path' => __DIR__ . '/../topthink/framework', 'aliases' => array(), - 'reference' => '126d5b2cbacb73d6e2a85cbc7a2c6ee59d0b3fa6', + 'reference' => 'e621c239492d4f7e276e166b16aba3fb933d501e', 'dev_requirement' => false, ), 'topthink/think-helper' => array( @@ -233,21 +233,21 @@ 'dev_requirement' => false, ), 'topthink/think-orm' => array( - 'pretty_version' => 'v2.0.54', - 'version' => '2.0.54.0', + 'pretty_version' => 'v2.0.55', + 'version' => '2.0.55.0', 'type' => 'library', 'install_path' => __DIR__ . '/../topthink/think-orm', 'aliases' => array(), - 'reference' => '97b061b47616301ff29fbd4c35ed9184e1162e4e', + 'reference' => 'e1974a4c3b1b4c5b808fcc0863fc254e711dee13', 'dev_requirement' => false, ), 'topthink/think-trace' => array( - 'pretty_version' => 'v1.4', - 'version' => '1.4.0.0', + 'pretty_version' => 'v1.5', + 'version' => '1.5.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../topthink/think-trace', 'aliases' => array(), - 'reference' => '9a9fa8f767b6c66c5a133ad21ca1bc96ad329444', + 'reference' => '55027fd79abb744f32a3be8d9e1ccf873a3ca9b7', 'dev_requirement' => true, ), 'xia/migration' => array( diff --git a/vendor/ezyang/htmlpurifier/CHANGELOG.md b/vendor/ezyang/htmlpurifier/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..55cb9029cd98386d3fcb5f1b3ec3c2541081ee45 --- /dev/null +++ b/vendor/ezyang/htmlpurifier/CHANGELOG.md @@ -0,0 +1,6 @@ +# [4.16.0](https://github.com/ezyang/htmlpurifier/compare/v4.15.0...v4.16.0) (2022-09-18) + + +### Features + +* add semantic release ([#307](https://github.com/ezyang/htmlpurifier/issues/307)) ([db31243](https://github.com/ezyang/htmlpurifier/commit/db312435cb9d8d73395f75f9642a43ba6de5e903)), closes [#322](https://github.com/ezyang/htmlpurifier/issues/322) [#323](https://github.com/ezyang/htmlpurifier/issues/323) [#326](https://github.com/ezyang/htmlpurifier/issues/326) [#327](https://github.com/ezyang/htmlpurifier/issues/327) [#328](https://github.com/ezyang/htmlpurifier/issues/328) [#329](https://github.com/ezyang/htmlpurifier/issues/329) [#330](https://github.com/ezyang/htmlpurifier/issues/330) [#331](https://github.com/ezyang/htmlpurifier/issues/331) [#332](https://github.com/ezyang/htmlpurifier/issues/332) [#333](https://github.com/ezyang/htmlpurifier/issues/333) [#337](https://github.com/ezyang/htmlpurifier/issues/337) [#335](https://github.com/ezyang/htmlpurifier/issues/335) [ezyang/htmlpurifier#334](https://github.com/ezyang/htmlpurifier/issues/334) [#336](https://github.com/ezyang/htmlpurifier/issues/336) [#338](https://github.com/ezyang/htmlpurifier/issues/338) diff --git a/vendor/ezyang/htmlpurifier/VERSION b/vendor/ezyang/htmlpurifier/VERSION index 09ce0ce71bd318415b897c1e4747e0960e2029ad..f029ee57423544f598afc76bfb69612fbbfe473d 100644 --- a/vendor/ezyang/htmlpurifier/VERSION +++ b/vendor/ezyang/htmlpurifier/VERSION @@ -1 +1 @@ -4.14.0 \ No newline at end of file +4.15.0 \ No newline at end of file diff --git a/vendor/ezyang/htmlpurifier/composer.json b/vendor/ezyang/htmlpurifier/composer.json index 5f62d889dce53fe73e9e48bae45a15059f3a374e..d7558295096f974e66d00a71f1dcb6251bbf2b37 100644 --- a/vendor/ezyang/htmlpurifier/composer.json +++ b/vendor/ezyang/htmlpurifier/composer.json @@ -13,7 +13,11 @@ } ], "require": { - "php": ">=5.2" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" }, "autoload": { "psr-0": { "HTMLPurifier": "library/" }, @@ -21,5 +25,20 @@ "exclude-from-classmap": [ "/library/HTMLPurifier/Language/" ] - } + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-tidy": "Used for pretty-printing HTML" + }, + "config": { + "sort-packages": true + }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/ezyang/simpletest.git" + } + ] } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php index ee81cac68b957cbf635f9581b3bbee8383f47535..47ee0133d4aeb559e2c39be064cbbf517c139899 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php @@ -7,7 +7,7 @@ * primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS * FILE, changes will be overwritten the next time the script is run. * - * @version 4.14.0 + * @version 4.15.0 * * @warning * You must *not* include any other HTML Purifier files before this file, @@ -107,6 +107,7 @@ require 'HTMLPurifier/AttrDef/HTML/Bool.php'; require 'HTMLPurifier/AttrDef/HTML/Nmtokens.php'; require 'HTMLPurifier/AttrDef/HTML/Class.php'; require 'HTMLPurifier/AttrDef/HTML/Color.php'; +require 'HTMLPurifier/AttrDef/HTML/ContentEditable.php'; require 'HTMLPurifier/AttrDef/HTML/FrameTarget.php'; require 'HTMLPurifier/AttrDef/HTML/ID.php'; require 'HTMLPurifier/AttrDef/HTML/Pixels.php'; diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php index 2177fc851726e03a72fcf76fcb1a3a11285a94eb..26f061276f7cfa5141f581ffde59e57521961533 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php @@ -19,7 +19,7 @@ */ /* - HTML Purifier 4.14.0 - Standards Compliant HTML Filtering + HTML Purifier 4.15.0 - Standards Compliant HTML Filtering Copyright (C) 2006-2008 Edward Z. Yang This library is free software; you can redistribute it and/or @@ -58,12 +58,12 @@ class HTMLPurifier * Version of HTML Purifier. * @type string */ - public $version = '4.14.0'; + public $version = '4.15.0'; /** * Constant with version of HTML Purifier. */ - const VERSION = '4.14.0'; + const VERSION = '4.15.0'; /** * Global configuration object. diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php index a3261f8a327a175ec04a5d2c3e931831575c984b..94543f593de8cf22c1bcbd1028a850fc8931dbde 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php @@ -101,6 +101,7 @@ require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Bool.php'; require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Nmtokens.php'; require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Class.php'; require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Color.php'; +require_once $__dir . '/HTMLPurifier/AttrDef/HTML/ContentEditable.php'; require_once $__dir . '/HTMLPurifier/AttrDef/HTML/FrameTarget.php'; require_once $__dir . '/HTMLPurifier/AttrDef/HTML/ID.php'; require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Pixels.php'; diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php index 36079b786ffe381d92384200622b02f546b0cc70..5a1fdbbfcc857e19e04c9c6f37cdf459e58bcde1 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php @@ -8,6 +8,11 @@ class HTMLPurifier_AttrTransform_NameSync extends HTMLPurifier_AttrTransform { + /** + * @type HTMLPurifier_AttrDef_HTML_ID + */ + public $idDef; + public function __construct() { $this->idDef = new HTMLPurifier_AttrDef_HTML_ID(); diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeParam.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeParam.php index 1143b4b49301e6e58669a4aacc27908f4ad1f311..1033106b387aa8c5ccaf7e8cd14b38930a10b55b 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeParam.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeParam.php @@ -24,6 +24,11 @@ class HTMLPurifier_AttrTransform_SafeParam extends HTMLPurifier_AttrTransform */ private $uri; + /** + * @type HTMLPurifier_AttrDef_Enum + */ + public $wmode; + public function __construct() { $this->uri = new HTMLPurifier_AttrDef_URI(true); // embedded diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php index 3b70520b6ad99cdc5069ae863f9463b277f9112a..e4429e86d874bfc41179ce826fa6628932942d92 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php @@ -41,6 +41,7 @@ class HTMLPurifier_AttrTypes $this->info['IAlign'] = self::makeEnum('top,middle,bottom,left,right'); $this->info['LAlign'] = self::makeEnum('top,bottom,left,right'); $this->info['FrameTarget'] = new HTMLPurifier_AttrDef_HTML_FrameTarget(); + $this->info['ContentEditable'] = new HTMLPurifier_AttrDef_HTML_ContentEditable(); // unimplemented aliases $this->info['ContentType'] = new HTMLPurifier_AttrDef_Text(); diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/List.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/List.php index 4fc70e0efa763887596e3ef9af1bd998bc6104a4..3d584e727124b9da4ff13f95c7f25d556204cec7 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/List.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/List.php @@ -22,6 +22,8 @@ class HTMLPurifier_ChildDef_List extends HTMLPurifier_ChildDef // XXX: This whole business with 'wrap' is all a bit unsatisfactory public $elements = array('li' => true, 'ul' => true, 'ol' => true); + public $whitespace; + /** * @param array $children * @param HTMLPurifier_Config $config diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php index 16a6b322b5e33c07f844b6c28869298a34bd41b4..797d2687792d0fa54d832eace47ad9e2e891ba37 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php @@ -21,7 +21,7 @@ class HTMLPurifier_Config * HTML Purifier's version * @type string */ - public $version = '4.14.0'; + public $version = '4.15.0'; /** * Whether or not to automatically finalize diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php index d5311cedcf378ae2733aac5110ddebc75746e385..57cfd2bb08047bc3c5d09fa016e1b18e9992ef5d 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php @@ -176,7 +176,7 @@ class HTMLPurifier_ElementDef if (!empty($def->content_model)) { $this->content_model = - str_replace("#SUPER", $this->content_model, $def->content_model); + str_replace("#SUPER", (string)$this->content_model, $def->content_model); $this->child = false; } if (!empty($def->content_model_type)) { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php index 40a24266a4645ea80e66ce33f831b104cbb40269..d4791cc1b61f1fb4abb36f4b3a759ea646e21440 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php @@ -398,8 +398,8 @@ class HTMLPurifier_Encoder // characters to their true byte-wise ASCII/UTF-8 equivalents. $str = strtr($str, self::testEncodingSupportsASCII($encoding)); return $str; - } elseif ($encoding === 'iso-8859-1') { - $str = utf8_encode($str); + } elseif ($encoding === 'iso-8859-1' && function_exists('mb_convert_encoding')) { + $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1'); return $str; } $bug = HTMLPurifier_Encoder::testIconvTruncateBug(); @@ -450,8 +450,8 @@ class HTMLPurifier_Encoder // Normal stuff $str = self::iconv('utf-8', $encoding . '//IGNORE', $str); return $str; - } elseif ($encoding === 'iso-8859-1') { - $str = utf8_decode($str); + } elseif ($encoding === 'iso-8859-1' && function_exists('mb_convert_encoding')) { + $str = mb_convert_encoding($str, 'ISO-8859-1', 'UTF-8'); return $str; } trigger_error('Encoding not supported', E_USER_ERROR); diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php index a96ab1bef11864c43ee55ba22ffce2c7b21fa6d1..7220c14cc7c479d34dc2c532f077c94312f24f95 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php @@ -17,6 +17,7 @@ class HTMLPurifier_HTMLModule_CommonAttributes extends HTMLPurifier_HTMLModule 'class' => 'Class', 'id' => 'ID', 'title' => 'CDATA', + 'contenteditable' => 'ContentEditable', ), 'Lang' => array(), 'I18N' => array( diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php index 9ee7aa84d71600d4f87642ea0d17e8215bcc0787..42d514447408b66f25ab5a9a2b48dca00003ec7e 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php @@ -31,6 +31,16 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In */ private $context; + /** + * @type SplObjectStorage + */ + private $markForDeletion; + + public function __construct() + { + $this->markForDeletion = new SplObjectStorage(); + } + public function prepare($config, $context) { $this->attrValidator = new HTMLPurifier_AttrValidator(); @@ -64,7 +74,7 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') { // Mark closing span tag for deletion - $current->markForDeletion = true; + $this->markForDeletion->attach($current); // Delete open span tag $token = false; } @@ -75,7 +85,8 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In */ public function handleEnd(&$token) { - if ($token->markForDeletion) { + if ($this->markForDeletion->contains($token)) { + $this->markForDeletion->detach($token); $token = false; } } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php index e70da55a923d755f861310d823258cfa10f56d98..b6ea12345dade75c501d6ff4a961f7a3686e9578 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php @@ -78,7 +78,7 @@ class HTMLPurifier_Length if ($this->n === '0' && $this->unit === false) { return true; } - if (!ctype_lower($this->unit)) { + if ($this->unit === false || !ctype_lower($this->unit)) { $this->unit = strtolower($this->unit); } if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php index e9da3ed5e94400793bedd4bd437cc01620081912..c21f364919c163e13b2b70aa5fc73a533be32ee1 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php @@ -48,6 +48,11 @@ class HTMLPurifier_Lexer */ public $tracksLineNumbers = false; + /** + * @type HTMLPurifier_EntityParser + */ + private $_entity_parser; + // -- STATIC ---------------------------------------------------------- /** @@ -306,8 +311,8 @@ class HTMLPurifier_Lexer { // normalize newlines to \n if ($config->get('Core.NormalizeNewlines')) { - $html = str_replace("\r\n", "\n", $html); - $html = str_replace("\r", "\n", $html); + $html = str_replace("\r\n", "\n", (string)$html); + $html = str_replace("\r", "\n", (string)$html); } if ($config->get('HTML.Trusted')) { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php index 72476ddf32bd923c52b0159d3ea5dc8d26bacf7a..1564f283dc0afc8273ce0012a3f7735cfc88e9e8 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php @@ -4410,7 +4410,7 @@ class HTML5TreeConstructer foreach ($token['attr'] as $attr) { if (!$el->hasAttribute($attr['name'])) { - $el->setAttribute($attr['name'], $attr['value']); + $el->setAttribute($attr['name'], (string)$attr['value']); } } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php index 15b330ea308e63de24e3f05f1546e4f539837d70..f68fc8c30fc341a1aa67b60428da3e3f1dccc0af 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php @@ -29,6 +29,7 @@ class HTMLPurifier_PropertyListIterator extends FilterIterator /** * @return bool */ + #[\ReturnTypeWillChange] public function accept() { $key = $this->getInnerIterator()->key(); diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php index c07370197a968a4677ce88aff28fd87b0732853f..c41ae3a76d55523a56e93b0c31a76ccb73403351 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php @@ -20,6 +20,7 @@ class HTMLPurifier_StringHash extends ArrayObject * @param mixed $index * @return mixed */ + #[\ReturnTypeWillChange] public function offsetGet($index) { $this->accessed[$index] = true; diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php index a6645c17ee6dcca4e41eb2f1c611d8bbafab4d83..32197c0e61471710aa4df77fef99d1918542e490 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php @@ -35,7 +35,7 @@ class HTMLPurifier_URIFilter_HostBlacklist extends HTMLPurifier_URIFilter public function filter(&$uri, $config, $context) { foreach ($this->blacklist as $blacklisted_host_fragment) { - if (strpos($uri->host, $blacklisted_host_fragment) !== false) { + if ($uri->host !== null && strpos($uri->host, $blacklisted_host_fragment) !== false) { return false; } } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php index 6e03315a17bca83bedc5b41e3b9ee773d4f865d0..e1393deb739ecbe18149cafc159ef8f0e27d90a8 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php @@ -100,11 +100,11 @@ class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter $string = $uri->toString(); // always available $this->replace['%s'] = $string; - $this->replace['%r'] = $context->get('EmbeddedURI', true); - $token = $context->get('CurrentToken', true); - $this->replace['%n'] = $token ? $token->name : null; - $this->replace['%m'] = $context->get('CurrentAttr', true); - $this->replace['%p'] = $context->get('CurrentCSSProperty', true); + $this->replace['%r'] = $context->get('EmbeddedURI', true) ?: ''; + $token = $context->get('CurrentToken', true) ?: ''; + $this->replace['%n'] = $token ? $token->name : ''; + $this->replace['%m'] = $context->get('CurrentAttr', true) ?: ''; + $this->replace['%p'] = $context->get('CurrentCSSProperty', true) ?: ''; // not always available if ($this->secretKey) { $this->replace['%t'] = hash_hmac("sha256", $string, $this->secretKey); diff --git a/vendor/league/flysystem/src/Adapter/Ftp.php b/vendor/league/flysystem/src/Adapter/Ftp.php index caa8b91d827062f6fd3e0d75e6c5ed91ac8ef48b..b7886bb2db8359c17f5436b7bc83009f5a9505d7 100644 --- a/vendor/league/flysystem/src/Adapter/Ftp.php +++ b/vendor/league/flysystem/src/Adapter/Ftp.php @@ -572,9 +572,9 @@ class Ftp extends AbstractFtpAdapter private function getRawExecResponseCode($command) { - $response = @ftp_raw($this->connection, trim($command)); + $response = @ftp_raw($this->connection, trim($command)) ?: []; - return (int) preg_replace('/\D/', '', implode(' ', $response)); + return (int) preg_replace('/\D/', '', implode(' ', (array) $response)); } private function hasFtpConnection(): bool diff --git a/vendor/phpmailer/phpmailer/VERSION b/vendor/phpmailer/phpmailer/VERSION index a08b5f1e88fb86a8382110ed5ee830b96688b22f..653877f1f9b29317ce7b4675f1d01a8e396da5ff 100644 --- a/vendor/phpmailer/phpmailer/VERSION +++ b/vendor/phpmailer/phpmailer/VERSION @@ -1 +1 @@ -6.6.4 \ No newline at end of file +6.6.5 \ No newline at end of file diff --git a/vendor/phpmailer/phpmailer/composer.json b/vendor/phpmailer/phpmailer/composer.json index 1db6f03d8d251603f6581c9252f886e0e3ac38f8..9275fab481bd0695ffed56f792bd01f1fbac3a1e 100644 --- a/vendor/phpmailer/phpmailer/composer.json +++ b/vendor/phpmailer/phpmailer/composer.json @@ -51,7 +51,7 @@ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", + "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication", "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" }, "autoload": { diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php index 1edba1d7a4e963e1a80a77d2e7d3e09e946e1af8..8b7b38a6ee5fdff2e21e62e5edfe3aaaab70ac9d 100644 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php +++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php @@ -14,16 +14,22 @@ $PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data blev ikke accepteret. $PHPMAILER_LANG['empty_message'] = 'Meddelelsen er uden indhold'; $PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: '; $PHPMAILER_LANG['execute'] = 'Kunne ikke afvikle: '; +$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: '; $PHPMAILER_LANG['file_access'] = 'Kunne ikke tilgå filen: '; $PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: '; $PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: '; $PHPMAILER_LANG['instantiate'] = 'Email funktionen kunne ikke initialiseres.'; $PHPMAILER_LANG['invalid_address'] = 'Udgyldig adresse: '; +$PHPMAILER_LANG['invalid_header'] = 'Ugyldig header navn eller værdi'; +$PHPMAILER_LANG['invalid_hostentry'] = 'Ugyldig hostentry: '; +$PHPMAILER_LANG['invalid_host'] = 'Ugyldig vært: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.'; $PHPMAILER_LANG['provide_address'] = 'Indtast mindst en modtagers email adresse.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere fejlede: '; $PHPMAILER_LANG['signing'] = 'Signeringsfejl: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP kode: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'Yderligere SMTP info: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fejlede.'; +$PHPMAILER_LANG['smtp_detail'] = 'Detalje: '; $PHPMAILER_LANG['smtp_error'] = 'SMTP server fejl: '; $PHPMAILER_LANG['variable_set'] = 'Kunne ikke definere eller nulstille variablen: '; -$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php index 23caa71bee48892bbd61e4069c592915ef3b67c6..b0469fdb7a848344145fc88fe394b861b60a2708 100644 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php +++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php @@ -9,19 +9,18 @@ $PHPMAILER_LANG['authenticate'] = 'Błąd SMTP: Nie można przeprowadzi $PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.'; $PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostały przyjęte.'; $PHPMAILER_LANG['empty_message'] = 'Wiadomość jest pusta.'; -$PHPMAILER_LANG['encoding'] = 'Nieznany sposób kodowania znaków: '; +$PHPMAILER_LANG['encoding'] = 'Błędny sposób kodowania znaków: '; $PHPMAILER_LANG['execute'] = 'Nie można uruchomić: '; $PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: '; $PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: '; -$PHPMAILER_LANG['from_failed'] = 'Następujący adres Nadawcy jest nieprawidłowy: '; +$PHPMAILER_LANG['from_failed'] = 'Następujący adres nadawcy jest nieprawidłowy lub nie istnieje: '; $PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.'; -$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, ' . - 'następujący adres Odbiorcy jest nieprawidłowy: '; -$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email Odbiorcy.'; +$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, ' . 'następujący adres odbiorcy jest nieprawidłowy lub nie istnieje: '; +$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email odbiorcy.'; $PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.'; -$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi: '; +$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi lub nie istnieją: '; $PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.'; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Wywołanie funkcji SMTP Connect() zostało zakończone niepowodzeniem.'; $PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: '; $PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: '; $PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: '; diff --git a/vendor/phpmailer/phpmailer/src/PHPMailer.php b/vendor/phpmailer/phpmailer/src/PHPMailer.php index 62424545a2d42bf772be8fee53c4c07d98676909..7e6c88ff14ebee36c0f418669233c38a447a537b 100644 --- a/vendor/phpmailer/phpmailer/src/PHPMailer.php +++ b/vendor/phpmailer/phpmailer/src/PHPMailer.php @@ -750,7 +750,7 @@ class PHPMailer * * @var string */ - const VERSION = '6.6.4'; + const VERSION = '6.6.5'; /** * Error severity: message only, continue processing. @@ -1671,7 +1671,7 @@ class PHPMailer return $this->mailSend($this->MIMEHeader, $this->MIMEBody); } } catch (Exception $exc) { - if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) { + if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true && $this->smtp->connected()) { $this->smtp->reset(); } $this->setError($exc->getMessage()); @@ -1863,7 +1863,7 @@ class PHPMailer if (!static::isPermittedPath($path)) { return false; } - $readable = file_exists($path); + $readable = is_file($path); //If not a UNC path (expected to start with \\), check read permission, see #2069 if (strpos($path, '\\\\') !== 0) { $readable = $readable && is_readable($path); @@ -2101,6 +2101,9 @@ class PHPMailer $this->smtp->setDebugLevel($this->SMTPDebug); $this->smtp->setDebugOutput($this->Debugoutput); $this->smtp->setVerp($this->do_verp); + if ($this->Host === null) { + $this->Host = 'localhost'; + } $hosts = explode(';', $this->Host); $lastexception = null; diff --git a/vendor/phpmailer/phpmailer/src/POP3.php b/vendor/phpmailer/phpmailer/src/POP3.php index 78e91e49a7348a5038be7aaa7a1f7ad649ac6f6e..a3c9f4532d1a7f6646d676be0cd044a3f4768863 100644 --- a/vendor/phpmailer/phpmailer/src/POP3.php +++ b/vendor/phpmailer/phpmailer/src/POP3.php @@ -46,7 +46,7 @@ class POP3 * * @var string */ - const VERSION = '6.6.4'; + const VERSION = '6.6.5'; /** * Default POP3 port number. diff --git a/vendor/phpmailer/phpmailer/src/SMTP.php b/vendor/phpmailer/phpmailer/src/SMTP.php index cc1711d2e2459bd43b1af1577de1ee7826b2cd20..312f753cea64cb8fd1f68725806b2112030c8bf0 100644 --- a/vendor/phpmailer/phpmailer/src/SMTP.php +++ b/vendor/phpmailer/phpmailer/src/SMTP.php @@ -35,7 +35,7 @@ class SMTP * * @var string */ - const VERSION = '6.6.4'; + const VERSION = '6.6.5'; /** * SMTP line break constant. @@ -682,7 +682,6 @@ class SMTP */ public function close() { - $this->setError(''); $this->server_caps = null; $this->helo_rply = null; if (is_resource($this->smtp_conn)) { diff --git a/vendor/services.php b/vendor/services.php index f3de1be1ef690ce897b59d92115a1d6e607b60f7..377b4dde4d17847e6e1587b6d53ca219638202ef 100644 --- a/vendor/services.php +++ b/vendor/services.php @@ -1,5 +1,5 @@ 'app\\admin\\AppStoreService', diff --git a/vendor/thinkcmf/cmf/think/App.php b/vendor/thinkcmf/cmf/think/App.php index 4f3dc391a6375f7e4ef45ddd53fa731a7874187d..ca926126246a2231ae63e197c2ea69b76770d002 100644 --- a/vendor/thinkcmf/cmf/think/App.php +++ b/vendor/thinkcmf/cmf/think/App.php @@ -39,7 +39,7 @@ use think\initializer\RegisterService; */ class App extends Container { - const VERSION = '6.0.13LTS'; + const VERSION = '6.0.14LTS'; /** * 应用调试模式 diff --git a/vendor/topthink/framework/src/think/App.php b/vendor/topthink/framework/src/think/App.php index b189cd954e59a4125cebde50e6e3a696aacb62c4..1edadb6f3bb511ffc94c878041968607dfe118cd 100644 --- a/vendor/topthink/framework/src/think/App.php +++ b/vendor/topthink/framework/src/think/App.php @@ -39,7 +39,7 @@ use think\initializer\RegisterService; */ class App extends Container { - const VERSION = '6.0.13LTS'; + const VERSION = '6.0.14LTS'; /** * 应用调试模式 diff --git a/vendor/topthink/framework/src/think/Console.php b/vendor/topthink/framework/src/think/Console.php index 389d104d572825d1789c2edf82d8b2e3749a59b6..27f12baad901e5c160afb1d2407e05653c090f4e 100644 --- a/vendor/topthink/framework/src/think/Console.php +++ b/vendor/topthink/framework/src/think/Console.php @@ -117,9 +117,9 @@ class Console */ protected function makeRequest() { - $uri = $this->app->config->get('app.url', 'http://localhost'); + $url = $this->app->config->get('app.url', 'http://localhost'); - $components = parse_url($uri); + $components = parse_url($url); $server = $_SERVER; @@ -127,6 +127,7 @@ class Console $server = array_merge($server, [ 'SCRIPT_FILENAME' => $components['path'], 'SCRIPT_NAME' => $components['path'], + 'REQUEST_URI' => $components['path'], ]); } @@ -150,8 +151,6 @@ class Console $server['HTTP_HOST'] .= ':' . $components['port']; } - $server['REQUEST_URI'] = $uri; - /** @var Request $request */ $request = $this->app->make('request'); diff --git a/vendor/topthink/framework/src/think/Lang.php b/vendor/topthink/framework/src/think/Lang.php index 5f16c464b3babbbe1ed1a52c2e847ffb9bb8b9a1..b89108482206c6d6d9e20c6715af604c1852fe86 100644 --- a/vendor/topthink/framework/src/think/Lang.php +++ b/vendor/topthink/framework/src/think/Lang.php @@ -287,58 +287,4 @@ class Lang return $value; } - /** - * 自动侦测设置获取语言选择 - * @deprecated - * @access public - * @param Request $request - * @return string - */ - public function detect(Request $request): string - { - // 自动侦测设置获取语言选择 - $langSet = ''; - - if ($request->get($this->config['detect_var'])) { - // url中设置了语言变量 - $langSet = strtolower($request->get($this->config['detect_var'])); - } elseif ($request->header($this->config['header_var'])) { - // Header中设置了语言变量 - $langSet = strtolower($request->header($this->config['header_var'])); - } elseif ($request->cookie($this->config['cookie_var'])) { - // Cookie中设置了语言变量 - $langSet = strtolower($request->cookie($this->config['cookie_var'])); - } elseif ($request->server('HTTP_ACCEPT_LANGUAGE')) { - // 自动侦测浏览器语言 - $match = preg_match('/^([a-z\d\-]+)/i', $request->server('HTTP_ACCEPT_LANGUAGE'), $matches); - if ($match) { - $langSet = strtolower($matches[1]); - if (isset($this->config['accept_language'][$langSet])) { - $langSet = $this->config['accept_language'][$langSet]; - } - } - } - - if (empty($this->config['allow_lang_list']) || in_array($langSet, $this->config['allow_lang_list'])) { - // 合法的语言 - $this->range = $langSet; - } - - return $this->range; - } - - /** - * 保存当前语言到Cookie - * @deprecated - * @access public - * @param Cookie $cookie Cookie对象 - * @return void - */ - public function saveToCookie(Cookie $cookie) - { - if ($this->config['use_cookie']) { - $cookie->set($this->config['cookie_var'], $this->range); - } - } - } diff --git a/vendor/topthink/framework/src/think/middleware/LoadLangPack.php b/vendor/topthink/framework/src/think/middleware/LoadLangPack.php index d6bf6a462f302199cf3fcedd31ebcf202527ac9a..af0324b83c6098c94333378ad5f2e7de2b0105b0 100644 --- a/vendor/topthink/framework/src/think/middleware/LoadLangPack.php +++ b/vendor/topthink/framework/src/think/middleware/LoadLangPack.php @@ -70,33 +70,35 @@ class LoadLangPack if ($request->get($this->config['detect_var'])) { // url中设置了语言变量 - $langSet = strtolower($request->get($this->config['detect_var'])); + $langSet = $request->get($this->config['detect_var']); } elseif ($request->header($this->config['header_var'])) { // Header中设置了语言变量 - $langSet = strtolower($request->header($this->config['header_var'])); + $langSet = $request->header($this->config['header_var']); } elseif ($request->cookie($this->config['cookie_var'])) { // Cookie中设置了语言变量 - $langSet = strtolower($request->cookie($this->config['cookie_var'])); + $langSet = $request->cookie($this->config['cookie_var']); } elseif ($request->server('HTTP_ACCEPT_LANGUAGE')) { // 自动侦测浏览器语言 - $match = preg_match('/^([a-z\d\-]+)/i', $request->server('HTTP_ACCEPT_LANGUAGE'), $matches); - if ($match) { - $langSet = strtolower($matches[1]); - if (isset($this->config['accept_language'][$langSet])) { - $langSet = $this->config['accept_language'][$langSet]; - } + $langSet = $request->server('HTTP_ACCEPT_LANGUAGE'); + } + + if (preg_match('/^([a-z\d\-]+)/i', $langSet, $matches)) { + $langSet = strtolower($matches[1]); + if (isset($this->config['accept_language'][$langSet])) { + $langSet = $this->config['accept_language'][$langSet]; } + } else { + $langSet = $this->lang->getLangSet(); } if (empty($this->config['allow_lang_list']) || in_array($langSet, $this->config['allow_lang_list'])) { // 合法的语言 - $range = $langSet; - $this->lang->setLangSet($range); + $this->lang->setLangSet($langSet); } else { - $range = $this->lang->getLangSet(); + $langSet = $this->lang->getLangSet(); } - return $range; + return $langSet; } /** diff --git a/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php b/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php index 0015a24abf9095881ebb5ef9e009cce75ab3c7ac..cabd65bb7bd86d83adf2f898a3c3bfff43a4a327 100644 --- a/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php +++ b/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php @@ -559,23 +559,4 @@ trait ModelRelationQuery $result->refreshOrigin(); } - /** - * 查询软删除数据 - * @access public - * @return Query - */ - public function withTrashed() - { - return $this->model ? $this->model->queryWithTrashed() : $this; - } - - /** - * 只查询软删除数据 - * @access public - * @return Query - */ - public function onlyTrashed() - { - return $this->model ? $this->model->queryOnlyTrashed() : $this; - } } diff --git a/vendor/topthink/think-orm/src/model/concern/Attribute.php b/vendor/topthink/think-orm/src/model/concern/Attribute.php index 897d327f08ae240aca211010370c2c600525b454..b14d25a898ec6acd1fa3014224eff977035ce9dd 100644 --- a/vendor/topthink/think-orm/src/model/concern/Attribute.php +++ b/vendor/topthink/think-orm/src/model/concern/Attribute.php @@ -383,7 +383,7 @@ trait Attribute } elseif (isset($this->type[$name])) { // 类型转换 $value = $this->writeTransform($value, $this->type[$name]); - } elseif (array_key_exists($name, $this->origin) && is_object($value) && method_exists($value, '__toString')) { + } elseif ((array_key_exists($name, $this->origin) || empty($this->origin)) && is_object($value) && method_exists($value, '__toString')) { // 对象类型 $value = $value->__toString(); } diff --git a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php index 117f1ef7b5322f3233dc6432adcd7214dd3414d1..b7b10921b2f0b79d4121fa7e8d24c06e14f140c2 100644 --- a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php +++ b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php @@ -18,14 +18,18 @@ use think\Model; /** * 数据软删除 * @mixin Model + * @method $this withTrashed() + * @method $this onlyTrashed() */ trait SoftDelete { - /** - * 是否包含软删除数据 - * @var bool - */ - protected $withTrashed = false; + + public function db($scope = []): Query + { + $query = parent::db($scope); + $this->withNoTrashed($query); + return $query; + } /** * 判断当前实例是否被软删除 @@ -43,74 +47,18 @@ trait SoftDelete return false; } - /** - * 查询软删除数据 - * @access public - * @return Query - */ - public static function withTrashed(): Query + public function scopeWithTrashed(Query $query) { - $model = new static(); - - return $model->withTrashedData(true)->db(); + $query->removeOption('soft_delete'); } - /** - * 查询软删除数据 - * @access public - * @return Query - */ - public function queryWithTrashed(): Query - { - return $this->withTrashedData(true)->db(); - } - - /** - * 是否包含软删除数据 - * @access protected - * @param bool $withTrashed 是否包含软删除数据 - * @return $this - */ - protected function withTrashedData(bool $withTrashed) - { - $this->withTrashed = $withTrashed; - return $this; - } - - /** - * 只查询软删除数据 - * @access public - * @return Query - */ - public static function onlyTrashed(): Query - { - $model = new static(); - $field = $model->getDeleteTimeField(true); - - if ($field) { - return $model - ->db() - ->useSoftDelete($field, $model->getWithTrashedExp()); - } - - return $model->db(); - } - - /** - * 只查询软删除数据 - * @access public - * @return Query - */ - public function queryOnlyTrashed(): Query + public function scopeOnlyTrashed(Query $query) { $field = $this->getDeleteTimeField(true); if ($field) { - return $this->db() - ->useSoftDelete($field, $this->getWithTrashedExp()); + $query->useSoftDelete($field, $this->getWithTrashedExp()); } - - return $this->db(); } /** @@ -139,9 +87,9 @@ trait SoftDelete if ($name && !$force) { // 软删除 - $this->set($name, $this->autoWriteTimestamp($name)); + $this->set($name, $this->autoWriteTimestamp()); - $result = $this->exists()->withEvent(false)->save(); + $this->exists()->withEvent(false)->save(); $this->withEvent(true); } else { @@ -149,7 +97,7 @@ trait SoftDelete $where = $this->getWhere(); // 删除当前模型数据 - $result = $this->db() + $this->db() ->where($where) ->removeOption('soft_delete') ->delete(); @@ -172,8 +120,8 @@ trait SoftDelete /** * 删除记录 * @access public - * @param mixed $data 主键列表 支持闭包查询条件 - * @param bool $force 是否强制删除 + * @param mixed $data 主键列表 支持闭包查询条件 + * @param bool $force 是否强制删除 * @return bool */ public static function destroy($data, bool $force = false): bool @@ -182,18 +130,20 @@ trait SoftDelete if (empty($data) && 0 !== $data) { return false; } - // 仅当强制删除时包含软删除数据 $model = (new static()); + + $query = $model->db(false); + + // 仅当强制删除时包含软删除数据 if ($force) { - $model->withTrashedData(true); + $query->removeOption('soft_delete'); } - $query = $model->db(false); if (is_array($data) && key($data) !== 0) { $query->where($data); $data = null; } elseif ($data instanceof \Closure) { - call_user_func_array($data, [ & $query]); + call_user_func_array($data, [&$query]); $data = null; } elseif (is_null($data)) { return false; @@ -202,6 +152,7 @@ trait SoftDelete $resultSet = $query->select($data); foreach ($resultSet as $result) { + /** @var Model $result */ $result->force($force)->delete(); } @@ -211,7 +162,7 @@ trait SoftDelete /** * 恢复被软删除的记录 * @access public - * @param array $where 更新条件 + * @param array $where 更新条件 * @return bool */ public function restore($where = []): bool @@ -243,7 +194,7 @@ trait SoftDelete /** * 获取软删除字段 * @access protected - * @param bool $read 是否查询操作 写操作的时候会自动去掉表别名 + * @param bool $read 是否查询操作 写操作的时候会自动去掉表别名 * @return string|false */ protected function getDeleteTimeField(bool $read = false) @@ -269,7 +220,7 @@ trait SoftDelete /** * 查询的时候默认排除软删除数据 * @access protected - * @param Query $query + * @param Query $query * @return void */ protected function withNoTrashed(Query $query): void diff --git a/vendor/topthink/think-orm/src/model/relation/BelongsTo.php b/vendor/topthink/think-orm/src/model/relation/BelongsTo.php index dd54f52ca80964785cf638729a232caba0041dd1..741a2e8d4874a82c43810713943f698a88f0a91a 100644 --- a/vendor/topthink/think-orm/src/model/relation/BelongsTo.php +++ b/vendor/topthink/think-orm/src/model/relation/BelongsTo.php @@ -241,7 +241,7 @@ class BelongsTo extends OneToOne if (!empty($this->bindAttr)) { // 绑定关联属性 $this->bindAttr($result, $relationModel); - $result->hidden([$relation]); + $result->hidden([$relation], true); } } } @@ -283,7 +283,7 @@ class BelongsTo extends OneToOne if (!empty($this->bindAttr)) { // 绑定关联属性 $this->bindAttr($result, $relationModel); - $result->hidden([$relation]); + $result->hidden([$relation], true); } } diff --git a/vendor/topthink/think-orm/src/model/relation/HasOne.php b/vendor/topthink/think-orm/src/model/relation/HasOne.php index 43f220c9d1dcef8a3ecc1f488f8309bf41fda74f..5e5e50112782f45e657c59510978cb665951f6b7 100644 --- a/vendor/topthink/think-orm/src/model/relation/HasOne.php +++ b/vendor/topthink/think-orm/src/model/relation/HasOne.php @@ -240,7 +240,7 @@ class HasOne extends OneToOne if (!empty($this->bindAttr)) { // 绑定关联属性 $this->bindAttr($result, $relationModel); - $result->hidden([$relation]); + $result->hidden([$relation], true); } } } @@ -282,7 +282,7 @@ class HasOne extends OneToOne if (!empty($this->bindAttr)) { // 绑定关联属性 $this->bindAttr($result, $relationModel); - $result->hidden([$relation]); + $result->hidden([$relation], true); } } diff --git a/vendor/topthink/think-orm/src/model/relation/MorphTo.php b/vendor/topthink/think-orm/src/model/relation/MorphTo.php index f53fe4fc5c7037fdbdec0b030e35762846bc60bc..74b16c2775daac090effe4c365274cdf465fb29c 100644 --- a/vendor/topthink/think-orm/src/model/relation/MorphTo.php +++ b/vendor/topthink/think-orm/src/model/relation/MorphTo.php @@ -13,6 +13,7 @@ namespace think\model\relation; use Closure; use think\db\exception\DbException as Exception; +use think\db\Query; use think\helper\Str; use think\Model; use think\model\Relation; @@ -46,14 +47,16 @@ class MorphTo extends Relation */ protected $relation; + protected $queryCaller = []; + /** * 架构函数 * @access public - * @param Model $parent 上级模型对象 - * @param string $morphType 多态字段名 - * @param string $morphKey 外键名 - * @param array $alias 多态别名定义 - * @param string $relation 关联名 + * @param Model $parent 上级模型对象 + * @param string $morphType 多态字段名 + * @param string $morphKey 外键名 + * @param array $alias 多态别名定义 + * @param ?string $relation 关联名 */ public function __construct(Model $parent, string $morphType, string $morphKey, array $alias = [], string $relation = null) { @@ -80,8 +83,8 @@ class MorphTo extends Relation /** * 延迟获取关联数据 * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 + * @param array $subRelation 子关联名 + * @param ?Closure $closure 闭包查询条件 * @return Model */ public function getRelation(array $subRelation = [], Closure $closure = null) @@ -95,7 +98,7 @@ class MorphTo extends Relation // 主键数据 $pk = $this->parent->$morphKey; - $relationModel = (new $model)->relation($subRelation)->find($pk); + $relationModel = $this->buildQuery((new $model)->relation($subRelation))->find($pk); if ($relationModel) { $relationModel->setParent(clone $this->parent); @@ -107,11 +110,11 @@ class MorphTo extends Relation /** * 根据关联条件查询当前模型 * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 + * @param string $operator 比较操作符 + * @param integer $count 个数 + * @param string $id 关联表的统计字段 + * @param string $joinType JOIN类型 + * @param Query $query Query对象 * @return Query */ public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null) @@ -122,22 +125,45 @@ class MorphTo extends Relation /** * 根据关联条件查询当前模型 * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 + * @param mixed $where 查询条件(数组或者闭包) + * @param mixed $fields 字段 + * @param string $joinType JOIN类型 + * @param ?Query $query Query对象 * @return Query */ public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null) { - throw new Exception('relation not support: hasWhere'); + $alias = class_basename($this->parent); + + $types = $this->parent->distinct()->column($this->morphType); + + $query = $query ?: $this->parent->db(); + + return $query->alias($alias) + ->where(function (Query $query) use ($types, $where, $alias) { + foreach ($types as $type) { + if ($type) { + $query->whereExists(function (Query $query) use ($type, $where, $alias) { + /** @var Model $model */ + $model = new ($this->parseModel($type)); + + $table = $model->getTable(); + $query + ->table($table) + ->where($alias . '.' . $this->morphType, $type) + ->whereRaw("`{$alias}`.`{$this->morphKey}`=`{$table}`.`{$model->getPk()}`") + ->where($where); + }, 'OR'); + } + } + }); } /** * 解析模型的完整命名空间 * @access protected - * @param string $model 模型名(或者完整类名) - * @return string + * @param string $model 模型名(或者完整类名) + * @return Model */ protected function parseModel(string $model): string { @@ -158,7 +184,7 @@ class MorphTo extends Relation /** * 设置多态别名 * @access public - * @param array $alias 别名定义 + * @param array $alias 别名定义 * @return $this */ public function setAlias(array $alias) @@ -173,7 +199,7 @@ class MorphTo extends Relation * @access public * @return $this */ - public function removeOption() + public function removeOption(string $option = '') { return $this; } @@ -181,11 +207,11 @@ class MorphTo extends Relation /** * 预载入关联查询 * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 + * @param array $resultSet 数据集 + * @param string $relation 当前关联名 + * @param array $subRelation 子关联名 + * @param ?Closure $closure 闭包 + * @param array $cache 关联缓存 * @return void * @throws Exception */ @@ -211,8 +237,8 @@ class MorphTo extends Relation if (!\is_null($closure)) { $obj = $closure($obj); } - $pk = $obj->getPk(); - $list = $obj->with($subRelation) + $pk = $obj->getPk(); + $list = $obj->with($subRelation) ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) ->select($val); $data = []; @@ -242,11 +268,11 @@ class MorphTo extends Relation /** * 预载入关联查询 * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 + * @param Model $result 数据对象 + * @param string $relation 当前关联名 + * @param array $subRelation 子关联名 + * @param ?Closure $closure 闭包 + * @param array $cache 关联缓存 * @return void */ public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void @@ -260,36 +286,42 @@ class MorphTo extends Relation /** * 关联统计 * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 + * @param Model $result 数据对象 + * @param ?Closure $closure 闭包 + * @param string $aggregate 聚合查询方法 + * @param string $field 字段 * @return integer */ public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*') - {} + { + } /** * 多态MorphTo 关联模型预查询 * @access protected - * @param string $model 关联模型对象 - * @param string $relation 关联名 - * @param Model $result - * @param array $subRelation 子关联 - * @param array $cache 关联缓存 + * @param string $model 关联模型对象 + * @param string $relation 关联名 + * @param Model $result + * @param array $subRelation 子关联 + * @param array $cache 关联缓存 * @return void */ protected function eagerlyMorphToOne(string $model, string $relation, Model $result, array $subRelation = [], array $cache = []): void { // 预载入关联查询 支持嵌套预载入 $pk = $this->parent->{$this->morphKey}; - $data = (new $model)->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->find($pk); - if ($data) { - $data->setParent(clone $result); - $data->exists(true); + $data = null; + + if(\class_exists($model)){ + $data = (new $model)->with($subRelation) + ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) + ->find($pk); + + if ($data) { + $data->setParent(clone $result); + $data->exists(true); + } } $result->setRelation($relation, $data ?: null); @@ -298,8 +330,8 @@ class MorphTo extends Relation /** * 添加关联数据 * @access public - * @param Model $model 关联模型对象 - * @param string $type 多态类型 + * @param Model $model 关联模型对象 + * @param string $type 多态类型 * @return Model */ public function associate(Model $model, string $type = ''): Model @@ -332,4 +364,18 @@ class MorphTo extends Relation return $this->parent->setRelation($this->relation, null); } + protected function buildQuery(Query $query) + { + foreach ($this->queryCaller as $caller) { + call_user_func_array([$query, $caller[0]], $caller[1]); + } + + return $query; + } + + public function __call($method, $args) + { + $this->queryCaller[] = [$method, $args]; + return $this; + } } diff --git a/vendor/topthink/think-trace/composer.json b/vendor/topthink/think-trace/composer.json index 5af58545e647240a2b61589deb54ca7863db722a..172a2d3c6586df9ef5d64014a025b1d509f394f6 100644 --- a/vendor/topthink/think-trace/composer.json +++ b/vendor/topthink/think-trace/composer.json @@ -10,7 +10,7 @@ ], "require": { "php": ">=7.1.0", - "topthink/framework": "^6.0.0" + "topthink/framework": "^6.0" }, "autoload": { "psr-4": {