diff --git a/composer.json b/composer.json
index a0a034eb..e8b8d190 100644
--- a/composer.json
+++ b/composer.json
@@ -28,7 +28,8 @@
"paypal/paypal-server-sdk": "^0.6.1",
"guzzlehttp/guzzle": "^7.9",
"php-amqplib/php-amqplib": "^2.12",
- "tectalic/openai": "^1.6"
+ "tectalic/openai": "^1.6",
+ "smalot/pdfparser": "^2.0"
},
"autoload": {
"psr-4": {
diff --git a/sql/reference_check_result_alter_positions.sql b/sql/reference_check_result_alter_positions.sql
index 688dd47e..db6d65b3 100644
--- a/sql/reference_check_result_alter_positions.sql
+++ b/sql/reference_check_result_alter_positions.sql
@@ -1,5 +1,6 @@
-- 为预览标记增加原文位置字段([70-73] 展开为 4 条时共用 cite_tag_* / text_*)
-ALTER TABLE `t_reference_check_result`
+-- 已合并到 article_reference_check_result_alter_columns.sql(表名 t_article_reference_check_result)
+ALTER TABLE `t_article_reference_check_result`
ADD COLUMN `cite_tag_start` int(11) NOT NULL DEFAULT 0 COMMENT 'blue标签起始字节偏移' AFTER `reference_raw`,
ADD COLUMN `cite_tag_end` int(11) NOT NULL DEFAULT 0 COMMENT 'blue标签结束字节偏移' AFTER `cite_tag_start`,
ADD COLUMN `text_start` int(11) NOT NULL DEFAULT 0 COMMENT '引用句起始字节偏移' AFTER `cite_tag_end`,
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 5db964a2..355b401b 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -7,12 +7,13 @@ $baseDir = dirname($vendorDir);
return array(
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'9c67151ae59aff4788964ce8eb2a0f43' => $vendorDir . '/clue/stream-filter/src/functions_include.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'8cff32064859f4559445b89279f3199c' => $vendorDir . '/php-http/message/src/filters.php',
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
- '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
'1cfd2761b63b0a29ed23657ea394cb2d' => $vendorDir . '/topthink/think-captcha/src/helper.php',
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index 990c758f..eb4850fe 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -6,6 +6,7 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
+ 'Smalot\\PdfParser\\' => array($vendorDir . '/smalot/pdfparser/src'),
'Rs\\Json' => array($vendorDir . '/php-jsonpointer/php-jsonpointer/src'),
'PHPExcel' => array($vendorDir . '/phpoffice/phpexcel/Classes'),
'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'),
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 6ce0181d..6db206ef 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -15,11 +15,12 @@ return array(
'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'),
'Unirest\\' => array($vendorDir . '/apimatic/unirest-php/src'),
'Tectalic\\OpenAi\\' => array($vendorDir . '/tectalic/openai/src'),
+ 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
'Spatie\\DataTransferObject\\' => array($vendorDir . '/spatie/data-transfer-object/src'),
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
- 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
'PhpOffice\\PhpWord\\' => array($vendorDir . '/phpoffice/phpword/src/PhpWord'),
@@ -30,6 +31,7 @@ return array(
'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
'Nyholm\\Psr7\\' => array($vendorDir . '/nyholm/psr7/src'),
+ 'MyCLabs\\Enum\\' => array($vendorDir . '/myclabs/php-enum/src'),
'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'),
'Http\\Message\\MultipartStream\\' => array($vendorDir . '/php-http/multipart-stream-builder/src'),
'Http\\Message\\' => array($vendorDir . '/php-http/message/src'),
@@ -39,7 +41,6 @@ return array(
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
'Core\\' => array($vendorDir . '/apimatic/core/src'),
'CoreInterfaces\\' => array($vendorDir . '/apimatic/core-interfaces/src'),
- 'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'),
'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'),
'Clue\\StreamFilter\\' => array($vendorDir . '/clue/stream-filter/src'),
);
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 38ba10b9..b2e237ca 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -8,12 +8,13 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'9c67151ae59aff4788964ce8eb2a0f43' => __DIR__ . '/..' . '/clue/stream-filter/src/functions_include.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'8cff32064859f4559445b89279f3199c' => __DIR__ . '/..' . '/php-http/message/src/filters.php',
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
- '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
'1cfd2761b63b0a29ed23657ea394cb2d' => __DIR__ . '/..' . '/topthink/think-captcha/src/helper.php',
@@ -50,6 +51,7 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
),
'S' =>
array (
+ 'Symfony\\Polyfill\\Php80\\' => 23,
'Symfony\\Polyfill\\Mbstring\\' => 26,
'Symfony\\Component\\HttpFoundation\\' => 33,
'Spatie\\DataTransferObject\\' => 26,
@@ -74,6 +76,7 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
),
'M' =>
array (
+ 'MyCLabs\\Enum\\' => 13,
'Matrix\\' => 7,
),
'H' =>
@@ -92,7 +95,6 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
array (
'Core\\' => 5,
'CoreInterfaces\\' => 15,
- 'Composer\\Pcre\\' => 14,
'Complex\\' => 8,
'Clue\\StreamFilter\\' => 18,
),
@@ -138,6 +140,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
array (
0 => __DIR__ . '/..' . '/tectalic/openai/src',
),
+ 'Symfony\\Polyfill\\Php80\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+ ),
'Symfony\\Polyfill\\Mbstring\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
@@ -156,7 +162,7 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
),
'Psr\\Log\\' =>
array (
- 0 => __DIR__ . '/..' . '/psr/log/src',
+ 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
),
'Psr\\Http\\Message\\' =>
array (
@@ -199,6 +205,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
array (
0 => __DIR__ . '/..' . '/nyholm/psr7/src',
),
+ 'MyCLabs\\Enum\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/myclabs/php-enum/src',
+ ),
'Matrix\\' =>
array (
0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src',
@@ -235,10 +245,6 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
array (
0 => __DIR__ . '/..' . '/apimatic/core-interfaces/src',
),
- 'Composer\\Pcre\\' =>
- array (
- 0 => __DIR__ . '/..' . '/composer/pcre/src',
- ),
'Complex\\' =>
array (
0 => __DIR__ . '/..' . '/markbaker/complex/classes/src',
@@ -250,6 +256,13 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
);
public static $prefixesPsr0 = array (
+ 'S' =>
+ array (
+ 'Smalot\\PdfParser\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/smalot/pdfparser/src',
+ ),
+ ),
'R' =>
array (
'Rs\\Json' =>
@@ -274,7 +287,12 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd
);
public static $classMap = array (
+ 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
+ 'Stringable' => __DIR__ . '/..' . '/myclabs/php-enum/stubs/Stringable.php',
+ 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+ 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
);
public static function getInitializer(ClassLoader $loader)
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 360dacfc..68c16be7 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2,24 +2,18 @@
"packages": [
{
"name": "apimatic/core",
- "version": "0.3.16",
- "version_normalized": "0.3.16.0",
+ "version": "0.3.17",
+ "version_normalized": "0.3.17.0",
"source": {
"type": "git",
"url": "https://github.com/apimatic/core-lib-php.git",
- "reference": "ae4ab4ca26a41be41718f33c703d67b7a767c07b"
+ "reference": "a48a583f686ee3786432b976c795a2817ec095b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/ae4ab4ca26a41be41718f33c703d67b7a767c07b",
- "reference": "ae4ab4ca26a41be41718f33c703d67b7a767c07b",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/a48a583f686ee3786432b976c795a2817ec095b3",
+ "reference": "a48a583f686ee3786432b976c795a2817ec095b3",
+ "shasum": ""
},
"require": {
"apimatic/core-interfaces": "~0.1.5",
@@ -38,7 +32,7 @@
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"squizlabs/php_codesniffer": "^3.5"
},
- "time": "2025-11-25T04:42:27+00:00",
+ "time": "2026-01-27T05:14:10+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -60,7 +54,7 @@
],
"support": {
"issues": "https://github.com/apimatic/core-lib-php/issues",
- "source": "https://github.com/apimatic/core-lib-php/tree/0.3.16"
+ "source": "https://github.com/apimatic/core-lib-php/tree/0.3.17"
},
"install-path": "../apimatic/core"
},
@@ -294,94 +288,6 @@
},
"install-path": "../clue/stream-filter"
},
- {
- "name": "composer/pcre",
- "version": "3.3.2",
- "version_normalized": "3.3.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/pcre.git",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
- },
- "require": {
- "php": "^7.4 || ^8.0"
- },
- "conflict": {
- "phpstan/phpstan": "<1.11.10"
- },
- "require-dev": {
- "phpstan/phpstan": "^1.12 || ^2",
- "phpstan/phpstan-strict-rules": "^1 || ^2",
- "phpunit/phpunit": "^8 || ^9"
- },
- "time": "2024-11-12T16:29:46+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- },
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Composer\\Pcre\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
- "keywords": [
- "PCRE",
- "preg",
- "regex",
- "regular expression"
- ],
- "support": {
- "issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.3.2"
- },
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "install-path": "./pcre"
- },
{
"name": "ezyang/htmlpurifier",
"version": "v4.19.0",
@@ -635,24 +541,18 @@
},
{
"name": "guzzlehttp/psr7",
- "version": "2.8.0",
- "version_normalized": "2.8.0.0",
+ "version": "2.9.0",
+ "version_normalized": "2.9.0.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "21dc724a0583619cd1652f673303492272778051"
+ "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
- "reference": "21dc724a0583619cd1652f673303492272778051",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884",
+ "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884",
+ "shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
@@ -667,12 +567,13 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
+ "jshttp/mime-db": "1.54.0.1",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
- "time": "2025-08-23T21:21:41+00:00",
+ "time": "2026-03-10T16:41:02+00:00",
"type": "library",
"extra": {
"bamarni-bin": {
@@ -740,7 +641,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.8.0"
+ "source": "https://github.com/guzzle/psr7/tree/2.9.0"
},
"funding": [
{
@@ -760,45 +661,32 @@
},
{
"name": "maennchen/zipstream-php",
- "version": "3.1.2",
- "version_normalized": "3.1.2.0",
+ "version": "2.1.0",
+ "version_normalized": "2.1.0.0",
"source": {
"type": "git",
"url": "https://github.com/maennchen/ZipStream-PHP.git",
- "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f"
+ "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f",
- "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58",
+ "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58",
+ "shasum": ""
},
"require": {
- "ext-mbstring": "*",
- "ext-zlib": "*",
- "php-64bit": "^8.2"
+ "myclabs/php-enum": "^1.5",
+ "php": ">= 7.1",
+ "psr/http-message": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
- "brianium/paratest": "^7.7",
"ext-zip": "*",
- "friendsofphp/php-cs-fixer": "^3.16",
- "guzzlehttp/guzzle": "^7.5",
+ "guzzlehttp/guzzle": ">= 6.3",
"mikey179/vfsstream": "^1.6",
- "php-coveralls/php-coveralls": "^2.5",
- "phpunit/phpunit": "^11.0",
- "vimeo/psalm": "^6.0"
+ "phpunit/phpunit": ">= 7.5"
},
- "suggest": {
- "guzzlehttp/psr7": "^2.4",
- "psr/http-message": "^2.0"
- },
- "time": "2025-01-27T12:07:53+00:00",
+ "time": "2020-05-30T13:11:16+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -835,12 +723,16 @@
],
"support": {
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
- "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2"
+ "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.1.0"
},
"funding": [
{
"url": "https://github.com/maennchen",
"type": "github"
+ },
+ {
+ "url": "https://opencollective.com/zipstream",
+ "type": "open_collective"
}
],
"install-path": "../maennchen/zipstream-php"
@@ -958,6 +850,72 @@
},
"install-path": "../markbaker/matrix"
},
+ {
+ "name": "myclabs/php-enum",
+ "version": "1.8.5",
+ "version_normalized": "1.8.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/php-enum.git",
+ "reference": "e7be26966b7398204a234f8673fdad5ac6277802"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/php-enum/zipball/e7be26966b7398204a234f8673fdad5ac6277802",
+ "reference": "e7be26966b7398204a234f8673fdad5ac6277802",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5",
+ "squizlabs/php_codesniffer": "1.*",
+ "vimeo/psalm": "^4.6.2 || ^5.2"
+ },
+ "time": "2025-01-14T11:49:03+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "MyCLabs\\Enum\\": "src/"
+ },
+ "classmap": [
+ "stubs/Stringable.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP Enum contributors",
+ "homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
+ }
+ ],
+ "description": "PHP Enum implementation",
+ "homepage": "https://github.com/myclabs/php-enum",
+ "keywords": [
+ "enum"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/php-enum/issues",
+ "source": "https://github.com/myclabs/php-enum/tree/1.8.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/mnapoli",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../myclabs/php-enum"
+ },
{
"name": "nyholm/psr7",
"version": "1.8.2",
@@ -1031,17 +989,17 @@
},
{
"name": "paragonie/constant_time_encoding",
- "version": "v3.1.3",
- "version_normalized": "3.1.3.0",
+ "version": "v2.8.2",
+ "version_normalized": "2.8.2.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/constant_time_encoding.git",
- "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77"
+ "reference": "e30811f7bc69e4b5b6d5783e712c06c8eabf0226"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77",
- "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77",
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/e30811f7bc69e4b5b6d5783e712c06c8eabf0226",
+ "reference": "e30811f7bc69e4b5b6d5783e712c06c8eabf0226",
"shasum": "",
"mirrors": [
{
@@ -1051,15 +1009,13 @@
]
},
"require": {
- "php": "^8"
+ "php": "^7|^8"
},
"require-dev": {
- "infection/infection": "^0",
- "nikic/php-fuzzer": "^0",
- "phpunit/phpunit": "^9|^10|^11",
- "vimeo/psalm": "^4|^5|^6"
+ "phpunit/phpunit": "^6|^7|^8|^9",
+ "vimeo/psalm": "^1|^2|^3|^4"
},
- "time": "2025-09-24T15:06:41+00:00",
+ "time": "2025-09-24T15:12:37+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1386,24 +1342,18 @@
},
{
"name": "php-http/message",
- "version": "1.16.1",
- "version_normalized": "1.16.1.0",
+ "version": "1.16.2",
+ "version_normalized": "1.16.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/message.git",
- "reference": "5997f3289332c699fa2545c427826272498a2088"
+ "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/message/zipball/5997f3289332c699fa2545c427826272498a2088",
- "reference": "5997f3289332c699fa2545c427826272498a2088",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/php-http/message/zipball/06dd5e8562f84e641bf929bfe699ee0f5ce8080a",
+ "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a",
+ "shasum": ""
},
"require": {
"clue/stream-filter": "^1.5",
@@ -1428,7 +1378,7 @@
"laminas/laminas-diactoros": "Used with Diactoros Factories",
"slim/slim": "Used with Slim Framework PSR-7 implementation"
},
- "time": "2024-03-07T13:22:09+00:00",
+ "time": "2024-10-02T11:34:13+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1458,30 +1408,24 @@
],
"support": {
"issues": "https://github.com/php-http/message/issues",
- "source": "https://github.com/php-http/message/tree/1.16.1"
+ "source": "https://github.com/php-http/message/tree/1.16.2"
},
"install-path": "../php-http/message"
},
{
"name": "php-http/multipart-stream-builder",
- "version": "1.3.1",
- "version_normalized": "1.3.1.0",
+ "version": "1.4.2",
+ "version_normalized": "1.4.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/multipart-stream-builder.git",
- "reference": "ed56da23b95949ae4747378bed8a5b61a2fdae24"
+ "reference": "10086e6de6f53489cca5ecc45b6f468604d3460e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/ed56da23b95949ae4747378bed8a5b61a2fdae24",
- "reference": "ed56da23b95949ae4747378bed8a5b61a2fdae24",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/10086e6de6f53489cca5ecc45b6f468604d3460e",
+ "reference": "10086e6de6f53489cca5ecc45b6f468604d3460e",
+ "shasum": ""
},
"require": {
"php": "^7.1 || ^8.0",
@@ -1494,7 +1438,7 @@
"php-http/message-factory": "^1.0.2",
"phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3"
},
- "time": "2024-06-10T14:51:55+00:00",
+ "time": "2024-09-04T13:22:54+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1523,7 +1467,7 @@
],
"support": {
"issues": "https://github.com/php-http/multipart-stream-builder/issues",
- "source": "https://github.com/php-http/multipart-stream-builder/tree/1.3.1"
+ "source": "https://github.com/php-http/multipart-stream-builder/tree/1.4.2"
},
"install-path": "../php-http/multipart-stream-builder"
},
@@ -1588,24 +1532,18 @@
},
{
"name": "phpmailer/phpmailer",
- "version": "v6.11.1",
- "version_normalized": "6.11.1.0",
+ "version": "v6.12.0",
+ "version_normalized": "6.12.0.0",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "d9e3b36b47f04b497a0164c5a20f92acb4593284"
+ "reference": "d1ac35d784bf9f5e61b424901d5a014967f15b12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/d9e3b36b47f04b497a0164c5a20f92acb4593284",
- "reference": "d9e3b36b47f04b497a0164c5a20f92acb4593284",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/d1ac35d784bf9f5e61b424901d5a014967f15b12",
+ "reference": "d1ac35d784bf9f5e61b424901d5a014967f15b12",
+ "shasum": ""
},
"require": {
"ext-ctype": "*",
@@ -1625,7 +1563,6 @@
},
"suggest": {
"decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication",
- "ext-imap": "Needed to support advanced email address parsing according to RFC822",
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
"ext-openssl": "Needed for secure SMTP sending and DKIM signing",
"greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication",
@@ -1635,7 +1572,7 @@
"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": "2025-09-30T11:54:53+00:00",
+ "time": "2025-10-15T16:49:08+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1667,7 +1604,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.11.1"
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.12.0"
},
"funding": [
{
@@ -1679,24 +1616,18 @@
},
{
"name": "phpoffice/math",
- "version": "0.2.0",
- "version_normalized": "0.2.0.0",
+ "version": "0.3.0",
+ "version_normalized": "0.3.0.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/Math.git",
- "reference": "fc2eb6d1a61b058d5dac77197059db30ee3c8329"
+ "reference": "fc31c8f57a7a81f962cbf389fd89f4d9d06fc99a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPOffice/Math/zipball/fc2eb6d1a61b058d5dac77197059db30ee3c8329",
- "reference": "fc2eb6d1a61b058d5dac77197059db30ee3c8329",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/PHPOffice/Math/zipball/fc31c8f57a7a81f962cbf389fd89f4d9d06fc99a",
+ "reference": "fc31c8f57a7a81f962cbf389fd89f4d9d06fc99a",
+ "shasum": ""
},
"require": {
"ext-dom": "*",
@@ -1707,7 +1638,7 @@
"phpstan/phpstan": "^0.12.88 || ^1.0.0",
"phpunit/phpunit": "^7.0 || ^9.0"
},
- "time": "2024-08-12T07:30:45+00:00",
+ "time": "2025-05-29T08:31:49+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1734,7 +1665,7 @@
],
"support": {
"issues": "https://github.com/PHPOffice/Math/issues",
- "source": "https://github.com/PHPOffice/Math/tree/0.2.0"
+ "source": "https://github.com/PHPOffice/Math/tree/0.3.0"
},
"install-path": "../phpoffice/math"
},
@@ -1810,27 +1741,20 @@
},
{
"name": "phpoffice/phpspreadsheet",
- "version": "1.30.1",
- "version_normalized": "1.30.1.0",
+ "version": "1.25.2",
+ "version_normalized": "1.25.2.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
- "reference": "fa8257a579ec623473eabfe49731de5967306c4c"
+ "reference": "a317a09e7def49852400a4b3eca4a4b0790ceeb5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fa8257a579ec623473eabfe49731de5967306c4c",
- "reference": "fa8257a579ec623473eabfe49731de5967306c4c",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/a317a09e7def49852400a4b3eca4a4b0790ceeb5",
+ "reference": "a317a09e7def49852400a4b3eca4a4b0790ceeb5",
+ "shasum": ""
},
"require": {
- "composer/pcre": "^1||^2||^3",
"ext-ctype": "*",
"ext-dom": "*",
"ext-fileinfo": "*",
@@ -1845,26 +1769,26 @@
"ext-zip": "*",
"ext-zlib": "*",
"ezyang/htmlpurifier": "^4.15",
- "maennchen/zipstream-php": "^2.1 || ^3.0",
+ "maennchen/zipstream-php": "^2.1",
"markbaker/complex": "^3.0",
"markbaker/matrix": "^3.0",
- "php": ">=7.4.0 <8.5.0",
+ "php": "^7.3 || ^8.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
},
"require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
- "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+ "dompdf/dompdf": "^1.0 || ^2.0",
"friendsofphp/php-cs-fixer": "^3.2",
- "mitoteam/jpgraph": "^10.3",
- "mpdf/mpdf": "^8.1.1",
+ "mitoteam/jpgraph": "10.2.4",
+ "mpdf/mpdf": "8.1.1",
"phpcompatibility/php-compatibility": "^9.3",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^8.5 || ^9.0",
"squizlabs/php_codesniffer": "^3.7",
- "tecnickcom/tcpdf": "^6.5"
+ "tecnickcom/tcpdf": "6.5"
},
"suggest": {
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
@@ -1873,7 +1797,7 @@
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
},
- "time": "2025-10-26T16:01:04+00:00",
+ "time": "2022-09-25T17:21:01+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1919,59 +1843,52 @@
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
- "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.1"
+ "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.25.2"
},
"install-path": "../phpoffice/phpspreadsheet"
},
{
"name": "phpoffice/phpword",
- "version": "1.3.0",
- "version_normalized": "1.3.0.0",
+ "version": "1.4.0",
+ "version_normalized": "1.4.0.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PHPWord.git",
- "reference": "8392134ce4b5dba65130ba956231a1602b848b7f"
+ "reference": "6d75328229bc93790b37e93741adf70646cea958"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/8392134ce4b5dba65130ba956231a1602b848b7f",
- "reference": "8392134ce4b5dba65130ba956231a1602b848b7f",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/6d75328229bc93790b37e93741adf70646cea958",
+ "reference": "6d75328229bc93790b37e93741adf70646cea958",
+ "shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-gd": "*",
"ext-json": "*",
"ext-xml": "*",
+ "ext-zip": "*",
"php": "^7.1|^8.0",
- "phpoffice/math": "^0.2"
+ "phpoffice/math": "^0.3"
},
"require-dev": {
- "dompdf/dompdf": "^2.0",
- "ext-gd": "*",
+ "dompdf/dompdf": "^2.0 || ^3.0",
"ext-libxml": "*",
- "ext-zip": "*",
"friendsofphp/php-cs-fixer": "^3.3",
- "mpdf/mpdf": "^8.1",
+ "mpdf/mpdf": "^7.0 || ^8.0",
"phpmd/phpmd": "^2.13",
- "phpstan/phpstan-phpunit": "@stable",
+ "phpstan/phpstan": "^0.12.88 || ^1.0.0",
+ "phpstan/phpstan-phpunit": "^1.0 || ^2.0",
"phpunit/phpunit": ">=7.0",
"symfony/process": "^4.4 || ^5.0",
"tecnickcom/tcpdf": "^6.5"
},
"suggest": {
"dompdf/dompdf": "Allows writing PDF",
- "ext-gd2": "Allows adding images",
"ext-xmlwriter": "Allows writing OOXML and ODF",
- "ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template",
- "ext-zip": "Allows writing OOXML and ODF"
+ "ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template"
},
- "time": "2024-08-30T18:03:42+00:00",
+ "time": "2025-06-05T10:32:36+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1981,7 +1898,7 @@
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0"
+ "LGPL-3.0-only"
],
"authors": [
{
@@ -2037,7 +1954,7 @@
],
"support": {
"issues": "https://github.com/PHPOffice/PHPWord/issues",
- "source": "https://github.com/PHPOffice/PHPWord/tree/1.3.0"
+ "source": "https://github.com/PHPOffice/PHPWord/tree/1.4.0"
},
"install-path": "../phpoffice/phpword"
},
@@ -2217,30 +2134,24 @@
},
{
"name": "psr/http-factory",
- "version": "1.0.2",
- "version_normalized": "1.0.2.0",
+ "version": "1.1.0",
+ "version_normalized": "1.1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
- "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
- "reference": "e616d01114759c4c489f93b099585439f795fe35",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "shasum": ""
},
"require": {
- "php": ">=7.0.0",
+ "php": ">=7.1",
"psr/http-message": "^1.0 || ^2.0"
},
- "time": "2023-04-10T20:10:41+00:00",
+ "time": "2024-04-15T12:06:14+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -2263,7 +2174,7 @@
"homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
@@ -2275,39 +2186,33 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+ "source": "https://github.com/php-fig/http-factory"
},
"install-path": "../psr/http-factory"
},
{
"name": "psr/http-message",
- "version": "2.0",
- "version_normalized": "2.0.0.0",
+ "version": "1.1",
+ "version_normalized": "1.1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
+ "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
+ "shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
- "time": "2023-04-04T09:54:51+00:00",
+ "time": "2023-04-04T09:50:52+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.1.x-dev"
}
},
"installation-source": "dist",
@@ -2323,7 +2228,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
@@ -2337,45 +2242,39 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/2.0"
+ "source": "https://github.com/php-fig/http-message/tree/1.1"
},
"install-path": "../psr/http-message"
},
{
"name": "psr/log",
- "version": "3.0.1",
- "version_normalized": "3.0.1.0",
+ "version": "1.1.4",
+ "version_normalized": "1.1.4.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "79dff0b268932c640297f5208d6298f71855c03e"
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e",
- "reference": "79dff0b268932c640297f5208d6298f71855c03e",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
},
"require": {
- "php": ">=8.0.0"
+ "php": ">=5.3.0"
},
- "time": "2024-08-21T13:31:24+00:00",
+ "time": "2021-05-03T11:20:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "1.1.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
- "Psr\\Log\\": "src"
+ "Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2396,39 +2295,33 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/3.0.1"
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
},
"install-path": "../psr/log"
},
{
"name": "psr/simple-cache",
- "version": "3.0.0",
- "version_normalized": "3.0.0.0",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
- "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
- "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "shasum": ""
},
"require": {
- "php": ">=8.0.0"
+ "php": ">=5.3.0"
},
- "time": "2021-10-29T13:26:27+00:00",
+ "time": "2017-10-23T01:57:42+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"installation-source": "dist",
@@ -2444,7 +2337,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
@@ -2456,7 +2349,7 @@
"simple-cache"
],
"support": {
- "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ "source": "https://github.com/php-fig/simple-cache/tree/master"
},
"install-path": "../psr/simple-cache"
},
@@ -2507,6 +2400,66 @@
},
"install-path": "../ralouphie/getallheaders"
},
+ {
+ "name": "smalot/pdfparser",
+ "version": "v2.9.0",
+ "version_normalized": "2.9.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/smalot/pdfparser.git",
+ "reference": "6b53144fcb24af77093d4150dd7d0dd571f25761"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/smalot/pdfparser/zipball/6b53144fcb24af77093d4150dd7d0dd571f25761",
+ "reference": "6b53144fcb24af77093d4150dd7d0dd571f25761",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-iconv": "*",
+ "ext-zlib": "*",
+ "php": ">=7.1",
+ "symfony/polyfill-mbstring": "^1.18"
+ },
+ "time": "2024-03-01T09:51:10+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Smalot\\PdfParser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Sebastien MALOT",
+ "email": "sebastien@malot.fr"
+ }
+ ],
+ "description": "Pdf parser library. Can read and extract information from pdf file.",
+ "homepage": "https://www.pdfparser.org",
+ "keywords": [
+ "extract",
+ "parse",
+ "parser",
+ "pdf",
+ "text"
+ ],
+ "support": {
+ "issues": "https://github.com/smalot/pdfparser/issues",
+ "source": "https://github.com/smalot/pdfparser/tree/v2.9.0"
+ },
+ "install-path": "../smalot/pdfparser"
+ },
{
"name": "spatie/data-transfer-object",
"version": "1.14.1",
@@ -2564,29 +2517,23 @@
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.6.0",
- "version_normalized": "3.6.0.0",
+ "version": "v2.5.4",
+ "version_normalized": "2.5.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
+ "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918",
+ "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918",
+ "shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=7.1"
},
- "time": "2024-09-25T14:21:43+00:00",
+ "time": "2024-09-25T14:11:13+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -2594,7 +2541,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
- "dev-main": "3.6-dev"
+ "dev-main": "2.5-dev"
}
},
"installation-source": "dist",
@@ -2620,7 +2567,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4"
},
"funding": [
{
@@ -2640,44 +2587,38 @@
},
{
"name": "symfony/http-foundation",
- "version": "v8.0.1",
- "version_normalized": "8.0.1.0",
+ "version": "v5.4.50",
+ "version_normalized": "5.4.50.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "3690740e2e8b19d877f20d4f10b7a489cddf0fe2"
+ "reference": "1a0706e8b8041046052ea2695eb8aeee04f97609"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3690740e2e8b19d877f20d4f10b7a489cddf0fe2",
- "reference": "3690740e2e8b19d877f20d4f10b7a489cddf0fe2",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1a0706e8b8041046052ea2695eb8aeee04f97609",
+ "reference": "1a0706e8b8041046052ea2695eb8aeee04f97609",
+ "shasum": ""
},
"require": {
- "php": ">=8.4",
- "symfony/polyfill-mbstring": "^1.1"
- },
- "conflict": {
- "doctrine/dbal": "<4.3"
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php80": "^1.16"
},
"require-dev": {
- "doctrine/dbal": "^4.3",
- "predis/predis": "^1.1|^2.0",
- "symfony/cache": "^7.4|^8.0",
- "symfony/clock": "^7.4|^8.0",
- "symfony/dependency-injection": "^7.4|^8.0",
- "symfony/expression-language": "^7.4|^8.0",
- "symfony/http-kernel": "^7.4|^8.0",
- "symfony/mime": "^7.4|^8.0",
- "symfony/rate-limiter": "^7.4|^8.0"
+ "predis/predis": "^1.0|^2.0",
+ "symfony/cache": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/rate-limiter": "^5.2|^6.0"
},
- "time": "2025-12-07T11:23:24+00:00",
+ "suggest": {
+ "symfony/mime": "To use the file extension guesser"
+ },
+ "time": "2025-11-03T12:58:48+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2705,7 +2646,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v8.0.1"
+ "source": "https://github.com/symfony/http-foundation/tree/v5.4.50"
},
"funding": [
{
@@ -2729,24 +2670,18 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.32.0",
- "version_normalized": "1.32.0.0",
+ "version": "v1.37.0",
+ "version_normalized": "1.37.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
+ "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
- "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315",
+ "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315",
+ "shasum": ""
},
"require": {
"ext-iconv": "*",
@@ -2758,7 +2693,7 @@
"suggest": {
"ext-mbstring": "For best performance"
},
- "time": "2024-12-23T08:48:59+00:00",
+ "time": "2026-04-10T17:25:58+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -2799,7 +2734,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0"
},
"funding": [
{
@@ -2810,6 +2745,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -2817,6 +2756,93 @@
],
"install-path": "../symfony/polyfill-mbstring"
},
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.37.0",
+ "version_normalized": "1.37.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "time": "2026-04-10T16:19:22+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php80"
+ },
{
"name": "tectalic/openai",
"version": "v1.6.0",
@@ -3003,24 +3029,18 @@
},
{
"name": "topthink/think-helper",
- "version": "v3.1.11",
- "version_normalized": "3.1.11.0",
+ "version": "v3.1.12",
+ "version_normalized": "3.1.12.0",
"source": {
"type": "git",
"url": "https://github.com/top-think/think-helper.git",
- "reference": "1d6ada9b9f3130046bf6922fe1bd159c8d88a33c"
+ "reference": "fe277121112a8f1c872e169a733ca80bb11c4acb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/top-think/think-helper/zipball/1d6ada9b9f3130046bf6922fe1bd159c8d88a33c",
- "reference": "1d6ada9b9f3130046bf6922fe1bd159c8d88a33c",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/top-think/think-helper/zipball/fe277121112a8f1c872e169a733ca80bb11c4acb",
+ "reference": "fe277121112a8f1c872e169a733ca80bb11c4acb",
+ "shasum": ""
},
"require": {
"php": ">=7.1.0"
@@ -3028,7 +3048,7 @@
"require-dev": {
"phpunit/phpunit": "^9.5"
},
- "time": "2025-04-07T06:55:59+00:00",
+ "time": "2025-12-26T09:58:29+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3052,30 +3072,24 @@
"description": "The ThinkPHP6 Helper Package",
"support": {
"issues": "https://github.com/top-think/think-helper/issues",
- "source": "https://github.com/top-think/think-helper/tree/v3.1.11"
+ "source": "https://github.com/top-think/think-helper/tree/v3.1.12"
},
"install-path": "../topthink/think-helper"
},
{
"name": "topthink/think-image",
- "version": "v1.0.7",
- "version_normalized": "1.0.7.0",
+ "version": "v1.0.8",
+ "version_normalized": "1.0.8.0",
"source": {
"type": "git",
"url": "https://github.com/top-think/think-image.git",
- "reference": "8586cf47f117481c6d415b20f7dedf62e79d5512"
+ "reference": "d1d748cbb2fe2f29fca6138cf96cb8b5113892f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/top-think/think-image/zipball/8586cf47f117481c6d415b20f7dedf62e79d5512",
- "reference": "8586cf47f117481c6d415b20f7dedf62e79d5512",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
+ "url": "https://api.github.com/repos/top-think/think-image/zipball/d1d748cbb2fe2f29fca6138cf96cb8b5113892f1",
+ "reference": "d1d748cbb2fe2f29fca6138cf96cb8b5113892f1",
+ "shasum": ""
},
"require": {
"ext-gd": "*"
@@ -3084,7 +3098,7 @@
"phpunit/phpunit": "4.8.*",
"topthink/framework": "^5.0"
},
- "time": "2016-09-29T06:05:43+00:00",
+ "time": "2024-08-07T10:06:35+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3105,7 +3119,7 @@
"description": "The ThinkPHP5 Image Package",
"support": {
"issues": "https://github.com/top-think/think-image/issues",
- "source": "https://github.com/top-think/think-image/tree/master"
+ "source": "https://github.com/top-think/think-image/tree/v1.0.8"
},
"install-path": "../topthink/think-image"
},
diff --git a/vendor/phpmailer/phpmailer/README.md b/vendor/phpmailer/phpmailer/README.md
index 51c97517..646649c9 100644
--- a/vendor/phpmailer/phpmailer/README.md
+++ b/vendor/phpmailer/phpmailer/README.md
@@ -48,7 +48,7 @@ This software is distributed under the [LGPL 2.1](https://www.gnu.org/licenses/o
PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file:
```json
-"phpmailer/phpmailer": "^6.11.1"
+"phpmailer/phpmailer": "^6.12.0"
```
or run
diff --git a/vendor/phpmailer/phpmailer/VERSION b/vendor/phpmailer/phpmailer/VERSION
index fac714a3..d4e6cb42 100644
--- a/vendor/phpmailer/phpmailer/VERSION
+++ b/vendor/phpmailer/phpmailer/VERSION
@@ -1 +1 @@
-6.11.1
+6.12.0
diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
index a871824f..4e74bfb7 100644
--- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
+++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
@@ -9,7 +9,7 @@
*/
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.';
-$PHPMAILER_LANG['buggy_php'] = 'Tu versión de PHP ha sido afectada por un bug que puede resultar en mensajes corruptos. Para arreglarlo, cambia a enviar usando SMTP, deshabilita la opción mail.add_x_header en tu php.ini, cambia a MacOS o Linux, o actualiza tu PHP a la versión 7.0.17+ o 7.1.3+.';
+$PHPMAILER_LANG['buggy_php'] = 'Tu versión de PHP está afectada por un bug que puede resultar en mensajes corruptos. Para arreglarlo, cambia a enviar usando SMTP, deshabilita la opción mail.add_x_header en tu php.ini, cambia a MacOS o Linux, o actualiza tu PHP a la versión 7.0.17+ o 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.';
$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.';
@@ -18,7 +18,7 @@ $PHPMAILER_LANG['execute'] = 'Imposible ejecutar: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: ';
$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: ';
-$PHPMAILER_LANG['from_failed'] = 'La siguiente dirección de remitente falló: ';
+$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: ';
$PHPMAILER_LANG['invalid_header'] = 'Nombre o valor de encabezado no válido';
@@ -34,5 +34,3 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
$PHPMAILER_LANG['smtp_detail'] = 'Detalle: ';
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
-$PHPMAILER_LANG['imap_recommended'] = 'No se recomienda usar el analizador de direcciones simplificado. Instala la extensión IMAP de PHP para un análisis RFC822 más completo.';
-$PHPMAILER_LANG['deprecated_argument'] = 'El argumento $useimap ha quedado obsoleto';
diff --git a/vendor/phpmailer/phpmailer/src/SMTP.php b/vendor/phpmailer/phpmailer/src/SMTP.php
index 3772c94a..d8749c5b 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.11.1';
+ const VERSION = '6.12.0';
/**
* SMTP line break constant.
@@ -205,7 +205,6 @@ class SMTP
'Haraka' => '/[\d]{3} Message Queued \((.*)\)/',
'ZoneMTA' => '/[\d]{3} Message queued as (.*)/',
'Mailjet' => '/[\d]{3} OK queued as (.*)/',
- 'Gsmtp' => '/[\d]{3} 2\.0\.0 OK (.*) - gsmtp/',
];
/**
@@ -634,41 +633,10 @@ class SMTP
return false;
}
$oauth = $OAuth->getOauth64();
- /*
- * An SMTP command line can have a maximum length of 512 bytes, including the command name,
- * so the base64-encoded OAUTH token has a maximum length of:
- * 512 - 13 (AUTH XOAUTH2) - 2 (CRLF) = 497 bytes
- * If the token is longer than that, the command and the token must be sent separately as described in
- * https://www.rfc-editor.org/rfc/rfc4954#section-4
- */
- if ($oauth === '') {
- //Sending an empty auth token is legitimate, but it must be encoded as '='
- //to indicate it's not a 2-part command
- if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 =', 235)) {
- return false;
- }
- } elseif (strlen($oauth) <= 497) {
- //Authenticate using a token in the initial-response part
- if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) {
- return false;
- }
- } else {
- //The token is too long, so we need to send it in two parts.
- //Send the auth command without a token and expect a 334
- if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2', 334)) {
- return false;
- }
- //Send the token
- if (!$this->sendCommand('OAuth TOKEN', $oauth, [235, 334])) {
- return false;
- }
- //If the server answers with 334, send an empty line and wait for a 235
- if (
- substr($this->last_reply, 0, 3) === '334'
- && $this->sendCommand('AUTH End', '', 235)
- ) {
- return false;
- }
+
+ //Start authentication
+ if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) {
+ return false;
}
break;
default:
@@ -1341,16 +1309,7 @@ class SMTP
//stream_select returns false when the `select` system call is interrupted
//by an incoming signal, try the select again
- if (
- stripos($message, 'interrupted system call') !== false ||
- (
- // on applications with a different locale than english, the message above is not found because
- // it's translated. So we also check for the SOCKET_EINTR constant which is defined under
- // Windows and UNIX-like platforms (if available on the platform).
- defined('SOCKET_EINTR') &&
- stripos($message, 'stream_select(): Unable to select [' . SOCKET_EINTR . ']') !== false
- )
- ) {
+ if (stripos($message, 'interrupted system call') !== false) {
$this->edebug(
'SMTP -> get_lines(): retrying stream_select',
self::DEBUG_LOWLEVEL
diff --git a/vendor/phpoffice/math/.github/workflows/php.yml b/vendor/phpoffice/math/.github/workflows/php.yml
index df807baa..5390049e 100644
--- a/vendor/phpoffice/math/.github/workflows/php.yml
+++ b/vendor/phpoffice/math/.github/workflows/php.yml
@@ -45,6 +45,7 @@ jobs:
- '8.1'
- '8.2'
- '8.3'
+ - '8.4'
steps:
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -75,6 +76,7 @@ jobs:
- '8.1'
- '8.2'
- '8.3'
+ - '8.4'
steps:
- name: Setup PHP
uses: shivammathur/setup-php@v2
diff --git a/vendor/phpoffice/math/docs/index.md b/vendor/phpoffice/math/docs/index.md
index 340b0dcc..80b4333c 100644
--- a/vendor/phpoffice/math/docs/index.md
+++ b/vendor/phpoffice/math/docs/index.md
@@ -48,7 +48,7 @@ Math is an open source project licensed under the terms of [MIT](https://github.
| **Simple** | Fraction | :material-check: | :material-check: |
| | Superscript | :material-check: | |
| **Architectural** | Row | :material-check: | :material-check: |
-| | Semantics | | |
+| | Semantics | :material-check: | |
## Contributing
diff --git a/vendor/phpoffice/math/src/Math/Reader/MathML.php b/vendor/phpoffice/math/src/Math/Reader/MathML.php
index 58d93935..cf1edb8d 100644
--- a/vendor/phpoffice/math/src/Math/Reader/MathML.php
+++ b/vendor/phpoffice/math/src/Math/Reader/MathML.php
@@ -10,6 +10,7 @@ use PhpOffice\Math\Element;
use PhpOffice\Math\Exception\InvalidInputException;
use PhpOffice\Math\Exception\NotImplementedException;
use PhpOffice\Math\Math;
+use PhpOffice\Math\Reader\Security\XmlScanner;
class MathML implements ReaderInterface
{
@@ -22,8 +23,17 @@ class MathML implements ReaderInterface
/** @var DOMXPath */
private $xpath;
+ /** @var XmlScanner */
+ private $xmlScanner;
+
+ public function __construct()
+ {
+ $this->xmlScanner = XmlScanner::getInstance();
+ }
+
public function read(string $content): ?Math
{
+ $content = $this->xmlScanner->scan($content);
$content = str_replace(
[
'⁢',
@@ -35,7 +45,7 @@ class MathML implements ReaderInterface
);
$this->dom = new DOMDocument();
- $this->dom->loadXML($content, LIBXML_DTDLOAD);
+ $this->dom->loadXML($content);
$this->math = new Math();
$this->parseNode(null, $this->math);
diff --git a/vendor/phpoffice/math/src/Math/Writer/MathML.php b/vendor/phpoffice/math/src/Math/Writer/MathML.php
index d8905f00..34a20dc3 100644
--- a/vendor/phpoffice/math/src/Math/Writer/MathML.php
+++ b/vendor/phpoffice/math/src/Math/Writer/MathML.php
@@ -40,6 +40,26 @@ class MathML implements WriterInterface
{
$tagName = $this->getElementTagName($element);
+ // Element\AbstractGroupElement
+ if ($element instanceof Element\Semantics) {
+ $this->output->startElement($tagName);
+ // Write elements
+ foreach ($element->getElements() as $childElement) {
+ $this->writeElementItem($childElement);
+ }
+
+ // Write annotations
+ foreach ($element->getAnnotations() as $encoding => $annotation) {
+ $this->output->startElement('annotation');
+ $this->output->writeAttribute('encoding', $encoding);
+ $this->output->text($annotation);
+ $this->output->endElement();
+ }
+ $this->output->endElement();
+
+ return;
+ }
+
// Element\AbstractGroupElement
if ($element instanceof Element\AbstractGroupElement) {
$this->output->startElement($tagName);
@@ -121,6 +141,9 @@ class MathML implements WriterInterface
if ($element instanceof Element\Operator) {
return 'mo';
}
+ if ($element instanceof Element\Semantics) {
+ return 'semantics';
+ }
throw new NotImplementedException(sprintf(
'%s : The element of the class `%s` has no tag name',
diff --git a/vendor/phpoffice/math/tests/Math/Writer/MathMLTest.php b/vendor/phpoffice/math/tests/Math/Writer/MathMLTest.php
index 06aac383..90724856 100644
--- a/vendor/phpoffice/math/tests/Math/Writer/MathMLTest.php
+++ b/vendor/phpoffice/math/tests/Math/Writer/MathMLTest.php
@@ -80,6 +80,35 @@ class MathMLTest extends WriterTestCase
$this->assertIsSchemaMathMLValid($output);
}
+ public function testWriteSemantics(): void
+ {
+ $opTimes = new Element\Operator('⁢');
+
+ $math = new Math();
+
+ $semantics = new Element\Semantics();
+ $semantics->add(new Element\Identifier('y'));
+ $semantics->addAnnotation('application/x-tex', ' y ');
+
+ $math->add($semantics);
+
+ $writer = new MathML();
+ $output = $writer->write($math);
+
+ $expected = ''
+ . PHP_EOL
+ . ''
+ . ''
+ . PHP_EOL;
+ $this->assertEquals($expected, $output);
+ $this->assertIsSchemaMathMLValid($output);
+ }
+
public function testWriteNotImplemented(): void
{
$this->expectException(NotImplementedException::class);
diff --git a/vendor/phpoffice/phpword/composer.json b/vendor/phpoffice/phpword/composer.json
index bce0f4b8..90b1c2e5 100644
--- a/vendor/phpoffice/phpword/composer.json
+++ b/vendor/phpoffice/phpword/composer.json
@@ -8,7 +8,7 @@
],
"homepage": "https://phpoffice.github.io/PHPWord/",
"type": "library",
- "license": "LGPL-3.0",
+ "license": "LGPL-3.0-only",
"authors": [
{
"name": "Mark Baker"
@@ -36,20 +36,67 @@
],
"scripts": {
"test": [
- "phpunit --color=always"
+ "@php vendor/bin/phpunit --color=always"
],
"test-no-coverage": [
- "phpunit --color=always --no-coverage"
+ "@php vendor/bin/phpunit --color=always --no-coverage"
],
"check": [
- "php-cs-fixer fix --ansi --dry-run --diff",
- "phpcs --report-width=200 --report-summary --report-full samples/ src/ tests/ --ignore=src/PhpWord/Shared/PCLZip --standard=PSR2 -n",
- "phpmd src/,tests/ text ./phpmd.xml.dist --exclude pclzip.lib.php",
+ "@php vendor/bin/php-cs-fixer fix --ansi --dry-run --diff",
+ "@php vendor/bin/phpmd src/,tests/ text ./phpmd.xml.dist --exclude pclzip.lib.php",
"@test-no-coverage",
- "phpstan analyse --ansi"
+ "@php vendor/bin/phpstan analyse --ansi"
],
"fix": [
- "php-cs-fixer fix --ansi"
+ "@php vendor/bin/php-cs-fixer fix --ansi"
+ ],
+ "samples": [
+ "php samples/Sample_01_SimpleText.php",
+ "php samples/Sample_02_TabStops.php",
+ "php samples/Sample_03_Sections.php",
+ "php samples/Sample_04_Textrun.php",
+ "php samples/Sample_05_Multicolumn.php",
+ "php samples/Sample_06_Footnote.php",
+ "php samples/Sample_07_TemplateCloneRow.php",
+ "php samples/Sample_08_ParagraphPagination.php",
+ "php samples/Sample_09_Tables.php",
+ "php samples/Sample_10_EastAsianFontStyle.php",
+ "php samples/Sample_11_ReadWord97.php",
+ "php samples/Sample_11_ReadWord2007.php",
+ "php samples/Sample_12_HeaderFooter.php",
+ "php samples/Sample_13_Images.php",
+ "php samples/Sample_14_ListItem.php",
+ "php samples/Sample_15_Link.php",
+ "php samples/Sample_16_Object.php",
+ "php samples/Sample_17_TitleTOC.php",
+ "php samples/Sample_18_Watermark.php",
+ "php samples/Sample_19_TextBreak.php",
+ "php samples/Sample_20_BGColor.php",
+ "php samples/Sample_21_TableRowRules.php",
+ "php samples/Sample_22_CheckBox.php",
+ "php samples/Sample_23_TemplateBlock.php",
+ "php samples/Sample_24_ReadODText.php",
+ "php samples/Sample_25_TextBox.php",
+ "php samples/Sample_26_Html.php",
+ "php samples/Sample_27_Field.php",
+ "php samples/Sample_28_ReadRTF.php",
+ "php samples/Sample_29_Line.php",
+ "php samples/Sample_30_ReadHTML.php",
+ "php samples/Sample_31_Shape.php",
+ "php samples/Sample_32_Chart.php",
+ "php samples/Sample_33_FormField.php",
+ "php samples/Sample_34_SDT.php",
+ "php samples/Sample_35_InternalLink.php",
+ "php samples/Sample_36_RTL.php",
+ "php samples/Sample_37_Comments.php",
+ "php samples/Sample_38_Protection.php",
+ "php samples/Sample_39_TrackChanges.php",
+ "php samples/Sample_40_TemplateSetComplexValue.php",
+ "php samples/Sample_41_TemplateSetChart.php",
+ "php samples/Sample_42_TemplateSetCheckbox.php",
+ "php samples/Sample_43_RTLDefault.php",
+ "php samples/Sample_44_ExtractVariablesFromReaderWord2007.php",
+ "php samples/Sample_45_Autoloader.php"
]
},
"scripts-descriptions": {
@@ -58,34 +105,28 @@
"check": "Runs PHP CheckStyle and PHP Mess detector",
"fix": "Fixes issues found by PHP-CS"
},
- "config": {
- "platform": {
- "php": "8.0"
- }
- },
"require": {
"php": "^7.1|^8.0",
"ext-dom": "*",
+ "ext-gd": "*",
+ "ext-zip": "*",
"ext-json": "*",
"ext-xml": "*",
- "phpoffice/math": "^0.2"
+ "phpoffice/math": "^0.3"
},
"require-dev": {
- "ext-zip": "*",
- "ext-gd": "*",
"ext-libxml": "*",
- "dompdf/dompdf": "^2.0",
- "mpdf/mpdf": "^8.1",
- "phpmd/phpmd": "^2.13",
- "phpunit/phpunit": ">=7.0",
- "tecnickcom/tcpdf": "^6.5",
- "symfony/process": "^4.4 || ^5.0",
+ "dompdf/dompdf": "^2.0 || ^3.0",
"friendsofphp/php-cs-fixer": "^3.3",
- "phpstan/phpstan-phpunit": "@stable"
+ "mpdf/mpdf": "^7.0 || ^8.0",
+ "phpmd/phpmd": "^2.13",
+ "phpstan/phpstan": "^0.12.88 || ^1.0.0",
+ "phpstan/phpstan-phpunit": "^1.0 || ^2.0",
+ "phpunit/phpunit": ">=7.0",
+ "symfony/process": "^4.4 || ^5.0",
+ "tecnickcom/tcpdf": "^6.5"
},
"suggest": {
- "ext-zip": "Allows writing OOXML and ODF",
- "ext-gd2": "Allows adding images",
"ext-xmlwriter": "Allows writing OOXML and ODF",
"ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template",
"dompdf/dompdf": "Allows writing PDF"
diff --git a/vendor/phpoffice/phpword/phpstan-baseline.neon b/vendor/phpoffice/phpword/phpstan-baseline.neon
index 909718b8..86a54276 100644
--- a/vendor/phpoffice/phpword/phpstan-baseline.neon
+++ b/vendor/phpoffice/phpword/phpstan-baseline.neon
@@ -375,11 +375,6 @@ parameters:
count: 1
path: src/PhpWord/Shared/Drawing.php
- -
- message: "#^Binary operation \"\\*\" between string and 50 results in an error\\.$#"
- count: 1
- path: src/PhpWord/Shared/Html.php
-
-
message: "#^Call to an undefined method DOMNode\\:\\:getAttribute\\(\\)\\.$#"
count: 1
@@ -435,6 +430,11 @@ parameters:
count: 1
path: src/PhpWord/Shared/Html.php
+ -
+ message: "#^Method PhpOffice\\\\PhpWord\\\\Shared\\\\Html\\:\\:parseRuby\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/PhpWord/Shared/Html.php
+
-
message: "#^Method PhpOffice\\\\PhpWord\\\\Shared\\\\Html\\:\\:parseStyleDeclarations\\(\\) has no return type specified\\.$#"
count: 1
@@ -447,7 +447,7 @@ parameters:
-
message: "#^Parameter \\#1 \\$attribute of static method PhpOffice\\\\PhpWord\\\\Shared\\\\Html\\:\\:parseStyle\\(\\) expects DOMAttr, DOMNode given\\.$#"
- count: 1
+ count: 3
path: src/PhpWord/Shared/Html.php
-
@@ -685,11 +685,6 @@ parameters:
count: 1
path: src/PhpWord/Style/Cell.php
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Cell\\:\\:\\$shading is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Cell.php
-
-
message: "#^Method PhpOffice\\\\PhpWord\\\\Style\\\\Chart\\:\\:getMajorTickPosition\\(\\) has no return type specified\\.$#"
count: 1
@@ -760,41 +755,6 @@ parameters:
count: 1
path: src/PhpWord/Style/Font.php
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$allCaps is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$doubleStrikethrough is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$lang is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$paragraph is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$shading is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$smallCaps is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Font\\:\\:\\$strikethrough is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Font.php
-
-
message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Line\\:\\:\\$weight \\(int\\) does not accept float\\|int\\|null\\.$#"
count: 1
@@ -815,21 +775,6 @@ parameters:
count: 1
path: src/PhpWord/Style/Paragraph.php
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Paragraph\\:\\:\\$indentation is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Paragraph.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Paragraph\\:\\:\\$shading is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Paragraph.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Paragraph\\:\\:\\$spacing is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Paragraph.php
-
-
message: "#^Result of && is always false\\.$#"
count: 1
@@ -840,36 +785,6 @@ parameters:
count: 1
path: src/PhpWord/Style/Section.php
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Section\\:\\:\\$lineNumbering is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Section.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Shape\\:\\:\\$extrusion is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Shape.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Shape\\:\\:\\$fill is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Shape.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Shape\\:\\:\\$frame is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Shape.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Shape\\:\\:\\$outline is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Shape.php
-
- -
- message: "#^Property PhpOffice\\\\PhpWord\\\\Style\\\\Shape\\:\\:\\$shadow is never written, only read\\.$#"
- count: 1
- path: src/PhpWord/Style/Shape.php
-
-
message: "#^Method PhpOffice\\\\PhpWord\\\\Style\\\\TOC\\:\\:setTabLeader\\(\\) should return PhpOffice\\\\PhpWord\\\\Style\\\\TOC but returns PhpOffice\\\\PhpWord\\\\Style\\\\Tab\\.$#"
count: 1
@@ -1120,11 +1035,6 @@ parameters:
count: 1
path: src/PhpWord/Writer/AbstractWriter.php
- -
- message: "#^PHPDoc tag @param has invalid value \\(\\\\PhpOffice\\\\PhpWord\\\\PhpWord\\)\\: Unexpected token \"\\\\n \\*\", expected variable at offset 78$#"
- count: 1
- path: src/PhpWord/Writer/AbstractWriter.php
-
-
message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\HTML\\\\Element\\\\AbstractElement\\:\\:write\\(\\) has no return type specified\\.$#"
count: 1
@@ -1146,14 +1056,14 @@ parameters:
path: src/PhpWord/Writer/ODText/Element/Table.php
-
- message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\ODText\\\\Element\\\\Text\\:\\:replacetabs\\(\\) has parameter \\$text with no type specified\\.$#"
+ message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\ODText\\\\Element\\\\AbstractElement\\:\\:replaceTabs\\(\\) has parameter \\$text with no type specified\\.$#"
count: 1
- path: src/PhpWord/Writer/ODText/Element/Text.php
+ path: src/PhpWord/Writer/ODText/Element/AbstractElement.php
-
- message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\ODText\\\\Element\\\\Text\\:\\:replacetabs\\(\\) has parameter \\$xmlWriter with no type specified\\.$#"
+ message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\ODText\\\\Element\\\\AbstractElement\\:\\:replaceTabs\\(\\) has parameter \\$xmlWriter with no type specified\\.$#"
count: 1
- path: src/PhpWord/Writer/ODText/Element/Text.php
+ path: src/PhpWord/Writer/ODText/Element/AbstractElement.php
-
message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\ODText\\\\Element\\\\Text\\:\\:writeChangeInsertion\\(\\) has parameter \\$start with no type specified\\.$#"
@@ -1315,11 +1225,6 @@ parameters:
count: 1
path: src/PhpWord/Writer/RTF/Style/Border.php
- -
- message: "#^PHPDoc tag @param has invalid value \\(\\\\PhpOffice\\\\PhpWord\\\\PhpWord\\)\\: Unexpected token \"\\\\n \", expected variable at offset 86$#"
- count: 1
- path: src/PhpWord/Writer/Word2007.php
-
-
message: "#^Method PhpOffice\\\\PhpWord\\\\Writer\\\\Word2007\\\\Element\\\\AbstractElement\\:\\:write\\(\\) has no return type specified\\.$#"
count: 1
@@ -1426,29 +1331,29 @@ parameters:
path: tests/PhpWordTests/AbstractTestReader.php
-
- message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbeddedTest\\:\\:getBaseUrl\\(\\) has no return type specified\\.$#"
+ message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbedded\\:\\:getBaseUrl\\(\\) has no return type specified\\.$#"
count: 1
- path: tests/PhpWordTests/AbstractWebServerEmbeddedTest.php
+ path: tests/PhpWordTests/AbstractWebServerEmbedded.php
-
- message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbeddedTest\\:\\:getRemoteBmpImageUrl\\(\\) has no return type specified\\.$#"
+ message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbedded\\:\\:getRemoteBmpImageUrl\\(\\) has no return type specified\\.$#"
count: 1
- path: tests/PhpWordTests/AbstractWebServerEmbeddedTest.php
+ path: tests/PhpWordTests/AbstractWebServerEmbedded.php
-
- message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbeddedTest\\:\\:getRemoteGifImageUrl\\(\\) has no return type specified\\.$#"
+ message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbedded\\:\\:getRemoteGifImageUrl\\(\\) has no return type specified\\.$#"
count: 1
- path: tests/PhpWordTests/AbstractWebServerEmbeddedTest.php
+ path: tests/PhpWordTests/AbstractWebServerEmbedded.php
-
- message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbeddedTest\\:\\:getRemoteImageUrl\\(\\) has no return type specified\\.$#"
+ message: "#^Method PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbedded\\:\\:getRemoteImageUrl\\(\\) has no return type specified\\.$#"
count: 1
- path: tests/PhpWordTests/AbstractWebServerEmbeddedTest.php
+ path: tests/PhpWordTests/AbstractWebServerEmbedded.php
-
- message: "#^Property PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbeddedTest\\:\\:\\$httpServer has no type specified\\.$#"
+ message: "#^Property PhpOffice\\\\PhpWordTests\\\\AbstractWebServerEmbedded\\:\\:\\$httpServer has no type specified\\.$#"
count: 1
- path: tests/PhpWordTests/AbstractWebServerEmbeddedTest.php
+ path: tests/PhpWordTests/AbstractWebServerEmbedded.php
-
message: "#^Parameter \\#1 \\$width of class PhpOffice\\\\PhpWord\\\\Element\\\\Cell constructor expects int\\|null, string given\\.$#"
@@ -1789,6 +1694,11 @@ parameters:
message: "#^Cannot access property \\$length on DOMNodeList\\\\|false\\.$#"
count: 9
path: tests/PhpWordTests/Writer/HTML/ElementTest.php
+
+ -
+ message: "#^Cannot access property \\$length on DOMNodeList\\\\|false\\.$#"
+ count: 2
+ path: tests/PhpWordTests/Writer/HTML/Element/RubyTest.php
-
message: "#^Cannot call method item\\(\\) on DOMNodeList\\\\|false\\.$#"
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Collection/Charts.php b/vendor/phpoffice/phpword/src/PhpWord/Collection/Charts.php
index 7c2dfbab..ef1c6597 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Collection/Charts.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Collection/Charts.php
@@ -1,4 +1,5 @@
*/
class Charts extends AbstractCollection
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Collection/Comments.php b/vendor/phpoffice/phpword/src/PhpWord/Collection/Comments.php
index 5fa4020a..4f139435 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Collection/Comments.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Collection/Comments.php
@@ -1,4 +1,5 @@
*/
class Comments extends AbstractCollection
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Collection/Endnotes.php b/vendor/phpoffice/phpword/src/PhpWord/Collection/Endnotes.php
index 09903b1b..3de1ad22 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Collection/Endnotes.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Collection/Endnotes.php
@@ -1,4 +1,5 @@
*/
class Endnotes extends AbstractCollection
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Collection/Footnotes.php b/vendor/phpoffice/phpword/src/PhpWord/Collection/Footnotes.php
index 0387fce3..804a45c8 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Collection/Footnotes.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Collection/Footnotes.php
@@ -1,4 +1,5 @@
*/
class Footnotes extends AbstractCollection
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Collection/Titles.php b/vendor/phpoffice/phpword/src/PhpWord/Collection/Titles.php
index 543aabda..1a943697 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Collection/Titles.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Collection/Titles.php
@@ -1,4 +1,5 @@
*/
class Titles extends AbstractCollection
diff --git a/vendor/phpoffice/phpword/src/PhpWord/ComplexType/FootnoteProperties.php b/vendor/phpoffice/phpword/src/PhpWord/ComplexType/FootnoteProperties.php
index 2e7743ca..10c426e8 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/ComplexType/FootnoteProperties.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/ComplexType/FootnoteProperties.php
@@ -1,4 +1,5 @@
newInstanceArgs($elementArgs);
// Set parent container
@@ -165,7 +167,7 @@ abstract class AbstractContainer extends AbstractElement
/**
* Get all elements.
*
- * @return \PhpOffice\PhpWord\Element\AbstractElement[]
+ * @return AbstractElement[]
*/
public function getElements()
{
@@ -177,7 +179,7 @@ abstract class AbstractContainer extends AbstractElement
*
* @param int $index
*
- * @return null|\PhpOffice\PhpWord\Element\AbstractElement
+ * @return null|AbstractElement
*/
public function getElement($index)
{
@@ -191,13 +193,13 @@ abstract class AbstractContainer extends AbstractElement
/**
* Removes the element at requested index.
*
- * @param int|\PhpOffice\PhpWord\Element\AbstractElement $toRemove
+ * @param AbstractElement|int $toRemove
*/
public function removeElement($toRemove): void
{
if (is_int($toRemove) && array_key_exists($toRemove, $this->elements)) {
unset($this->elements[$toRemove]);
- } elseif ($toRemove instanceof \PhpOffice\PhpWord\Element\AbstractElement) {
+ } elseif ($toRemove instanceof AbstractElement) {
foreach ($this->elements as $key => $element) {
if ($element->getElementId() === $toRemove->getElementId()) {
unset($this->elements[$key]);
@@ -253,7 +255,7 @@ abstract class AbstractContainer extends AbstractElement
'Footnote' => ['Section', 'TextRun', 'Cell', 'ListItemRun'],
'Endnote' => ['Section', 'TextRun', 'Cell'],
'PreserveText' => ['Section', 'Header', 'Footer', 'Cell'],
- 'Title' => ['Section', 'Cell'],
+ 'Title' => ['Section', 'Cell', 'Header'],
'TOC' => ['Section'],
'PageBreak' => ['Section'],
'Chart' => ['Section', 'Cell'],
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Element/AbstractElement.php b/vendor/phpoffice/phpword/src/PhpWord/Element/AbstractElement.php
index 385e4d31..3a29b686 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Element/AbstractElement.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Element/AbstractElement.php
@@ -1,4 +1,5 @@
elementId = substr(md5(mt_rand()), 0, 6);
+ $this->elementId = substr(md5((string) mt_rand()), 0, 6);
}
/**
@@ -291,8 +290,6 @@ abstract class AbstractElement
/**
* Get comments start.
- *
- * @return Comments
*/
public function getCommentsRangeStart(): ?Comments
{
@@ -301,8 +298,6 @@ abstract class AbstractElement
/**
* Get comment start.
- *
- * @return Comment
*/
public function getCommentRangeStart(): ?Comment
{
@@ -339,8 +334,6 @@ abstract class AbstractElement
/**
* Get comments end.
- *
- * @return Comments
*/
public function getCommentsRangeEnd(): ?Comments
{
@@ -349,8 +342,6 @@ abstract class AbstractElement
/**
* Get comment end.
- *
- * @return Comment
*/
public function getCommentRangeEnd(): ?Comment
{
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Element/Bookmark.php b/vendor/phpoffice/phpword/src/PhpWord/Element/Bookmark.php
index 4fe3d0f0..151d5a48 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Element/Bookmark.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Element/Bookmark.php
@@ -1,4 +1,5 @@
phpWord->getTitles()->getItems();
foreach ($titles as $i => $title) {
- /** @var \PhpOffice\PhpWord\Element\Title $title Type hint */
+ /** @var Title $title Type hint */
$depth = $title->getDepth();
if ($this->minDepth > $depth) {
unset($titles[$i]);
@@ -110,7 +111,7 @@ class TOC extends AbstractElement
/**
* Get TOC Style.
*
- * @return \PhpOffice\PhpWord\Style\TOC
+ * @return TOCStyle
*/
public function getStyleTOC()
{
@@ -120,7 +121,7 @@ class TOC extends AbstractElement
/**
* Get Font Style.
*
- * @return \PhpOffice\PhpWord\Style\Font|string
+ * @return Font|string
*/
public function getStyleFont()
{
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Element/Text.php b/vendor/phpoffice/phpword/src/PhpWord/Element/Text.php
index 96953953..f20b273e 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Element/Text.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Element/Text.php
@@ -1,4 +1,5 @@
text;
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Element/TextBox.php b/vendor/phpoffice/phpword/src/PhpWord/Element/TextBox.php
index af37f657..b9f8b50b 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Element/TextBox.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Element/TextBox.php
@@ -1,4 +1,5 @@
getElements('w:r|w:hyperlink', $domNode);
- if ($nodes->length === 1) {
+ $hasRubyElement = $xmlReader->elementExists('w:r/w:ruby', $domNode);
+ if ($nodes->length === 1 && !$hasRubyElement) {
$textContent = htmlspecialchars($xmlReader->getValue('w:t', $nodes->item(0)), ENT_QUOTES, 'UTF-8');
} else {
$textContent = new TextRun($paragraphStyle);
@@ -450,7 +455,7 @@ abstract class AbstractPart
/**
* Read w:r.
*
- * @param \PhpOffice\PhpWord\Element\AbstractContainer $parent
+ * @param AbstractContainer $parent
* @param string $docPart
* @param mixed $paragraphStyle
*
@@ -584,9 +589,47 @@ abstract class AbstractPart
}
} elseif ($node->nodeName == 'w:softHyphen') {
$element = $parent->addText("\u{200c}", $fontStyle, $paragraphStyle);
+ } elseif ($node->nodeName == 'w:ruby') {
+ $rubyPropertiesNode = $xmlReader->getElement('w:rubyPr', $node);
+ $properties = $this->readRubyProperties($xmlReader, $rubyPropertiesNode);
+ // read base text node
+ $baseText = new TextRun($paragraphStyle);
+ $baseTextNode = $xmlReader->getElement('w:rubyBase/w:r', $node);
+ $this->readRun($xmlReader, $baseTextNode, $baseText, $docPart, $paragraphStyle);
+ // read the actual ruby text (e.g. furigana in Japanese)
+ $rubyText = new TextRun($paragraphStyle);
+ $rubyTextNode = $xmlReader->getElement('w:rt/w:r', $node);
+ $this->readRun($xmlReader, $rubyTextNode, $rubyText, $docPart, $paragraphStyle);
+ // add element to parent
+ $parent->addRuby($baseText, $rubyText, $properties);
}
}
+ /**
+ * Read w:rubyPr element.
+ *
+ * @param XMLReader $xmlReader reader for XML
+ * @param DOMElement $domNode w:RubyPr element
+ *
+ * @return RubyProperties ruby properties from element
+ */
+ protected function readRubyProperties(XMLReader $xmlReader, DOMElement $domNode): RubyProperties
+ {
+ $rubyAlignment = $xmlReader->getElement('w:rubyAlign', $domNode)->getAttribute('w:val');
+ $rubyHps = $xmlReader->getElement('w:hps', $domNode)->getAttribute('w:val'); // font face
+ $rubyHpsRaise = $xmlReader->getElement('w:hpsRaise', $domNode)->getAttribute('w:val'); // pts above base text
+ $rubyHpsBaseText = $xmlReader->getElement('w:hpsBaseText', $domNode)->getAttribute('w:val'); // base text size
+ $rubyLid = $xmlReader->getElement('w:lid', $domNode)->getAttribute('w:val'); // type of ruby
+ $properties = new RubyProperties();
+ $properties->setAlignment($rubyAlignment);
+ $properties->setFontFaceSize((float) $rubyHps);
+ $properties->setFontPointsAboveBaseText((float) $rubyHpsRaise);
+ $properties->setFontSizeForBaseText((float) $rubyHpsBaseText);
+ $properties->setLanguageId($rubyLid);
+
+ return $properties;
+ }
+
/**
* Read w:tbl.
*
@@ -661,8 +704,11 @@ abstract class AbstractPart
'alignment' => [self::READ_VALUE, 'w:jc'],
'basedOn' => [self::READ_VALUE, 'w:basedOn'],
'next' => [self::READ_VALUE, 'w:next'],
- 'indent' => [self::READ_VALUE, 'w:ind', 'w:left'],
- 'hanging' => [self::READ_VALUE, 'w:ind', 'w:hanging'],
+ 'indentLeft' => [self::READ_VALUE, 'w:ind', 'w:left'],
+ 'indentRight' => [self::READ_VALUE, 'w:ind', 'w:right'],
+ 'indentHanging' => [self::READ_VALUE, 'w:ind', 'w:hanging'],
+ 'indentFirstLine' => [self::READ_VALUE, 'w:ind', 'w:firstLine'],
+ 'indentFirstLineChars' => [self::READ_VALUE, 'w:ind', 'w:firstLineChars'],
'spaceAfter' => [self::READ_VALUE, 'w:spacing', 'w:after'],
'spaceBefore' => [self::READ_VALUE, 'w:spacing', 'w:before'],
'widowControl' => [self::READ_FALSE, 'w:widowControl'],
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Reader/Word2007/DocPropsApp.php b/vendor/phpoffice/phpword/src/PhpWord/Reader/Word2007/DocPropsApp.php
index 9d6f3cbb..c7ecb007 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Reader/Word2007/DocPropsApp.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Reader/Word2007/DocPropsApp.php
@@ -1,4 +1,5 @@
setDefaultFontSize($fontDefaultStyle['size']);
}
+ if (array_key_exists('color', $fontDefaultStyle)) {
+ $phpWord->setDefaultFontColor($fontDefaultStyle['color']);
+ }
if (array_key_exists('lang', $fontDefaultStyle)) {
$phpWord->getSettings()->setThemeFontLang(new Language($fontDefaultStyle['lang']));
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Settings.php b/vendor/phpoffice/phpword/src/PhpWord/Settings.php
index 984486cc..16f49166 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Settings.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Settings.php
@@ -1,4 +1,5 @@
cssContent);
preg_match_all('/(.+?)\s?\{\s?(.+?)\s?\}/', $cssContent, $cssExtracted);
- // Check the number of extracted
- if (count($cssExtracted) != 3) {
- return;
- }
// Check if there are x selectors and x rules
if (count($cssExtracted[1]) != count($cssExtracted[2])) {
return;
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Shared/Drawing.php b/vendor/phpoffice/phpword/src/PhpWord/Shared/Drawing.php
index df218108..8af7da2f 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Shared/Drawing.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Shared/Drawing.php
@@ -1,4 +1,5 @@
vAlign = null;
+
+ return $this;
+ }
+
VerticalJc::validate($value);
$this->vAlign = $this->setEnumVal($value, VerticalJc::values(), $this->vAlign);
@@ -235,7 +262,7 @@ class Cell extends Border
/**
* Get vertical merge (rowspan).
*
- * @return string
+ * @return null|string
*/
public function getVMerge()
{
@@ -245,12 +272,18 @@ class Cell extends Border
/**
* Set vertical merge (rowspan).
*
- * @param string $value
+ * @param null|string $value
*
* @return self
*/
public function setVMerge($value = null)
{
+ if ($value === null) {
+ $this->vMerge = null;
+
+ return $this;
+ }
+
$enum = [self::VMERGE_RESTART, self::VMERGE_CONTINUE];
$this->vMerge = $this->setEnumVal($value, $enum, $this->vMerge);
@@ -260,7 +293,7 @@ class Cell extends Border
/**
* Get shading.
*
- * @return \PhpOffice\PhpWord\Style\Shading
+ * @return Shading
*/
public function getShading()
{
@@ -344,4 +377,84 @@ class Cell extends Border
{
return $this->noWrap;
}
+
+ /**
+ * Get style padding-top.
+ */
+ public function getPaddingTop(): ?int
+ {
+ return $this->paddingTop;
+ }
+
+ /**
+ * Set style padding-top.
+ *
+ * @return $this
+ */
+ public function setPaddingTop(int $value): self
+ {
+ $this->paddingTop = $value;
+
+ return $this;
+ }
+
+ /**
+ * Get style padding-bottom.
+ */
+ public function getPaddingBottom(): ?int
+ {
+ return $this->paddingBottom;
+ }
+
+ /**
+ * Set style padding-bottom.
+ *
+ * @return $this
+ */
+ public function setPaddingBottom(int $value): self
+ {
+ $this->paddingBottom = $value;
+
+ return $this;
+ }
+
+ /**
+ * Get style padding-left.
+ */
+ public function getPaddingLeft(): ?int
+ {
+ return $this->paddingLeft;
+ }
+
+ /**
+ * Set style padding-left.
+ *
+ * @return $this
+ */
+ public function setPaddingLeft(int $value): self
+ {
+ $this->paddingLeft = $value;
+
+ return $this;
+ }
+
+ /**
+ * Get style padding-right.
+ */
+ public function getPaddingRight(): ?int
+ {
+ return $this->paddingRight;
+ }
+
+ /**
+ * Set style padding-right.
+ *
+ * @return $this
+ */
+ public function setPaddingRight(int $value): self
+ {
+ $this->paddingRight = $value;
+
+ return $this;
+ }
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Style/Extrusion.php b/vendor/phpoffice/phpword/src/PhpWord/Style/Extrusion.php
index dd002312..c31c51eb 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Style/Extrusion.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Style/Extrusion.php
@@ -1,4 +1,5 @@
zip()->AddFromString("word/media/image1.jpg", file_get_contents($file));
* To read a file: $templateProcessor->zip()->getFromName("word/media/image1.jpg");
*
- * @return \PhpOffice\PhpWord\Shared\ZipArchive
+ * @return ZipArchive
*/
public function zip()
{
@@ -269,7 +269,7 @@ class TemplateProcessor
*/
protected static function ensureUtf8Encoded($subject)
{
- return $subject ? Text::toUTF8($subject) : '';
+ return (null !== $subject) ? Text::toUTF8($subject) : '';
}
/**
@@ -281,7 +281,7 @@ class TemplateProcessor
$objectClass = 'PhpOffice\\PhpWord\\Writer\\Word2007\\Element\\' . $elementName;
$xmlWriter = new XMLWriter();
- /** @var \PhpOffice\PhpWord\Writer\Word2007\Element\AbstractElement $elementWriter */
+ /** @var Writer\Word2007\Element\AbstractElement $elementWriter */
$elementWriter = new $objectClass($xmlWriter, $complexType, true);
$elementWriter->write();
@@ -308,7 +308,7 @@ class TemplateProcessor
$objectClass = 'PhpOffice\\PhpWord\\Writer\\Word2007\\Element\\' . $elementName;
$xmlWriter = new XMLWriter();
- /** @var \PhpOffice\PhpWord\Writer\Word2007\Element\AbstractElement $elementWriter */
+ /** @var Writer\Word2007\Element\AbstractElement $elementWriter */
$elementWriter = new $objectClass($xmlWriter, $complexType, false);
$elementWriter->write();
@@ -362,10 +362,10 @@ class TemplateProcessor
/**
* Set values from a one-dimensional array of "variable => value"-pairs.
*/
- public function setValues(array $values): void
+ public function setValues(array $values, int $limit = self::MAXIMUM_REPLACEMENTS_DEFAULT): void
{
foreach ($values as $macro => $replace) {
- $this->setValue($macro, $replace);
+ $this->setValue($macro, $replace, $limit);
}
}
@@ -406,7 +406,7 @@ class TemplateProcessor
$filename = "charts/chart{$rId}.xml";
// Get the part writer
- $writerPart = new \PhpOffice\PhpWord\Writer\Word2007\Part\Chart();
+ $writerPart = new Writer\Word2007\Part\Chart();
$writerPart->setElement($chart);
// ContentTypes.xml
@@ -499,20 +499,22 @@ class TemplateProcessor
$widthFloat = $heightFloat * $imageRatio;
$matches = [];
preg_match('/\\d([a-z%]+)$/', $height, $matches);
- $width = $widthFloat . $matches[1];
+ $width = $widthFloat . (!empty($matches) ? $matches[1] : 'px');
} elseif ($height === '') { // defined height is empty
$widthFloat = (float) $width;
$heightFloat = $widthFloat / $imageRatio;
$matches = [];
preg_match('/\\d([a-z%]+)$/', $width, $matches);
- $height = $heightFloat . $matches[1];
+ $height = $heightFloat . (!empty($matches) ? $matches[1] : 'px');
} else { // we have defined size, but we need also check it aspect ratio
$widthMatches = [];
preg_match('/\\d([a-z%]+)$/', $width, $widthMatches);
$heightMatches = [];
preg_match('/\\d([a-z%]+)$/', $height, $heightMatches);
// try to fix only if dimensions are same
- if ($widthMatches[1] == $heightMatches[1]) {
+ if (!empty($widthMatches)
+ && !empty($heightMatches)
+ && $widthMatches[1] == $heightMatches[1]) {
$dimention = $widthMatches[1];
$widthFloat = (float) $width;
$heightFloat = (float) $height;
@@ -1287,7 +1289,7 @@ class TemplateProcessor
* @param int $count
* @param string $xmlBlock
*
- * @return string
+ * @return array
*/
protected function indexClonedVariables($count, $xmlBlock)
{
@@ -1339,7 +1341,7 @@ class TemplateProcessor
* @param string $block New block content
* @param string $blockType XML tag type of block
*
- * @return \PhpOffice\PhpWord\TemplateProcessor Fluent interface
+ * @return TemplateProcessor Fluent interface
*/
public function replaceXmlBlock($macro, $block, $blockType = 'w:p')
{
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML.php
index 64789059..41229b45 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML.php
@@ -1,4 +1,5 @@
parts as $partName) {
$partClass = 'PhpOffice\\PhpWord\\Writer\\HTML\\Part\\' . $partName;
if (class_exists($partClass)) {
- /** @var \PhpOffice\PhpWord\Writer\HTML\Part\AbstractPart $part Type hint */
+ /** @var HTML\Part\AbstractPart $part Type hint */
$part = new $partClass();
$part->setParentWriter($this);
$this->writerParts[strtolower($partName)] = $part;
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/AbstractElement.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/AbstractElement.php
index 7c7bde31..0e6a112e 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/AbstractElement.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/AbstractElement.php
@@ -1,4 +1,5 @@
namespace, $elementClass);
if (class_exists($writerClass)) {
- /** @var \PhpOffice\PhpWord\Writer\HTML\Element\AbstractElement $writer Type hint */
+ /** @var AbstractElement $writer Type hint */
$writer = new $writerClass($this->parentWriter, $element, $withoutP);
$content .= $writer->write();
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/Endnote.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/Endnote.php
index 1c35e8fa..7e7f31d4 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/Endnote.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Element/Endnote.php
@@ -1,4 +1,5 @@
' . PHP_EOL;
-
+ $defaultFontColor = Settings::getDefaultFontColor();
// Default styles
$astarray = [
'font-family' => $this->getFontFamily(Settings::getDefaultFontName(), $this->getParentWriter()->getDefaultGenericFont()),
'font-size' => Settings::getDefaultFontSize() . 'pt',
+ 'color' => "#{$defaultFontColor}",
];
// Mpdf sometimes needs separate tag for body; doesn't harm others.
$bodyarray = $astarray;
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Style/AbstractStyle.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Style/AbstractStyle.php
index a6507867..4672347b 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Style/AbstractStyle.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/HTML/Style/AbstractStyle.php
@@ -1,4 +1,5 @@
getVAlign();
+ }
foreach (['Top', 'Left', 'Bottom', 'Right'] as $direction) {
$method = 'getBorder' . $direction . 'Style';
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/AbstractElement.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/AbstractElement.php
index 5cd396aa..97d1875c 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/AbstractElement.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/AbstractElement.php
@@ -1,4 +1,5 @@
startElement('text:s');
+ $xmlWriter->writeAttributeIf($num > 1, 'text:c', "$num");
+ $xmlWriter->endElement();
+ $text = preg_replace('/^ +/', '', $text);
+ }
+ preg_match_all('/([\\s\\S]*?)(\\t| +| ?$)/', $text, $matches, PREG_SET_ORDER);
+ foreach ($matches as $match) {
+ $this->writeText($match[1]);
+ if ($match[2] === '') {
+ break;
+ } elseif ($match[2] === "\t") {
+ $xmlWriter->writeElement('text:tab');
+ } elseif ($match[2] === ' ') {
+ $xmlWriter->writeElement('text:s');
+
+ break;
+ } else {
+ $num = strlen($match[2]);
+ $xmlWriter->startElement('text:s');
+ $xmlWriter->writeAttributeIf($num > 1, 'text:c', "$num");
+ $xmlWriter->endElement();
+ }
+ }
+ }
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Container.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Container.php
index 6e6b88ea..6b0fee8c 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Container.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Container.php
@@ -1,4 +1,5 @@
+ */
+ protected $containerWithoutP = ['TextRun', 'Footnote', 'Endnote'];
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Field.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Field.php
index 46f62b0f..6b548078 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Field.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Field.php
@@ -1,4 +1,5 @@
getXmlWriter();
$element = $this->getElement();
- if (!$element instanceof \PhpOffice\PhpWord\Element\Image) {
+ if (!$element instanceof ElementImage) {
return;
}
@@ -43,11 +44,16 @@ class Image extends AbstractElement
$width = Converter::pixelToCm($style->getWidth());
$height = Converter::pixelToCm($style->getHeight());
- $xmlWriter->startElement('text:p');
- $xmlWriter->writeAttribute('text:style-name', 'IM' . $mediaIndex);
+ $xmlWriter = $this->getXmlWriter();
+
+ if (!$this->withoutP) {
+ $xmlWriter->startElement('text:p');
+ $xmlWriter->writeAttribute('text:style-name', 'IM' . $mediaIndex);
+ }
$xmlWriter->startElement('draw:frame');
$xmlWriter->writeAttribute('draw:style-name', 'fr' . $mediaIndex);
+ $xmlWriter->writeAttributeIf($this->withoutP, 'draw:text-style-name', 'IM' . $mediaIndex);
$xmlWriter->writeAttribute('draw:name', $element->getElementId());
$xmlWriter->writeAttribute('text:anchor-type', 'as-char');
$xmlWriter->writeAttribute('svg:width', $width . 'cm');
@@ -63,6 +69,8 @@ class Image extends AbstractElement
$xmlWriter->endElement(); // draw:frame
- $xmlWriter->endElement(); // text:p
+ if (!$this->withoutP) {
+ $xmlWriter->endElement(); // text:p
+ }
}
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Link.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Link.php
index 0375b11b..9ef35692 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Link.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/Link.php
@@ -1,4 +1,5 @@
getXmlWriter();
$element = $this->getElement();
- if (!$element instanceof \PhpOffice\PhpWord\Element\Table) {
+ if (!$element instanceof TableElement) {
return;
}
$rows = $element->getRows();
@@ -77,7 +78,7 @@ class Table extends AbstractElement
private function writeRow(XMLWriter $xmlWriter, RowElement $row): void
{
$xmlWriter->startElement('table:table-row');
- /** @var \PhpOffice\PhpWord\Element\Row $row Type hint */
+ /** @var RowElement $row Type hint */
foreach ($row->getCells() as $cell) {
$xmlWriter->startElement('table:table-cell');
$xmlWriter->writeAttribute('office:value-type', 'string');
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/TextRun.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/TextRun.php
index 6d1e1a19..9d009c39 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/TextRun.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Element/TextRun.php
@@ -1,4 +1,5 @@
imageParagraphStyles as $style) {
- $styleWriter = new \PhpOffice\PhpWord\Writer\ODText\Style\Paragraph($xmlWriter, $style);
+ $styleWriter = new ParagraphStyleWriter($xmlWriter, $style);
$styleWriter->write();
}
}
@@ -256,7 +257,7 @@ class Content extends AbstractPart
*
* Table style can be null or string of the style name
*
- * @param \PhpOffice\PhpWord\Element\AbstractContainer $container
+ * @param AbstractContainer $container
* @param int $paragraphStyleCount
* @param int $fontStyleCount
*
@@ -277,7 +278,7 @@ class Content extends AbstractPart
$style = $element->getStyle();
$style->setStyleName('fr' . $element->getMediaIndex());
$this->autoStyles['Image'][] = $style;
- $sty = new \PhpOffice\PhpWord\Style\Paragraph();
+ $sty = new Paragraph();
$sty->setStyleName('IM' . $element->getMediaIndex());
$sty->setAuto();
$sty->setAlignment($style->getAlignment());
@@ -300,7 +301,7 @@ class Content extends AbstractPart
/**
* Get style of individual element.
*
- * @param \PhpOffice\PhpWord\Element\Text $element
+ * @param Text $element
* @param int $paragraphStyleCount
* @param int $fontStyleCount
*/
@@ -346,7 +347,7 @@ class Content extends AbstractPart
/**
* Get font style of individual field element.
*
- * @param \PhpOffice\PhpWord\Element\Field $element
+ * @param Field $element
* @param int $fontStyleCount
*/
private function getElementStyleField($element, &$fontStyleCount): void
@@ -371,7 +372,7 @@ class Content extends AbstractPart
/**
* Get style of individual element.
*
- * @param \PhpOffice\PhpWord\Element\TextRun $element
+ * @param TextRun $element
* @param int $paragraphStyleCount
*/
private function getElementStyleTextRun($element, &$paragraphStyleCount): void
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Part/Meta.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Part/Meta.php
index 8a35d02a..21410ba9 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Part/Meta.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Part/Meta.php
@@ -1,4 +1,5 @@
setStyleName($style->getStyleName());
- $temp2 = new \PhpOffice\PhpWord\Writer\ODText\Style\Paragraph($xmlWriter, $temp1);
+ $temp2 = new Paragraph($xmlWriter, $temp1);
$temp2->write();
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Paragraph.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Paragraph.php
index 4459c76c..99963bd4 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Paragraph.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Paragraph.php
@@ -1,4 +1,5 @@
getStyle();
- if (!$style instanceof \PhpOffice\PhpWord\Style\Paragraph) {
+ if (!$style instanceof Style\Paragraph) {
return;
}
$xmlWriter = $this->getXmlWriter();
@@ -73,13 +74,13 @@ class Paragraph extends AbstractStyle
} elseif (substr($styleName, 0, 2) === 'HD') {
$styleAuto = true;
$psm = 'Heading_' . substr($styleName, 2);
- $stylep = \PhpOffice\PhpWord\Style::getStyle($psm);
- if ($stylep instanceof \PhpOffice\PhpWord\Style\Font) {
+ $stylep = Style::getStyle($psm);
+ if ($stylep instanceof Style\Font) {
if (method_exists($stylep, 'getParagraph')) {
$stylep = $stylep->getParagraph();
}
}
- if ($stylep instanceof \PhpOffice\PhpWord\Style\Paragraph) {
+ if ($stylep instanceof Style\Paragraph) {
if ($stylep->hasPageBreakBefore()) {
$breakbefore = true;
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Section.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Section.php
index 0a250194..05152a39 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Section.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/ODText/Style/Section.php
@@ -1,4 +1,5 @@
parts as $partName) {
$partClass = static::class . '\\Part\\' . $partName;
if (class_exists($partClass)) {
- /** @var \PhpOffice\PhpWord\Writer\RTF\Part\AbstractPart $part Type hint */
+ /** @var RTF\Part\AbstractPart $part Type hint */
$part = new $partClass();
$part->setParentWriter($this);
$this->writerParts[strtolower($partName)] = $part;
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/AbstractElement.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/AbstractElement.php
index 5c33868a..e007e6aa 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/AbstractElement.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/AbstractElement.php
@@ -1,4 +1,5 @@
parentWriter;
/** @var \PhpOffice\PhpWord\Element\Text $element Type hint */
@@ -188,7 +189,7 @@ abstract class AbstractElement
return '';
}
- /** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Type hint */
+ /** @var WriterRTF $parentWriter Type hint */
$parentWriter = $this->parentWriter;
// Create style writer and set color/name index
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/Field.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/Field.php
index 34024f5e..c5e49c1d 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/Field.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Element/Field.php
@@ -1,4 +1,5 @@
getHeaders() as $header) {
$type = $header->getType();
- if ($evenOdd || $type !== FOOTER::EVEN) {
+ if ($evenOdd || $type !== Footer::EVEN) {
$content .= '{\\header';
if ($type === Footer::FIRST) {
$content .= 'f';
} elseif ($evenOdd) {
- $content .= ($type === FOOTER::EVEN) ? 'l' : 'r';
+ $content .= ($type === Footer::EVEN) ? 'l' : 'r';
}
foreach ($header->getElements() as $element) {
$cl = get_class($element);
@@ -182,12 +183,12 @@ class Document extends AbstractPart
}
foreach ($section->getFooters() as $footer) {
$type = $footer->getType();
- if ($evenOdd || $type !== FOOTER::EVEN) {
+ if ($evenOdd || $type !== Footer::EVEN) {
$content .= '{\\footer';
if ($type === Footer::FIRST) {
$content .= 'f';
} elseif ($evenOdd) {
- $content .= ($type === FOOTER::EVEN) ? 'l' : 'r';
+ $content .= ($type === Footer::EVEN) ? 'l' : 'r';
}
foreach ($footer->getElements() as $element) {
$cl = get_class($element);
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Part/Header.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Part/Header.php
index 7f8cc84b..97644fe4 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Part/Header.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/RTF/Part/Header.php
@@ -1,4 +1,5 @@
parts) as $partName) {
$partClass = static::class . '\\Part\\' . $partName;
if (class_exists($partClass)) {
- /** @var \PhpOffice\PhpWord\Writer\Word2007\Part\AbstractPart $part Type hint */
+ /** @var Word2007\Part\AbstractPart $part Type hint */
$part = new $partClass();
$part->setParentWriter($this);
$this->writerParts[strtolower($partName)] = $part;
@@ -179,7 +178,7 @@ class Word2007 extends AbstractWriter implements WriterInterface
$this->registerContentTypes($media);
}
- /** @var \PhpOffice\PhpWord\Writer\Word2007\Part\AbstractPart $writerPart Type hint */
+ /** @var Word2007\Part\AbstractPart $writerPart Type hint */
$writerPart = $this->getWriterPart('relspart')->setMedia($media);
$zip->addFromString("word/_rels/{$file}.xml.rels", $writerPart->write());
}
@@ -206,7 +205,7 @@ class Word2007 extends AbstractWriter implements WriterInterface
$this->contentTypes['override']["/word/$elmFile"] = $elmType;
$this->relationships[] = ['target' => $elmFile, 'type' => $elmType, 'rID' => $rId];
- /** @var \PhpOffice\PhpWord\Writer\Word2007\Part\AbstractPart $writerPart Type hint */
+ /** @var Word2007\Part\AbstractPart $writerPart Type hint */
$writerPart = $this->getWriterPart($elmType)->setElement($element);
$zip->addFromString("word/$elmFile", $writerPart->write());
}
@@ -236,7 +235,7 @@ class Word2007 extends AbstractWriter implements WriterInterface
// Write relationships file, e.g. word/_rels/footnotes.xml
if (!empty($media)) {
- /** @var \PhpOffice\PhpWord\Writer\Word2007\Part\AbstractPart $writerPart Type hint */
+ /** @var Word2007\Part\AbstractPart $writerPart Type hint */
$writerPart = $this->getWriterPart('relspart')->setMedia($media);
$zip->addFromString("word/_rels/{$partName}.xml.rels", $writerPart->write());
}
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Bookmark.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Bookmark.php
index 1e618af9..ba61ad69 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Bookmark.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Bookmark.php
@@ -1,4 +1,5 @@
endElement(); // w:r
if ($element->getText() != null) {
- if ($element->getText() instanceof \PhpOffice\PhpWord\Element\TextRun) {
+ if ($element->getText() instanceof TextRun) {
$containerWriter = new Container($xmlWriter, $element->getText(), true);
$containerWriter->write();
}
@@ -262,7 +263,7 @@ class Field extends Text
$xmlWriter->endElement(); // w:r
if ($element->getText() != null) {
- if ($element->getText() instanceof \PhpOffice\PhpWord\Element\TextRun) {
+ if ($element->getText() instanceof TextRun) {
$containerWriter = new Container($xmlWriter, $element->getText(), true);
$containerWriter->write();
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Formula.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Formula.php
index 6abb74b7..95567062 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Formula.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/Formula.php
@@ -1,4 +1,5 @@
getBgColor()) {
$xmlWriter->writeAttribute('fillcolor', $style->getBgColor());
+ } else {
+ $xmlWriter->writeAttribute('filled', 'f');
+ }
+
+ if (!$style->getBorderColor()) {
+ $xmlWriter->writeAttribute('stroked', 'f');
+ $xmlWriter->writeAttribute('strokecolor', 'white');
}
$styleWriter->write();
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/TextBreak.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/TextBreak.php
index bcae3b2e..4c2ecde7 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/TextBreak.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Element/TextBreak.php
@@ -1,4 +1,5 @@
endElement(); // w:tcW
}
+ $paddingTop = $style->getPaddingTop();
+ $paddingLeft = $style->getPaddingLeft();
+ $paddingBottom = $style->getPaddingBottom();
+ $paddingRight = $style->getPaddingRight();
+
+ if ($paddingTop !== null || $paddingLeft !== null || $paddingBottom !== null || $paddingRight !== null) {
+ $xmlWriter->startElement('w:tcMar');
+ if ($paddingTop !== null) {
+ $xmlWriter->startElement('w:top');
+ $xmlWriter->writeAttribute('w:w', $paddingTop);
+ $xmlWriter->writeAttribute('w:type', \PhpOffice\PhpWord\SimpleType\TblWidth::TWIP);
+ $xmlWriter->endElement(); // w:top
+ }
+ if ($paddingLeft !== null) {
+ $xmlWriter->startElement('w:start');
+ $xmlWriter->writeAttribute('w:w', $paddingLeft);
+ $xmlWriter->writeAttribute('w:type', \PhpOffice\PhpWord\SimpleType\TblWidth::TWIP);
+ $xmlWriter->endElement(); // w:start
+ }
+ if ($paddingBottom !== null) {
+ $xmlWriter->startElement('w:bottom');
+ $xmlWriter->writeAttribute('w:w', $paddingBottom);
+ $xmlWriter->writeAttribute('w:type', \PhpOffice\PhpWord\SimpleType\TblWidth::TWIP);
+ $xmlWriter->endElement(); // w:bottom
+ }
+ if ($paddingRight !== null) {
+ $xmlWriter->startElement('w:end');
+ $xmlWriter->writeAttribute('w:w', $paddingRight);
+ $xmlWriter->writeAttribute('w:type', \PhpOffice\PhpWord\SimpleType\TblWidth::TWIP);
+ $xmlWriter->endElement(); // w:end
+ }
+ $xmlWriter->endElement(); // w:tcMar
+ }
+
// Text direction
$textDir = $style->getTextDirection();
$xmlWriter->writeElementIf(null !== $textDir, 'w:textDirection', 'w:val', $textDir);
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Extrusion.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Extrusion.php
index f6ad6221..8bb92187 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Extrusion.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Extrusion.php
@@ -1,4 +1,5 @@
getFirstLine();
$xmlWriter->writeAttributeIf(null !== $firstLine, 'w:firstLine', $this->convertTwip($firstLine));
+ $firstLineChars = $style->getFirstLineChars();
+ $xmlWriter->writeAttributeIf(0 !== $firstLineChars, 'w:firstLineChars', $this->convertTwip($firstLineChars));
+
$hanging = $style->getHanging();
$xmlWriter->writeAttributeIf(null !== $hanging, 'w:hanging', $this->convertTwip($hanging));
diff --git a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Line.php b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Line.php
index 90107f8e..2603545f 100644
--- a/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Line.php
+++ b/vendor/phpoffice/phpword/src/PhpWord/Writer/Word2007/Style/Line.php
@@ -1,4 +1,5 @@
=8.0.0"
+ "php": ">=5.3.0"
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "src"
+ "Psr\\Log\\": "Psr/Log/"
}
},
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "1.1.x-dev"
}
}
}
diff --git a/vendor/topthink/think-image/src/image/Exception.php b/vendor/topthink/think-image/src/image/Exception.php
index 2ebafd8c..c35c71b9 100644
--- a/vendor/topthink/think-image/src/image/Exception.php
+++ b/vendor/topthink/think-image/src/image/Exception.php
@@ -11,8 +11,7 @@
namespace think\image;
-
class Exception extends \RuntimeException
{
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/src/image/gif/Decoder.php b/vendor/topthink/think-image/src/image/gif/Decoder.php
index a5630926..95fa2b84 100644
--- a/vendor/topthink/think-image/src/image/gif/Decoder.php
+++ b/vendor/topthink/think-image/src/image/gif/Decoder.php
@@ -11,7 +11,6 @@
namespace think\image\gif;
-
class Decoder
{
public $GIF_buffer = [];
@@ -204,4 +203,4 @@ class Decoder
{
return ($this->GIF_delays);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/tests/CropTest.php b/vendor/topthink/think-image/tests/CropTest.php
index 26a05313..e2676307 100644
--- a/vendor/topthink/think-image/tests/CropTest.php
+++ b/vendor/topthink/think-image/tests/CropTest.php
@@ -64,4 +64,4 @@ class CropTest extends TestCase
@unlink($pathname);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/tests/FlipTest.php b/vendor/topthink/think-image/tests/FlipTest.php
index bf7a5e26..d91d3af9 100644
--- a/vendor/topthink/think-image/tests/FlipTest.php
+++ b/vendor/topthink/think-image/tests/FlipTest.php
@@ -27,7 +27,6 @@ class FlipTest extends TestCase
@unlink($pathname);
}
-
public function testGif()
{
$pathname = TEST_PATH . 'tmp/flip.gif';
@@ -40,4 +39,4 @@ class FlipTest extends TestCase
@unlink($pathname);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/tests/RotateTest.php b/vendor/topthink/think-image/tests/RotateTest.php
index 56572d27..202062d3 100644
--- a/vendor/topthink/think-image/tests/RotateTest.php
+++ b/vendor/topthink/think-image/tests/RotateTest.php
@@ -39,4 +39,4 @@ class RotateTest extends TestCase
@unlink($pathname);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/tests/TestCase.php b/vendor/topthink/think-image/tests/TestCase.php
index 89ba1b45..3fd401ce 100644
--- a/vendor/topthink/think-image/tests/TestCase.php
+++ b/vendor/topthink/think-image/tests/TestCase.php
@@ -30,4 +30,4 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
{
return new File(TEST_PATH . 'images/test.gif');
}
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/tests/WaterTest.php b/vendor/topthink/think-image/tests/WaterTest.php
index b6a2bcce..7c2c1dac 100644
--- a/vendor/topthink/think-image/tests/WaterTest.php
+++ b/vendor/topthink/think-image/tests/WaterTest.php
@@ -55,4 +55,4 @@ class WaterTest extends TestCase
@unlink($pathname);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/topthink/think-image/tests/autoload.php b/vendor/topthink/think-image/tests/autoload.php
index f2e8aaef..d21954b2 100644
--- a/vendor/topthink/think-image/tests/autoload.php
+++ b/vendor/topthink/think-image/tests/autoload.php
@@ -12,4 +12,4 @@ define('TEST_PATH', __DIR__ . '/');
// 加载框架基础文件
require __DIR__ . '/../thinkphp/base.php';
\think\Loader::addNamespace('tests', TEST_PATH);
-\think\Loader::addNamespace('think', __DIR__ . '/../src/');
\ No newline at end of file
+\think\Loader::addNamespace('think', __DIR__ . '/../src/');