Version Description
- Security: Apply escaping to translated strings
Download this release
Release Info
Developer | pomegranate |
Plugin | WooCommerce PDF Invoices & Packing Slips |
Version | 2.10.5 |
Comparing to | |
See all releases |
Code changes from version 2.10.4 to 2.10.5
- assets/css/setup-wizard.css +21 -20
- assets/css/setup-wizard.min.css +1 -1
- assets/js/media-upload.js +1 -1
- assets/js/media-upload.min.js +1 -1
- composer.lock +305 -305
- includes/class-wcpdf-admin.php +79 -52
- includes/class-wcpdf-frontend.php +52 -29
- includes/class-wcpdf-main.php +30 -30
- includes/class-wcpdf-settings-callbacks.php +103 -99
- includes/class-wcpdf-settings-debug.php +34 -34
- includes/class-wcpdf-settings-documents.php +19 -43
- includes/class-wcpdf-settings-general.php +8 -8
- includes/class-wcpdf-settings.php +20 -20
- includes/class-wcpdf-setup-wizard.php +25 -28
- includes/documents/abstract-wcpdf-order-document.php +6 -5
- includes/views/attachment-settings-hint.php +6 -7
- includes/views/dompdf-status.php +24 -24
- includes/views/setup-wizard/attach-to.php +18 -14
- includes/views/setup-wizard/display-options.php +12 -12
- includes/views/setup-wizard/good-to-go.php +4 -4
- includes/views/setup-wizard/logo.php +11 -14
- includes/views/setup-wizard/paper-format.php +7 -6
- includes/views/setup-wizard/shop-name.php +8 -5
- includes/views/setup-wizard/show-action-buttons.php +4 -4
- includes/views/wcpdf-extensions.php +54 -53
- includes/views/wcpdf-settings-page.php +15 -6
- includes/wcpdf-functions.php +6 -6
- readme.txt +4 -1
- vendor/composer/ClassLoader.php +479 -479
- vendor/composer/InstalledVersions.php +328 -328
- vendor/composer/autoload_files.php +10 -10
- vendor/composer/autoload_psr4.php +13 -13
- vendor/composer/autoload_real.php +75 -75
- vendor/composer/autoload_static.php +78 -78
- vendor/composer/installed.json +307 -307
- vendor/composer/installed.php +69 -69
- vendor/symfony/polyfill-mbstring/LICENSE +19 -19
- vendor/symfony/polyfill-mbstring/Mbstring.php +846 -846
- vendor/symfony/polyfill-mbstring/README.md +13 -13
- vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -1397
- vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -5
- vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1414 -1414
- vendor/symfony/polyfill-mbstring/bootstrap.php +147 -147
- vendor/symfony/polyfill-mbstring/composer.json +38 -38
- woocommerce-pdf-invoices-packingslips.php +6 -6
assets/css/setup-wizard.css
CHANGED
@@ -1,16 +1,18 @@
|
|
1 |
-
.wpo-
|
2 |
background:#f9f9f9;
|
3 |
}
|
4 |
|
5 |
.wpo-wcpdf-setup {
|
6 |
-
|
|
|
7 |
font-family: 'Ubuntu', sans-serif;
|
8 |
font-size: 14px;
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
box-shadow: none;
|
|
|
14 |
}
|
15 |
|
16 |
.wpo-wcpdf-setup h1, .wpo-wcpdf-setup h2 {
|
@@ -32,12 +34,12 @@
|
|
32 |
background-color:#f9f9f9;
|
33 |
font-family: 'Ubuntu', sans-serif;
|
34 |
font-size: 14px;
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
}
|
42 |
|
43 |
.confetti {
|
@@ -51,11 +53,10 @@
|
|
51 |
display:block;
|
52 |
background-color:#f2fafa;
|
53 |
max-width:900px;
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
overflow:hidden;
|
59 |
}
|
60 |
|
61 |
.wpo-plugin-title {
|
@@ -223,8 +224,8 @@
|
|
223 |
position:absolute;
|
224 |
left:50%;
|
225 |
-ms-transform: translate(-50%, 0%); /* IE 9 */
|
226 |
-
|
227 |
-
|
228 |
}
|
229 |
|
230 |
/* Attach to */
|
@@ -319,7 +320,7 @@
|
|
319 |
/* Landscape phones and smaller */
|
320 |
@media (max-width: 480px) {
|
321 |
|
322 |
-
.wpo-
|
323 |
margin:0;
|
324 |
height:100%;
|
325 |
}
|
1 |
+
.wpo-wizard {
|
2 |
background:#f9f9f9;
|
3 |
}
|
4 |
|
5 |
.wpo-wcpdf-setup {
|
6 |
+
margin: 100px auto 25px;
|
7 |
+
padding: 0;
|
8 |
font-family: 'Ubuntu', sans-serif;
|
9 |
font-size: 14px;
|
10 |
+
line-height: 22px;
|
11 |
+
color:#444;
|
12 |
+
background: none;
|
13 |
+
-webkit-box-shadow: none;
|
14 |
box-shadow: none;
|
15 |
+
border: none;
|
16 |
}
|
17 |
|
18 |
.wpo-wcpdf-setup h1, .wpo-wcpdf-setup h2 {
|
34 |
background-color:#f9f9f9;
|
35 |
font-family: 'Ubuntu', sans-serif;
|
36 |
font-size: 14px;
|
37 |
+
line-height: 22px;
|
38 |
+
color:#444;
|
39 |
+
width:100%;
|
40 |
+
height:100%;
|
41 |
+
margin:0;
|
42 |
+
padding:0;
|
43 |
}
|
44 |
|
45 |
.confetti {
|
53 |
display:block;
|
54 |
background-color:#f2fafa;
|
55 |
max-width:900px;
|
56 |
+
padding:0;
|
57 |
+
border-radius:10px;
|
58 |
+
box-shadow:10px 10px 80px rgba(0,0,0,0.05);
|
59 |
+
overflow:hidden;
|
|
|
60 |
}
|
61 |
|
62 |
.wpo-plugin-title {
|
224 |
position:absolute;
|
225 |
left:50%;
|
226 |
-ms-transform: translate(-50%, 0%); /* IE 9 */
|
227 |
+
-webkit-transform: translate(-50%, 0%); /* Safari */
|
228 |
+
transform: translate(-50%, 0%);
|
229 |
}
|
230 |
|
231 |
/* Attach to */
|
320 |
/* Landscape phones and smaller */
|
321 |
@media (max-width: 480px) {
|
322 |
|
323 |
+
.wpo-wizard, .wpo-wcpdf-setup {
|
324 |
margin:0;
|
325 |
height:100%;
|
326 |
}
|
assets/css/setup-wizard.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wpo-
|
1 |
+
.wpo-wizard{background:#f9f9f9}.wpo-wcpdf-setup{margin:100px auto 25px;padding:0;font-family:Ubuntu,sans-serif;font-size:14px;line-height:22px;color:#444;background:0 0;-webkit-box-shadow:none;box-shadow:none;border:none}.wpo-wcpdf-setup h1,.wpo-wcpdf-setup h2{border:none;color:#444;margin:0}#confetti{width:100%;height:100%;position:absolute;left:0;top:0;z-index:-999}.wpo-setup{background-color:#f9f9f9;font-family:Ubuntu,sans-serif;font-size:14px;line-height:22px;color:#444;width:100%;height:100%;margin:0;padding:0}.confetti{width:100%;height:100%;z-index:-999;position:relative}.wpo-setup-card{display:block;background-color:#f2fafa;max-width:900px;padding:0;border-radius:10px;box-shadow:10px 10px 80px rgba(0,0,0,.05);overflow:hidden}.wpo-plugin-title{width:100%;padding:30px 0 50px 0;margin:0;background-color:#fdfdfd;text-align:center;display:block;color:#61707d}.wpo-progress-bar{width:100%;height:36px;overflow:hidden;list-style:none;margin:-18px 0 0 0;padding:0}.wpo-progress-bar li{width:14.285%;float:left;box-sizing:border-box}.wpo-progress-marker{height:24px;width:24px;background-color:#fdfdfd;border:6px solid #3e9b9a;border-radius:50%;margin:0 auto}.wpo-progress-bar .completed{background-color:#3e9b9a}.wpo-progress-bar .active{background-color:#2d7170}.wpo-setup-content{float:left;width:100%;overflow:hidden}.wpo-step-description{width:50%;float:left;padding:50px;box-sizing:border-box}.wpo-step-description ul{padding-left:16px}.wpo-setup-input{width:50%;float:left;padding:50px 50px 50px 0;box-sizing:border-box;position:relative}.wpo-setup-input select{width:100%;border:none;font-size:1.4em;background-color:#fdfdfd;color:#444;border:1px solid #3e9b9a;height:40px}.wpo-setup-buttons{width:100%;float:left;padding:0 50px 50px 50px;box-sizing:border-box}.wpo-button-next,.wpo-button-previous,.wpo-skip-step{background-color:#3e9b9a;border-radius:5px;padding:10px 20px;border:none;box-sizing:border-box;font-size:1em;text-decoration:none;cursor:pointer;color:#fdfdfd;font-size:1.4em;box-sizing:border-box}.wpo-button-next:hover,.wpo-button-previous:hover{background-color:#2d7170}.wpo-button-next,.wpo-skip-step{float:right;margin-left:10px}.wpo-button-previous{float:left}.wpo-skip-step{background-color:#fdfdfd;color:#61707d}.wpo-skip-step:hover{color:#333}.wpo-setup-input .shop-name{width:100%;height:40px;padding:10px 15px;box-sizing:border-box;font-size:1.2em;margin-bottom:20px;border:1px solid #3e9b9a;font-family:Ubuntu,sans-serif}.wpo-setup-input .shop-address{width:100%;height:200px;padding:15px 15px;font-size:1.2em;line-height:1.4em;box-sizing:border-box;border:1px solid #3e9b9a;resize:none;float:left;margin:0;font-family:Ubuntu,sans-serif;text-align:left!important}.wpo-setup-input #img-header_logo{width:100%;height:auto;background:#fdfdfd;margin-bottom:20px;padding:20px;box-sizing:border-box;position:relative}.wpo-setup-input #logo-preview img{height:80%;position:absolute;left:50%;-ms-transform:translate(-50%,0);-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.wpo-setup-input input[type=checkbox]{background-color:#fdfdfd;border:1px solid #cacece;border-radius:3px;vertical-align:text-bottom;margin-right:20px}.wpo-setup-input .checkbox{font-size:1.1em}.wpo-setup-input .how-to-box{float:right;width:auto;max-width:100%;height:auto;border:1px solid #3e9b9a;overflow:hidden;background:#fff}.wpo-setup-input .how-to-box img{width:100%}.wpo-step-description a:link,.wpo-step-description a:visited{color:#3e9b9a;text-decoration:none}.wpo-final{text-align:center;width:100%;padding:50px 200px}.wpo-final h1{font-size:3em;line-height:1em}@media (min-width:768px) and (max-width:991px){.wpo-setup-card{width:80%}}@media (max-width:767px){.wpo-setup-card{width:100%;min-height:100%;border-radius:0;margin:0}.wpo-setup-input,.wpo-step-description{width:100%;padding-left:50px}.wpo-final{padding:50px}.wpo-progress-bar{margin-top:-12px}.wpo-progress-marker{height:16px;width:16px;border-width:4px}.wpo-button-next,.wpo-button-previous,.wpo-skip-step{font-size:1em;padding:8px 12px}}@media (max-width:480px){.wpo-wcpdf-setup,.wpo-wizard{margin:0;height:100%}.wpo-wcpdf-setup form{height:100%}.wpo-setup-card{width:100%;min-height:100%;border-radius:0;margin:0}.wpo-plugin-title{padding:25px 0 30px 0;font-size:1.4em}.wpo-setup-buttons,.wpo-setup-input,.wpo-step-description{width:100%;padding:20px}.wpo-step-description{padding-bottom:0}.wpo-progress-bar{margin-top:-12px}.wpo-progress-marker{height:16px;width:16px;border-width:4px}.wpo-button-next,.wpo-button-previous,.wpo-skip-step{font-size:1em;padding:8px 12px}.wpo-setup-input .checkbox{font-size:1em}}
|
assets/js/media-upload.js
CHANGED
@@ -73,7 +73,7 @@ jQuery(document).ready(function($) {
|
|
73 |
file_frame.open();
|
74 |
});
|
75 |
|
76 |
-
$( '#wpo-wcpdf-settings' ).on( 'click', '.wpo_remove_image_button', function( event ){
|
77 |
// get source & target elements
|
78 |
let $settings_wrapper = $(this).parent();
|
79 |
let $input = $settings_wrapper.find( 'input#header_logo' );
|
73 |
file_frame.open();
|
74 |
});
|
75 |
|
76 |
+
$( '#wpo-wcpdf-settings, .wpo-wcpdf-setup' ).on( 'click', '.wpo_remove_image_button', function( event ){
|
77 |
// get source & target elements
|
78 |
let $settings_wrapper = $(this).parent();
|
79 |
let $input = $settings_wrapper.find( 'input#header_logo' );
|
assets/js/media-upload.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(a){var b;a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_upload_image_button",function(c){c.preventDefault();let d=a(this).parent();return b?void b.open():void(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){let c=d.find("input#header_logo"),e=d.find("img#img-header_logo"),f=b.state().get("selection").first().toJSON();c.val(f.id),e.length&&e.attr("src",f.url),a(".attachment-resolution, .attachment-resolution-warning").remove(),d.css("opacity","0.25");let g={security:c.data("ajax_nonce"),action:"wpo_wcpdf_get_media_upload_setting_html",args:c.data("settings_callback_args"),attachment_id:f.id};xhr=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:g,success:function(a){a&&"undefined"!=typeof a.success&&!0===a.success&&d.html(a.data),d.removeAttr("style")},error:function(){d.removeAttr("style")}})}),b.open())}),a("#wpo-wcpdf-settings").on("click",".wpo_remove_image_button",function(){let b=a(this).parent(),c=b.find("input#header_logo"),d=b.find("img#img-header_logo");c.val(""),d.remove(),a(this).remove(),a(".attachment-resolution, .attachment-resolution-warning").remove()})});
|
1 |
+
jQuery(document).ready(function(a){var b;a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_upload_image_button",function(c){c.preventDefault();let d=a(this).parent();return b?void b.open():void(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){let c=d.find("input#header_logo"),e=d.find("img#img-header_logo"),f=b.state().get("selection").first().toJSON();c.val(f.id),e.length&&e.attr("src",f.url),a(".attachment-resolution, .attachment-resolution-warning").remove(),d.css("opacity","0.25");let g={security:c.data("ajax_nonce"),action:"wpo_wcpdf_get_media_upload_setting_html",args:c.data("settings_callback_args"),attachment_id:f.id};xhr=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:g,success:function(a){a&&"undefined"!=typeof a.success&&!0===a.success&&d.html(a.data),d.removeAttr("style")},error:function(){d.removeAttr("style")}})}),b.open())}),a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_remove_image_button",function(){let b=a(this).parent(),c=b.find("input#header_logo"),d=b.find("img#img-header_logo");c.val(""),d.remove(),a(this).remove(),a(".attachment-resolution, .attachment-resolution-warning").remove()})});
|
composer.lock
CHANGED
@@ -1,305 +1,305 @@
|
|
1 |
-
{
|
2 |
-
"_readme": [
|
3 |
-
"This file locks the dependencies of your project to a known state",
|
4 |
-
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
5 |
-
"This file is @generated automatically"
|
6 |
-
],
|
7 |
-
"content-hash": "73484b19852eaabedb9da17ed3b8d7ba",
|
8 |
-
"packages": [
|
9 |
-
{
|
10 |
-
"name": "dompdf/dompdf",
|
11 |
-
"version": "v1.0.2",
|
12 |
-
"source": {
|
13 |
-
"type": "git",
|
14 |
-
"url": "https://github.com/dompdf/dompdf.git",
|
15 |
-
"reference": "8768448244967a46d6e67b891d30878e0e15d25c"
|
16 |
-
},
|
17 |
-
"dist": {
|
18 |
-
"type": "zip",
|
19 |
-
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
|
20 |
-
"reference": "8768448244967a46d6e67b891d30878e0e15d25c",
|
21 |
-
"shasum": ""
|
22 |
-
},
|
23 |
-
"require": {
|
24 |
-
"ext-dom": "*",
|
25 |
-
"ext-mbstring": "*",
|
26 |
-
"phenx/php-font-lib": "^0.5.2",
|
27 |
-
"phenx/php-svg-lib": "^0.3.3",
|
28 |
-
"php": "^7.1 || ^8.0"
|
29 |
-
},
|
30 |
-
"require-dev": {
|
31 |
-
"mockery/mockery": "^1.3",
|
32 |
-
"phpunit/phpunit": "^7.5 || ^8 || ^9",
|
33 |
-
"squizlabs/php_codesniffer": "^3.5"
|
34 |
-
},
|
35 |
-
"suggest": {
|
36 |
-
"ext-gd": "Needed to process images",
|
37 |
-
"ext-gmagick": "Improves image processing performance",
|
38 |
-
"ext-imagick": "Improves image processing performance",
|
39 |
-
"ext-zlib": "Needed for pdf stream compression"
|
40 |
-
},
|
41 |
-
"type": "library",
|
42 |
-
"extra": {
|
43 |
-
"branch-alias": {
|
44 |
-
"dev-develop": "0.7-dev"
|
45 |
-
}
|
46 |
-
},
|
47 |
-
"autoload": {
|
48 |
-
"psr-4": {
|
49 |
-
"Dompdf\\": "src/"
|
50 |
-
},
|
51 |
-
"classmap": [
|
52 |
-
"lib/"
|
53 |
-
]
|
54 |
-
},
|
55 |
-
"notification-url": "https://packagist.org/downloads/",
|
56 |
-
"license": [
|
57 |
-
"LGPL-2.1"
|
58 |
-
],
|
59 |
-
"authors": [
|
60 |
-
{
|
61 |
-
"name": "Fabien Ménager",
|
62 |
-
"email": "fabien.menager@gmail.com"
|
63 |
-
},
|
64 |
-
{
|
65 |
-
"name": "Brian Sweeney",
|
66 |
-
"email": "eclecticgeek@gmail.com"
|
67 |
-
},
|
68 |
-
{
|
69 |
-
"name": "Gabriel Bull",
|
70 |
-
"email": "me@gabrielbull.com"
|
71 |
-
}
|
72 |
-
],
|
73 |
-
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
74 |
-
"homepage": "https://github.com/dompdf/dompdf",
|
75 |
-
"support": {
|
76 |
-
"issues": "https://github.com/dompdf/dompdf/issues",
|
77 |
-
"source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
|
78 |
-
},
|
79 |
-
"time": "2021-01-08T14:18:52+00:00"
|
80 |
-
},
|
81 |
-
{
|
82 |
-
"name": "phenx/php-font-lib",
|
83 |
-
"version": "0.5.2",
|
84 |
-
"source": {
|
85 |
-
"type": "git",
|
86 |
-
"url": "https://github.com/PhenX/php-font-lib.git",
|
87 |
-
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
|
88 |
-
},
|
89 |
-
"dist": {
|
90 |
-
"type": "zip",
|
91 |
-
"url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
92 |
-
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
93 |
-
"shasum": ""
|
94 |
-
},
|
95 |
-
"require-dev": {
|
96 |
-
"phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
|
97 |
-
},
|
98 |
-
"type": "library",
|
99 |
-
"autoload": {
|
100 |
-
"psr-4": {
|
101 |
-
"FontLib\\": "src/FontLib"
|
102 |
-
}
|
103 |
-
},
|
104 |
-
"notification-url": "https://packagist.org/downloads/",
|
105 |
-
"license": [
|
106 |
-
"LGPL-3.0"
|
107 |
-
],
|
108 |
-
"authors": [
|
109 |
-
{
|
110 |
-
"name": "Fabien Ménager",
|
111 |
-
"email": "fabien.menager@gmail.com"
|
112 |
-
}
|
113 |
-
],
|
114 |
-
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
115 |
-
"homepage": "https://github.com/PhenX/php-font-lib",
|
116 |
-
"support": {
|
117 |
-
"issues": "https://github.com/PhenX/php-font-lib/issues",
|
118 |
-
"source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
|
119 |
-
},
|
120 |
-
"time": "2020-03-08T15:31:32+00:00"
|
121 |
-
},
|
122 |
-
{
|
123 |
-
"name": "phenx/php-svg-lib",
|
124 |
-
"version": "v0.3.3",
|
125 |
-
"source": {
|
126 |
-
"type": "git",
|
127 |
-
"url": "https://github.com/PhenX/php-svg-lib.git",
|
128 |
-
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
|
129 |
-
},
|
130 |
-
"dist": {
|
131 |
-
"type": "zip",
|
132 |
-
"url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
133 |
-
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
134 |
-
"shasum": ""
|
135 |
-
},
|
136 |
-
"require": {
|
137 |
-
"sabberworm/php-css-parser": "^8.3"
|
138 |
-
},
|
139 |
-
"require-dev": {
|
140 |
-
"phpunit/phpunit": "^5.5|^6.5"
|
141 |
-
},
|
142 |
-
"type": "library",
|
143 |
-
"autoload": {
|
144 |
-
"psr-4": {
|
145 |
-
"Svg\\": "src/Svg"
|
146 |
-
}
|
147 |
-
},
|
148 |
-
"notification-url": "https://packagist.org/downloads/",
|
149 |
-
"license": [
|
150 |
-
"LGPL-3.0"
|
151 |
-
],
|
152 |
-
"authors": [
|
153 |
-
{
|
154 |
-
"name": "Fabien Ménager",
|
155 |
-
"email": "fabien.menager@gmail.com"
|
156 |
-
}
|
157 |
-
],
|
158 |
-
"description": "A library to read, parse and export to PDF SVG files.",
|
159 |
-
"homepage": "https://github.com/PhenX/php-svg-lib",
|
160 |
-
"support": {
|
161 |
-
"issues": "https://github.com/PhenX/php-svg-lib/issues",
|
162 |
-
"source": "https://github.com/PhenX/php-svg-lib/tree/master"
|
163 |
-
},
|
164 |
-
"time": "2019-09-11T20:02:13+00:00"
|
165 |
-
},
|
166 |
-
{
|
167 |
-
"name": "sabberworm/php-css-parser",
|
168 |
-
"version": "8.3.1",
|
169 |
-
"source": {
|
170 |
-
"type": "git",
|
171 |
-
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
|
172 |
-
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
|
173 |
-
},
|
174 |
-
"dist": {
|
175 |
-
"type": "zip",
|
176 |
-
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
|
177 |
-
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
|
178 |
-
"shasum": ""
|
179 |
-
},
|
180 |
-
"require": {
|
181 |
-
"php": ">=5.3.2"
|
182 |
-
},
|
183 |
-
"require-dev": {
|
184 |
-
"codacy/coverage": "^1.4",
|
185 |
-
"phpunit/phpunit": "~4.8"
|
186 |
-
},
|
187 |
-
"type": "library",
|
188 |
-
"autoload": {
|
189 |
-
"psr-0": {
|
190 |
-
"Sabberworm\\CSS": "lib/"
|
191 |
-
}
|
192 |
-
},
|
193 |
-
"notification-url": "https://packagist.org/downloads/",
|
194 |
-
"license": [
|
195 |
-
"MIT"
|
196 |
-
],
|
197 |
-
"authors": [
|
198 |
-
{
|
199 |
-
"name": "Raphael Schweikert"
|
200 |
-
}
|
201 |
-
],
|
202 |
-
"description": "Parser for CSS Files written in PHP",
|
203 |
-
"homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
204 |
-
"keywords": [
|
205 |
-
"css",
|
206 |
-
"parser",
|
207 |
-
"stylesheet"
|
208 |
-
],
|
209 |
-
"support": {
|
210 |
-
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
|
211 |
-
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
|
212 |
-
},
|
213 |
-
"time": "2020-06-01T09:10:00+00:00"
|
214 |
-
},
|
215 |
-
{
|
216 |
-
"name": "symfony/polyfill-mbstring",
|
217 |
-
"version": "v1.20.0",
|
218 |
-
"source": {
|
219 |
-
"type": "git",
|
220 |
-
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
221 |
-
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
|
222 |
-
},
|
223 |
-
"dist": {
|
224 |
-
"type": "zip",
|
225 |
-
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
|
226 |
-
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
|
227 |
-
"shasum": ""
|
228 |
-
},
|
229 |
-
"require": {
|
230 |
-
"php": ">=7.1"
|
231 |
-
},
|
232 |
-
"suggest": {
|
233 |
-
"ext-mbstring": "For best performance"
|
234 |
-
},
|
235 |
-
"type": "library",
|
236 |
-
"extra": {
|
237 |
-
"branch-alias": {
|
238 |
-
"dev-main": "1.20-dev"
|
239 |
-
},
|
240 |
-
"thanks": {
|
241 |
-
"name": "symfony/polyfill",
|
242 |
-
"url": "https://github.com/symfony/polyfill"
|
243 |
-
}
|
244 |
-
},
|
245 |
-
"autoload": {
|
246 |
-
"psr-4": {
|
247 |
-
"Symfony\\Polyfill\\Mbstring\\": ""
|
248 |
-
},
|
249 |
-
"files": [
|
250 |
-
"bootstrap.php"
|
251 |
-
]
|
252 |
-
},
|
253 |
-
"notification-url": "https://packagist.org/downloads/",
|
254 |
-
"license": [
|
255 |
-
"MIT"
|
256 |
-
],
|
257 |
-
"authors": [
|
258 |
-
{
|
259 |
-
"name": "Nicolas Grekas",
|
260 |
-
"email": "p@tchwork.com"
|
261 |
-
},
|
262 |
-
{
|
263 |
-
"name": "Symfony Community",
|
264 |
-
"homepage": "https://symfony.com/contributors"
|
265 |
-
}
|
266 |
-
],
|
267 |
-
"description": "Symfony polyfill for the Mbstring extension",
|
268 |
-
"homepage": "https://symfony.com",
|
269 |
-
"keywords": [
|
270 |
-
"compatibility",
|
271 |
-
"mbstring",
|
272 |
-
"polyfill",
|
273 |
-
"portable",
|
274 |
-
"shim"
|
275 |
-
],
|
276 |
-
"support": {
|
277 |
-
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
|
278 |
-
},
|
279 |
-
"funding": [
|
280 |
-
{
|
281 |
-
"url": "https://symfony.com/sponsor",
|
282 |
-
"type": "custom"
|
283 |
-
},
|
284 |
-
{
|
285 |
-
"url": "https://github.com/fabpot",
|
286 |
-
"type": "github"
|
287 |
-
},
|
288 |
-
{
|
289 |
-
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
290 |
-
"type": "tidelift"
|
291 |
-
}
|
292 |
-
],
|
293 |
-
"time": "2020-10-23T14:02:19+00:00"
|
294 |
-
}
|
295 |
-
],
|
296 |
-
"packages-dev": [],
|
297 |
-
"aliases": [],
|
298 |
-
"minimum-stability": "stable",
|
299 |
-
"stability-flags": [],
|
300 |
-
"prefer-stable": false,
|
301 |
-
"prefer-lowest": false,
|
302 |
-
"platform": [],
|
303 |
-
"platform-dev": [],
|
304 |
-
"plugin-api-version": "2.0.0"
|
305 |
-
}
|
1 |
+
{
|
2 |
+
"_readme": [
|
3 |
+
"This file locks the dependencies of your project to a known state",
|
4 |
+
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
5 |
+
"This file is @generated automatically"
|
6 |
+
],
|
7 |
+
"content-hash": "73484b19852eaabedb9da17ed3b8d7ba",
|
8 |
+
"packages": [
|
9 |
+
{
|
10 |
+
"name": "dompdf/dompdf",
|
11 |
+
"version": "v1.0.2",
|
12 |
+
"source": {
|
13 |
+
"type": "git",
|
14 |
+
"url": "https://github.com/dompdf/dompdf.git",
|
15 |
+
"reference": "8768448244967a46d6e67b891d30878e0e15d25c"
|
16 |
+
},
|
17 |
+
"dist": {
|
18 |
+
"type": "zip",
|
19 |
+
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
|
20 |
+
"reference": "8768448244967a46d6e67b891d30878e0e15d25c",
|
21 |
+
"shasum": ""
|
22 |
+
},
|
23 |
+
"require": {
|
24 |
+
"ext-dom": "*",
|
25 |
+
"ext-mbstring": "*",
|
26 |
+
"phenx/php-font-lib": "^0.5.2",
|
27 |
+
"phenx/php-svg-lib": "^0.3.3",
|
28 |
+
"php": "^7.1 || ^8.0"
|
29 |
+
},
|
30 |
+
"require-dev": {
|
31 |
+
"mockery/mockery": "^1.3",
|
32 |
+
"phpunit/phpunit": "^7.5 || ^8 || ^9",
|
33 |
+
"squizlabs/php_codesniffer": "^3.5"
|
34 |
+
},
|
35 |
+
"suggest": {
|
36 |
+
"ext-gd": "Needed to process images",
|
37 |
+
"ext-gmagick": "Improves image processing performance",
|
38 |
+
"ext-imagick": "Improves image processing performance",
|
39 |
+
"ext-zlib": "Needed for pdf stream compression"
|
40 |
+
},
|
41 |
+
"type": "library",
|
42 |
+
"extra": {
|
43 |
+
"branch-alias": {
|
44 |
+
"dev-develop": "0.7-dev"
|
45 |
+
}
|
46 |
+
},
|
47 |
+
"autoload": {
|
48 |
+
"psr-4": {
|
49 |
+
"Dompdf\\": "src/"
|
50 |
+
},
|
51 |
+
"classmap": [
|
52 |
+
"lib/"
|
53 |
+
]
|
54 |
+
},
|
55 |
+
"notification-url": "https://packagist.org/downloads/",
|
56 |
+
"license": [
|
57 |
+
"LGPL-2.1"
|
58 |
+
],
|
59 |
+
"authors": [
|
60 |
+
{
|
61 |
+
"name": "Fabien Ménager",
|
62 |
+
"email": "fabien.menager@gmail.com"
|
63 |
+
},
|
64 |
+
{
|
65 |
+
"name": "Brian Sweeney",
|
66 |
+
"email": "eclecticgeek@gmail.com"
|
67 |
+
},
|
68 |
+
{
|
69 |
+
"name": "Gabriel Bull",
|
70 |
+
"email": "me@gabrielbull.com"
|
71 |
+
}
|
72 |
+
],
|
73 |
+
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
74 |
+
"homepage": "https://github.com/dompdf/dompdf",
|
75 |
+
"support": {
|
76 |
+
"issues": "https://github.com/dompdf/dompdf/issues",
|
77 |
+
"source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
|
78 |
+
},
|
79 |
+
"time": "2021-01-08T14:18:52+00:00"
|
80 |
+
},
|
81 |
+
{
|
82 |
+
"name": "phenx/php-font-lib",
|
83 |
+
"version": "0.5.2",
|
84 |
+
"source": {
|
85 |
+
"type": "git",
|
86 |
+
"url": "https://github.com/PhenX/php-font-lib.git",
|
87 |
+
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
|
88 |
+
},
|
89 |
+
"dist": {
|
90 |
+
"type": "zip",
|
91 |
+
"url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
92 |
+
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
93 |
+
"shasum": ""
|
94 |
+
},
|
95 |
+
"require-dev": {
|
96 |
+
"phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
|
97 |
+
},
|
98 |
+
"type": "library",
|
99 |
+
"autoload": {
|
100 |
+
"psr-4": {
|
101 |
+
"FontLib\\": "src/FontLib"
|
102 |
+
}
|
103 |
+
},
|
104 |
+
"notification-url": "https://packagist.org/downloads/",
|
105 |
+
"license": [
|
106 |
+
"LGPL-3.0"
|
107 |
+
],
|
108 |
+
"authors": [
|
109 |
+
{
|
110 |
+
"name": "Fabien Ménager",
|
111 |
+
"email": "fabien.menager@gmail.com"
|
112 |
+
}
|
113 |
+
],
|
114 |
+
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
115 |
+
"homepage": "https://github.com/PhenX/php-font-lib",
|
116 |
+
"support": {
|
117 |
+
"issues": "https://github.com/PhenX/php-font-lib/issues",
|
118 |
+
"source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
|
119 |
+
},
|
120 |
+
"time": "2020-03-08T15:31:32+00:00"
|
121 |
+
},
|
122 |
+
{
|
123 |
+
"name": "phenx/php-svg-lib",
|
124 |
+
"version": "v0.3.3",
|
125 |
+
"source": {
|
126 |
+
"type": "git",
|
127 |
+
"url": "https://github.com/PhenX/php-svg-lib.git",
|
128 |
+
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
|
129 |
+
},
|
130 |
+
"dist": {
|
131 |
+
"type": "zip",
|
132 |
+
"url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
133 |
+
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
134 |
+
"shasum": ""
|
135 |
+
},
|
136 |
+
"require": {
|
137 |
+
"sabberworm/php-css-parser": "^8.3"
|
138 |
+
},
|
139 |
+
"require-dev": {
|
140 |
+
"phpunit/phpunit": "^5.5|^6.5"
|
141 |
+
},
|
142 |
+
"type": "library",
|
143 |
+
"autoload": {
|
144 |
+
"psr-4": {
|
145 |
+
"Svg\\": "src/Svg"
|
146 |
+
}
|
147 |
+
},
|
148 |
+
"notification-url": "https://packagist.org/downloads/",
|
149 |
+
"license": [
|
150 |
+
"LGPL-3.0"
|
151 |
+
],
|
152 |
+
"authors": [
|
153 |
+
{
|
154 |
+
"name": "Fabien Ménager",
|
155 |
+
"email": "fabien.menager@gmail.com"
|
156 |
+
}
|
157 |
+
],
|
158 |
+
"description": "A library to read, parse and export to PDF SVG files.",
|
159 |
+
"homepage": "https://github.com/PhenX/php-svg-lib",
|
160 |
+
"support": {
|
161 |
+
"issues": "https://github.com/PhenX/php-svg-lib/issues",
|
162 |
+
"source": "https://github.com/PhenX/php-svg-lib/tree/master"
|
163 |
+
},
|
164 |
+
"time": "2019-09-11T20:02:13+00:00"
|
165 |
+
},
|
166 |
+
{
|
167 |
+
"name": "sabberworm/php-css-parser",
|
168 |
+
"version": "8.3.1",
|
169 |
+
"source": {
|
170 |
+
"type": "git",
|
171 |
+
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
|
172 |
+
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
|
173 |
+
},
|
174 |
+
"dist": {
|
175 |
+
"type": "zip",
|
176 |
+
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
|
177 |
+
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
|
178 |
+
"shasum": ""
|
179 |
+
},
|
180 |
+
"require": {
|
181 |
+
"php": ">=5.3.2"
|
182 |
+
},
|
183 |
+
"require-dev": {
|
184 |
+
"codacy/coverage": "^1.4",
|
185 |
+
"phpunit/phpunit": "~4.8"
|
186 |
+
},
|
187 |
+
"type": "library",
|
188 |
+
"autoload": {
|
189 |
+
"psr-0": {
|
190 |
+
"Sabberworm\\CSS": "lib/"
|
191 |
+
}
|
192 |
+
},
|
193 |
+
"notification-url": "https://packagist.org/downloads/",
|
194 |
+
"license": [
|
195 |
+
"MIT"
|
196 |
+
],
|
197 |
+
"authors": [
|
198 |
+
{
|
199 |
+
"name": "Raphael Schweikert"
|
200 |
+
}
|
201 |
+
],
|
202 |
+
"description": "Parser for CSS Files written in PHP",
|
203 |
+
"homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
204 |
+
"keywords": [
|
205 |
+
"css",
|
206 |
+
"parser",
|
207 |
+
"stylesheet"
|
208 |
+
],
|
209 |
+
"support": {
|
210 |
+
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
|
211 |
+
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
|
212 |
+
},
|
213 |
+
"time": "2020-06-01T09:10:00+00:00"
|
214 |
+
},
|
215 |
+
{
|
216 |
+
"name": "symfony/polyfill-mbstring",
|
217 |
+
"version": "v1.20.0",
|
218 |
+
"source": {
|
219 |
+
"type": "git",
|
220 |
+
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
221 |
+
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
|
222 |
+
},
|
223 |
+
"dist": {
|
224 |
+
"type": "zip",
|
225 |
+
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
|
226 |
+
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
|
227 |
+
"shasum": ""
|
228 |
+
},
|
229 |
+
"require": {
|
230 |
+
"php": ">=7.1"
|
231 |
+
},
|
232 |
+
"suggest": {
|
233 |
+
"ext-mbstring": "For best performance"
|
234 |
+
},
|
235 |
+
"type": "library",
|
236 |
+
"extra": {
|
237 |
+
"branch-alias": {
|
238 |
+
"dev-main": "1.20-dev"
|
239 |
+
},
|
240 |
+
"thanks": {
|
241 |
+
"name": "symfony/polyfill",
|
242 |
+
"url": "https://github.com/symfony/polyfill"
|
243 |
+
}
|
244 |
+
},
|
245 |
+
"autoload": {
|
246 |
+
"psr-4": {
|
247 |
+
"Symfony\\Polyfill\\Mbstring\\": ""
|
248 |
+
},
|
249 |
+
"files": [
|
250 |
+
"bootstrap.php"
|
251 |
+
]
|
252 |
+
},
|
253 |
+
"notification-url": "https://packagist.org/downloads/",
|
254 |
+
"license": [
|
255 |
+
"MIT"
|
256 |
+
],
|
257 |
+
"authors": [
|
258 |
+
{
|
259 |
+
"name": "Nicolas Grekas",
|
260 |
+
"email": "p@tchwork.com"
|
261 |
+
},
|
262 |
+
{
|
263 |
+
"name": "Symfony Community",
|
264 |
+
"homepage": "https://symfony.com/contributors"
|
265 |
+
}
|
266 |
+
],
|
267 |
+
"description": "Symfony polyfill for the Mbstring extension",
|
268 |
+
"homepage": "https://symfony.com",
|
269 |
+
"keywords": [
|
270 |
+
"compatibility",
|
271 |
+
"mbstring",
|
272 |
+
"polyfill",
|
273 |
+
"portable",
|
274 |
+
"shim"
|
275 |
+
],
|
276 |
+
"support": {
|
277 |
+
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
|
278 |
+
},
|
279 |
+
"funding": [
|
280 |
+
{
|
281 |
+
"url": "https://symfony.com/sponsor",
|
282 |
+
"type": "custom"
|
283 |
+
},
|
284 |
+
{
|
285 |
+
"url": "https://github.com/fabpot",
|
286 |
+
"type": "github"
|
287 |
+
},
|
288 |
+
{
|
289 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
290 |
+
"type": "tidelift"
|
291 |
+
}
|
292 |
+
],
|
293 |
+
"time": "2020-10-23T14:02:19+00:00"
|
294 |
+
}
|
295 |
+
],
|
296 |
+
"packages-dev": [],
|
297 |
+
"aliases": [],
|
298 |
+
"minimum-stability": "stable",
|
299 |
+
"stability-flags": [],
|
300 |
+
"prefer-stable": false,
|
301 |
+
"prefer-lowest": false,
|
302 |
+
"platform": [],
|
303 |
+
"platform-dev": [],
|
304 |
+
"plugin-api-version": "2.0.0"
|
305 |
+
}
|
includes/class-wcpdf-admin.php
CHANGED
@@ -89,12 +89,12 @@ class Admin {
|
|
89 |
?>
|
90 |
<div class="notice notice-info is-dismissible wpo-wcpdf-review-notice">
|
91 |
<?php /* translators: rounded count */ ?>
|
92 |
-
<h3><?php printf(
|
93 |
-
<p><?php
|
94 |
<ul>
|
95 |
-
<li><a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices-packing-slips/reviews/?rate=5#new-post" class="button"><?php
|
96 |
-
<li><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_dismis_review', true ) ); ?>" class="wpo-wcpdf-dismiss"><?php
|
97 |
-
<li><a href="mailto:support@wpovernight.com?Subject=Here%20is%20how%20I%20think%20you%20can%20do%20better"><?php
|
98 |
</ul>
|
99 |
</div>
|
100 |
<script type="text/javascript">
|
@@ -129,8 +129,8 @@ class Admin {
|
|
129 |
if ( get_transient( 'wpo_wcpdf_new_install' ) !== false ) {
|
130 |
?>
|
131 |
<div class="notice notice-info is-dismissible wpo-wcpdf-install-notice">
|
132 |
-
<p><strong><?php
|
133 |
-
<p class="submit"><a href="<?php echo esc_url( admin_url( 'admin.php?page=wpo-wcpdf-setup' ) ); ?>" class="button-primary"><?php
|
134 |
</div>
|
135 |
<script type="text/javascript">
|
136 |
jQuery( function( $ ) {
|
@@ -179,14 +179,20 @@ class Admin {
|
|
179 |
|
180 |
$listing_actions = array();
|
181 |
$documents = WPO_WCPDF()->documents->get_documents();
|
182 |
-
foreach ($documents as $document) {
|
183 |
$document_title = $document->get_title();
|
184 |
-
$icon = !empty($document->icon) ? $document->icon : WPO_WCPDF()->plugin_url() . "/assets/images/generic_document.png";
|
185 |
if ( $document = wcpdf_get_document( $document->get_type(), $order ) ) {
|
|
|
|
|
|
|
|
|
|
|
186 |
$document_title = is_callable( array( $document, 'get_title' ) ) ? $document->get_title() : $document_title;
|
187 |
$document_exists = is_callable( array( $document, 'exists' ) ) ? $document->exists() : false;
|
|
|
188 |
$listing_actions[$document->get_type()] = array(
|
189 |
-
'url' =>
|
190 |
'img' => $icon,
|
191 |
'alt' => "PDF " . $document_title,
|
192 |
'exists' => $document_exists,
|
@@ -201,9 +207,14 @@ class Admin {
|
|
201 |
if ( !isset( $data['class'] ) ) {
|
202 |
$data['class'] = $data['exists'] ? "exists " . $action : $action;
|
203 |
}
|
204 |
-
|
205 |
-
|
206 |
-
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
208 |
}
|
209 |
|
@@ -320,7 +331,7 @@ class Admin {
|
|
320 |
<input type="submit" class="button save_order button-primary" name="save" value="<?php esc_attr_e( 'Save order & send email', 'woocommerce-pdf-invoices-packing-slips' ); ?>" />
|
321 |
<?php
|
322 |
$title = __( 'Send email', 'woocommerce-pdf-invoices-packing-slips' );
|
323 |
-
$url = wp_nonce_url( add_query_arg('wpo_wcpdf_action','resend_email'), 'generate_wpo_wcpdf' );
|
324 |
?>
|
325 |
</li>
|
326 |
</ul>
|
@@ -337,13 +348,18 @@ class Admin {
|
|
337 |
$meta_box_actions = array();
|
338 |
$documents = WPO_WCPDF()->documents->get_documents();
|
339 |
$order = WCX::get_order( $post->ID );
|
340 |
-
foreach ($documents as $document) {
|
341 |
$document_title = $document->get_title();
|
342 |
if ( $document = wcpdf_get_document( $document->get_type(), $order ) ) {
|
|
|
|
|
|
|
|
|
|
|
343 |
$document_title = is_callable( array( $document, 'get_title' ) ) ? $document->get_title() : $document_title;
|
344 |
$meta_box_actions[$document->get_type()] = array(
|
345 |
-
'url' =>
|
346 |
-
'alt' =>
|
347 |
'title' => "PDF " . $document_title,
|
348 |
'exists' => is_callable( array( $document, 'exists' ) ) ? $document->exists() : false,
|
349 |
);
|
@@ -356,8 +372,14 @@ class Admin {
|
|
356 |
<ul class="wpo_wcpdf-actions">
|
357 |
<?php
|
358 |
foreach ($meta_box_actions as $document_type => $data) {
|
359 |
-
$
|
360 |
-
printf(
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
}
|
362 |
?>
|
363 |
</ul>
|
@@ -428,11 +450,11 @@ class Admin {
|
|
428 |
if( empty( $document ) || empty( $data ) ) return;
|
429 |
$data = $this->get_current_values_for_document( $document, $data );
|
430 |
?>
|
431 |
-
<div class="wcpdf-data-fields" data-document="<?= $document->get_type(); ?>" data-order_id="<?php echo WCX_Order::get_id( $document->order ); ?>">
|
432 |
<section class="wcpdf-data-fields-section number-date">
|
433 |
<!-- Title -->
|
434 |
<h4>
|
435 |
-
|
436 |
<?php if( $document->exists() && ( isset( $data['number'] ) || isset( $data['date'] ) ) ) : ?>
|
437 |
<span class="wpo-wcpdf-edit-date-number dashicons dashicons-edit"></span>
|
438 |
<span class="wpo-wcpdf-delete-document dashicons dashicons-trash" data-action="delete" data-nonce="<?php echo wp_create_nonce( "wpo_wcpdf_delete_document" ); ?>"></span>
|
@@ -444,21 +466,21 @@ class Admin {
|
|
444 |
<div class="read-only">
|
445 |
<?php if( $document->exists() ) : ?>
|
446 |
<?php if( isset( $data['number'] ) ) : ?>
|
447 |
-
<div class="<?= $document->get_type(); ?>-number">
|
448 |
-
<p class="form-field <?= $data['number']['name']; ?>_field">
|
449 |
<p>
|
450 |
-
<span><strong><?= $data['number']['label']; ?></strong></span>
|
451 |
-
<span><?= $data['number']['formatted']; ?></span>
|
452 |
</p>
|
453 |
</p>
|
454 |
</div>
|
455 |
<?php endif; ?>
|
456 |
<?php if( isset( $data['date'] ) ) : ?>
|
457 |
-
<div class="<?= $document->get_type(); ?>-
|
458 |
<p class="form-field form-field-wide">
|
459 |
<p>
|
460 |
-
<span><strong><?= $data['date']['label']; ?></strong></span>
|
461 |
-
<span><?= $data['date']['formatted']; ?></span>
|
462 |
</p>
|
463 |
</p>
|
464 |
</div>
|
@@ -466,22 +488,22 @@ class Admin {
|
|
466 |
<?php do_action( 'wpo_wcpdf_meta_box_after_document_data', $document, $document->order ); ?>
|
467 |
<?php else : ?>
|
468 |
<?php /* translators: document title */ ?>
|
469 |
-
<span class="wpo-wcpdf-set-date-number button"><?php printf(
|
470 |
<?php endif; ?>
|
471 |
</div>
|
472 |
|
473 |
<!-- Editable -->
|
474 |
<div class="editable">
|
475 |
<?php if( isset( $data['number'] ) ) : ?>
|
476 |
-
<p class="form-field <?= $data['number']['name']; ?>_field
|
477 |
-
<label for="<?= $data['number']['name']; ?>"><?= $data['number']['label']; ?></label>
|
478 |
-
<input type="text" class="short" style="" name="<?= $data['number']['name']; ?>" id="<?= $data['number']['name']; ?>" value="<?= $data['number']['plain']; ?>" disabled="disabled" > (<?=
|
479 |
</p>
|
480 |
<?php endif; ?>
|
481 |
<?php if( isset( $data['date'] ) ) : ?>
|
482 |
<p class="form-field form-field-wide">
|
483 |
-
<label for="<?= $data['date']['name'] ?>[date]"><?= $data['date']['label']; ?></label>
|
484 |
-
<input type="text" class="date-picker-field" name="<?= $data['date']['name'] ?>[date]" id="<?= $data['date']['name'] ?>[date]" maxlength="10" value="<?= $data['date']['date']; ?>" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])" disabled="disabled"/>@<input type="number" class="hour" disabled="disabled" placeholder="<?php
|
485 |
</p>
|
486 |
<?php endif; ?>
|
487 |
</div>
|
@@ -493,15 +515,15 @@ class Admin {
|
|
493 |
|
494 |
<!-- Read only -->
|
495 |
<div class="read-only">
|
496 |
-
<span><strong><?= $data['notes']['label']; ?></strong></span>
|
497 |
<span class="wpo-wcpdf-edit-document-notes dashicons dashicons-edit" data-edit="notes"></span>
|
498 |
-
<p><?= ( $data['notes']['value'] == strip_tags( $data['notes']['value'] ) ) ? nl2br( $data['notes']['value'] ) : $data['notes']['value']; ?></p>
|
499 |
</div>
|
500 |
<!-- Editable -->
|
501 |
<div class="editable-notes">
|
502 |
<p class="form-field form-field-wide">
|
503 |
-
<label for="<?= $data['notes']['name']; ?>"><?= $data['notes']['label']; ?></label>
|
504 |
-
<p><textarea name="<?= $data['notes']['name']; ?>" class="<?= $data['notes']['name']; ?>" cols="60" rows="5" disabled="disabled"><?= $data['notes']['value']; ?></textarea></p>
|
505 |
</p>
|
506 |
</div>
|
507 |
|
@@ -515,8 +537,8 @@ class Admin {
|
|
515 |
<!-- Save/Cancel buttons -->
|
516 |
<section class="wcpdf-data-fields-section wpo-wcpdf-document-buttons">
|
517 |
<div>
|
518 |
-
<a class="button button-primary wpo-wcpdf-save-document" data-nonce="<?php echo wp_create_nonce( "wpo_wcpdf_save_document" ); ?>" data-action="save"><?php
|
519 |
-
<a class="button wpo-wcpdf-cancel"><?php
|
520 |
</div>
|
521 |
</section>
|
522 |
<!-- / Save/Cancel buttons -->
|
@@ -595,7 +617,7 @@ class Admin {
|
|
595 |
|
596 |
if ( $is_new ) {
|
597 |
/* translators: name/description of the context for document creation logs */
|
598 |
-
WPO_WCPDF()->main->log_to_order_notes( $invoice,
|
599 |
}
|
600 |
}
|
601 |
|
@@ -644,7 +666,7 @@ class Admin {
|
|
644 |
if ( $mail->id == $email_to_send ) {
|
645 |
$mail->trigger( $order->get_id(), $order );
|
646 |
/* translators: %s: email title */
|
647 |
-
$order->add_order_note( sprintf(
|
648 |
}
|
649 |
}
|
650 |
}
|
@@ -731,25 +753,25 @@ class Admin {
|
|
731 |
public function ajax_crud_document() {
|
732 |
if ( check_ajax_referer( 'wpo_wcpdf_regenerate_document', 'security', false ) === false && check_ajax_referer( 'wpo_wcpdf_save_document', 'security', false ) === false && check_ajax_referer( 'wpo_wcpdf_delete_document', 'security', false ) === false ) {
|
733 |
wp_send_json_error( array(
|
734 |
-
'message' =>
|
735 |
) );
|
736 |
}
|
737 |
|
738 |
if ( ! isset($_POST['action']) || ! in_array( $_POST['action'], array( 'wpo_wcpdf_regenerate_document', 'wpo_wcpdf_save_document', 'wpo_wcpdf_delete_document' ) ) ) {
|
739 |
wp_send_json_error( array(
|
740 |
-
'message' =>
|
741 |
) );
|
742 |
}
|
743 |
|
744 |
if( empty($_POST['order_id']) || empty($_POST['document_type']) || empty($_POST['action_type']) ) {
|
745 |
wp_send_json_error( array(
|
746 |
-
'message' =>
|
747 |
) );
|
748 |
}
|
749 |
|
750 |
if ( !current_user_can('manage_woocommerce') ) {
|
751 |
wp_send_json_error( array(
|
752 |
-
'message' =>
|
753 |
) );
|
754 |
}
|
755 |
|
@@ -829,7 +851,7 @@ class Admin {
|
|
829 |
|
830 |
if ( $is_new ) {
|
831 |
/* translators: name/description of the context for document creation logs */
|
832 |
-
WPO_WCPDF()->main->log_to_order_notes( $document,
|
833 |
}
|
834 |
|
835 |
$response = array(
|
@@ -840,21 +862,26 @@ class Admin {
|
|
840 |
} else {
|
841 |
$message_complement = __( 'Document does not exist.', 'woocommerce-pdf-invoices-packing-slips' );
|
842 |
wp_send_json_error( array(
|
843 |
-
'message' => $notice_messages[$notice]['error'] . ' ' . $message_complement,
|
844 |
) );
|
845 |
}
|
846 |
|
|
|
|
|
|
|
|
|
|
|
847 |
wp_send_json_success( $response );
|
848 |
|
849 |
} else {
|
850 |
$message_complement = __( 'Document is empty.', 'woocommerce-pdf-invoices-packing-slips' );
|
851 |
wp_send_json_error( array(
|
852 |
-
'message' => $notice_messages[$notice]['error'] . ' ' . $message_complement,
|
853 |
) );
|
854 |
}
|
855 |
-
} catch ( \
|
856 |
wp_send_json_error( array(
|
857 |
-
'message' => $notice_messages[$notice]['error'] . ' ' . $e->getMessage(),
|
858 |
) );
|
859 |
}
|
860 |
}
|
@@ -881,7 +908,7 @@ class Admin {
|
|
881 |
$title = __( 'DEBUG output enabled', 'woocommerce-pdf-invoices-packing-slips' );
|
882 |
$args = array(
|
883 |
'id' => 'admin_bar_wpo_debug_mode',
|
884 |
-
'title' => sprintf( '<a href="%s" style="background-color: red; color: white;">%s</a>', $status_settings_url, $title ),
|
885 |
);
|
886 |
$wp_admin_bar->add_node( $args );
|
887 |
}
|
89 |
?>
|
90 |
<div class="notice notice-info is-dismissible wpo-wcpdf-review-notice">
|
91 |
<?php /* translators: rounded count */ ?>
|
92 |
+
<h3><?php printf( esc_html__( 'Wow, you have created more than %d invoices with our plugin!', 'woocommerce-pdf-invoices-packing-slips' ), $rounded_count ); ?></h3>
|
93 |
+
<p><?php esc_html_e( 'It would mean a lot to us if you would quickly give our plugin a 5-star rating. Help us spread the word and boost our motivation!', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
94 |
<ul>
|
95 |
+
<li><a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices-packing-slips/reviews/?rate=5#new-post" class="button"><?php esc_html_e( 'Yes you deserve it!', 'woocommerce-pdf-invoices-packing-slips' ); ?></span></a></li>
|
96 |
+
<li><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_dismis_review', true ) ); ?>" class="wpo-wcpdf-dismiss"><?php esc_html_e( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ); ?> / <?php esc_html_e( 'Already did!', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></li>
|
97 |
+
<li><a href="mailto:support@wpovernight.com?Subject=Here%20is%20how%20I%20think%20you%20can%20do%20better"><?php esc_html_e( 'Actually, I have a complaint...', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></li>
|
98 |
</ul>
|
99 |
</div>
|
100 |
<script type="text/javascript">
|
129 |
if ( get_transient( 'wpo_wcpdf_new_install' ) !== false ) {
|
130 |
?>
|
131 |
<div class="notice notice-info is-dismissible wpo-wcpdf-install-notice">
|
132 |
+
<p><strong><?php esc_html_e( 'New to WooCommerce PDF Invoices & Packing Slips?', 'woocommerce-pdf-invoices-packing-slips' ); ?></strong> – <?php esc_html_e( 'Jumpstart the plugin by following our wizard!', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
133 |
+
<p class="submit"><a href="<?php echo esc_url( admin_url( 'admin.php?page=wpo-wcpdf-setup' ) ); ?>" class="button-primary"><?php esc_html_e( 'Run the Setup Wizard', 'woocommerce-pdf-invoices-packing-slips' ); ?></a> <a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_dismis_install', true ) ); ?>" class="wpo-wcpdf-dismiss-wizard"><?php esc_html_e( 'I am the wizard', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
134 |
</div>
|
135 |
<script type="text/javascript">
|
136 |
jQuery( function( $ ) {
|
179 |
|
180 |
$listing_actions = array();
|
181 |
$documents = WPO_WCPDF()->documents->get_documents();
|
182 |
+
foreach ( $documents as $document ) {
|
183 |
$document_title = $document->get_title();
|
184 |
+
$icon = ! empty( $document->icon ) ? $document->icon : WPO_WCPDF()->plugin_url() . "/assets/images/generic_document.png";
|
185 |
if ( $document = wcpdf_get_document( $document->get_type(), $order ) ) {
|
186 |
+
$pdf_url = wp_nonce_url( add_query_arg( array(
|
187 |
+
'action' => 'generate_wpo_wcpdf',
|
188 |
+
'document_type' => $document->get_type(),
|
189 |
+
'order_ids' => WCX_Order::get_id( $order ),
|
190 |
+
), admin_url( 'admin-ajax.php' ) ), 'generate_wpo_wcpdf' );
|
191 |
$document_title = is_callable( array( $document, 'get_title' ) ) ? $document->get_title() : $document_title;
|
192 |
$document_exists = is_callable( array( $document, 'exists' ) ) ? $document->exists() : false;
|
193 |
+
|
194 |
$listing_actions[$document->get_type()] = array(
|
195 |
+
'url' => $pdf_url,
|
196 |
'img' => $icon,
|
197 |
'alt' => "PDF " . $document_title,
|
198 |
'exists' => $document_exists,
|
207 |
if ( !isset( $data['class'] ) ) {
|
208 |
$data['class'] = $data['exists'] ? "exists " . $action : $action;
|
209 |
}
|
210 |
+
|
211 |
+
printf(
|
212 |
+
'<a href="%1$s" class="button tips wpo_wcpdf %2$s" target="_blank" alt="%3$s" data-tip="%3$s"><img src="%4$s" alt="%3$s" width="16"></a>',
|
213 |
+
esc_attr( $data['url'] ),
|
214 |
+
esc_attr( $data['class'] ),
|
215 |
+
esc_attr( $data['alt'] ),
|
216 |
+
esc_attr( $data['img'] ),
|
217 |
+
);
|
218 |
}
|
219 |
}
|
220 |
|
331 |
<input type="submit" class="button save_order button-primary" name="save" value="<?php esc_attr_e( 'Save order & send email', 'woocommerce-pdf-invoices-packing-slips' ); ?>" />
|
332 |
<?php
|
333 |
$title = __( 'Send email', 'woocommerce-pdf-invoices-packing-slips' );
|
334 |
+
$url = wp_nonce_url( add_query_arg( 'wpo_wcpdf_action', 'resend_email' ), 'generate_wpo_wcpdf' );
|
335 |
?>
|
336 |
</li>
|
337 |
</ul>
|
348 |
$meta_box_actions = array();
|
349 |
$documents = WPO_WCPDF()->documents->get_documents();
|
350 |
$order = WCX::get_order( $post->ID );
|
351 |
+
foreach ( $documents as $document ) {
|
352 |
$document_title = $document->get_title();
|
353 |
if ( $document = wcpdf_get_document( $document->get_type(), $order ) ) {
|
354 |
+
$pdf_url = wp_nonce_url( add_query_arg( array(
|
355 |
+
'action' => 'generate_wpo_wcpdf',
|
356 |
+
'document_type' => $document->get_type(),
|
357 |
+
'order_ids' => $post_id,
|
358 |
+
), admin_url( 'admin-ajax.php' ) ), 'generate_wpo_wcpdf' );
|
359 |
$document_title = is_callable( array( $document, 'get_title' ) ) ? $document->get_title() : $document_title;
|
360 |
$meta_box_actions[$document->get_type()] = array(
|
361 |
+
'url' => $pdf_url,
|
362 |
+
'alt' => "PDF " . $document_title,
|
363 |
'title' => "PDF " . $document_title,
|
364 |
'exists' => is_callable( array( $document, 'exists' ) ) ? $document->exists() : false,
|
365 |
);
|
372 |
<ul class="wpo_wcpdf-actions">
|
373 |
<?php
|
374 |
foreach ($meta_box_actions as $document_type => $data) {
|
375 |
+
$data['class'] = ( isset( $data['exists'] ) && $data['exists'] == true ) ? 'exists' : '';
|
376 |
+
printf(
|
377 |
+
'<li><a href="%1$s" class="button %2$s" target="_blank" alt="%3$s">%4$s</a></li>',
|
378 |
+
esc_attr( $data['url'] ),
|
379 |
+
esc_attr( $data['class'] ),
|
380 |
+
esc_attr( $data['alt'] ),
|
381 |
+
esc_html( $data['title'] ),
|
382 |
+
);
|
383 |
}
|
384 |
?>
|
385 |
</ul>
|
450 |
if( empty( $document ) || empty( $data ) ) return;
|
451 |
$data = $this->get_current_values_for_document( $document, $data );
|
452 |
?>
|
453 |
+
<div class="wcpdf-data-fields" data-document="<?= esc_attr( $document->get_type() ); ?>" data-order_id="<?php echo esc_attr( WCX_Order::get_id( $document->order ) ); ?>">
|
454 |
<section class="wcpdf-data-fields-section number-date">
|
455 |
<!-- Title -->
|
456 |
<h4>
|
457 |
+
<?php echo wp_kses_post( $document->get_title() ); ?>
|
458 |
<?php if( $document->exists() && ( isset( $data['number'] ) || isset( $data['date'] ) ) ) : ?>
|
459 |
<span class="wpo-wcpdf-edit-date-number dashicons dashicons-edit"></span>
|
460 |
<span class="wpo-wcpdf-delete-document dashicons dashicons-trash" data-action="delete" data-nonce="<?php echo wp_create_nonce( "wpo_wcpdf_delete_document" ); ?>"></span>
|
466 |
<div class="read-only">
|
467 |
<?php if( $document->exists() ) : ?>
|
468 |
<?php if( isset( $data['number'] ) ) : ?>
|
469 |
+
<div class="<?= esc_attr( $document->get_type() ); ?>-number">
|
470 |
+
<p class="form-field <?= esc_attr( $data['number']['name'] ); ?>_field">
|
471 |
<p>
|
472 |
+
<span><strong><?= wp_kses_post( $data['number']['label'] ); ?></strong></span>
|
473 |
+
<span><?= esc_attr( $data['number']['formatted'] ); ?></span>
|
474 |
</p>
|
475 |
</p>
|
476 |
</div>
|
477 |
<?php endif; ?>
|
478 |
<?php if( isset( $data['date'] ) ) : ?>
|
479 |
+
<div class="<?= esc_attr( $document->get_type() ); ?>-number">
|
480 |
<p class="form-field form-field-wide">
|
481 |
<p>
|
482 |
+
<span><strong><?= wp_kses_post( $data['date']['label'] ); ?></strong></span>
|
483 |
+
<span><?= esc_attr( $data['date']['formatted'] ); ?></span>
|
484 |
</p>
|
485 |
</p>
|
486 |
</div>
|
488 |
<?php do_action( 'wpo_wcpdf_meta_box_after_document_data', $document, $document->order ); ?>
|
489 |
<?php else : ?>
|
490 |
<?php /* translators: document title */ ?>
|
491 |
+
<span class="wpo-wcpdf-set-date-number button"><?php printf( esc_html__( 'Set %s number & date', 'woocommerce-pdf-invoices-packing-slips' ), wp_kses_post( $document->get_title() ) ); ?></span>
|
492 |
<?php endif; ?>
|
493 |
</div>
|
494 |
|
495 |
<!-- Editable -->
|
496 |
<div class="editable">
|
497 |
<?php if( isset( $data['number'] ) ) : ?>
|
498 |
+
<p class="form-field <?= esc_attr( $data['number']['name'] ); ?>_field">
|
499 |
+
<label for="<?= esc_attr( $data['number']['name'] ); ?>"><?= wp_kses_post( $data['number']['label'] ); ?></label>
|
500 |
+
<input type="text" class="short" style="" name="<?= esc_attr( $data['number']['name'] ); ?>" id="<?= esc_attr( $data['number']['name'] ); ?>" value="<?= esc_attr( $data['number']['plain'] ); ?>" disabled="disabled" > (<?= esc_html__( 'unformatted!', 'woocommerce-pdf-invoices-packing-slips' ); ?>)
|
501 |
</p>
|
502 |
<?php endif; ?>
|
503 |
<?php if( isset( $data['date'] ) ) : ?>
|
504 |
<p class="form-field form-field-wide">
|
505 |
+
<label for="<?= esc_attr( $data['date']['name'] ); ?>[date]"><?= wp_kses_post( $data['date']['label'] ); ?></label>
|
506 |
+
<input type="text" class="date-picker-field" name="<?= esc_attr( $data['date']['name'] ); ?>[date]" id="<?= esc_attr( $data['date']['name'] ); ?>[date]" maxlength="10" value="<?= esc_attr( $data['date']['date'] ); ?>" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])" disabled="disabled"/>@<input type="number" class="hour" disabled="disabled" placeholder="<?php esc_attr_e( 'h', 'woocommerce' ); ?>" name="<?= esc_attr( $data['date']['name'] ); ?>[hour]" id="<?= esc_attr( $data['date']['name'] ); ?>[hour]" min="0" max="23" size="2" value="<?= esc_attr( $data['date']['hour'] ); ?>" pattern="([01]?[0-9]{1}|2[0-3]{1})" />:<input type="number" class="minute" placeholder="<?php esc_attr_e( 'm', 'woocommerce' ); ?>" name="<?= esc_attr( $data['date']['name'] ); ?>[minute]" id="<?= esc_attr( $data['date']['name'] ); ?>[minute]" min="0" max="59" size="2" value="<?= esc_attr( $data['date']['minute'] ); ?>" pattern="[0-5]{1}[0-9]{1}" disabled="disabled" />
|
507 |
</p>
|
508 |
<?php endif; ?>
|
509 |
</div>
|
515 |
|
516 |
<!-- Read only -->
|
517 |
<div class="read-only">
|
518 |
+
<span><strong><?= wp_kses_post( $data['notes']['label'] ); ?></strong></span>
|
519 |
<span class="wpo-wcpdf-edit-document-notes dashicons dashicons-edit" data-edit="notes"></span>
|
520 |
+
<p><?= ( $data['notes']['value'] == strip_tags( $data['notes']['value'] ) ) ? wp_kses_post( nl2br( $data['notes']['value'] ) ) : wp_kses_post( $data['notes']['value'] ); ?></p>
|
521 |
</div>
|
522 |
<!-- Editable -->
|
523 |
<div class="editable-notes">
|
524 |
<p class="form-field form-field-wide">
|
525 |
+
<label for="<?= esc_attr( $data['notes']['name'] ); ?>"><?= wp_kses_post( $data['notes']['label'] ); ?></label>
|
526 |
+
<p><textarea name="<?= esc_attr( $data['notes']['name'] ); ?>" class="<?= esc_attr( $data['notes']['name'] ); ?>" cols="60" rows="5" disabled="disabled"><?= wp_kses_post( $data['notes']['value'] ); ?></textarea></p>
|
527 |
</p>
|
528 |
</div>
|
529 |
|
537 |
<!-- Save/Cancel buttons -->
|
538 |
<section class="wcpdf-data-fields-section wpo-wcpdf-document-buttons">
|
539 |
<div>
|
540 |
+
<a class="button button-primary wpo-wcpdf-save-document" data-nonce="<?php echo wp_create_nonce( "wpo_wcpdf_save_document" ); ?>" data-action="save"><?php esc_html_e( 'Save changes', 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
541 |
+
<a class="button wpo-wcpdf-cancel"><?php esc_html_e( 'Cancel', 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
542 |
</div>
|
543 |
</section>
|
544 |
<!-- / Save/Cancel buttons -->
|
617 |
|
618 |
if ( $is_new ) {
|
619 |
/* translators: name/description of the context for document creation logs */
|
620 |
+
WPO_WCPDF()->main->log_to_order_notes( $invoice, esc_html__( 'order details (number and/or date set manually)', 'woocommerce-pdf-invoices-packing-slips' ) );
|
621 |
}
|
622 |
}
|
623 |
|
666 |
if ( $mail->id == $email_to_send ) {
|
667 |
$mail->trigger( $order->get_id(), $order );
|
668 |
/* translators: %s: email title */
|
669 |
+
$order->add_order_note( sprintf( esc_html__( '%s email notification manually sent.', 'woocommerce-pdf-invoices-packing-slips' ), $mail->title ), false, true );
|
670 |
}
|
671 |
}
|
672 |
}
|
753 |
public function ajax_crud_document() {
|
754 |
if ( check_ajax_referer( 'wpo_wcpdf_regenerate_document', 'security', false ) === false && check_ajax_referer( 'wpo_wcpdf_save_document', 'security', false ) === false && check_ajax_referer( 'wpo_wcpdf_delete_document', 'security', false ) === false ) {
|
755 |
wp_send_json_error( array(
|
756 |
+
'message' => esc_html__( 'Nonce expired!', 'woocommerce-pdf-invoices-packing-slips' ),
|
757 |
) );
|
758 |
}
|
759 |
|
760 |
if ( ! isset($_POST['action']) || ! in_array( $_POST['action'], array( 'wpo_wcpdf_regenerate_document', 'wpo_wcpdf_save_document', 'wpo_wcpdf_delete_document' ) ) ) {
|
761 |
wp_send_json_error( array(
|
762 |
+
'message' => esc_html__( 'Bad action!', 'woocommerce-pdf-invoices-packing-slips' ),
|
763 |
) );
|
764 |
}
|
765 |
|
766 |
if( empty($_POST['order_id']) || empty($_POST['document_type']) || empty($_POST['action_type']) ) {
|
767 |
wp_send_json_error( array(
|
768 |
+
'message' => esc_html__( 'Incomplete request!', 'woocommerce-pdf-invoices-packing-slips' ),
|
769 |
) );
|
770 |
}
|
771 |
|
772 |
if ( !current_user_can('manage_woocommerce') ) {
|
773 |
wp_send_json_error( array(
|
774 |
+
'message' => esc_html__( 'No permissions!', 'woocommerce-pdf-invoices-packing-slips' ),
|
775 |
) );
|
776 |
}
|
777 |
|
851 |
|
852 |
if ( $is_new ) {
|
853 |
/* translators: name/description of the context for document creation logs */
|
854 |
+
WPO_WCPDF()->main->log_to_order_notes( $document, esc_html__( 'order details (number and/or date set manually)', 'woocommerce-pdf-invoices-packing-slips' ) );
|
855 |
}
|
856 |
|
857 |
$response = array(
|
862 |
} else {
|
863 |
$message_complement = __( 'Document does not exist.', 'woocommerce-pdf-invoices-packing-slips' );
|
864 |
wp_send_json_error( array(
|
865 |
+
'message' => wp_kses_post( $notice_messages[$notice]['error'] . ' ' . $message_complement ),
|
866 |
) );
|
867 |
}
|
868 |
|
869 |
+
// clean/escape response message
|
870 |
+
if ( ! empty( $response['message'] ) ) {
|
871 |
+
$response['message'] = wp_kses_post( $response['message'] );
|
872 |
+
}
|
873 |
+
|
874 |
wp_send_json_success( $response );
|
875 |
|
876 |
} else {
|
877 |
$message_complement = __( 'Document is empty.', 'woocommerce-pdf-invoices-packing-slips' );
|
878 |
wp_send_json_error( array(
|
879 |
+
'message' => wp_kses_post( $notice_messages[$notice]['error'] . ' ' . $message_complement ),
|
880 |
) );
|
881 |
}
|
882 |
+
} catch ( \Throwable $e ) {
|
883 |
wp_send_json_error( array(
|
884 |
+
'message' => wp_kses_post( $notice_messages[$notice]['error'] . ' ' . $e->getMessage() ),
|
885 |
) );
|
886 |
}
|
887 |
}
|
908 |
$title = __( 'DEBUG output enabled', 'woocommerce-pdf-invoices-packing-slips' );
|
909 |
$args = array(
|
910 |
'id' => 'admin_bar_wpo_debug_mode',
|
911 |
+
'title' => sprintf( '<a href="%s" style="background-color: red; color: white;">%s</a>', esc_attr( $status_settings_url ), esc_html( $title ) ),
|
912 |
);
|
913 |
$wp_admin_bar->add_node( $args );
|
914 |
}
|
includes/class-wcpdf-frontend.php
CHANGED
@@ -17,7 +17,7 @@ class Frontend {
|
|
17 |
add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'my_account_pdf_link' ), 10, 2 );
|
18 |
add_filter( 'woocommerce_api_order_response', array( $this, 'woocommerce_api_invoice_number' ), 10, 2 );
|
19 |
add_action( 'wp_enqueue_scripts', array( $this, 'open_my_account_pdf_link_on_new_tab' ), 999 );
|
20 |
-
add_shortcode( 'wcpdf_download_invoice', array($this, 'download_invoice_shortcode') );
|
21 |
}
|
22 |
|
23 |
/**
|
@@ -28,11 +28,16 @@ class Frontend {
|
|
28 |
|
29 |
$invoice = wcpdf_get_invoice( $order );
|
30 |
if ( $invoice && $invoice->is_enabled() ) {
|
31 |
-
$pdf_url = wp_nonce_url(
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
// check my account button settings
|
34 |
-
$button_setting = $invoice->get_setting('my_account_buttons', 'available');
|
35 |
-
switch ($button_setting) {
|
36 |
case 'available':
|
37 |
$invoice_allowed = $invoice->exists();
|
38 |
break;
|
@@ -43,7 +48,7 @@ class Frontend {
|
|
43 |
$invoice_allowed = false;
|
44 |
break;
|
45 |
case 'custom':
|
46 |
-
$allowed_statuses = $button_setting = $invoice->get_setting('my_account_restrict', array());
|
47 |
if ( !empty( $allowed_statuses ) && in_array( WCX_Order::get_status( $order ), array_keys( $allowed_statuses ) ) ) {
|
48 |
$invoice_allowed = true;
|
49 |
} else {
|
@@ -53,7 +58,7 @@ class Frontend {
|
|
53 |
}
|
54 |
|
55 |
// Check if invoice has been created already or if status allows download (filter your own array of allowed statuses)
|
56 |
-
if ( $invoice_allowed || in_array(WCX_Order::get_status( $order ), apply_filters( 'wpo_wcpdf_myaccount_allowed_order_statuses', array() ) ) ) {
|
57 |
$actions['invoice'] = array(
|
58 |
'url' => $pdf_url,
|
59 |
'name' => apply_filters( 'wpo_wcpdf_myaccount_button_text', $invoice->get_title(), $invoice )
|
@@ -103,47 +108,65 @@ class Frontend {
|
|
103 |
* Download invoice frontend shortcode
|
104 |
*/
|
105 |
public function download_invoice_shortcode( $atts ) {
|
106 |
-
|
107 |
-
|
|
|
|
|
|
|
108 |
|
109 |
// Default values
|
110 |
-
$values = shortcode_atts(array(
|
111 |
'order_id' => '',
|
112 |
'link_text' => ''
|
113 |
-
), $atts);
|
114 |
-
if( !$values ) return;
|
115 |
|
116 |
-
|
|
|
|
|
117 |
|
118 |
// Get $order
|
119 |
-
if
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
|
|
|
|
124 |
$order = wc_get_order( $values['order_id'] );
|
125 |
}
|
126 |
-
|
|
|
|
|
|
|
127 |
|
128 |
// Link text
|
129 |
-
|
130 |
-
if( ! empty($values['link_text']) ) {
|
131 |
$link_text = $values['link_text'];
|
|
|
|
|
132 |
}
|
133 |
|
134 |
-
//
|
135 |
-
$
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
if( is_user_logged_in() ) {
|
138 |
-
$
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
}
|
|
|
|
|
|
|
144 |
|
145 |
return $text;
|
146 |
-
|
147 |
}
|
148 |
|
149 |
/**
|
17 |
add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'my_account_pdf_link' ), 10, 2 );
|
18 |
add_filter( 'woocommerce_api_order_response', array( $this, 'woocommerce_api_invoice_number' ), 10, 2 );
|
19 |
add_action( 'wp_enqueue_scripts', array( $this, 'open_my_account_pdf_link_on_new_tab' ), 999 );
|
20 |
+
add_shortcode( 'wcpdf_download_invoice', array( $this, 'download_invoice_shortcode' ) );
|
21 |
}
|
22 |
|
23 |
/**
|
28 |
|
29 |
$invoice = wcpdf_get_invoice( $order );
|
30 |
if ( $invoice && $invoice->is_enabled() ) {
|
31 |
+
$pdf_url = wp_nonce_url( add_query_arg( array(
|
32 |
+
'action' => 'generate_wpo_wcpdf',
|
33 |
+
'document_type' => 'invoice',
|
34 |
+
'order_ids' => WCX_Order::get_id( $order ),
|
35 |
+
'my-account' => true,
|
36 |
+
), admin_url( 'admin-ajax.php' ) ), 'generate_wpo_wcpdf' );
|
37 |
|
38 |
// check my account button settings
|
39 |
+
$button_setting = $invoice->get_setting( 'my_account_buttons', 'available' );
|
40 |
+
switch ( $button_setting ) {
|
41 |
case 'available':
|
42 |
$invoice_allowed = $invoice->exists();
|
43 |
break;
|
48 |
$invoice_allowed = false;
|
49 |
break;
|
50 |
case 'custom':
|
51 |
+
$allowed_statuses = $button_setting = $invoice->get_setting( 'my_account_restrict', array() );
|
52 |
if ( !empty( $allowed_statuses ) && in_array( WCX_Order::get_status( $order ), array_keys( $allowed_statuses ) ) ) {
|
53 |
$invoice_allowed = true;
|
54 |
} else {
|
58 |
}
|
59 |
|
60 |
// Check if invoice has been created already or if status allows download (filter your own array of allowed statuses)
|
61 |
+
if ( $invoice_allowed || in_array( WCX_Order::get_status( $order ), apply_filters( 'wpo_wcpdf_myaccount_allowed_order_statuses', array() ) ) ) {
|
62 |
$actions['invoice'] = array(
|
63 |
'url' => $pdf_url,
|
64 |
'name' => apply_filters( 'wpo_wcpdf_myaccount_button_text', $invoice->get_title(), $invoice )
|
108 |
* Download invoice frontend shortcode
|
109 |
*/
|
110 |
public function download_invoice_shortcode( $atts ) {
|
111 |
+
global $wp;
|
112 |
+
|
113 |
+
if ( is_admin() ) {
|
114 |
+
return;
|
115 |
+
}
|
116 |
|
117 |
// Default values
|
118 |
+
$values = shortcode_atts (array(
|
119 |
'order_id' => '',
|
120 |
'link_text' => ''
|
121 |
+
), $atts );
|
|
|
122 |
|
123 |
+
if ( empty( $values ) ) {
|
124 |
+
return;
|
125 |
+
}
|
126 |
|
127 |
// Get $order
|
128 |
+
if ( empty( $values['order_id'] ) ) {
|
129 |
+
if( is_checkout() && is_wc_endpoint_url( 'order-received' ) && isset( $wp->query_vars['order-received'] ) ) {
|
130 |
+
$order = wc_get_order( $wp->query_vars['order-received'] );
|
131 |
+
} elseif( is_account_page() && is_wc_endpoint_url( 'view-order' ) && isset( $wp->query_vars['view-order'] ) ) {
|
132 |
+
$order = wc_get_order( $wp->query_vars['view-order'] );
|
133 |
+
}
|
134 |
+
} else {
|
135 |
$order = wc_get_order( $values['order_id'] );
|
136 |
}
|
137 |
+
|
138 |
+
if ( empty( $order ) || ! is_object( $order ) ) {
|
139 |
+
return;
|
140 |
+
}
|
141 |
|
142 |
// Link text
|
143 |
+
if( ! empty( $values['link_text'] ) ) {
|
|
|
144 |
$link_text = $values['link_text'];
|
145 |
+
} else {
|
146 |
+
$link_text = __( 'Download invoice (PDF)', 'woocommerce-pdf-invoices-packing-slips' );
|
147 |
}
|
148 |
|
149 |
+
// Basic query args for PDF
|
150 |
+
$query_args = array(
|
151 |
+
'action' => 'generate_wpo_wcpdf',
|
152 |
+
'document_type' => 'invoice',
|
153 |
+
'order_ids' => $order->get_id(),
|
154 |
+
);
|
155 |
+
|
156 |
+
// Add query args based on user permissions and guest access setting
|
157 |
+
$debug_settings = get_option( 'wpo_wcpdf_settings_debug', array() );
|
158 |
if( is_user_logged_in() ) {
|
159 |
+
$query_args['my-account'] = true;
|
160 |
+
} elseif( ! is_user_logged_in() && isset( $debug_settings['guest_access'] ) ) {
|
161 |
+
$query_args['order_key'] = $order->get_order_key();
|
162 |
+
} else {
|
163 |
+
return; // no business here
|
164 |
}
|
165 |
+
|
166 |
+
$pdf_url = wp_nonce_url( add_query_arg( $query_args, admin_url( 'admin-ajax.php' ) ), 'generate_wpo_wcpdf' );
|
167 |
+
$text = sprintf( '<p><a href="%s" target="_blank">%s</a></p>', esc_attr( $pdf_url ), esc_html( $link_text ) );
|
168 |
|
169 |
return $text;
|
|
|
170 |
}
|
171 |
|
172 |
/**
|
includes/class-wcpdf-main.php
CHANGED
@@ -255,12 +255,12 @@ class Main {
|
|
255 |
public function generate_pdf_ajax() {
|
256 |
$guest_access = isset( WPO_WCPDF()->settings->debug_settings['guest_access'] );
|
257 |
if ( !$guest_access && current_filter() == 'wp_ajax_nopriv_generate_wpo_wcpdf') {
|
258 |
-
wp_die(
|
259 |
}
|
260 |
|
261 |
// Check the nonce - guest access doesn't use nonces but checks the unique order key (hash)
|
262 |
if( empty( $_GET['action'] ) || ( !$guest_access && !check_admin_referer( $_GET['action'] ) ) ) {
|
263 |
-
wp_die(
|
264 |
}
|
265 |
|
266 |
// Check if all parameters are set
|
@@ -269,11 +269,11 @@ class Main {
|
|
269 |
}
|
270 |
|
271 |
if ( empty( $_GET['order_ids'] ) ) {
|
272 |
-
wp_die(
|
273 |
}
|
274 |
|
275 |
if( empty( $_GET['document_type'] ) ) {
|
276 |
-
wp_die(
|
277 |
}
|
278 |
|
279 |
// debug enabled by URL
|
@@ -334,7 +334,7 @@ class Main {
|
|
334 |
$allowed = apply_filters( 'wpo_wcpdf_check_privs', $allowed, $order_ids );
|
335 |
|
336 |
if ( ! $allowed ) {
|
337 |
-
wp_die(
|
338 |
}
|
339 |
|
340 |
// if we got here, we're safe to go!
|
@@ -375,7 +375,7 @@ class Main {
|
|
375 |
}
|
376 |
} else {
|
377 |
/* translators: document type */
|
378 |
-
wp_die( sprintf(
|
379 |
}
|
380 |
} catch ( \Dompdf\Exception $e ) {
|
381 |
$message = 'DOMPDF Exception: '.$e->getMessage();
|
@@ -600,12 +600,12 @@ class Main {
|
|
600 |
?>
|
601 |
<div class="error">
|
602 |
<?php /* translators: 1. plugin name, 2. directory path */ ?>
|
603 |
-
<p><?php printf(
|
604 |
-
<p><?php
|
605 |
-
<p><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_hide_no_dir_notice', 'true' ) ); ?>"><?php
|
606 |
</div>
|
607 |
<?php
|
608 |
-
echo ob_get_clean();
|
609 |
|
610 |
// save option to hide notice
|
611 |
if ( isset( $_GET['wpo_wcpdf_hide_no_dir_notice'] ) ) {
|
@@ -690,21 +690,21 @@ class Main {
|
|
690 |
|
691 |
// get local font dir from filtered options
|
692 |
$dompdf_options = apply_filters( 'wpo_wcpdf_dompdf_options', array(
|
693 |
-
'defaultFont'
|
694 |
-
'tempDir'
|
695 |
-
'logOutputFile'
|
696 |
-
'fontDir'
|
697 |
-
'fontCache'
|
698 |
-
'isRemoteEnabled'
|
699 |
-
'isFontSubsettingEnabled'
|
700 |
-
'isHtml5ParserEnabled'
|
701 |
) );
|
702 |
$fontDir = $dompdf_options['fontDir'];
|
703 |
|
704 |
// merge font family cache with local/custom if present
|
705 |
$font_cache_files = array(
|
706 |
-
'cache'
|
707 |
-
'cache_dist'
|
708 |
);
|
709 |
foreach ( $font_cache_files as $font_cache_name => $font_cache_filename ) {
|
710 |
$plugin_fonts = @require $dompdf_font_dir . $font_cache_filename;
|
@@ -844,7 +844,7 @@ class Main {
|
|
844 |
if ( !empty($document) && $header_logo_height = $document->get_header_logo_height() ) {
|
845 |
?>
|
846 |
td.header img {
|
847 |
-
max-height: <?php echo $header_logo_height; ?>;
|
848 |
}
|
849 |
<?php
|
850 |
}
|
@@ -887,10 +887,10 @@ class Main {
|
|
887 |
*/
|
888 |
public function remove_order_personal_data_meta( $meta_to_remove ) {
|
889 |
$wcpdf_private_meta = array(
|
890 |
-
'_wcpdf_invoice_number'
|
891 |
-
'_wcpdf_invoice_number_data'
|
892 |
-
'_wcpdf_invoice_date'
|
893 |
-
'_wcpdf_invoice_date_formatted'
|
894 |
);
|
895 |
return $meta_to_remove + $wcpdf_private_meta;
|
896 |
}
|
@@ -915,8 +915,8 @@ class Main {
|
|
915 |
public function export_order_personal_data_meta( $meta_to_export ) {
|
916 |
$private_address_meta = array(
|
917 |
// _wcpdf_invoice_number_data & _wcpdf_invoice_date are duplicates of the below and therefor not included
|
918 |
-
'_wcpdf_invoice_number'
|
919 |
-
'_wcpdf_invoice_date_formatted'
|
920 |
);
|
921 |
return $meta_to_export + $private_address_meta;
|
922 |
}
|
@@ -983,11 +983,11 @@ class Main {
|
|
983 |
$note = sprintf( $message, $document->get_title(), $created_via );
|
984 |
|
985 |
if( is_callable( array( $order, 'add_order_note' ) ) ) { // order
|
986 |
-
$order->add_order_note( $note );
|
987 |
} elseif ( $document->is_refund( $order ) ) { // refund order
|
988 |
$parent_order = $document->get_refund_parent( $order );
|
989 |
if( ! empty( $parent_order ) && is_callable( array( $parent_order, 'add_order_note' ) ) ) {
|
990 |
-
$parent_order->add_order_note( $note );
|
991 |
}
|
992 |
}
|
993 |
}
|
@@ -1023,7 +1023,7 @@ class Main {
|
|
1023 |
$documents = WPO_WCPDF()->documents->get_documents();
|
1024 |
foreach ($documents as $document) {
|
1025 |
/* translators: document title */
|
1026 |
-
$topics["order.{$document->type}-saved"] = sprintf( __( 'Order %s Saved', 'woocommerce-pdf-invoices-packing-slips' ), $document->get_title() );
|
1027 |
}
|
1028 |
return $topics;
|
1029 |
}
|
255 |
public function generate_pdf_ajax() {
|
256 |
$guest_access = isset( WPO_WCPDF()->settings->debug_settings['guest_access'] );
|
257 |
if ( !$guest_access && current_filter() == 'wp_ajax_nopriv_generate_wpo_wcpdf') {
|
258 |
+
wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'woocommerce-pdf-invoices-packing-slips' ) );
|
259 |
}
|
260 |
|
261 |
// Check the nonce - guest access doesn't use nonces but checks the unique order key (hash)
|
262 |
if( empty( $_GET['action'] ) || ( !$guest_access && !check_admin_referer( $_GET['action'] ) ) ) {
|
263 |
+
wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'woocommerce-pdf-invoices-packing-slips' ) );
|
264 |
}
|
265 |
|
266 |
// Check if all parameters are set
|
269 |
}
|
270 |
|
271 |
if ( empty( $_GET['order_ids'] ) ) {
|
272 |
+
wp_die( esc_attr__( "You haven't selected any orders", 'woocommerce-pdf-invoices-packing-slips' ) );
|
273 |
}
|
274 |
|
275 |
if( empty( $_GET['document_type'] ) ) {
|
276 |
+
wp_die( esc_attr__( 'Some of the export parameters are missing.', 'woocommerce-pdf-invoices-packing-slips' ) );
|
277 |
}
|
278 |
|
279 |
// debug enabled by URL
|
334 |
$allowed = apply_filters( 'wpo_wcpdf_check_privs', $allowed, $order_ids );
|
335 |
|
336 |
if ( ! $allowed ) {
|
337 |
+
wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'woocommerce-pdf-invoices-packing-slips' ) );
|
338 |
}
|
339 |
|
340 |
// if we got here, we're safe to go!
|
375 |
}
|
376 |
} else {
|
377 |
/* translators: document type */
|
378 |
+
wp_die( sprintf( esc_html__( "Document of type '%s' for the selected order(s) could not be generated", 'woocommerce-pdf-invoices-packing-slips' ), $document_type ) );
|
379 |
}
|
380 |
} catch ( \Dompdf\Exception $e ) {
|
381 |
$message = 'DOMPDF Exception: '.$e->getMessage();
|
600 |
?>
|
601 |
<div class="error">
|
602 |
<?php /* translators: 1. plugin name, 2. directory path */ ?>
|
603 |
+
<p><?php printf( esc_html__( 'The %1$s directory %2$s couldn\'t be created or is not writable!', 'woocommerce-pdf-invoices-packing-slips' ), '<strong>WooCommerce PDF Invoices & Packing Slips</strong>' ,'<code>' . $path . '</code>' ); ?></p>
|
604 |
+
<p><?php esc_html_e( 'Please check your directories write permissions or contact your hosting service provider.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
605 |
+
<p><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_hide_no_dir_notice', 'true' ) ); ?>"><?php esc_html_e( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
606 |
</div>
|
607 |
<?php
|
608 |
+
echo wp_kses_post( ob_get_clean() );
|
609 |
|
610 |
// save option to hide notice
|
611 |
if ( isset( $_GET['wpo_wcpdf_hide_no_dir_notice'] ) ) {
|
690 |
|
691 |
// get local font dir from filtered options
|
692 |
$dompdf_options = apply_filters( 'wpo_wcpdf_dompdf_options', array(
|
693 |
+
'defaultFont' => 'dejavu sans',
|
694 |
+
'tempDir' => $this->get_tmp_path('dompdf'),
|
695 |
+
'logOutputFile' => $this->get_tmp_path('dompdf') . "/log.htm",
|
696 |
+
'fontDir' => $this->get_tmp_path('fonts'),
|
697 |
+
'fontCache' => $this->get_tmp_path('fonts'),
|
698 |
+
'isRemoteEnabled' => true,
|
699 |
+
'isFontSubsettingEnabled' => true,
|
700 |
+
'isHtml5ParserEnabled' => true,
|
701 |
) );
|
702 |
$fontDir = $dompdf_options['fontDir'];
|
703 |
|
704 |
// merge font family cache with local/custom if present
|
705 |
$font_cache_files = array(
|
706 |
+
'cache' => 'dompdf_font_family_cache.php',
|
707 |
+
'cache_dist' => 'dompdf_font_family_cache.dist.php',
|
708 |
);
|
709 |
foreach ( $font_cache_files as $font_cache_name => $font_cache_filename ) {
|
710 |
$plugin_fonts = @require $dompdf_font_dir . $font_cache_filename;
|
844 |
if ( !empty($document) && $header_logo_height = $document->get_header_logo_height() ) {
|
845 |
?>
|
846 |
td.header img {
|
847 |
+
max-height: <?php echo esc_html( $header_logo_height ); ?>;
|
848 |
}
|
849 |
<?php
|
850 |
}
|
887 |
*/
|
888 |
public function remove_order_personal_data_meta( $meta_to_remove ) {
|
889 |
$wcpdf_private_meta = array(
|
890 |
+
'_wcpdf_invoice_number' => 'numeric_id',
|
891 |
+
'_wcpdf_invoice_number_data' => 'array',
|
892 |
+
'_wcpdf_invoice_date' => 'timestamp',
|
893 |
+
'_wcpdf_invoice_date_formatted' => 'date',
|
894 |
);
|
895 |
return $meta_to_remove + $wcpdf_private_meta;
|
896 |
}
|
915 |
public function export_order_personal_data_meta( $meta_to_export ) {
|
916 |
$private_address_meta = array(
|
917 |
// _wcpdf_invoice_number_data & _wcpdf_invoice_date are duplicates of the below and therefor not included
|
918 |
+
'_wcpdf_invoice_number' => esc_html__( 'Invoice Number', 'woocommerce-pdf-invoices-packing-slips' ),
|
919 |
+
'_wcpdf_invoice_date_formatted' => esc_html__( 'Invoice Date', 'woocommerce-pdf-invoices-packing-slips' ),
|
920 |
);
|
921 |
return $meta_to_export + $private_address_meta;
|
922 |
}
|
983 |
$note = sprintf( $message, $document->get_title(), $created_via );
|
984 |
|
985 |
if( is_callable( array( $order, 'add_order_note' ) ) ) { // order
|
986 |
+
$order->add_order_note( strip_tags( $note ) );
|
987 |
} elseif ( $document->is_refund( $order ) ) { // refund order
|
988 |
$parent_order = $document->get_refund_parent( $order );
|
989 |
if( ! empty( $parent_order ) && is_callable( array( $parent_order, 'add_order_note' ) ) ) {
|
990 |
+
$parent_order->add_order_note( strip_tags( $note ) );
|
991 |
}
|
992 |
}
|
993 |
}
|
1023 |
$documents = WPO_WCPDF()->documents->get_documents();
|
1024 |
foreach ($documents as $document) {
|
1025 |
/* translators: document title */
|
1026 |
+
$topics["order.{$document->type}-saved"] = esc_html( sprintf( __( 'Order %s Saved', 'woocommerce-pdf-invoices-packing-slips' ), $document->get_title() ) );
|
1027 |
}
|
1028 |
return $topics;
|
1029 |
}
|
includes/class-wcpdf-settings-callbacks.php
CHANGED
@@ -24,7 +24,7 @@ class Settings_Callbacks {
|
|
24 |
* @return void.
|
25 |
*/
|
26 |
public function debug_section() {
|
27 |
-
|
28 |
}
|
29 |
|
30 |
/**
|
@@ -33,7 +33,7 @@ class Settings_Callbacks {
|
|
33 |
* @return void.
|
34 |
*/
|
35 |
public function custom_fields_section() {
|
36 |
-
|
37 |
}
|
38 |
|
39 |
/**
|
@@ -52,16 +52,16 @@ class Settings_Callbacks {
|
|
52 |
extract( $this->normalize_settings_args( $args ) );
|
53 |
|
54 |
// output checkbox
|
55 |
-
printf( '<input type="checkbox" id="%1$s" name="%2$s" value="%3$s" %4$s %5$s/>', $id, $setting_name, $value, checked( $value, $current, false ), !empty($disabled) ? 'disabled="disabled"' : '' );
|
56 |
|
57 |
// print store empty input if true
|
58 |
if( $store_unchecked ) {
|
59 |
-
printf( '<input type="hidden" name="%s[wpo_wcpdf_setting_store_empty][]" value="%s"/>', $option_name, $id );
|
60 |
}
|
61 |
|
62 |
// output description.
|
63 |
-
if (
|
64 |
-
printf( '<p class="description">%s</p>', $description );
|
65 |
}
|
66 |
}
|
67 |
|
@@ -81,15 +81,15 @@ class Settings_Callbacks {
|
|
81 |
public function text_input( $args ) {
|
82 |
extract( $this->normalize_settings_args( $args ) );
|
83 |
|
84 |
-
if (empty($type)) {
|
85 |
$type = 'text';
|
86 |
}
|
87 |
|
88 |
-
printf( '<input type="%1$s" id="%2$s" name="%3$s" value="%4$s" size="%5$s" placeholder="%6$s" %7$s/>', $type, $id, $setting_name, esc_attr( $current ), $size, $placeholder, !empty($disabled) ? 'disabled="disabled"' : '' );
|
89 |
|
90 |
// output description.
|
91 |
-
if (
|
92 |
-
printf( '<p class="description">%s</p>', $description );
|
93 |
}
|
94 |
}
|
95 |
|
@@ -108,7 +108,7 @@ class Settings_Callbacks {
|
|
108 |
public function checkbox_text_input( $args ) {
|
109 |
$args = $this->normalize_settings_args( $args );
|
110 |
extract( $args );
|
111 |
-
unset($args['description']); // already extracted, should only be used here
|
112 |
|
113 |
// get checkbox
|
114 |
ob_start();
|
@@ -121,21 +121,21 @@ class Settings_Callbacks {
|
|
121 |
'default' => isset( $args['text_input_default'] ) ? (string) $args['text_input_default'] : NULL,
|
122 |
'size' => isset( $args['text_input_size'] ) ? $args['text_input_size'] : NULL,
|
123 |
) + $args;
|
124 |
-
unset($input_args['current']);
|
125 |
|
126 |
ob_start();
|
127 |
$this->text_input( $input_args );
|
128 |
$text_input = ob_get_clean();
|
129 |
|
130 |
-
if (!empty($text_input_wrap)) {
|
131 |
printf( "{$checkbox} {$text_input_wrap}", $text_input);
|
132 |
} else {
|
133 |
echo "{$checkbox} {$text_input}";
|
134 |
}
|
135 |
|
136 |
// output description.
|
137 |
-
if (
|
138 |
-
printf( '<p class="description">%s</p>', $description );
|
139 |
}
|
140 |
}
|
141 |
|
@@ -155,14 +155,12 @@ class Settings_Callbacks {
|
|
155 |
$current = isset( $args['default'] ) ? $args['default'] : '';
|
156 |
}
|
157 |
|
158 |
-
|
159 |
|
160 |
-
//
|
161 |
if ( isset( $args['description'] ) ) {
|
162 |
-
|
163 |
}
|
164 |
-
|
165 |
-
echo $html;
|
166 |
}
|
167 |
|
168 |
|
@@ -182,11 +180,11 @@ class Settings_Callbacks {
|
|
182 |
public function textarea( $args ) {
|
183 |
extract( $this->normalize_settings_args( $args ) );
|
184 |
|
185 |
-
printf( '<textarea id="%1$s" name="%2$s" cols="%4$s" rows="%5$s" placeholder="%6$s"/>%3$s</textarea>', $id, $setting_name, esc_textarea( $current ), $width, $height, $placeholder );
|
186 |
|
187 |
// output description.
|
188 |
-
if (
|
189 |
-
printf( '<p class="description">%s</p>', $description );
|
190 |
}
|
191 |
}
|
192 |
|
@@ -200,38 +198,38 @@ class Settings_Callbacks {
|
|
200 |
public function select( $args ) {
|
201 |
extract( $this->normalize_settings_args( $args ) );
|
202 |
|
203 |
-
if (
|
204 |
-
if (
|
205 |
$setting_name = "{$setting_name}[]";
|
206 |
$multiple = 'multiple=multiple';
|
207 |
} else {
|
208 |
$multiple = '';
|
209 |
}
|
210 |
|
211 |
-
$placeholder =
|
212 |
-
$title =
|
213 |
$class = 'wc-enhanced-select wpo-wcpdf-enhanced-select';
|
214 |
$css = 'width:400px';
|
215 |
-
printf( '<select id="%1$s" name="%2$s" data-placeholder="%3$s" title="%4$s" class="%5$s" style="%6$s" %7$s>', $id, $setting_name, $placeholder, $title, $class, $css, $multiple );
|
216 |
} else {
|
217 |
-
printf( '<select id="%1$s" name="%2$s">', $id, $setting_name );
|
218 |
}
|
219 |
|
220 |
foreach ( $options as $key => $label ) {
|
221 |
-
if (
|
222 |
-
$selected = in_array($key, $current) ? ' selected="selected"' : '';
|
223 |
-
printf( '<option value="%s"%s>%s</option>', $key, $selected, $label );
|
224 |
} else {
|
225 |
-
printf( '<option value="%s"%s>%s</option>', $key, selected( $current, $key, false ), $label );
|
226 |
}
|
227 |
}
|
228 |
|
229 |
echo '</select>';
|
230 |
|
231 |
-
if (
|
232 |
-
printf( '<div class="%1$s_custom custom">', $id );
|
233 |
|
234 |
-
if (is_callable( array( $this, $custom['type'] ) ) ) {
|
235 |
$this->{$custom['type']}( $custom['args'] );
|
236 |
}
|
237 |
echo '</div>';
|
@@ -259,9 +257,9 @@ class Settings_Callbacks {
|
|
259 |
<?php
|
260 |
}
|
261 |
|
262 |
-
//
|
263 |
-
if (
|
264 |
-
printf( '<p class="description">%s</p>', $
|
265 |
}
|
266 |
|
267 |
}
|
@@ -270,14 +268,14 @@ class Settings_Callbacks {
|
|
270 |
extract( $this->normalize_settings_args( $args ) );
|
271 |
|
272 |
foreach ( $options as $key => $label ) {
|
273 |
-
printf( '<input type="radio" class="radio" id="%1$s[%3$s]" name="%2$s" value="%3$s"%4$s />', $id, $setting_name, $key, checked( $current, $key, false ) );
|
274 |
-
printf( '<label for="%1$s[%3$s]"> %4$s</label><br>', $id, $setting_name, $key, $label);
|
275 |
}
|
276 |
|
277 |
|
278 |
-
//
|
279 |
-
if (
|
280 |
-
printf( '<p class="description">%s</p>', $
|
281 |
}
|
282 |
|
283 |
}
|
@@ -290,38 +288,38 @@ class Settings_Callbacks {
|
|
290 |
public function multiple_text_input( $args ) {
|
291 |
extract( $this->normalize_settings_args( $args ) );
|
292 |
|
293 |
-
if (!empty($header)) {
|
294 |
-
echo "<p><strong>{$header}</strong>:</p>";
|
295 |
}
|
296 |
|
297 |
-
printf('<p class="%s multiple-text-input">', $id);
|
298 |
foreach ($fields as $name => $field) {
|
299 |
$size = $field['size'];
|
300 |
$placeholder = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
|
301 |
|
302 |
-
if (isset($field['label_width'])) {
|
303 |
$style = sprintf( 'style="display:inline-block; width:%1$s;"', $field['label_width'] );
|
304 |
} else {
|
305 |
$style = '';
|
306 |
}
|
307 |
|
308 |
-
$
|
309 |
|
310 |
// output field label
|
311 |
-
if (isset($field['label'])) {
|
312 |
-
printf( '<label for="%1$s_%2$s" %3$s>%4$s:</label>', $id, $name, $style, $field['label'] );
|
313 |
}
|
314 |
|
315 |
// output field
|
316 |
-
$field_current = isset($current[$name]) ? $current[$name] : '';
|
317 |
$type = isset( $field['type'] ) ? $field['type'] : 'text';
|
318 |
-
printf( '<input type="%1$s" id="%2$s_%4$s" name="%3$s[%4$s]" value="%5$s" size="%6$s" placeholder="%7$s"/> %8$s<br/>', $type, $id, $setting_name, $name, esc_attr( $field_current ), $size, $placeholder, $
|
319 |
}
|
320 |
echo "</p>";
|
321 |
|
322 |
-
//
|
323 |
-
if (
|
324 |
-
printf( '<p class="description">%s</p>', $
|
325 |
}
|
326 |
}
|
327 |
|
@@ -333,21 +331,19 @@ class Settings_Callbacks {
|
|
333 |
public function multiple_checkboxes( $args ) {
|
334 |
extract( $this->normalize_settings_args( $args ) );
|
335 |
|
336 |
-
foreach ($fields as $name => $label) {
|
337 |
-
// $label = $field['label'];
|
338 |
-
|
339 |
// output checkbox
|
340 |
-
$field_current = isset($current[$name]) ? $current[$name] : '';
|
341 |
-
printf( '<input type="checkbox" id="%1$s_%3$s" name="%2$s[%3$s]" value="%4$s"%5$s />', $id, $setting_name, $name, $value, checked( $value, $field_current, false ) );
|
342 |
|
343 |
// output field label
|
344 |
-
printf( '<label for="%1$s_%2$s">%3$s</label><br>', $id, $name, $label );
|
345 |
|
346 |
}
|
347 |
|
348 |
-
//
|
349 |
-
if (
|
350 |
-
printf( '<p class="description">%s</p>', $
|
351 |
}
|
352 |
}
|
353 |
|
@@ -361,34 +357,34 @@ class Settings_Callbacks {
|
|
361 |
public function media_upload( $args ) {
|
362 |
extract( $this->normalize_settings_args( $args ) );
|
363 |
|
364 |
-
if( !empty($current) && $attachment = wp_get_attachment_image_src( $current, 'full', false ) ) {
|
365 |
$general_settings = get_option('wpo_wcpdf_settings_general');
|
366 |
$attachment_src = $attachment[0];
|
367 |
$attachment_width = $attachment[1];
|
368 |
$attachment_height = $attachment[2];
|
369 |
// check if we have the height saved on settings
|
370 |
-
$header_logo_height =
|
371 |
if ( stripos( $header_logo_height, 'mm' ) != false ) {
|
372 |
-
$in_height = floatval($header_logo_height)/25.4;
|
373 |
} elseif ( stripos( $header_logo_height, 'cm' ) != false ) {
|
374 |
-
$in_height = floatval($header_logo_height)/2.54;
|
375 |
} elseif ( stripos( $header_logo_height, 'in' ) != false ) {
|
376 |
-
$in_height = floatval($header_logo_height);
|
377 |
} else {
|
378 |
// don't display resolution
|
379 |
}
|
380 |
|
381 |
-
printf('<img src="%1$s" style="display:block" id="img-%
|
382 |
-
if ( !empty($attachment_height) && !empty($in_height) ) {
|
383 |
-
$attachment_resolution = round(absint($attachment_height)
|
384 |
printf(
|
385 |
'<div class="attachment-resolution"><p class="description">%s: %sdpi</p></div>',
|
386 |
-
|
387 |
$attachment_resolution
|
388 |
);
|
389 |
|
390 |
// warn the user if the image is unnecessarily large
|
391 |
-
if ($attachment_resolution > 600 ) {
|
392 |
printf(
|
393 |
'<div class="attachment-resolution-warning notice notice-warning inline"><p>%s</p></div>',
|
394 |
esc_html__( 'The image resolution exceeds the recommended maximum of 600dpi. This will unnecessarily increase the size of your PDF files and could negatively affect performance.', 'woocommerce-pdf-invoices-packing-slips' )
|
@@ -396,16 +392,16 @@ class Settings_Callbacks {
|
|
396 |
}
|
397 |
}
|
398 |
|
399 |
-
printf('<span class="button wpo_remove_image_button" data-input_id="%1$s">%2$s</span> ', $id, $remove_button_text );
|
400 |
}
|
401 |
|
402 |
-
printf( '<input id="%1$s" name="%2$s" type="hidden" value="%3$s" data-settings_callback_args="%4$s" data-ajax_nonce="%5$s"/>', $id, $setting_name, $current, esc_attr( json_encode( $args ) ), wp_create_nonce( "wpo_wcpdf_get_media_upload_setting_html" ) );
|
403 |
|
404 |
-
printf( '<span class="button wpo_upload_image_button %4$s" data-uploader_title="%1$s" data-uploader_button_text="%2$s" data-remove_button_text="%3$s" data-input_id="%4$s">%2$s</span>', $uploader_title, $uploader_button_text, $remove_button_text, $id );
|
405 |
|
406 |
// Displays option description.
|
407 |
-
if (
|
408 |
-
printf( '<p class="description">%s</p>', $description );
|
409 |
}
|
410 |
}
|
411 |
|
@@ -420,10 +416,17 @@ class Settings_Callbacks {
|
|
420 |
$number_store = new Sequential_Number_Store( $store, $number_store_method );
|
421 |
$next_number = $number_store->get_next();
|
422 |
$nonce = wp_create_nonce( "wpo_wcpdf_next_{$store}" );
|
423 |
-
printf(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
424 |
// Displays option description.
|
425 |
-
if (
|
426 |
-
printf( '<p class="description">%s</p>', $description );
|
427 |
}
|
428 |
}
|
429 |
|
@@ -437,34 +440,34 @@ class Settings_Callbacks {
|
|
437 |
extract( $this->normalize_settings_args( $args ) );
|
438 |
|
439 |
if ( $languages = $this->get_languages() ) {
|
440 |
-
printf( '<div id="%s-%s-translations" class="translations">', $option_name, $id)
|
441 |
?>
|
442 |
<ul>
|
443 |
<?php foreach ( $languages as $lang_code => $language_name ) {
|
444 |
$translation_id = "{$option_name}_{$id}_{$lang_code}";
|
445 |
-
printf('<li><a href="#%s">%s</a></li>', $translation_id, $language_name );
|
446 |
}
|
447 |
?>
|
448 |
</ul>
|
449 |
<?php foreach ( $languages as $lang_code => $language_name ) {
|
450 |
$translation_id = "{$option_name}_{$id}_{$lang_code}";
|
451 |
-
printf( '<div id="%s">', $translation_id );
|
452 |
$args['lang'] = $lang_code;
|
453 |
// don't use internationalized placeholders since they're not translated,
|
454 |
// to avoid confusion (user thinking they're all the same)
|
455 |
if ( $callback == 'multiple_text_input' ) {
|
456 |
-
foreach ($fields as $key => $field_args) {
|
457 |
-
if (!empty($field_args['placeholder']) && isset($field_args['i18n_placeholder'])) {
|
458 |
$args['fields'][$key]['placeholder'] = '';
|
459 |
}
|
460 |
}
|
461 |
} else {
|
462 |
-
if (!empty($args['placeholder']) && isset($args['i18n_placeholder'])) {
|
463 |
$args['placeholder'] = '';
|
464 |
}
|
465 |
}
|
466 |
// specific description for internationalized fields (to compensate for missing placeholder)
|
467 |
-
if (!empty($args['i18n_description'])) {
|
468 |
$args['description'] = $args['i18n_description'];
|
469 |
}
|
470 |
if ( is_array( $callback ) ) {
|
@@ -489,15 +492,15 @@ class Settings_Callbacks {
|
|
489 |
}
|
490 |
|
491 |
public function get_languages () {
|
492 |
-
$multilingual = function_exists('icl_get_languages');
|
493 |
// $multilingual = true; // for development
|
494 |
|
495 |
-
if ($multilingual) {
|
496 |
// use this instead of function call for development outside of WPML
|
497 |
// $icl_get_languages = 'a:3:{s:2:"en";a:8:{s:2:"id";s:1:"1";s:6:"active";s:1:"1";s:11:"native_name";s:7:"English";s:7:"missing";s:1:"0";s:15:"translated_name";s:7:"English";s:13:"language_code";s:2:"en";s:16:"country_flag_url";s:43:"http://yourdomain/wpmlpath/res/flags/en.png";s:3:"url";s:23:"http://yourdomain/about";}s:2:"fr";a:8:{s:2:"id";s:1:"4";s:6:"active";s:1:"0";s:11:"native_name";s:9:"Français";s:7:"missing";s:1:"0";s:15:"translated_name";s:6:"French";s:13:"language_code";s:2:"fr";s:16:"country_flag_url";s:43:"http://yourdomain/wpmlpath/res/flags/fr.png";s:3:"url";s:29:"http://yourdomain/fr/a-propos";}s:2:"it";a:8:{s:2:"id";s:2:"27";s:6:"active";s:1:"0";s:11:"native_name";s:8:"Italiano";s:7:"missing";s:1:"0";s:15:"translated_name";s:7:"Italian";s:13:"language_code";s:2:"it";s:16:"country_flag_url";s:43:"http://yourdomain/wpmlpath/res/flags/it.png";s:3:"url";s:26:"http://yourdomain/it/circa";}}';
|
498 |
// $icl_get_languages = unserialize($icl_get_languages);
|
499 |
|
500 |
-
$icl_get_languages = icl_get_languages('skip_missing=0');
|
501 |
$languages = array();
|
502 |
foreach ($icl_get_languages as $lang => $data) {
|
503 |
$languages[$data['language_code']] = $data['native_name'];
|
@@ -518,7 +521,9 @@ class Settings_Callbacks {
|
|
518 |
// get main settings array
|
519 |
$option = get_option( $args['option_name'] );
|
520 |
|
521 |
-
$args['setting_name']
|
|
|
|
|
522 |
|
523 |
if ( !isset($args['lang']) && !empty($args['translatable']) ) {
|
524 |
$args['lang'] = 'default';
|
@@ -580,17 +585,16 @@ class Settings_Callbacks {
|
|
580 |
* @return array validated options.
|
581 |
*/
|
582 |
public function validate( $input ) {
|
583 |
-
// echo '<pre>';var_dump($input);die('</pre>');
|
584 |
// Create our array for storing the validated options.
|
585 |
$output = array();
|
586 |
|
587 |
-
if (empty($input) || !is_array($input)) {
|
588 |
return $input;
|
589 |
}
|
590 |
|
591 |
-
if (!empty($input['wpo_wcpdf_setting_store_empty'])) { //perhaps we should use a more unique/specific name for this
|
592 |
-
foreach ($input['wpo_wcpdf_setting_store_empty'] as $key) {
|
593 |
-
if (empty($input[$key])) {
|
594 |
$output[$key] = 0;
|
595 |
}
|
596 |
}
|
24 |
* @return void.
|
25 |
*/
|
26 |
public function debug_section() {
|
27 |
+
echo wp_kses_post( __( '<b>Warning!</b> The settings below are meant for debugging/development only. Do not use them on a live website!' , 'woocommerce-pdf-invoices-packing-slips' ) );
|
28 |
}
|
29 |
|
30 |
/**
|
33 |
* @return void.
|
34 |
*/
|
35 |
public function custom_fields_section() {
|
36 |
+
echo wp_kses_post( __( 'These are used for the (optional) footer columns in the <em>Modern (Premium)</em> template, but can also be used for other elements in your custom template' , 'woocommerce-pdf-invoices-packing-slips' ) );
|
37 |
}
|
38 |
|
39 |
/**
|
52 |
extract( $this->normalize_settings_args( $args ) );
|
53 |
|
54 |
// output checkbox
|
55 |
+
printf( '<input type="checkbox" id="%1$s" name="%2$s" value="%3$s" %4$s %5$s/>', esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $value ), checked( $value, $current, false ), ! empty( $disabled ) ? 'disabled="disabled"' : '' );
|
56 |
|
57 |
// print store empty input if true
|
58 |
if( $store_unchecked ) {
|
59 |
+
printf( '<input type="hidden" name="%s[wpo_wcpdf_setting_store_empty][]" value="%s"/>', $option_name, esc_attr( $id ) );
|
60 |
}
|
61 |
|
62 |
// output description.
|
63 |
+
if ( ! empty( $description ) ) {
|
64 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
65 |
}
|
66 |
}
|
67 |
|
81 |
public function text_input( $args ) {
|
82 |
extract( $this->normalize_settings_args( $args ) );
|
83 |
|
84 |
+
if ( empty( $type ) ) {
|
85 |
$type = 'text';
|
86 |
}
|
87 |
|
88 |
+
printf( '<input type="%1$s" id="%2$s" name="%3$s" value="%4$s" size="%5$s" placeholder="%6$s" %7$s/>', esc_attr( $type ), esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $current ), esc_attr( $size ), esc_attr( $placeholder ), ! empty( $disabled ) ? 'disabled="disabled"' : '' );
|
89 |
|
90 |
// output description.
|
91 |
+
if ( ! empty( $description ) ) {
|
92 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
93 |
}
|
94 |
}
|
95 |
|
108 |
public function checkbox_text_input( $args ) {
|
109 |
$args = $this->normalize_settings_args( $args );
|
110 |
extract( $args );
|
111 |
+
unset( $args['description'] ); // already extracted, should only be used here
|
112 |
|
113 |
// get checkbox
|
114 |
ob_start();
|
121 |
'default' => isset( $args['text_input_default'] ) ? (string) $args['text_input_default'] : NULL,
|
122 |
'size' => isset( $args['text_input_size'] ) ? $args['text_input_size'] : NULL,
|
123 |
) + $args;
|
124 |
+
unset( $input_args['current'] );
|
125 |
|
126 |
ob_start();
|
127 |
$this->text_input( $input_args );
|
128 |
$text_input = ob_get_clean();
|
129 |
|
130 |
+
if (! empty( $text_input_wrap ) ) {
|
131 |
printf( "{$checkbox} {$text_input_wrap}", $text_input);
|
132 |
} else {
|
133 |
echo "{$checkbox} {$text_input}";
|
134 |
}
|
135 |
|
136 |
// output description.
|
137 |
+
if ( ! empty( $description ) ) {
|
138 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
139 |
}
|
140 |
}
|
141 |
|
155 |
$current = isset( $args['default'] ) ? $args['default'] : '';
|
156 |
}
|
157 |
|
158 |
+
printf( '<input type="text" id="%1$s" name="%2$s" value="%3$s" size="%4$s" class="%5$s"/>', esc_attr( $id ), esc_attr( $option_name ), esc_attr( $current ), esc_attr( $size ), esc_attr( $class ) );
|
159 |
|
160 |
+
// output description.
|
161 |
if ( isset( $args['description'] ) ) {
|
162 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $args['description'] ) );
|
163 |
}
|
|
|
|
|
164 |
}
|
165 |
|
166 |
|
180 |
public function textarea( $args ) {
|
181 |
extract( $this->normalize_settings_args( $args ) );
|
182 |
|
183 |
+
printf( '<textarea id="%1$s" name="%2$s" cols="%4$s" rows="%5$s" placeholder="%6$s"/>%3$s</textarea>', esc_attr( $id ), esc_attr( $setting_name ), esc_textarea( $current ), esc_attr( $width ), esc_attr( $height ), esc_attr( $placeholder ) );
|
184 |
|
185 |
// output description.
|
186 |
+
if ( ! empty( $description ) ) {
|
187 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
188 |
}
|
189 |
}
|
190 |
|
198 |
public function select( $args ) {
|
199 |
extract( $this->normalize_settings_args( $args ) );
|
200 |
|
201 |
+
if ( ! empty( $enhanced_select ) ) {
|
202 |
+
if ( ! empty( $multiple ) ) {
|
203 |
$setting_name = "{$setting_name}[]";
|
204 |
$multiple = 'multiple=multiple';
|
205 |
} else {
|
206 |
$multiple = '';
|
207 |
}
|
208 |
|
209 |
+
$placeholder = ! empty( $placeholder ) ? esc_attr( $placeholder ) : '';
|
210 |
+
$title = ! empty( $title ) ? esc_attr( $title ) : '';
|
211 |
$class = 'wc-enhanced-select wpo-wcpdf-enhanced-select';
|
212 |
$css = 'width:400px';
|
213 |
+
printf( '<select id="%1$s" name="%2$s" data-placeholder="%3$s" title="%4$s" class="%5$s" style="%6$s" %7$s>', esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $placeholder ), esc_attr( $title ), esc_attr( $class ), esc_attr( $css ), $multiple );
|
214 |
} else {
|
215 |
+
printf( '<select id="%1$s" name="%2$s">', esc_attr( $id ), esc_attr( $setting_name ) );
|
216 |
}
|
217 |
|
218 |
foreach ( $options as $key => $label ) {
|
219 |
+
if ( ! empty( $multiple ) && is_array( $current ) ) {
|
220 |
+
$selected = in_array( $key, $current ) ? ' selected="selected"' : '';
|
221 |
+
printf( '<option value="%s"%s>%s</option>', esc_attr( $key ), $selected, esc_html( $label ) );
|
222 |
} else {
|
223 |
+
printf( '<option value="%s"%s>%s</option>', esc_attr( $key ), selected( $current, $key, false ), esc_html( $label ) );
|
224 |
}
|
225 |
}
|
226 |
|
227 |
echo '</select>';
|
228 |
|
229 |
+
if ( ! empty( $custom ) ) {
|
230 |
+
printf( '<div class="%1$s_custom custom">', esc_attr( $id ) );
|
231 |
|
232 |
+
if ( is_callable( array( $this, $custom['type'] ) ) ) {
|
233 |
$this->{$custom['type']}( $custom['args'] );
|
234 |
}
|
235 |
echo '</div>';
|
257 |
<?php
|
258 |
}
|
259 |
|
260 |
+
// output description.
|
261 |
+
if ( ! empty( $description ) ) {
|
262 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
263 |
}
|
264 |
|
265 |
}
|
268 |
extract( $this->normalize_settings_args( $args ) );
|
269 |
|
270 |
foreach ( $options as $key => $label ) {
|
271 |
+
printf( '<input type="radio" class="radio" id="%1$s[%3$s]" name="%2$s" value="%3$s"%4$s />', esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $key ), checked( $current, $key, false ) );
|
272 |
+
printf( '<label for="%1$s[%3$s]"> %4$s</label><br>', esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $key ), esc_html( $label ) );
|
273 |
}
|
274 |
|
275 |
|
276 |
+
// output description.
|
277 |
+
if ( ! empty( $description ) ) {
|
278 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
279 |
}
|
280 |
|
281 |
}
|
288 |
public function multiple_text_input( $args ) {
|
289 |
extract( $this->normalize_settings_args( $args ) );
|
290 |
|
291 |
+
if ( ! empty( $header ) ) {
|
292 |
+
echo wp_kses_post( "<p><strong>{$header}</strong>:</p>" );
|
293 |
}
|
294 |
|
295 |
+
printf('<p class="%s multiple-text-input">', esc_attr( $id ) );
|
296 |
foreach ($fields as $name => $field) {
|
297 |
$size = $field['size'];
|
298 |
$placeholder = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
|
299 |
|
300 |
+
if ( isset( $field['label_width'] ) ) {
|
301 |
$style = sprintf( 'style="display:inline-block; width:%1$s;"', $field['label_width'] );
|
302 |
} else {
|
303 |
$style = '';
|
304 |
}
|
305 |
|
306 |
+
$field_description = ! empty( $field['description'] ) ? '<span style="font-style:italic;">'.$field['description'].'</span>' : '';
|
307 |
|
308 |
// output field label
|
309 |
+
if ( isset( $field['label'] ) ) {
|
310 |
+
printf( '<label for="%1$s_%2$s" %3$s>%4$s:</label>', esc_attr( $id ), esc_attr( $name ), esc_attr( $style ), esc_html( $field['label'] ) );
|
311 |
}
|
312 |
|
313 |
// output field
|
314 |
+
$field_current = isset( $current[$name] ) ? $current[$name] : '';
|
315 |
$type = isset( $field['type'] ) ? $field['type'] : 'text';
|
316 |
+
printf( '<input type="%1$s" id="%2$s_%4$s" name="%3$s[%4$s]" value="%5$s" size="%6$s" placeholder="%7$s"/> %8$s<br/>', esc_attr( $type ), esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $name ), esc_attr( $field_current ), esc_attr( $size ), esc_attr( $placeholder ), wp_kses_post( $field_description ) );
|
317 |
}
|
318 |
echo "</p>";
|
319 |
|
320 |
+
// output description.
|
321 |
+
if ( ! empty( $description ) ) {
|
322 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
323 |
}
|
324 |
}
|
325 |
|
331 |
public function multiple_checkboxes( $args ) {
|
332 |
extract( $this->normalize_settings_args( $args ) );
|
333 |
|
334 |
+
foreach ( $fields as $name => $label ) {
|
|
|
|
|
335 |
// output checkbox
|
336 |
+
$field_current = isset( $current[$name] ) ? $current[$name] : '';
|
337 |
+
printf( '<input type="checkbox" id="%1$s_%3$s" name="%2$s[%3$s]" value="%4$s"%5$s />', esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $name ), esc_attr( $value ), checked( $value, $field_current, false ) );
|
338 |
|
339 |
// output field label
|
340 |
+
printf( '<label for="%1$s_%2$s">%3$s</label><br>', esc_attr( $id ), esc_attr( $name ), esc_html( $label ) );
|
341 |
|
342 |
}
|
343 |
|
344 |
+
// output description.
|
345 |
+
if ( ! empty( $description ) ) {
|
346 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
347 |
}
|
348 |
}
|
349 |
|
357 |
public function media_upload( $args ) {
|
358 |
extract( $this->normalize_settings_args( $args ) );
|
359 |
|
360 |
+
if( ! empty( $current ) && $attachment = wp_get_attachment_image_src( $current, 'full', false ) ) {
|
361 |
$general_settings = get_option('wpo_wcpdf_settings_general');
|
362 |
$attachment_src = $attachment[0];
|
363 |
$attachment_width = $attachment[1];
|
364 |
$attachment_height = $attachment[2];
|
365 |
// check if we have the height saved on settings
|
366 |
+
$header_logo_height = !empty( $general_settings['header_logo_height'] ) ? $general_settings['header_logo_height'] : '3cm';
|
367 |
if ( stripos( $header_logo_height, 'mm' ) != false ) {
|
368 |
+
$in_height = floatval( $header_logo_height )/25.4;
|
369 |
} elseif ( stripos( $header_logo_height, 'cm' ) != false ) {
|
370 |
+
$in_height = floatval( $header_logo_height )/2.54;
|
371 |
} elseif ( stripos( $header_logo_height, 'in' ) != false ) {
|
372 |
+
$in_height = floatval( $header_logo_height );
|
373 |
} else {
|
374 |
// don't display resolution
|
375 |
}
|
376 |
|
377 |
+
printf( '<img src="%1$s" style="display:block" id="img-%2$s"/>', esc_attr( $attachment_src ), esc_attr( $id ) );
|
378 |
+
if ( ! empty( $attachment_height ) && ! empty( $in_height ) ) {
|
379 |
+
$attachment_resolution = round( absint( $attachment_height ) / $in_height );
|
380 |
printf(
|
381 |
'<div class="attachment-resolution"><p class="description">%s: %sdpi</p></div>',
|
382 |
+
esc_html__( 'Image resolution', 'woocommerce-pdf-invoices-packing-slips' ),
|
383 |
$attachment_resolution
|
384 |
);
|
385 |
|
386 |
// warn the user if the image is unnecessarily large
|
387 |
+
if ( $attachment_resolution > 600 ) {
|
388 |
printf(
|
389 |
'<div class="attachment-resolution-warning notice notice-warning inline"><p>%s</p></div>',
|
390 |
esc_html__( 'The image resolution exceeds the recommended maximum of 600dpi. This will unnecessarily increase the size of your PDF files and could negatively affect performance.', 'woocommerce-pdf-invoices-packing-slips' )
|
392 |
}
|
393 |
}
|
394 |
|
395 |
+
printf('<span class="button wpo_remove_image_button" data-input_id="%1$s">%2$s</span> ', esc_attr( $id ), esc_attr( $remove_button_text ) );
|
396 |
}
|
397 |
|
398 |
+
printf( '<input id="%1$s" name="%2$s" type="hidden" value="%3$s" data-settings_callback_args="%4$s" data-ajax_nonce="%5$s"/>', esc_attr( $id ), esc_attr( $setting_name ), esc_attr( $current ), esc_attr( json_encode( $args ) ), wp_create_nonce( "wpo_wcpdf_get_media_upload_setting_html" ) );
|
399 |
|
400 |
+
printf( '<span class="button wpo_upload_image_button %4$s" data-uploader_title="%1$s" data-uploader_button_text="%2$s" data-remove_button_text="%3$s" data-input_id="%4$s">%2$s</span>', esc_attr( $uploader_title ), esc_attr( $uploader_button_text ), esc_attr( $remove_button_text ), esc_attr( $id ) );
|
401 |
|
402 |
// Displays option description.
|
403 |
+
if ( ! empty( $description ) ) {
|
404 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
405 |
}
|
406 |
}
|
407 |
|
416 |
$number_store = new Sequential_Number_Store( $store, $number_store_method );
|
417 |
$next_number = $number_store->get_next();
|
418 |
$nonce = wp_create_nonce( "wpo_wcpdf_next_{$store}" );
|
419 |
+
printf(
|
420 |
+
'<input id="next_%1$s" class="next-number-input" type="text" size="%2$s" value="%3$s" disabled="disabled" data-store="%1$s" data-nonce="%4$s"/> <span class="edit-next-number dashicons dashicons-edit"></span><span class="save-next-number button secondary" style="display:none;">%5$s</span>',
|
421 |
+
esc_attr( $store ),
|
422 |
+
esc_attr( $size ),
|
423 |
+
esc_attr( $next_number ),
|
424 |
+
esc_attr( $nonce ),
|
425 |
+
esc_html__( 'Save', 'woocommerce-pdf-invoices-packing-slips' )
|
426 |
+
);
|
427 |
// Displays option description.
|
428 |
+
if ( ! empty( $description ) ) {
|
429 |
+
printf( '<p class="description">%s</p>', wp_kses_post( $description ) );
|
430 |
}
|
431 |
}
|
432 |
|
440 |
extract( $this->normalize_settings_args( $args ) );
|
441 |
|
442 |
if ( $languages = $this->get_languages() ) {
|
443 |
+
printf( '<div id="%s-%s-translations" class="translations">', esc_attr( $option_name ), esc_attr( $id ) );
|
444 |
?>
|
445 |
<ul>
|
446 |
<?php foreach ( $languages as $lang_code => $language_name ) {
|
447 |
$translation_id = "{$option_name}_{$id}_{$lang_code}";
|
448 |
+
printf( '<li><a href="#%s">%s</a></li>', esc_attr( $translation_id ), esc_html( $language_name ) );
|
449 |
}
|
450 |
?>
|
451 |
</ul>
|
452 |
<?php foreach ( $languages as $lang_code => $language_name ) {
|
453 |
$translation_id = "{$option_name}_{$id}_{$lang_code}";
|
454 |
+
printf( '<div id="%s">', esc_attr( $translation_id ) );
|
455 |
$args['lang'] = $lang_code;
|
456 |
// don't use internationalized placeholders since they're not translated,
|
457 |
// to avoid confusion (user thinking they're all the same)
|
458 |
if ( $callback == 'multiple_text_input' ) {
|
459 |
+
foreach ( $fields as $key => $field_args ) {
|
460 |
+
if ( ! empty( $field_args['placeholder'] ) && isset( $field_args['i18n_placeholder'] ) ) {
|
461 |
$args['fields'][$key]['placeholder'] = '';
|
462 |
}
|
463 |
}
|
464 |
} else {
|
465 |
+
if ( !empty( $args['placeholder'] ) && isset( $args['i18n_placeholder'] ) ) {
|
466 |
$args['placeholder'] = '';
|
467 |
}
|
468 |
}
|
469 |
// specific description for internationalized fields (to compensate for missing placeholder)
|
470 |
+
if ( ! empty( $args['i18n_description'] ) ) {
|
471 |
$args['description'] = $args['i18n_description'];
|
472 |
}
|
473 |
if ( is_array( $callback ) ) {
|
492 |
}
|
493 |
|
494 |
public function get_languages () {
|
495 |
+
$multilingual = function_exists( 'icl_get_languages' );
|
496 |
// $multilingual = true; // for development
|
497 |
|
498 |
+
if ( $multilingual ) {
|
499 |
// use this instead of function call for development outside of WPML
|
500 |
// $icl_get_languages = 'a:3:{s:2:"en";a:8:{s:2:"id";s:1:"1";s:6:"active";s:1:"1";s:11:"native_name";s:7:"English";s:7:"missing";s:1:"0";s:15:"translated_name";s:7:"English";s:13:"language_code";s:2:"en";s:16:"country_flag_url";s:43:"http://yourdomain/wpmlpath/res/flags/en.png";s:3:"url";s:23:"http://yourdomain/about";}s:2:"fr";a:8:{s:2:"id";s:1:"4";s:6:"active";s:1:"0";s:11:"native_name";s:9:"Français";s:7:"missing";s:1:"0";s:15:"translated_name";s:6:"French";s:13:"language_code";s:2:"fr";s:16:"country_flag_url";s:43:"http://yourdomain/wpmlpath/res/flags/fr.png";s:3:"url";s:29:"http://yourdomain/fr/a-propos";}s:2:"it";a:8:{s:2:"id";s:2:"27";s:6:"active";s:1:"0";s:11:"native_name";s:8:"Italiano";s:7:"missing";s:1:"0";s:15:"translated_name";s:7:"Italian";s:13:"language_code";s:2:"it";s:16:"country_flag_url";s:43:"http://yourdomain/wpmlpath/res/flags/it.png";s:3:"url";s:26:"http://yourdomain/it/circa";}}';
|
501 |
// $icl_get_languages = unserialize($icl_get_languages);
|
502 |
|
503 |
+
$icl_get_languages = icl_get_languages( 'skip_missing=0' );
|
504 |
$languages = array();
|
505 |
foreach ($icl_get_languages as $lang => $data) {
|
506 |
$languages[$data['language_code']] = $data['native_name'];
|
521 |
// get main settings array
|
522 |
$option = get_option( $args['option_name'] );
|
523 |
|
524 |
+
if ( empty ( $args['setting_name'] ) ) {
|
525 |
+
$args['setting_name'] = "{$args['option_name']}[{$args['id']}]";
|
526 |
+
}
|
527 |
|
528 |
if ( !isset($args['lang']) && !empty($args['translatable']) ) {
|
529 |
$args['lang'] = 'default';
|
585 |
* @return array validated options.
|
586 |
*/
|
587 |
public function validate( $input ) {
|
|
|
588 |
// Create our array for storing the validated options.
|
589 |
$output = array();
|
590 |
|
591 |
+
if ( empty( $input ) || ! is_array( $input ) ) {
|
592 |
return $input;
|
593 |
}
|
594 |
|
595 |
+
if ( ! empty( $input['wpo_wcpdf_setting_store_empty'] ) ) { //perhaps we should use a more unique/specific name for this
|
596 |
+
foreach ( $input['wpo_wcpdf_setting_store_empty'] as $key ) {
|
597 |
+
if ( empty( $input[$key] ) ) {
|
598 |
$output[$key] = 0;
|
599 |
}
|
600 |
}
|
includes/class-wcpdf-settings-debug.php
CHANGED
@@ -32,7 +32,7 @@ class Settings_Debug {
|
|
32 |
}
|
33 |
|
34 |
public function debug_tools( $tab, $section ) {
|
35 |
-
if ($tab !== 'debug') {
|
36 |
return;
|
37 |
}
|
38 |
?>
|
@@ -42,9 +42,9 @@ class Settings_Debug {
|
|
42 |
<form method="post">
|
43 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
44 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="generate_random_string">
|
45 |
-
<input type="submit" name="submit" id="submit" class="button" value="<?php
|
46 |
<?php
|
47 |
-
if ( !empty($_POST) && isset($_POST['wpo_wcpdf_debug_tools_action']) && $_POST['wpo_wcpdf_debug_tools_action'] == 'generate_random_string' ) {
|
48 |
// check permissions
|
49 |
if ( !check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
50 |
return;
|
@@ -55,7 +55,7 @@ class Settings_Debug {
|
|
55 |
$new_path = WPO_WCPDF()->main->get_tmp_base();
|
56 |
WPO_WCPDF()->main->copy_directory( $old_path, $new_path );
|
57 |
/* translators: directory path */
|
58 |
-
printf('<div class="notice notice-success"><p>%s</p></div>', sprintf(
|
59 |
}
|
60 |
?>
|
61 |
</form>
|
@@ -65,28 +65,28 @@ class Settings_Debug {
|
|
65 |
<form method="post">
|
66 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
67 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="install_fonts">
|
68 |
-
<input type="submit" name="submit" id="submit" class="button" value="<?php
|
69 |
<?php
|
70 |
-
if ( !empty($_POST) && isset($_POST['wpo_wcpdf_debug_tools_action']) && $_POST['wpo_wcpdf_debug_tools_action'] == 'install_fonts' ) {
|
71 |
// check permissions
|
72 |
-
if ( !check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
73 |
return;
|
74 |
}
|
75 |
|
76 |
$font_path = WPO_WCPDF()->main->get_tmp_path( 'fonts' );
|
77 |
|
78 |
// clear folder first
|
79 |
-
if ( function_exists("glob") && $files = glob( $font_path.'/*.*' ) ) {
|
80 |
$exclude_files = array( 'index.php', '.htaccess' );
|
81 |
-
foreach($files as $file) {
|
82 |
-
if( is_file($file) && !in_array( basename($file), $exclude_files ) ) {
|
83 |
-
unlink($file);
|
84 |
}
|
85 |
}
|
86 |
}
|
87 |
|
88 |
WPO_WCPDF()->main->copy_fonts( $font_path );
|
89 |
-
printf('<div class="notice notice-success"><p>%s</p></div>',
|
90 |
}
|
91 |
?>
|
92 |
</form>
|
@@ -95,26 +95,26 @@ class Settings_Debug {
|
|
95 |
<form method="post">
|
96 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
97 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="clear_tmp">
|
98 |
-
<input type="submit" name="submit" id="submit" class="button" value="<?php
|
99 |
<?php
|
100 |
-
if ( !empty($_POST) && isset($_POST['wpo_wcpdf_debug_tools_action']) && $_POST['wpo_wcpdf_debug_tools_action'] == 'clear_tmp' ) {
|
101 |
// check permissions
|
102 |
-
if ( !check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
103 |
return;
|
104 |
}
|
105 |
-
$tmp_path = WPO_WCPDF()->main->get_tmp_path('attachments');
|
106 |
|
107 |
-
if ( !function_exists("glob") ) {
|
108 |
// glob is disabled
|
109 |
-
printf('<div class="notice notice-error"><p>%s<br><code>%s</code></p></div>',
|
110 |
} else {
|
111 |
$success = 0;
|
112 |
$error = 0;
|
113 |
-
if ( $files = glob($tmp_path.'*.pdf') ) { // get all pdf files
|
114 |
-
foreach($files as $file) {
|
115 |
-
if(is_file($file)) {
|
116 |
// delete file
|
117 |
-
if ( unlink($file) === true ) {
|
118 |
$success++;
|
119 |
} else {
|
120 |
$error++;
|
@@ -122,17 +122,17 @@ class Settings_Debug {
|
|
122 |
}
|
123 |
}
|
124 |
|
125 |
-
if ($error > 0) {
|
126 |
/* translators: 1,2. file count */
|
127 |
-
$message = sprintf(
|
128 |
-
printf('<div class="notice notice-error"><p>%s</p></div>', $message);
|
129 |
} else {
|
130 |
/* translators: file count */
|
131 |
-
$message = sprintf(
|
132 |
-
printf('<div class="notice notice-success"><p>%s</p></div>', $message);
|
133 |
}
|
134 |
} else {
|
135 |
-
printf('<div class="notice notice-success"><p>%s</p></div>',
|
136 |
}
|
137 |
}
|
138 |
}
|
@@ -143,11 +143,11 @@ class Settings_Debug {
|
|
143 |
<form method="post">
|
144 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
145 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="delete_legacy_settings">
|
146 |
-
<input type="submit" name="submit" id="submit" class="button" value="<?php
|
147 |
<?php
|
148 |
-
if ( !empty($_POST) && isset($_POST['wpo_wcpdf_debug_tools_action']) && $_POST['wpo_wcpdf_debug_tools_action'] == 'delete_legacy_settings' ) {
|
149 |
// check permissions
|
150 |
-
if ( !check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
151 |
return;
|
152 |
}
|
153 |
// delete options
|
@@ -159,7 +159,7 @@ class Settings_Debug {
|
|
159 |
wp_cache_delete( 'wpo_wcpdf_template_settings','options' );
|
160 |
wp_cache_delete( 'wpo_wcpdf_debug_settings','options' );
|
161 |
|
162 |
-
printf('<div class="notice notice-success"><p>%s</p></div>',
|
163 |
}
|
164 |
?>
|
165 |
</form>
|
@@ -170,13 +170,13 @@ class Settings_Debug {
|
|
170 |
}
|
171 |
|
172 |
public function work_at_wpovernight( $tab, $section ) {
|
173 |
-
if ($tab === 'debug') {
|
174 |
include( WPO_WCPDF()->plugin_path() . '/includes/views/work-at-wpovernight.php' );
|
175 |
}
|
176 |
}
|
177 |
|
178 |
public function dompdf_status( $tab, $section ) {
|
179 |
-
if ($tab === 'debug') {
|
180 |
include( WPO_WCPDF()->plugin_path() . '/includes/views/dompdf-status.php' );
|
181 |
}
|
182 |
}
|
32 |
}
|
33 |
|
34 |
public function debug_tools( $tab, $section ) {
|
35 |
+
if ( $tab !== 'debug' ) {
|
36 |
return;
|
37 |
}
|
38 |
?>
|
42 |
<form method="post">
|
43 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
44 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="generate_random_string">
|
45 |
+
<input type="submit" name="submit" id="submit" class="button" value="<?php esc_attr_e( 'Generate random temporary folder name', 'woocommerce-pdf-invoices-packing-slips' ); ?>">
|
46 |
<?php
|
47 |
+
if ( ! empty( $_POST ) && isset( $_POST['wpo_wcpdf_debug_tools_action'] ) && $_POST['wpo_wcpdf_debug_tools_action'] == 'generate_random_string' ) {
|
48 |
// check permissions
|
49 |
if ( !check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
50 |
return;
|
55 |
$new_path = WPO_WCPDF()->main->get_tmp_base();
|
56 |
WPO_WCPDF()->main->copy_directory( $old_path, $new_path );
|
57 |
/* translators: directory path */
|
58 |
+
printf('<div class="notice notice-success"><p>%s</p></div>', sprintf( esc_html__( 'Temporary folder moved to %s', 'woocommerce-pdf-invoices-packing-slips' ), '<code>'.$new_path.'</code>' ) );
|
59 |
}
|
60 |
?>
|
61 |
</form>
|
65 |
<form method="post">
|
66 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
67 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="install_fonts">
|
68 |
+
<input type="submit" name="submit" id="submit" class="button" value="<?php esc_attr_e( 'Reinstall fonts', 'woocommerce-pdf-invoices-packing-slips' ); ?>">
|
69 |
<?php
|
70 |
+
if ( ! empty( $_POST ) && isset( $_POST['wpo_wcpdf_debug_tools_action'] ) && $_POST['wpo_wcpdf_debug_tools_action'] == 'install_fonts' ) {
|
71 |
// check permissions
|
72 |
+
if ( ! check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
73 |
return;
|
74 |
}
|
75 |
|
76 |
$font_path = WPO_WCPDF()->main->get_tmp_path( 'fonts' );
|
77 |
|
78 |
// clear folder first
|
79 |
+
if ( function_exists( "glob" ) && $files = glob( $font_path.'/*.*' ) ) {
|
80 |
$exclude_files = array( 'index.php', '.htaccess' );
|
81 |
+
foreach( $files as $file ) {
|
82 |
+
if( is_file( $file ) && !in_array( basename( $file ), $exclude_files ) ) {
|
83 |
+
unlink( $file );
|
84 |
}
|
85 |
}
|
86 |
}
|
87 |
|
88 |
WPO_WCPDF()->main->copy_fonts( $font_path );
|
89 |
+
printf('<div class="notice notice-success"><p>%s</p></div>', esc_html__( 'Fonts reinstalled!', 'woocommerce-pdf-invoices-packing-slips' ) );
|
90 |
}
|
91 |
?>
|
92 |
</form>
|
95 |
<form method="post">
|
96 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
97 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="clear_tmp">
|
98 |
+
<input type="submit" name="submit" id="submit" class="button" value="<?php esc_attr_e( 'Remove temporary files', 'woocommerce-pdf-invoices-packing-slips' ); ?>">
|
99 |
<?php
|
100 |
+
if ( ! empty( $_POST ) && isset( $_POST['wpo_wcpdf_debug_tools_action'] ) && $_POST['wpo_wcpdf_debug_tools_action'] == 'clear_tmp' ) {
|
101 |
// check permissions
|
102 |
+
if ( ! check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
103 |
return;
|
104 |
}
|
105 |
+
$tmp_path = WPO_WCPDF()->main->get_tmp_path( 'attachments' );
|
106 |
|
107 |
+
if ( ! function_exists( "glob" ) ) {
|
108 |
// glob is disabled
|
109 |
+
printf('<div class="notice notice-error"><p>%s<br><code>%s</code></p></div>', esc_html__( "Unable to read temporary folder contents!", 'woocommerce-pdf-invoices-packing-slips' ), $tmp_path);
|
110 |
} else {
|
111 |
$success = 0;
|
112 |
$error = 0;
|
113 |
+
if ( $files = glob( $tmp_path.'*.pdf' ) ) { // get all pdf files
|
114 |
+
foreach( $files as $file ) {
|
115 |
+
if( is_file( $file ) ) {
|
116 |
// delete file
|
117 |
+
if ( unlink( $file ) === true ) {
|
118 |
$success++;
|
119 |
} else {
|
120 |
$error++;
|
122 |
}
|
123 |
}
|
124 |
|
125 |
+
if ( $error > 0 ) {
|
126 |
/* translators: 1,2. file count */
|
127 |
+
$message = sprintf( esc_html__( 'Unable to delete %1$d files! (deleted %2$d)', 'woocommerce-pdf-invoices-packing-slips' ), $error, $success );
|
128 |
+
printf( '<div class="notice notice-error"><p>%s</p></div>', $message );
|
129 |
} else {
|
130 |
/* translators: file count */
|
131 |
+
$message = sprintf( esc_html__( 'Successfully deleted %d files!', 'woocommerce-pdf-invoices-packing-slips' ), $success );
|
132 |
+
printf( '<div class="notice notice-success"><p>%s</p></div>', $message );
|
133 |
}
|
134 |
} else {
|
135 |
+
printf( '<div class="notice notice-success"><p>%s</p></div>', esc_html__( 'Nothing to delete!', 'woocommerce-pdf-invoices-packing-slips' ) );
|
136 |
}
|
137 |
}
|
138 |
}
|
143 |
<form method="post">
|
144 |
<?php wp_nonce_field( 'wpo_wcpdf_debug_tools_action', 'security' ); ?>
|
145 |
<input type="hidden" name="wpo_wcpdf_debug_tools_action" value="delete_legacy_settings">
|
146 |
+
<input type="submit" name="submit" id="submit" class="button" value="<?php esc_attr_e( 'Delete legacy (1.X) settings', 'woocommerce-pdf-invoices-packing-slips' ); ?>">
|
147 |
<?php
|
148 |
+
if ( ! empty( $_POST ) && isset( $_POST['wpo_wcpdf_debug_tools_action'] ) && $_POST['wpo_wcpdf_debug_tools_action'] == 'delete_legacy_settings' ) {
|
149 |
// check permissions
|
150 |
+
if ( ! check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
|
151 |
return;
|
152 |
}
|
153 |
// delete options
|
159 |
wp_cache_delete( 'wpo_wcpdf_template_settings','options' );
|
160 |
wp_cache_delete( 'wpo_wcpdf_debug_settings','options' );
|
161 |
|
162 |
+
printf('<div class="notice notice-success"><p>%s</p></div>', esc_html__( 'Legacy settings deleted!', 'woocommerce-pdf-invoices-packing-slips' ) );
|
163 |
}
|
164 |
?>
|
165 |
</form>
|
170 |
}
|
171 |
|
172 |
public function work_at_wpovernight( $tab, $section ) {
|
173 |
+
if ( $tab === 'debug' ) {
|
174 |
include( WPO_WCPDF()->plugin_path() . '/includes/views/work-at-wpovernight.php' );
|
175 |
}
|
176 |
}
|
177 |
|
178 |
public function dompdf_status( $tab, $section ) {
|
179 |
+
if ( $tab === 'debug' ) {
|
180 |
include( WPO_WCPDF()->plugin_path() . '/includes/views/dompdf-status.php' );
|
181 |
}
|
182 |
}
|
includes/class-wcpdf-settings-documents.php
CHANGED
@@ -15,58 +15,34 @@ class Settings_Documents {
|
|
15 |
}
|
16 |
|
17 |
public function init_settings() {
|
18 |
-
$documents = WPO_WCPDF()->documents->get_documents('all');
|
19 |
-
foreach ($documents as $document) {
|
20 |
$document->init_settings();
|
21 |
}
|
22 |
}
|
23 |
|
24 |
public function output( $section ) {
|
25 |
-
$section = !empty($section) ? $section : 'invoice';
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
<ul>
|
32 |
-
<?php
|
33 |
-
foreach ($documents as $document) {
|
34 |
-
$title = strip_tags($document->get_title());
|
35 |
-
if (empty(trim($title))) {
|
36 |
-
$title = '['.__( 'untitled', 'woocommerce-pdf-invoices-packing-slips' ).']';
|
37 |
-
}
|
38 |
-
printf('<li><a href="%s" class="%s">%s</a></li>', add_query_arg( 'section', $document->get_type() ), $document->get_type() == $section ? 'active' : '', $title );
|
39 |
-
}
|
40 |
-
?>
|
41 |
-
</ul>
|
42 |
-
</div>
|
43 |
-
<?php
|
44 |
-
settings_fields( "wpo_wcpdf_documents_settings_{$section}" );
|
45 |
-
do_settings_sections( "wpo_wcpdf_documents_settings_{$section}" );
|
46 |
-
submit_button();
|
47 |
-
} else {
|
48 |
-
$documents = WPO_WCPDF()->documents->get_documents('all');
|
49 |
-
?>
|
50 |
-
<p><?php _e('All available documents are listed below. Click on a document to configure it.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
51 |
-
<table class="wcpdf_documents_settings_list">
|
52 |
<?php
|
53 |
-
$
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
$title = __( 'untitled', 'woocommerce-pdf-invoices-packing-slips' );
|
58 |
}
|
59 |
-
|
60 |
-
<tr class="<?php echo (($c = !$c)?"odd":"even"); ?>">
|
61 |
-
<td class="title"><a href="<?php echo add_query_arg( 'section', $document->get_type() ); ?>"><?php echo $title; ?></a></td>
|
62 |
-
<td class="settings-icon"><a href="<?php echo add_query_arg( 'section', $document->get_type() ); ?>"><span class="dashicons dashicons-admin-settings"></span></a></td>
|
63 |
-
</tr>
|
64 |
-
<?php
|
65 |
}
|
66 |
?>
|
67 |
-
</
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
70 |
}
|
71 |
|
72 |
}
|
15 |
}
|
16 |
|
17 |
public function init_settings() {
|
18 |
+
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
|
19 |
+
foreach ( $documents as $document ) {
|
20 |
$document->init_settings();
|
21 |
}
|
22 |
}
|
23 |
|
24 |
public function output( $section ) {
|
25 |
+
$section = ! empty( $section ) ? $section : 'invoice';
|
26 |
+
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
|
27 |
+
?>
|
28 |
+
<div class="wcpdf_document_settings_sections">
|
29 |
+
<?php esc_attr_e( 'Documents', 'woocommerce-pdf-invoices-packing-slips' ); ?>:
|
30 |
+
<ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
<?php
|
32 |
+
foreach ( $documents as $document ) {
|
33 |
+
$title = strip_tags( $document->get_title() );
|
34 |
+
if ( empty( trim( $title ) ) ) {
|
35 |
+
$title = '['.__( 'untitled', 'woocommerce-pdf-invoices-packing-slips' ).']';
|
|
|
36 |
}
|
37 |
+
printf( '<li><a href="%s" class="%s">%s</a></li>', add_query_arg( 'section', $document->get_type() ), $document->get_type() == $section ? 'active' : '', esc_html( $title ) );
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
?>
|
40 |
+
</ul>
|
41 |
+
</div>
|
42 |
+
<?php
|
43 |
+
settings_fields( "wpo_wcpdf_documents_settings_{$section}" );
|
44 |
+
do_settings_sections( "wpo_wcpdf_documents_settings_{$section}" );
|
45 |
+
submit_button();
|
46 |
}
|
47 |
|
48 |
}
|
includes/class-wcpdf-settings-general.php
CHANGED
@@ -260,13 +260,13 @@ class Settings_General {
|
|
260 |
$hide_hint = get_option( 'wpo_wcpdf_hide_attachments_hint' );
|
261 |
}
|
262 |
|
263 |
-
if ( $active_tab == 'general' &&
|
264 |
$documents = WPO_WCPDF()->documents->get_documents();
|
265 |
|
266 |
-
foreach ($documents as $document) {
|
267 |
if ( $document->get_type() == 'invoice' ) {
|
268 |
$invoice_email_ids = $document->get_attach_to_email_ids();
|
269 |
-
if (empty($invoice_email_ids)) {
|
270 |
include_once( WPO_WCPDF()->plugin_path() . '/includes/views/attachment-settings-hint.php' );
|
271 |
}
|
272 |
}
|
@@ -314,18 +314,18 @@ class Settings_General {
|
|
314 |
|
315 |
$template_paths = apply_filters( 'wpo_wcpdf_template_paths', $template_paths );
|
316 |
|
317 |
-
if ( defined('WP_CONTENT_DIR') && strpos( WP_CONTENT_DIR, ABSPATH ) !== false ) {
|
318 |
-
$forwardslash_basepath = str_replace('\\','/', ABSPATH);
|
319 |
} else {
|
320 |
-
$forwardslash_basepath = str_replace('\\','/', WP_CONTENT_DIR);
|
321 |
}
|
322 |
|
323 |
foreach ($template_paths as $template_source => $template_path) {
|
324 |
-
$dirs = (array) glob( $template_path . '*' , GLOB_ONLYDIR);
|
325 |
|
326 |
foreach ($dirs as $dir) {
|
327 |
// we're stripping abspath to make the plugin settings more portable
|
328 |
-
$forwardslash_dir = str_replace('\\','/', $dir);
|
329 |
$installed_templates[ str_replace( $forwardslash_basepath, '', $forwardslash_dir ) ] = basename($dir);
|
330 |
}
|
331 |
}
|
260 |
$hide_hint = get_option( 'wpo_wcpdf_hide_attachments_hint' );
|
261 |
}
|
262 |
|
263 |
+
if ( $active_tab == 'general' && ! $hide_hint ) {
|
264 |
$documents = WPO_WCPDF()->documents->get_documents();
|
265 |
|
266 |
+
foreach ( $documents as $document ) {
|
267 |
if ( $document->get_type() == 'invoice' ) {
|
268 |
$invoice_email_ids = $document->get_attach_to_email_ids();
|
269 |
+
if ( empty( $invoice_email_ids ) ) {
|
270 |
include_once( WPO_WCPDF()->plugin_path() . '/includes/views/attachment-settings-hint.php' );
|
271 |
}
|
272 |
}
|
314 |
|
315 |
$template_paths = apply_filters( 'wpo_wcpdf_template_paths', $template_paths );
|
316 |
|
317 |
+
if ( defined( 'WP_CONTENT_DIR' ) && strpos( WP_CONTENT_DIR, ABSPATH ) !== false ) {
|
318 |
+
$forwardslash_basepath = str_replace( '\\', '/', ABSPATH );
|
319 |
} else {
|
320 |
+
$forwardslash_basepath = str_replace( '\\', '/', WP_CONTENT_DIR );
|
321 |
}
|
322 |
|
323 |
foreach ($template_paths as $template_source => $template_path) {
|
324 |
+
$dirs = (array) glob( $template_path . '*' , GLOB_ONLYDIR );
|
325 |
|
326 |
foreach ($dirs as $dir) {
|
327 |
// we're stripping abspath to make the plugin settings more portable
|
328 |
+
$forwardslash_dir = str_replace( '\\', '/', $dir );
|
329 |
$installed_templates[ str_replace( $forwardslash_basepath, '', $forwardslash_dir ) ] = basename($dir);
|
330 |
}
|
331 |
}
|
includes/class-wcpdf-settings.php
CHANGED
@@ -55,8 +55,8 @@ class Settings {
|
|
55 |
|
56 |
$this->options_page_hook = add_submenu_page(
|
57 |
$parent_slug,
|
58 |
-
|
59 |
-
|
60 |
'manage_woocommerce',
|
61 |
'wpo_wcpdf_options_page',
|
62 |
array( $this, 'settings_page' )
|
@@ -68,7 +68,7 @@ class Settings {
|
|
68 |
*/
|
69 |
public function add_settings_link( $links ) {
|
70 |
$action_links = array(
|
71 |
-
'settings' => '<a href="admin.php?page=wpo_wcpdf_options_page">'.
|
72 |
);
|
73 |
|
74 |
return array_merge( $action_links, $links );
|
@@ -81,8 +81,8 @@ class Settings {
|
|
81 |
public function add_support_links( $links, $file ) {
|
82 |
if ( $file == WPO_WCPDF()->plugin_basename ) {
|
83 |
$row_meta = array(
|
84 |
-
'docs' => '<a href="https://docs.wpovernight.com/topic/woocommerce-pdf-invoices-packing-slips/" target="_blank" title="' .
|
85 |
-
'support' => '<a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices-packing-slips" target="_blank" title="' .
|
86 |
);
|
87 |
|
88 |
return array_merge( $links, $row_meta );
|
@@ -92,10 +92,10 @@ class Settings {
|
|
92 |
|
93 |
function check_auto_increment_increment() {
|
94 |
global $wpdb;
|
95 |
-
$row = $wpdb->get_row("SHOW VARIABLES LIKE 'auto_increment_increment'");
|
96 |
-
if ( !empty($row) && !empty($row->Value) && $row->Value != 1 ) {
|
97 |
/* translators: database row value */
|
98 |
-
$error = sprintf( __( "<strong>Warning!</strong> Your database has an AUTO_INCREMENT step size of %
|
99 |
printf( '<div class="error"><p>%s</p></div>', $error );
|
100 |
}
|
101 |
}
|
@@ -103,23 +103,23 @@ class Settings {
|
|
103 |
|
104 |
public function settings_page() {
|
105 |
$settings_tabs = apply_filters( 'wpo_wcpdf_settings_tabs', array (
|
106 |
-
'general' => __('General', 'woocommerce-pdf-invoices-packing-slips' ),
|
107 |
-
'documents' => __('Documents', 'woocommerce-pdf-invoices-packing-slips' ),
|
108 |
)
|
109 |
);
|
110 |
|
111 |
// add status tab last in row
|
112 |
-
$settings_tabs['debug'] = __('Status', 'woocommerce-pdf-invoices-packing-slips' );
|
113 |
|
114 |
$active_tab = isset( $_GET[ 'tab' ] ) ? sanitize_text_field( $_GET[ 'tab' ] ) : 'general';
|
115 |
$active_section = isset( $_GET[ 'section' ] ) ? sanitize_text_field( $_GET[ 'section' ] ) : '';
|
116 |
|
117 |
-
include('views/wcpdf-settings-page.php');
|
118 |
}
|
119 |
|
120 |
public function add_settings_fields( $settings_fields, $page, $option_group, $option_name ) {
|
121 |
foreach ( $settings_fields as $settings_field ) {
|
122 |
-
if (!isset($settings_field['callback'])) {
|
123 |
continue;
|
124 |
} elseif ( is_callable( array( $this->callbacks, $settings_field['callback'] ) ) ) {
|
125 |
$callback = array( $this->callbacks, $settings_field['callback'] );
|
@@ -146,7 +146,7 @@ class Settings {
|
|
146 |
$settings_field['args']
|
147 |
);
|
148 |
// register option separately for singular options
|
149 |
-
if (is_string($settings_field['callback']) && $settings_field['callback'] == 'singular_text_element') {
|
150 |
register_setting( $option_group, $settings_field['args']['option_name'], array( $this->callbacks, 'validate' ) );
|
151 |
}
|
152 |
}
|
@@ -181,8 +181,8 @@ class Settings {
|
|
181 |
}
|
182 |
|
183 |
public function get_document_settings( $document_type ) {
|
184 |
-
$documents = WPO_WCPDF()->documents->get_documents('all');
|
185 |
-
foreach ($documents as $document) {
|
186 |
if ( $document->get_type() == $document_type ) {
|
187 |
return $document->settings;
|
188 |
}
|
@@ -232,7 +232,7 @@ class Settings {
|
|
232 |
|
233 |
// add base path, checking if it's not already there
|
234 |
// alternative setups like Bedrock have WP_CONTENT_DIR & ABSPATH separated
|
235 |
-
if ( defined('WP_CONTENT_DIR') && strpos( WP_CONTENT_DIR, ABSPATH ) !== false ) {
|
236 |
$base_path = $this->normalize_path( ABSPATH );
|
237 |
} else {
|
238 |
$base_path = $this->normalize_path( WP_CONTENT_DIR );
|
@@ -396,7 +396,7 @@ class Settings {
|
|
396 |
$this->general_settings['template_path'] = $template_match;
|
397 |
update_option( 'wpo_wcpdf_settings_general', $this->general_settings );
|
398 |
/* translators: 1. path, 2. template ID */
|
399 |
-
wcpdf_log_error( sprintf(
|
400 |
}
|
401 |
}
|
402 |
}
|
@@ -404,7 +404,7 @@ class Settings {
|
|
404 |
public function set_number_store() {
|
405 |
check_ajax_referer( "wpo_wcpdf_next_{$_POST['store']}", 'security' );
|
406 |
// check permissions
|
407 |
-
if ( !current_user_can('manage_woocommerce') ) {
|
408 |
die();
|
409 |
}
|
410 |
|
@@ -422,7 +422,7 @@ class Settings {
|
|
422 |
|
423 |
// safety first - always use calculate when auto_increment_increment is not 1
|
424 |
$row = $wpdb->get_row("SHOW VARIABLES LIKE 'auto_increment_increment'");
|
425 |
-
if ( !empty($row) && !empty($row->Value) && $row->Value != 1 ) {
|
426 |
$method = 'calculate';
|
427 |
}
|
428 |
|
55 |
|
56 |
$this->options_page_hook = add_submenu_page(
|
57 |
$parent_slug,
|
58 |
+
esc_html__( 'PDF Invoices', 'woocommerce-pdf-invoices-packing-slips' ),
|
59 |
+
esc_html__( 'PDF Invoices', 'woocommerce-pdf-invoices-packing-slips' ),
|
60 |
'manage_woocommerce',
|
61 |
'wpo_wcpdf_options_page',
|
62 |
array( $this, 'settings_page' )
|
68 |
*/
|
69 |
public function add_settings_link( $links ) {
|
70 |
$action_links = array(
|
71 |
+
'settings' => '<a href="admin.php?page=wpo_wcpdf_options_page">'. esc_html__( 'Settings', 'woocommerce' ) . '</a>',
|
72 |
);
|
73 |
|
74 |
return array_merge( $action_links, $links );
|
81 |
public function add_support_links( $links, $file ) {
|
82 |
if ( $file == WPO_WCPDF()->plugin_basename ) {
|
83 |
$row_meta = array(
|
84 |
+
'docs' => '<a href="https://docs.wpovernight.com/topic/woocommerce-pdf-invoices-packing-slips/" target="_blank" title="' . esc_html__( 'Documentation', 'woocommerce-pdf-invoices-packing-slips' ) . '">' . esc_html__( 'Documentation', 'woocommerce-pdf-invoices-packing-slips' ) . '</a>',
|
85 |
+
'support' => '<a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices-packing-slips" target="_blank" title="' . esc_html__( 'Support Forum', 'woocommerce-pdf-invoices-packing-slips' ) . '">' . esc_html__( 'Support Forum', 'woocommerce-pdf-invoices-packing-slips' ) . '</a>',
|
86 |
);
|
87 |
|
88 |
return array_merge( $links, $row_meta );
|
92 |
|
93 |
function check_auto_increment_increment() {
|
94 |
global $wpdb;
|
95 |
+
$row = $wpdb->get_row( "SHOW VARIABLES LIKE 'auto_increment_increment'" );
|
96 |
+
if ( ! empty( $row ) && ! empty( $row->Value ) && $row->Value != 1 ) {
|
97 |
/* translators: database row value */
|
98 |
+
$error = wp_kses_post( sprintf( __( "<strong>Warning!</strong> Your database has an AUTO_INCREMENT step size of %d, your invoice numbers may not be sequential. Enable the 'Calculate document numbers (slow)' setting in the Status tab to use an alternate method." , 'woocommerce-pdf-invoices-packing-slips' ), intval( $row->Value ) ) );
|
99 |
printf( '<div class="error"><p>%s</p></div>', $error );
|
100 |
}
|
101 |
}
|
103 |
|
104 |
public function settings_page() {
|
105 |
$settings_tabs = apply_filters( 'wpo_wcpdf_settings_tabs', array (
|
106 |
+
'general' => __( 'General', 'woocommerce-pdf-invoices-packing-slips' ),
|
107 |
+
'documents' => __( 'Documents', 'woocommerce-pdf-invoices-packing-slips' ),
|
108 |
)
|
109 |
);
|
110 |
|
111 |
// add status tab last in row
|
112 |
+
$settings_tabs['debug'] = __( 'Status', 'woocommerce-pdf-invoices-packing-slips' );
|
113 |
|
114 |
$active_tab = isset( $_GET[ 'tab' ] ) ? sanitize_text_field( $_GET[ 'tab' ] ) : 'general';
|
115 |
$active_section = isset( $_GET[ 'section' ] ) ? sanitize_text_field( $_GET[ 'section' ] ) : '';
|
116 |
|
117 |
+
include( 'views/wcpdf-settings-page.php' );
|
118 |
}
|
119 |
|
120 |
public function add_settings_fields( $settings_fields, $page, $option_group, $option_name ) {
|
121 |
foreach ( $settings_fields as $settings_field ) {
|
122 |
+
if ( ! isset( $settings_field['callback'] ) ) {
|
123 |
continue;
|
124 |
} elseif ( is_callable( array( $this->callbacks, $settings_field['callback'] ) ) ) {
|
125 |
$callback = array( $this->callbacks, $settings_field['callback'] );
|
146 |
$settings_field['args']
|
147 |
);
|
148 |
// register option separately for singular options
|
149 |
+
if ( is_string( $settings_field['callback'] ) && $settings_field['callback'] == 'singular_text_element') {
|
150 |
register_setting( $option_group, $settings_field['args']['option_name'], array( $this->callbacks, 'validate' ) );
|
151 |
}
|
152 |
}
|
181 |
}
|
182 |
|
183 |
public function get_document_settings( $document_type ) {
|
184 |
+
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
|
185 |
+
foreach ( $documents as $document ) {
|
186 |
if ( $document->get_type() == $document_type ) {
|
187 |
return $document->settings;
|
188 |
}
|
232 |
|
233 |
// add base path, checking if it's not already there
|
234 |
// alternative setups like Bedrock have WP_CONTENT_DIR & ABSPATH separated
|
235 |
+
if ( defined( 'WP_CONTENT_DIR' ) && strpos( WP_CONTENT_DIR, ABSPATH ) !== false ) {
|
236 |
$base_path = $this->normalize_path( ABSPATH );
|
237 |
} else {
|
238 |
$base_path = $this->normalize_path( WP_CONTENT_DIR );
|
396 |
$this->general_settings['template_path'] = $template_match;
|
397 |
update_option( 'wpo_wcpdf_settings_general', $this->general_settings );
|
398 |
/* translators: 1. path, 2. template ID */
|
399 |
+
wcpdf_log_error( sprintf( 'Template setting migrated from %1$s to %2$s', $path, $template_id ), 'info' );
|
400 |
}
|
401 |
}
|
402 |
}
|
404 |
public function set_number_store() {
|
405 |
check_ajax_referer( "wpo_wcpdf_next_{$_POST['store']}", 'security' );
|
406 |
// check permissions
|
407 |
+
if ( ! current_user_can( 'manage_woocommerce' ) ) {
|
408 |
die();
|
409 |
}
|
410 |
|
422 |
|
423 |
// safety first - always use calculate when auto_increment_increment is not 1
|
424 |
$row = $wpdb->get_row("SHOW VARIABLES LIKE 'auto_increment_increment'");
|
425 |
+
if ( ! empty( $row ) && ! empty( $row->Value ) && $row->Value != 1 ) {
|
426 |
$method = 'calculate';
|
427 |
}
|
428 |
|
includes/class-wcpdf-setup-wizard.php
CHANGED
@@ -96,9 +96,7 @@ class Setup_Wizard {
|
|
96 |
);
|
97 |
wp_enqueue_media();
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
$step_keys = array_keys($this->steps);
|
102 |
if ( end( $step_keys ) === $this->step ) {
|
103 |
wp_register_script(
|
104 |
'wpo-wcpdf-setup-confetti',
|
@@ -110,10 +108,11 @@ class Setup_Wizard {
|
|
110 |
|
111 |
if ( ! empty( $_POST['save_step'] ) ) {
|
112 |
$this->save_step();
|
113 |
-
// echo '<pre>';var_dump($_POST);echo '</pre>';die();
|
114 |
-
// call_user_func( $this->steps[ $this->step ]['handler'], $this );
|
115 |
}
|
116 |
|
|
|
|
|
|
|
117 |
ob_start();
|
118 |
$this->setup_wizard_header();
|
119 |
$this->setup_wizard_steps();
|
@@ -128,7 +127,7 @@ class Setup_Wizard {
|
|
128 |
public function setup_wizard_header() {
|
129 |
?>
|
130 |
<!DOCTYPE html>
|
131 |
-
<html <?php language_attributes(); ?> class="wpo-
|
132 |
<head>
|
133 |
<meta name="viewport" content="width=device-width" />
|
134 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
@@ -152,16 +151,16 @@ class Setup_Wizard {
|
|
152 |
// array_shift( $output_steps );
|
153 |
?>
|
154 |
<div class="wpo-setup-card">
|
155 |
-
<h1 class="wpo-plugin-title"
|
156 |
<ol class="wpo-progress-bar">
|
157 |
<?php foreach ( $output_steps as $step_key => $step ) : ?>
|
158 |
-
<a href="<?php echo $this->get_step_link($step_key); ?>" ><li><div class="wpo-progress-marker <?php
|
159 |
if ( $step_key === $this->step ) {
|
160 |
echo 'active';
|
161 |
} elseif ( array_search( $this->step, array_keys( $this->steps ) ) > array_search( $step_key, array_keys( $this->steps ) ) ) {
|
162 |
echo 'completed';
|
163 |
}
|
164 |
-
?>"
|
165 |
<?php endforeach; ?>
|
166 |
</ol>
|
167 |
<?php
|
@@ -181,18 +180,18 @@ class Setup_Wizard {
|
|
181 |
*/
|
182 |
public function setup_wizard_footer() {
|
183 |
?>
|
184 |
-
<input type="hidden" name="wpo_wcpdf_step" value="<?php echo $this->step ?>">
|
185 |
<div class="wpo-setup-buttons">
|
186 |
-
<?php if ($step = $this->get_step(-1)): ?>
|
187 |
-
<a href="<?php echo $this->get_step_link($step); ?>" class="wpo-button-previous"><?php
|
188 |
<?php endif ?>
|
189 |
<!-- <input type="submit" class="wpo-button-next" value="Next" /> -->
|
190 |
-
<?php if ($step = $this->get_step(1)): ?>
|
191 |
<?php wp_nonce_field( 'wpo-wcpdf-setup' ); ?>
|
192 |
<input type="submit" class="wpo-button-next" value="<?php esc_attr_e( 'Next', 'woocommerce-pdf-invoices-packing-slips' ); ?>" name="save_step" />
|
193 |
-
<a href="<?php echo $this->get_step_link($step); ?>" class="wpo-skip-step"><?php
|
194 |
<?php else: ?>
|
195 |
-
<a href="<?php echo $this->get_step_link($step); ?>" class="wpo-button-next"><?php
|
196 |
<?php endif ?>
|
197 |
</div>
|
198 |
</div>
|
@@ -205,7 +204,7 @@ class Setup_Wizard {
|
|
205 |
|
206 |
public function get_step_link( $step ) {
|
207 |
$step_keys = array_keys( $this->steps );
|
208 |
-
if ( end( $step_keys ) === $this->step && empty($step)) {
|
209 |
return admin_url('admin.php?page=wpo_wcpdf_options_page');
|
210 |
}
|
211 |
return add_query_arg( 'step', $step );
|
@@ -216,7 +215,7 @@ class Setup_Wizard {
|
|
216 |
$step_keys = array_keys( $this->steps );
|
217 |
$current_step_pos = array_search( $this->step, $step_keys );
|
218 |
$new_step_pos = $current_step_pos + $delta;
|
219 |
-
if (isset($step_keys[$new_step_pos])) {
|
220 |
return $step_keys[$new_step_pos];
|
221 |
} else {
|
222 |
return false;
|
@@ -231,35 +230,33 @@ class Setup_Wizard {
|
|
231 |
} else {
|
232 |
$user_id = get_current_user_id();
|
233 |
$hidden = get_user_meta( $user_id, 'manageedit-shop_ordercolumnshidden', true );
|
234 |
-
if (!empty($_POST['wcpdf_settings']) && is_array($_POST['wcpdf_settings'])) {
|
235 |
check_admin_referer( 'wpo-wcpdf-setup' );
|
236 |
-
foreach ($_POST['wcpdf_settings'] as $option => $settings) {
|
237 |
// sanitize posted settings
|
238 |
-
foreach ($settings as $key => $value) {
|
239 |
-
if ( $key == 'shop_address' && function_exists('sanitize_textarea_field') ) {
|
240 |
$sanitize_function = 'sanitize_textarea_field';
|
241 |
} else {
|
242 |
$sanitize_function = 'sanitize_text_field';
|
243 |
}
|
244 |
|
245 |
-
if (is_array($value)) {
|
246 |
-
$settings[$key] = array_map($sanitize_function, $value);
|
247 |
} else {
|
248 |
-
$settings[$key] = call_user_func($sanitize_function, $value );
|
249 |
}
|
250 |
}
|
251 |
$current_settings = get_option( $option, array() );
|
252 |
$new_settings = $settings + $current_settings;
|
253 |
-
// echo "<pre>".var_export($settings,true)."</pre>";
|
254 |
-
// echo "<pre>".var_export($new_settings,true)."</pre>";die();
|
255 |
update_option( $option, $new_settings );
|
256 |
}
|
257 |
} elseif ( $_POST['wpo_wcpdf_step'] == 'show-action-buttons' ) {
|
258 |
-
if ( !empty( $_POST['wc_show_action_buttons'] ) ) {
|
259 |
$hidden = array_filter( $hidden, function( $setting ){ return $setting !== 'wc_actions'; } );
|
260 |
update_user_meta( $user_id, 'manageedit-shop_ordercolumnshidden', $hidden );
|
261 |
} else {
|
262 |
-
array_push($hidden, 'wc_actions');
|
263 |
update_user_meta( $user_id, 'manageedit-shop_ordercolumnshidden', $hidden );
|
264 |
}
|
265 |
}
|
96 |
);
|
97 |
wp_enqueue_media();
|
98 |
|
99 |
+
$step_keys = array_keys( $this->steps );
|
|
|
|
|
100 |
if ( end( $step_keys ) === $this->step ) {
|
101 |
wp_register_script(
|
102 |
'wpo-wcpdf-setup-confetti',
|
108 |
|
109 |
if ( ! empty( $_POST['save_step'] ) ) {
|
110 |
$this->save_step();
|
|
|
|
|
111 |
}
|
112 |
|
113 |
+
// disable query monitor during wizard
|
114 |
+
add_filter( 'qm/dispatch/html', '__return_false' );
|
115 |
+
|
116 |
ob_start();
|
117 |
$this->setup_wizard_header();
|
118 |
$this->setup_wizard_steps();
|
127 |
public function setup_wizard_header() {
|
128 |
?>
|
129 |
<!DOCTYPE html>
|
130 |
+
<html <?php language_attributes(); ?> class="wpo-wizard">
|
131 |
<head>
|
132 |
<meta name="viewport" content="width=device-width" />
|
133 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
151 |
// array_shift( $output_steps );
|
152 |
?>
|
153 |
<div class="wpo-setup-card">
|
154 |
+
<h1 class="wpo-plugin-title"><?php esc_html_e( 'PDF Invoices & Packing Slips', 'woocommerce-pdf-invoices-packing-slips' ); ?></h1>
|
155 |
<ol class="wpo-progress-bar">
|
156 |
<?php foreach ( $output_steps as $step_key => $step ) : ?>
|
157 |
+
<a href="<?php echo esc_attr( $this->get_step_link( $step_key ) ); ?>" ><li><div class="wpo-progress-marker <?php
|
158 |
if ( $step_key === $this->step ) {
|
159 |
echo 'active';
|
160 |
} elseif ( array_search( $this->step, array_keys( $this->steps ) ) > array_search( $step_key, array_keys( $this->steps ) ) ) {
|
161 |
echo 'completed';
|
162 |
}
|
163 |
+
?>"></div></li></a>
|
164 |
<?php endforeach; ?>
|
165 |
</ol>
|
166 |
<?php
|
180 |
*/
|
181 |
public function setup_wizard_footer() {
|
182 |
?>
|
183 |
+
<input type="hidden" name="wpo_wcpdf_step" value="<?php echo esc_attr( $this->step ); ?>">
|
184 |
<div class="wpo-setup-buttons">
|
185 |
+
<?php if ( $step = $this->get_step( -1 ) ): ?>
|
186 |
+
<a href="<?php echo esc_attr( $this->get_step_link( $step ) ); ?>" class="wpo-button-previous"><?php esc_html_e( 'Previous', 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
187 |
<?php endif ?>
|
188 |
<!-- <input type="submit" class="wpo-button-next" value="Next" /> -->
|
189 |
+
<?php if ( $step = $this->get_step( 1 ) ): ?>
|
190 |
<?php wp_nonce_field( 'wpo-wcpdf-setup' ); ?>
|
191 |
<input type="submit" class="wpo-button-next" value="<?php esc_attr_e( 'Next', 'woocommerce-pdf-invoices-packing-slips' ); ?>" name="save_step" />
|
192 |
+
<a href="<?php echo esc_attr( $this->get_step_link( $step ) ); ?>" class="wpo-skip-step"><?php esc_html_e( 'Skip this step', 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
193 |
<?php else: ?>
|
194 |
+
<a href="<?php echo esc_attr( $this->get_step_link($step) ); ?>" class="wpo-button-next"><?php esc_html_e( 'Finish', 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
195 |
<?php endif ?>
|
196 |
</div>
|
197 |
</div>
|
204 |
|
205 |
public function get_step_link( $step ) {
|
206 |
$step_keys = array_keys( $this->steps );
|
207 |
+
if ( end( $step_keys ) === $this->step && empty( $step ) ) {
|
208 |
return admin_url('admin.php?page=wpo_wcpdf_options_page');
|
209 |
}
|
210 |
return add_query_arg( 'step', $step );
|
215 |
$step_keys = array_keys( $this->steps );
|
216 |
$current_step_pos = array_search( $this->step, $step_keys );
|
217 |
$new_step_pos = $current_step_pos + $delta;
|
218 |
+
if ( isset( $step_keys[$new_step_pos] ) ) {
|
219 |
return $step_keys[$new_step_pos];
|
220 |
} else {
|
221 |
return false;
|
230 |
} else {
|
231 |
$user_id = get_current_user_id();
|
232 |
$hidden = get_user_meta( $user_id, 'manageedit-shop_ordercolumnshidden', true );
|
233 |
+
if ( ! empty( $_POST['wcpdf_settings'] ) && is_array( $_POST['wcpdf_settings'] ) ) {
|
234 |
check_admin_referer( 'wpo-wcpdf-setup' );
|
235 |
+
foreach ( $_POST['wcpdf_settings'] as $option => $settings ) {
|
236 |
// sanitize posted settings
|
237 |
+
foreach ( $settings as $key => $value ) {
|
238 |
+
if ( $key == 'shop_address' && function_exists( 'sanitize_textarea_field' ) ) {
|
239 |
$sanitize_function = 'sanitize_textarea_field';
|
240 |
} else {
|
241 |
$sanitize_function = 'sanitize_text_field';
|
242 |
}
|
243 |
|
244 |
+
if ( is_array( $value ) ) {
|
245 |
+
$settings[$key] = array_map( $sanitize_function, $value );
|
246 |
} else {
|
247 |
+
$settings[$key] = call_user_func( $sanitize_function, $value );
|
248 |
}
|
249 |
}
|
250 |
$current_settings = get_option( $option, array() );
|
251 |
$new_settings = $settings + $current_settings;
|
|
|
|
|
252 |
update_option( $option, $new_settings );
|
253 |
}
|
254 |
} elseif ( $_POST['wpo_wcpdf_step'] == 'show-action-buttons' ) {
|
255 |
+
if ( ! empty( $_POST['wc_show_action_buttons'] ) ) {
|
256 |
$hidden = array_filter( $hidden, function( $setting ){ return $setting !== 'wc_actions'; } );
|
257 |
update_user_meta( $user_id, 'manageedit-shop_ordercolumnshidden', $hidden );
|
258 |
} else {
|
259 |
+
array_push( $hidden, 'wc_actions' );
|
260 |
update_user_meta( $user_id, 'manageedit-shop_ordercolumnshidden', $hidden );
|
261 |
}
|
262 |
}
|
includes/documents/abstract-wcpdf-order-document.php
CHANGED
@@ -225,9 +225,9 @@ abstract class Order_Document {
|
|
225 |
// pass data to setter functions
|
226 |
$this->set_data( array(
|
227 |
// always load date before number, because date is used in number formatting
|
228 |
-
'date'
|
229 |
-
'number'
|
230 |
-
'notes'
|
231 |
), $order );
|
232 |
|
233 |
return;
|
@@ -334,6 +334,7 @@ abstract class Order_Document {
|
|
334 |
$parent_order = wc_get_order( $order->get_parent_id() );
|
335 |
} /*translators: 1. credit note title, 2. refund id */
|
336 |
$note = $refund_id ? sprintf( __( '%1$s (refund #%2$s) was regenerated.', 'woocommerce-pdf-invoices-packing-slips' ), ucfirst( $this->get_title() ), $refund_id ) : sprintf( __( '%s was regenerated', 'woocommerce-pdf-invoices-packing-slips' ), ucfirst( $this->get_title() ) );
|
|
|
337 |
$parent_order ? $parent_order->add_order_note( $note ) : $order->add_order_note( $note );
|
338 |
|
339 |
do_action( 'wpo_wcpdf_regenerate_document', $this );
|
@@ -605,13 +606,13 @@ abstract class Order_Document {
|
|
605 |
$attachment_width = $attachment[1];
|
606 |
$attachment_height = $attachment[2];
|
607 |
|
608 |
-
if ( apply_filters('wpo_wcpdf_use_path', true) && file_exists($attachment_path) ) {
|
609 |
$src = $attachment_path;
|
610 |
} else {
|
611 |
$src = $attachment_src;
|
612 |
}
|
613 |
|
614 |
-
$img_element = sprintf('<img src="%1$s" alt="%
|
615 |
|
616 |
echo apply_filters( 'wpo_wcpdf_header_logo_img_element', $img_element, $attachment, $this );
|
617 |
}
|
225 |
// pass data to setter functions
|
226 |
$this->set_data( array(
|
227 |
// always load date before number, because date is used in number formatting
|
228 |
+
'date' => WCX_Order::get_meta( $order, "_wcpdf_{$this->slug}_date", true ),
|
229 |
+
'number' => $number,
|
230 |
+
'notes' => WCX_Order::get_meta( $order, "_wcpdf_{$this->slug}_notes", true ),
|
231 |
), $order );
|
232 |
|
233 |
return;
|
334 |
$parent_order = wc_get_order( $order->get_parent_id() );
|
335 |
} /*translators: 1. credit note title, 2. refund id */
|
336 |
$note = $refund_id ? sprintf( __( '%1$s (refund #%2$s) was regenerated.', 'woocommerce-pdf-invoices-packing-slips' ), ucfirst( $this->get_title() ), $refund_id ) : sprintf( __( '%s was regenerated', 'woocommerce-pdf-invoices-packing-slips' ), ucfirst( $this->get_title() ) );
|
337 |
+
$note = wp_kses( $note, 'strip' );
|
338 |
$parent_order ? $parent_order->add_order_note( $note ) : $order->add_order_note( $note );
|
339 |
|
340 |
do_action( 'wpo_wcpdf_regenerate_document', $this );
|
606 |
$attachment_width = $attachment[1];
|
607 |
$attachment_height = $attachment[2];
|
608 |
|
609 |
+
if ( apply_filters( 'wpo_wcpdf_use_path', true ) && file_exists( $attachment_path ) ) {
|
610 |
$src = $attachment_path;
|
611 |
} else {
|
612 |
$src = $attachment_src;
|
613 |
}
|
614 |
|
615 |
+
$img_element = sprintf('<img src="%1$s" alt="%2$s" />', esc_attr( $src ), esc_attr( $company ) );
|
616 |
|
617 |
echo apply_filters( 'wpo_wcpdf_header_logo_img_element', $img_element, $attachment, $this );
|
618 |
}
|
includes/views/attachment-settings-hint.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<?php
|
3 |
$invoice_settings_url = add_query_arg( array(
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
?>
|
8 |
<style>
|
9 |
.wcpdf-attachment-settings-hint {
|
@@ -17,9 +17,8 @@ $invoice_settings_url = add_query_arg( array(
|
|
17 |
font-size: 120%;
|
18 |
}
|
19 |
</style>
|
20 |
-
<!-- <div id="message" class="updated woocommerce-message"> -->
|
21 |
<div class="wcpdf-attachment-settings-hint">
|
22 |
-
<?php /* translators: <a> tags */ ?>
|
23 |
-
<?php printf(__( 'It looks like you haven\'t setup any email attachments yet, check the settings under <b>%1$sDocuments > Invoice%2$s</b>', 'woocommerce-pdf-invoices-packing-slips' ), '<a href="'.$invoice_settings_url.'">', '</a>'); ?><br>
|
24 |
-
<?php printf('<a href="%s" style="font">%s</a>', add_query_arg( 'wpo_wcpdf_hide_attachments_hint', 'true' ),
|
25 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<?php
|
3 |
$invoice_settings_url = add_query_arg( array(
|
4 |
+
'tab' => 'documents',
|
5 |
+
'section' => 'invoice',
|
6 |
+
) );
|
7 |
?>
|
8 |
<style>
|
9 |
.wcpdf-attachment-settings-hint {
|
17 |
font-size: 120%;
|
18 |
}
|
19 |
</style>
|
|
|
20 |
<div class="wcpdf-attachment-settings-hint">
|
21 |
+
<?php /* translators: <a> tags */ ?>
|
22 |
+
<?php printf( wp_kses_post( __( 'It looks like you haven\'t setup any email attachments yet, check the settings under <b>%1$sDocuments > Invoice%2$s</b>', 'woocommerce-pdf-invoices-packing-slips' ) ), '<a href="'.$invoice_settings_url.'">', '</a>' ); ?><br>
|
23 |
+
<?php printf( '<a href="%s" style="font">%s</a>', add_query_arg( 'wpo_wcpdf_hide_attachments_hint', 'true' ), esc_html__( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ) ); ?>
|
24 |
</div>
|
includes/views/dompdf-status.php
CHANGED
@@ -95,25 +95,25 @@ if ( ( $gm = extension_loaded('gmagick') ) || ( $im = extension_loaded('imagick'
|
|
95 |
|
96 |
if( ! $server_configs['PHP version']['result'] ) {
|
97 |
/* translators: <a> tags */
|
98 |
-
$server_configs['PHP version']['required'] .= sprintf( __( '
|
99 |
}
|
100 |
|
101 |
?>
|
102 |
|
103 |
-
<h3 id="system"><?php
|
104 |
|
105 |
<table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
|
106 |
<tr>
|
107 |
<th align="left"> </th>
|
108 |
-
<th align="left"><?php
|
109 |
-
<th align="left"><?php
|
110 |
</tr>
|
111 |
|
112 |
-
<?php foreach( $server_configs as $label => $server_config ) {
|
113 |
if ( $server_config['result'] ) {
|
114 |
$background = '#9e4';
|
115 |
$color = 'black';
|
116 |
-
} elseif ( isset($server_config['fallback']) ) {
|
117 |
$background = '#FCC612';
|
118 |
$color = 'black';
|
119 |
} else {
|
@@ -122,18 +122,18 @@ if( ! $server_configs['PHP version']['result'] ) {
|
|
122 |
}
|
123 |
?>
|
124 |
<tr>
|
125 |
-
<td class="title"><?php echo $label; ?></td>
|
126 |
-
<td><?php echo ($server_config['required'] === true ? 'Yes' : $server_config['required']); ?></td>
|
127 |
<td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>">
|
128 |
<?php
|
129 |
-
echo $server_config['value'];
|
130 |
-
if ($server_config['result'] &&
|
131 |
-
if (
|
132 |
-
if (isset($server_config['fallback'])) {
|
133 |
-
|
134 |
}
|
135 |
-
if (isset($server_config['failure'])) {
|
136 |
-
|
137 |
}
|
138 |
}
|
139 |
?>
|
@@ -180,12 +180,12 @@ if( ! $server_configs['PHP version']['result'] ) {
|
|
180 |
$upload_base = trailingslashit( $upload_dir['basedir'] );
|
181 |
?>
|
182 |
<br />
|
183 |
-
<h3 id="system"><?php
|
184 |
<table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
|
185 |
<tr>
|
186 |
-
<th align="left"><?php
|
187 |
-
<th align="left"><?php
|
188 |
-
<th align="left"><?php
|
189 |
</tr>
|
190 |
<?php
|
191 |
foreach ( $permissions as $permission ) {
|
@@ -198,9 +198,9 @@ if( ! $server_configs['PHP version']['result'] ) {
|
|
198 |
}
|
199 |
?>
|
200 |
<tr>
|
201 |
-
<td><?php echo $permission['description']; ?></td>
|
202 |
-
<td><?php echo str_replace( array('/','\\' ), array('/<wbr>','\\<wbr>' ), $permission['value'] ); ?></td>
|
203 |
-
<td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>"><?php echo $permission['status_message']; ?></td>
|
204 |
</tr>
|
205 |
|
206 |
<?php } ?>
|
@@ -210,7 +210,7 @@ if( ! $server_configs['PHP version']['result'] ) {
|
|
210 |
<p>
|
211 |
<?php
|
212 |
/* translators: 1,2. directory paths, 3. UPLOADS, 4. wpo_wcpdf_tmp_path, 5. attachments, 6. dompdf, 7. fonts */
|
213 |
-
printf(
|
214 |
'<code>'.WPO_WCPDF()->main->get_tmp_path().'</code>',
|
215 |
'<code>'.$upload_base.'</code>',
|
216 |
'<code>UPLOADS</code>',
|
@@ -223,7 +223,7 @@ if( ! $server_configs['PHP version']['result'] ) {
|
|
223 |
</p>
|
224 |
<?php
|
225 |
/* translators: directory path */
|
226 |
-
printf(
|
227 |
'<code>'.WPO_WCPDF()->plugin_path() . "/vendor/dompdf/dompdf/lib/fonts/".'</code>'
|
228 |
);
|
229 |
?>
|
95 |
|
96 |
if( ! $server_configs['PHP version']['result'] ) {
|
97 |
/* translators: <a> tags */
|
98 |
+
$server_configs['PHP version']['required'] .= '<br/>' . sprintf( __( 'Download %1$sthis addon%2$s to enable backwards compatibility.', 'woocommerce-pdf-invoices-packing-slips' ), '<a href="https://docs.wpovernight.com/woocommerce-pdf-invoices-packing-slips/backwards-compatibility-with-php-5-6/" target="_blank">', '</a>' );
|
99 |
}
|
100 |
|
101 |
?>
|
102 |
|
103 |
+
<h3 id="system"><?php esc_html_e( 'System Configuration', 'woocommerce-pdf-invoices-packing-slips' ); ?></h3>
|
104 |
|
105 |
<table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
|
106 |
<tr>
|
107 |
<th align="left"> </th>
|
108 |
+
<th align="left"><?php esc_html_e( 'Required', 'woocommerce-pdf-invoices-packing-slips' ); ?></th>
|
109 |
+
<th align="left"><?php esc_html_e( 'Present', 'woocommerce-pdf-invoices-packing-slips' ); ?></th>
|
110 |
</tr>
|
111 |
|
112 |
+
<?php foreach ( $server_configs as $label => $server_config ) {
|
113 |
if ( $server_config['result'] ) {
|
114 |
$background = '#9e4';
|
115 |
$color = 'black';
|
116 |
+
} elseif ( isset( $server_config['fallback'] ) ) {
|
117 |
$background = '#FCC612';
|
118 |
$color = 'black';
|
119 |
} else {
|
122 |
}
|
123 |
?>
|
124 |
<tr>
|
125 |
+
<td class="title"><?php echo wp_kses_post( $label ); ?></td>
|
126 |
+
<td><?php echo wp_kses_post( $server_config['required'] === true ? esc_html__( 'Yes', 'woocommerce-pdf-invoices-packing-slips' ) : $server_config['required'] ); ?></td>
|
127 |
<td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>">
|
128 |
<?php
|
129 |
+
echo wp_kses_post( $server_config['value'] );
|
130 |
+
if ( $server_config['result'] && ! $server_config['value'] ) echo esc_html__( 'Yes', 'woocommerce-pdf-invoices-packing-slips' );
|
131 |
+
if ( ! $server_config['result'] ) {
|
132 |
+
if ( isset( $server_config['fallback'] ) ) {
|
133 |
+
printf( '<div>%s. %s</div>', esc_html__( 'No', 'woocommerce-pdf-invoices-packing-slips' ), esc_html( $server_config['fallback'] ) );
|
134 |
}
|
135 |
+
if ( isset( $server_config['failure'] ) ) {
|
136 |
+
printf( '<div>%s</div>', wp_kses_post( $server_config['failure'] ) );
|
137 |
}
|
138 |
}
|
139 |
?>
|
180 |
$upload_base = trailingslashit( $upload_dir['basedir'] );
|
181 |
?>
|
182 |
<br />
|
183 |
+
<h3 id="system"><?php esc_html_e( 'Write Permissions', 'woocommerce-pdf-invoices-packing-slips' ); ?></h3>
|
184 |
<table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
|
185 |
<tr>
|
186 |
+
<th align="left"><?php esc_html_e( 'Description', 'woocommerce-pdf-invoices-packing-slips' ); ?></th>
|
187 |
+
<th align="left"><?php esc_html_e( 'Value', 'woocommerce-pdf-invoices-packing-slips' ); ?></th>
|
188 |
+
<th align="left"><?php esc_html_e( 'Status', 'woocommerce-pdf-invoices-packing-slips' ); ?></th>
|
189 |
</tr>
|
190 |
<?php
|
191 |
foreach ( $permissions as $permission ) {
|
198 |
}
|
199 |
?>
|
200 |
<tr>
|
201 |
+
<td><?php echo wp_kses_post( $permission['description'] ); ?></td>
|
202 |
+
<td><?php echo str_replace( array('/','\\' ), array('/<wbr>','\\<wbr>' ), wp_kses_post( $permission['value'] ) ); ?></td>
|
203 |
+
<td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>"><?php echo wp_kses_post( $permission['status_message'] ); ?></td>
|
204 |
</tr>
|
205 |
|
206 |
<?php } ?>
|
210 |
<p>
|
211 |
<?php
|
212 |
/* translators: 1,2. directory paths, 3. UPLOADS, 4. wpo_wcpdf_tmp_path, 5. attachments, 6. dompdf, 7. fonts */
|
213 |
+
printf( esc_attr__( 'The central temp folder is %1$s. By default, this folder is created in the WordPress uploads folder (%2$s), which can be defined by setting %3$s in wp-config.php. Alternatively, you can control the specific folder for PDF invoices by using the %4$s filter. Make sure this folder is writable and that the subfolders %5$s, %6$s and %7$s are present (these will be created by the plugin if the central temp folder is writable).', 'woocommerce-pdf-invoices-packing-slips' ),
|
214 |
'<code>'.WPO_WCPDF()->main->get_tmp_path().'</code>',
|
215 |
'<code>'.$upload_base.'</code>',
|
216 |
'<code>UPLOADS</code>',
|
223 |
</p>
|
224 |
<?php
|
225 |
/* translators: directory path */
|
226 |
+
printf( esc_attr__('If the temporary folders were not automatically created by the plugin, verify that all the font files (from %s) are copied to the fonts folder. Normally, this is fully automated, but if your server has strict security settings, this automated copying may have been prohibited. In that case, you also need to make sure these folders get synchronized on plugin updates!', 'woocommerce-pdf-invoices-packing-slips' ),
|
227 |
'<code>'.WPO_WCPDF()->plugin_path() . "/vendor/dompdf/dompdf/lib/fonts/".'</code>'
|
228 |
);
|
229 |
?>
|
includes/views/setup-wizard/attach-to.php
CHANGED
@@ -1,31 +1,35 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
-
<h2><?php
|
4 |
-
<p><?php
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<table>
|
8 |
<?php
|
9 |
$current_settings = get_option( 'wpo_wcpdf_documents_settings_invoice', array() );
|
10 |
-
// echo "<pre>".var_dump($current_settings)."</pre>";
|
11 |
// load invoice to reuse method to get wc emails
|
12 |
$invoice = wcpdf_get_invoice( null );
|
13 |
$wc_emails = $invoice->get_wc_emails();
|
14 |
-
foreach ($wc_emails as $email_id => $name) {
|
15 |
-
if (!empty($current_settings['attach_to_email_ids'][$email_id])) {
|
16 |
$checked = 'checked';
|
17 |
} else {
|
18 |
$checked = '';
|
19 |
}
|
20 |
-
printf(
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
</
|
28 |
-
</
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
}
|
31 |
?>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
+
<h2><?php esc_html_e( 'Attach to...', 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
4 |
+
<p><?php esc_html_e( 'Select to which emails you would like to attach your invoice.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<table>
|
8 |
<?php
|
9 |
$current_settings = get_option( 'wpo_wcpdf_documents_settings_invoice', array() );
|
|
|
10 |
// load invoice to reuse method to get wc emails
|
11 |
$invoice = wcpdf_get_invoice( null );
|
12 |
$wc_emails = $invoice->get_wc_emails();
|
13 |
+
foreach ( $wc_emails as $email_id => $name ) {
|
14 |
+
if ( ! empty( $current_settings['attach_to_email_ids'][$email_id] ) ) {
|
15 |
$checked = 'checked';
|
16 |
} else {
|
17 |
$checked = '';
|
18 |
}
|
19 |
+
printf(
|
20 |
+
'<tr>
|
21 |
+
<th>
|
22 |
+
<input type="hidden" value="" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][attach_to_email_ids][%1$s]">
|
23 |
+
<input type="checkbox" %3$s name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][attach_to_email_ids][%1$s]" value="1">
|
24 |
+
</th>
|
25 |
+
<td>
|
26 |
+
<span class="checkbox">%2$s</span><br>
|
27 |
+
</td>
|
28 |
+
</tr>',
|
29 |
+
esc_attr( $email_id ),
|
30 |
+
esc_html( $name ),
|
31 |
+
esc_attr( $checked )
|
32 |
+
);
|
33 |
|
34 |
}
|
35 |
?>
|
includes/views/setup-wizard/display-options.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
-
<h2><?php
|
4 |
-
<p><?php
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<table>
|
@@ -11,46 +11,46 @@
|
|
11 |
<tr>
|
12 |
<th>
|
13 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_shipping_address]" value="">
|
14 |
-
<input type="checkbox" <?php echo !empty($current_settings['display_shipping_address']) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_shipping_address]" value="1">
|
15 |
</th>
|
16 |
<td>
|
17 |
-
<span class="checkbox"><?php
|
18 |
</td>
|
19 |
</tr>
|
20 |
<tr>
|
21 |
<th>
|
22 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_email]" value="">
|
23 |
-
<input type="checkbox" <?php echo !empty($current_settings['display_email']) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_email]" value="1">
|
24 |
</th>
|
25 |
<td>
|
26 |
-
<span class="checkbox"><?php
|
27 |
</td>
|
28 |
</tr>
|
29 |
<tr>
|
30 |
<th>
|
31 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_phone]" value="">
|
32 |
-
<input type="checkbox" <?php echo !empty($current_settings['display_phone']) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_phone]" value="1">
|
33 |
</th>
|
34 |
<td>
|
35 |
-
<span class="checkbox"><?php
|
36 |
</td>
|
37 |
</tr>
|
38 |
<tr>
|
39 |
<th>
|
40 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_date]" value="">
|
41 |
-
<input type="checkbox" <?php echo !empty($current_settings['display_date']) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_date]" value="invoice_date">
|
42 |
</th>
|
43 |
<td>
|
44 |
-
<span class="checkbox"><?php
|
45 |
</td>
|
46 |
<tr>
|
47 |
</tr>
|
48 |
<th>
|
49 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_number]" value="">
|
50 |
-
<input type="checkbox" <?php echo !empty($current_settings['display_number']) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_number]" value="invoice_number">
|
51 |
</th>
|
52 |
<td>
|
53 |
-
<span class="checkbox"><?php
|
54 |
</td>
|
55 |
</tr>
|
56 |
</table>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
+
<h2><?php esc_html_e( 'Display options', 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
4 |
+
<p><?php esc_html_e( 'Select some additional display options for your invoice.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<table>
|
11 |
<tr>
|
12 |
<th>
|
13 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_shipping_address]" value="">
|
14 |
+
<input type="checkbox" <?php echo ! empty( $current_settings['display_shipping_address'] ) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_shipping_address]" value="1">
|
15 |
</th>
|
16 |
<td>
|
17 |
+
<span class="checkbox"><?php esc_html_e( 'Display shipping address', 'woocommerce-pdf-invoices-packing-slips' ); ?></span><br>
|
18 |
</td>
|
19 |
</tr>
|
20 |
<tr>
|
21 |
<th>
|
22 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_email]" value="">
|
23 |
+
<input type="checkbox" <?php echo ! empty( $current_settings['display_email'] ) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_email]" value="1">
|
24 |
</th>
|
25 |
<td>
|
26 |
+
<span class="checkbox"><?php esc_html_e( 'Display email address', 'woocommerce-pdf-invoices-packing-slips' ); ?></span><br>
|
27 |
</td>
|
28 |
</tr>
|
29 |
<tr>
|
30 |
<th>
|
31 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_phone]" value="">
|
32 |
+
<input type="checkbox" <?php echo ! empty( $current_settings['display_phone'] ) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_phone]" value="1">
|
33 |
</th>
|
34 |
<td>
|
35 |
+
<span class="checkbox"><?php esc_html_e( 'Display phone number', 'woocommerce-pdf-invoices-packing-slips' ); ?></span><br>
|
36 |
</td>
|
37 |
</tr>
|
38 |
<tr>
|
39 |
<th>
|
40 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_date]" value="">
|
41 |
+
<input type="checkbox" <?php echo ! empty( $current_settings['display_date'] ) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_date]" value="invoice_date">
|
42 |
</th>
|
43 |
<td>
|
44 |
+
<span class="checkbox"><?php esc_html_e( 'Display invoice date', 'woocommerce-pdf-invoices-packing-slips' ); ?></span><br>
|
45 |
</td>
|
46 |
<tr>
|
47 |
</tr>
|
48 |
<th>
|
49 |
<input type="hidden" name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_number]" value="">
|
50 |
+
<input type="checkbox" <?php echo ! empty( $current_settings['display_number'] ) ? 'checked' : ''; ?> name="wcpdf_settings[wpo_wcpdf_documents_settings_invoice][display_number]" value="invoice_number">
|
51 |
</th>
|
52 |
<td>
|
53 |
+
<span class="checkbox"><?php esc_html_e( 'Display invoice number', 'woocommerce-pdf-invoices-packing-slips' ); ?></span><br>
|
54 |
</td>
|
55 |
</tr>
|
56 |
</table>
|
includes/views/setup-wizard/good-to-go.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description wpo-final">
|
3 |
-
<h1><?php
|
4 |
-
<p><?php
|
5 |
-
<a href="https://docs.wpovernight.com/topic/woocommerce-pdf-invoices-packing-slips/" target="_blank"><?php
|
6 |
-
<h2><?php
|
7 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description wpo-final">
|
3 |
+
<h1><?php esc_html_e( 'You are good to go!' , 'woocommerce-pdf-invoices-packing-slips' ); ?></h1>
|
4 |
+
<p><?php esc_html_e( 'If you have any questions please have a look at our documentation:', 'woocommerce-pdf-invoices-packing-slips' ); ?><br>
|
5 |
+
<a href="https://docs.wpovernight.com/topic/woocommerce-pdf-invoices-packing-slips/" target="_blank"><?php esc_html_e( 'Invoices & Packing Slips' , 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
6 |
+
<h2><?php esc_html_e( 'Happy selling!' , 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
7 |
</div>
|
includes/views/setup-wizard/logo.php
CHANGED
@@ -1,21 +1,18 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
-
<h2><?php
|
4 |
-
<p><?php
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
|
|
7 |
<?php
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
}
|
17 |
?>
|
18 |
-
<img src="<?php echo $logo_src; ?>" width="100%" height="20px" alt="" id="img-header_logo"/>
|
19 |
-
<input id="header_logo" name="wcpdf_settings[wpo_wcpdf_settings_general][header_logo]" type="hidden" value="<?php echo $logo_id; ?>" />
|
20 |
-
<span class="button wpo_upload_image_button header_logo" data-uploader_title="<?php _e( 'Select or upload your invoice header/logo', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-uploader_button_text="<?php _e( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-remove_button_text="<?php _e( 'Remove image', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-input_id="header_logo"><?php _e( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ); ?></span>
|
21 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
+
<h2><?php esc_html_e( 'Your logo' , 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
4 |
+
<p><?php esc_html_e( 'Set the header image that will display on your invoice.' , 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
+
<script><?php echo "var wpo_wcpdf_admin = " . wp_json_encode( array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ) . ';'; ?></script>
|
8 |
<?php
|
9 |
+
WPO_WCPDF()->settings->callbacks->media_upload( array(
|
10 |
+
'option_name' => 'wpo_wcpdf_settings_general',
|
11 |
+
'setting_name' => 'wcpdf_settings[wpo_wcpdf_settings_general][header_logo]',
|
12 |
+
'id' => 'header_logo',
|
13 |
+
'uploader_title' => __( 'Select or upload your invoice header/logo', 'woocommerce-pdf-invoices-packing-slips' ),
|
14 |
+
'uploader_button_text' => __( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ),
|
15 |
+
'remove_button_text' => __( 'Remove image', 'woocommerce-pdf-invoices-packing-slips' ),
|
16 |
+
) );
|
|
|
17 |
?>
|
|
|
|
|
|
|
18 |
</div>
|
includes/views/setup-wizard/paper-format.php
CHANGED
@@ -1,15 +1,16 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
-
<h2><?php
|
4 |
-
<p><?php
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<?php
|
8 |
-
$current_settings = get_option( 'wpo_wcpdf_settings_general', array() )
|
|
|
|
|
9 |
?>
|
10 |
-
|
11 |
<select name="wcpdf_settings[wpo_wcpdf_settings_general][paper_size]">
|
12 |
-
<option <?php echo $current_settings['paper_size'] == 'a4' ? 'selected' : ''; ?> value="a4"><?php
|
13 |
-
<option <?php echo $current_settings['paper_size'] == 'letter' ? 'selected' : ''; ?> value="letter"><?php
|
14 |
</select>
|
15 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
+
<h2><?php esc_html_e( 'Paper format', 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
4 |
+
<p><?php esc_html_e( 'Select the paper format for your invoice.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<?php
|
8 |
+
$current_settings = wp_parse_args( get_option( 'wpo_wcpdf_settings_general', array() ), array(
|
9 |
+
'paper_size' => 'a4',
|
10 |
+
) );
|
11 |
?>
|
|
|
12 |
<select name="wcpdf_settings[wpo_wcpdf_settings_general][paper_size]">
|
13 |
+
<option <?php echo $current_settings['paper_size'] == 'a4' ? 'selected' : ''; ?> value="a4"><?php esc_html_e( 'A4', 'woocommerce-pdf-invoices-packing-slips' ); ?></option>
|
14 |
+
<option <?php echo $current_settings['paper_size'] == 'letter' ? 'selected' : ''; ?> value="letter"><?php esc_html_e( 'Letter', 'woocommerce-pdf-invoices-packing-slips' ); ?></option>
|
15 |
</select>
|
16 |
</div>
|
includes/views/setup-wizard/shop-name.php
CHANGED
@@ -1,12 +1,15 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
-
<h2><?php
|
4 |
-
<p><?php
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<?php
|
8 |
-
$current_settings = get_option( 'wpo_wcpdf_settings_general', array() )
|
|
|
|
|
|
|
9 |
?>
|
10 |
-
<input type="text" class="shop-name" placeholder="Shop name" name="wcpdf_settings[wpo_wcpdf_settings_general][shop_name][default]" value="<?php echo
|
11 |
-
<textarea class="shop-address" placeholder="Shop address" name="wcpdf_settings[wpo_wcpdf_settings_general][shop_address][default]"><?php echo
|
12 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
+
<h2><?php esc_html_e( 'Enter your shop name', 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
4 |
+
<p><?php esc_html_e( 'Lets quickly setup your invoice. Please enter the name and address of your shop in the fields on the right.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
5 |
</div>
|
6 |
<div class="wpo-setup-input">
|
7 |
<?php
|
8 |
+
$current_settings = wp_parse_args( get_option( 'wpo_wcpdf_settings_general', array() ), array(
|
9 |
+
'shop_name' => array( 'default' => get_bloginfo( 'name' ) ),
|
10 |
+
'shop_address' => array( 'default' => '' ),
|
11 |
+
) );
|
12 |
?>
|
13 |
+
<input type="text" class="shop-name" placeholder="<?php esc_attr_e( 'Shop name', 'woocommerce-pdf-invoices-packing-slips' ); ?>" name="wcpdf_settings[wpo_wcpdf_settings_general][shop_name][default]" value="<?php echo esc_attr( array_pop( $current_settings['shop_name'] ) ); ?>">
|
14 |
+
<textarea class="shop-address" placeholder="<?php esc_attr_e( 'Shop address', 'woocommerce-pdf-invoices-packing-slips' ); ?>" name="wcpdf_settings[wpo_wcpdf_settings_general][shop_address][default]"><?php echo esc_html( array_pop( $current_settings['shop_address'] ) ); ?></textarea>
|
15 |
</div>
|
includes/views/setup-wizard/show-action-buttons.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
-
<h2><?php
|
4 |
-
<p><?php
|
5 |
-
<p><small><?php
|
6 |
</div>
|
7 |
<div class="wpo-setup-input">
|
8 |
<?php
|
@@ -15,5 +15,5 @@
|
|
15 |
if ( in_array( 'wc_actions', $hidden ) )
|
16 |
$actions = false
|
17 |
?>
|
18 |
-
<input type="checkbox" <?php echo $actions !== false ? 'checked' : ''; ?> name="wc_show_action_buttons" value="1"><span class="checkbox"><?php
|
19 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
<div class="wpo-step-description">
|
3 |
+
<h2><?php esc_html_e( 'Action buttons', 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
4 |
+
<p><?php esc_html_e( 'Would you like to display the action buttons in your WooCommerce order list? The action buttons allow you to manually create a PDF.', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
|
5 |
+
<p><small><?php esc_html_e( '(You can always change this setting later via the Screen Options menu)', 'woocommerce-pdf-invoices-packing-slips' ); ?></small></p>
|
6 |
</div>
|
7 |
<div class="wpo-setup-input">
|
8 |
<?php
|
15 |
if ( in_array( 'wc_actions', $hidden ) )
|
16 |
$actions = false
|
17 |
?>
|
18 |
+
<input type="checkbox" <?php echo $actions !== false ? 'checked' : ''; ?> name="wc_show_action_buttons" value="1"><span class="checkbox"><?php esc_html_e( 'Show action buttons', 'woocommerce-pdf-invoices-packing-slips' ); ?></span><br>
|
19 |
</div>
|
includes/views/wcpdf-extensions.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
|
|
2 |
<script type="text/javascript">
|
3 |
jQuery(document).ready(function() {
|
4 |
jQuery('.extensions .more').hide();
|
@@ -11,93 +12,93 @@ jQuery(document).ready(function() {
|
|
11 |
</script>
|
12 |
|
13 |
<div class="wcpdf-extensions-ad">
|
14 |
-
<?php $no_pro = !class_exists('WooCommerce_PDF_IPS_Pro') && !class_exists('WPO_WCPDF_Templates'); ?>
|
15 |
-
<img src="<?php echo WPO_WCPDF()->plugin_url() . '/assets/images/wpo-helper.png'; ?>" class="wpo-helper">
|
16 |
-
<h3><?php
|
17 |
-
<i>(<?php
|
18 |
<ul class="extensions">
|
19 |
<?php if ( $no_pro ): ?>
|
20 |
<!-- No Pro extensions: Ad for PDF bundle -->
|
21 |
<li>
|
22 |
-
<?php
|
23 |
<div class="more" style="display:none;">
|
24 |
-
<h4><?php
|
25 |
-
<?php
|
26 |
<ul>
|
27 |
-
<li><?php
|
28 |
-
<li><?php
|
29 |
-
<li><?php
|
30 |
-
<li><?php
|
31 |
-
<li><?php
|
32 |
-
<li><?php
|
33 |
</ul>
|
34 |
-
<?php
|
35 |
<ul>
|
36 |
-
<li><?php
|
37 |
-
<li><?php
|
38 |
</ul>
|
39 |
-
<?php
|
40 |
<ul>
|
41 |
-
<li><?php
|
42 |
</ul>
|
43 |
<br>
|
44 |
-
<a href="https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-bundle/" target="_blank"><?php
|
45 |
</div>
|
46 |
</li>
|
47 |
<?php endif; ?>
|
48 |
<?php
|
49 |
// NO BUNDLE: separate ads
|
50 |
-
if (!class_exists('WooCommerce_PDF_IPS_Pro') &&
|
51 |
?>
|
52 |
<li>
|
53 |
-
<?php
|
54 |
<div class="more" style="display:none;">
|
55 |
-
<?php
|
56 |
<ul>
|
57 |
-
<li><?php
|
58 |
-
<li><?php
|
59 |
-
<li><?php
|
60 |
-
<li><?php
|
61 |
-
<li><?php
|
62 |
-
<li><?php
|
63 |
-
<li><?php
|
64 |
</ul>
|
65 |
-
<a href="https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-professional/" target="_blank"><?php
|
66 |
</li>
|
67 |
<?php } ?>
|
68 |
|
69 |
<?php
|
70 |
-
if (!class_exists('WPO_WC_Smart_Reminder_Emails')) {
|
71 |
?>
|
72 |
<li>
|
73 |
-
<?php
|
74 |
<div class="more" style="display:none;">
|
75 |
-
<?php
|
76 |
<ul>
|
77 |
-
<li><?php
|
78 |
-
<li><?php
|
79 |
-
<li><?php
|
80 |
-
<li><?php
|
81 |
-
<li><?php
|
82 |
-
<li><b><?php
|
83 |
</ul>
|
84 |
-
<a href="https://wpovernight.com/downloads/woocommerce-reminder-emails-payment-reminders/" target="_blank"><?php
|
85 |
</div>
|
86 |
</li>
|
87 |
<?php } ?>
|
88 |
|
89 |
<?php
|
90 |
-
if (!class_exists('WooCommerce_Ext_PrintOrders')) {
|
91 |
?>
|
92 |
<li>
|
93 |
-
<?php
|
94 |
<div class="more" style="display:none;">
|
95 |
<table>
|
96 |
<tr>
|
97 |
-
<td><img src="<?php echo WPO_WCPDF()->plugin_url() . '/assets/images/cloud-print.png'; ?>" class="cloud-logo"></td>
|
98 |
<td>
|
99 |
-
<?php
|
100 |
-
<a href="https://www.simbahosting.co.uk/s3/product/woocommerce-printnode-automatic-order-printing/?affiliates=2" target="_blank"><?php
|
101 |
</td>
|
102 |
</tr>
|
103 |
</table>
|
@@ -106,20 +107,20 @@ jQuery(document).ready(function() {
|
|
106 |
<?php } ?>
|
107 |
|
108 |
<?php
|
109 |
-
if (!class_exists('WooCommerce_PDF_IPS_Templates') && !class_exists('WPO_WCPDF_Templates') &&
|
110 |
$template_link = '<a href="https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/" target="_blank">wpovernight.com</a>';
|
111 |
$email_link = '<a href="mailto:support@wpovernight.com">support@wpovernight.com</a>'
|
112 |
?>
|
113 |
<li>
|
114 |
-
<?php
|
115 |
<div class="more" style="display:none;">
|
116 |
<ul>
|
117 |
-
<li><?php
|
118 |
-
<li><?php
|
119 |
<?php /* translators: Premium Templates link */?>
|
120 |
-
<li><?php printf(
|
121 |
<?php /* translators: email link */?>
|
122 |
-
<li><?php printf(
|
123 |
</ul>
|
124 |
</div>
|
125 |
</li>
|
@@ -127,8 +128,8 @@ jQuery(document).ready(function() {
|
|
127 |
</ul>
|
128 |
<?php
|
129 |
// link to hide message when one of the premium extensions is installed
|
130 |
-
if ( class_exists('WooCommerce_PDF_IPS_Pro') || class_exists('WPO_WCPDF_Templates') || class_exists('WooCommerce_PDF_IPS_Templates') || class_exists('WooCommerce_Ext_PrintOrders') || class_exists('WPO_WC_Smart_Reminder_Emails') ) {
|
131 |
-
printf('<a href="%s" style="display:inline-block; margin-top: 10px;">%s</a>', add_query_arg( 'wpo_wcpdf_hide_extensions_ad', 'true' ),
|
132 |
}
|
133 |
?>
|
134 |
</div>
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
+
|
3 |
<script type="text/javascript">
|
4 |
jQuery(document).ready(function() {
|
5 |
jQuery('.extensions .more').hide();
|
12 |
</script>
|
13 |
|
14 |
<div class="wcpdf-extensions-ad">
|
15 |
+
<?php $no_pro = ! class_exists( 'WooCommerce_PDF_IPS_Pro' ) && ! class_exists( 'WPO_WCPDF_Templates' ); ?>
|
16 |
+
<img src="<?php echo esc_url( WPO_WCPDF()->plugin_url() . '/assets/images/wpo-helper.png' ); ?>" class="wpo-helper">
|
17 |
+
<h3><?php esc_html_e( 'Check out these premium extensions!', 'woocommerce-pdf-invoices-packing-slips' ); ?></h3>
|
18 |
+
<i>(<?php esc_html_e( 'click items to read more', 'woocommerce-pdf-invoices-packing-slips' ); ?>)</i>
|
19 |
<ul class="extensions">
|
20 |
<?php if ( $no_pro ): ?>
|
21 |
<!-- No Pro extensions: Ad for PDF bundle -->
|
22 |
<li>
|
23 |
+
<?php esc_html_e( 'Premium PDF Invoice bundle: Everything you need for a perfect invoicing system', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
24 |
<div class="more" style="display:none;">
|
25 |
+
<h4><?php esc_html_e( 'Supercharge WooCommerce PDF Invoices & Packing Slips with the all our premium extensions:', 'woocommerce-pdf-invoices-packing-slips' ); ?></h4>
|
26 |
+
<?php esc_html_e( 'Professional features:', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
27 |
<ul>
|
28 |
+
<li><?php echo wp_kses_post( __( 'Email/print/download <b>PDF Credit Notes & Proforma invoices</b>', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
29 |
+
<li><?php echo wp_kses_post( __( 'Send out a separate <b>notification email</b> with (or without) PDF invoices/packing slips, for example to a drop-shipper or a supplier.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
30 |
+
<li><?php echo wp_kses_post( __( 'Attach <b>up to 3 static files</b> (for example a terms & conditions document) to the WooCommerce emails of your choice.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
31 |
+
<li><?php echo wp_kses_post( __( 'Use <b>separate numbering systems</b> and/or format for proforma invoices and credit notes or utilize the main invoice numbering system', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
32 |
+
<li><?php echo wp_kses_post( __( '<b>Customize</b> the <b>shipping & billing address</b> format to include additional custom fields, font sizes etc. without the need to create a custom template.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
33 |
+
<li><?php echo wp_kses_post( __( 'Use the plugin in multilingual <b>WPML</b> setups', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
34 |
</ul>
|
35 |
+
<?php esc_html_e( 'Advanced, customizable templates', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
36 |
<ul>
|
37 |
+
<li><?php echo wp_kses_post( __( 'Completely customize the invoice contents (prices, taxes, thumbnails) to your needs with a drag & drop customizer', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
38 |
+
<li><?php echo wp_kses_post( __( 'Two extra stylish premade templates (Modern & Business)', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
39 |
</ul>
|
40 |
+
<?php esc_html_e( 'Upload automatically to dropbox', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
41 |
<ul>
|
42 |
+
<li><?php echo wp_kses_post( __( 'This extension conveniently uploads all the invoices (and other pdf documents from the professional extension) that are emailed to your customers to Dropbox. The best way to keep your invoice administration up to date!', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
43 |
</ul>
|
44 |
<br>
|
45 |
+
<a href="https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-bundle/" target="_blank"><?php esc_html_e( "Get WooCommerce PDF Invoices & Packing Slips Bundle", 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
46 |
</div>
|
47 |
</li>
|
48 |
<?php endif; ?>
|
49 |
<?php
|
50 |
// NO BUNDLE: separate ads
|
51 |
+
if ( ! class_exists( 'WooCommerce_PDF_IPS_Pro' ) && ! $no_pro ) {
|
52 |
?>
|
53 |
<li>
|
54 |
+
<?php esc_html_e( 'Go Pro: Proforma invoices, credit notes (=refunds) & more!', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
55 |
<div class="more" style="display:none;">
|
56 |
+
<?php esc_html_e( 'Supercharge WooCommerce PDF Invoices & Packing Slips with the following features:', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
57 |
<ul>
|
58 |
+
<li><?php echo wp_kses_post( __( 'Email/print/download <b>PDF Credit Notes & Proforma invoices</b>', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
59 |
+
<li><?php echo wp_kses_post( __( 'Send out a separate <b>notification email</b> with (or without) PDF invoices/packing slips, for example to a drop-shipper or a supplier.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
60 |
+
<li><?php echo wp_kses_post( __( 'Attach <b>up to 3 static files</b> (for example a terms & conditions document) to the WooCommerce emails of your choice.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
61 |
+
<li><?php echo wp_kses_post( __( 'Use <b>separate numbering systems</b> and/or format for proforma invoices and credit notes or utilize the main invoice numbering system', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
62 |
+
<li><?php echo wp_kses_post( __( '<b>Customize</b> the <b>shipping & billing address</b> format to include additional custom fields, font sizes etc. without the need to create a custom template.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
63 |
+
<li><?php echo wp_kses_post( __( 'Use the plugin in multilingual <b>WPML</b> setups', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
64 |
+
<li><?php echo wp_kses_post( __( 'Upload automatically to dropbox', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
65 |
</ul>
|
66 |
+
<a href="https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-professional/" target="_blank"><?php esc_html_e( "Get WooCommerce PDF Invoices & Packing Slips Professional!", 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
67 |
</li>
|
68 |
<?php } ?>
|
69 |
|
70 |
<?php
|
71 |
+
if ( ! class_exists( 'WPO_WC_Smart_Reminder_Emails' ) ) {
|
72 |
?>
|
73 |
<li>
|
74 |
+
<?php esc_html_e( 'Automatically send payment reminders to your customers', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
75 |
<div class="more" style="display:none;">
|
76 |
+
<?php esc_html_e( 'WooCommerce Smart Reminder emails', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
77 |
<ul>
|
78 |
+
<li><?php echo wp_kses_post( __( '<b>Completely automatic</b> scheduled emails', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
79 |
+
<li><?php echo wp_kses_post( __( '<b>Rich text editor</b> for the email text, including placeholders for data from the order (name, order total, etc)', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
80 |
+
<li><?php echo wp_kses_post( __( 'Configure the exact requirements for sending an email (time after order, order status, payment method)', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
81 |
+
<li><?php echo wp_kses_post( __( 'Fully <b>WPML Compatible</b> – emails will be automatically sent in the order language.', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
82 |
+
<li><?php echo wp_kses_post( __( '<b>Super versatile!</b> Can be used for any kind of reminder email (review reminders, repeat purchases)', 'woocommerce-pdf-invoices-packing-slips' ) ); ?></li>
|
83 |
+
<li><b><?php esc_html_e( 'Integrates seamlessly with the PDF Invoices & Packing Slips plugin', 'woocommerce-pdf-invoices-packing-slips' ); ?></b></li>
|
84 |
</ul>
|
85 |
+
<a href="https://wpovernight.com/downloads/woocommerce-reminder-emails-payment-reminders/" target="_blank"><?php esc_html_e( "Get WooCommerce Smart Reminder Emails", 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
86 |
</div>
|
87 |
</li>
|
88 |
<?php } ?>
|
89 |
|
90 |
<?php
|
91 |
+
if ( ! class_exists( 'WooCommerce_Ext_PrintOrders' ) ) {
|
92 |
?>
|
93 |
<li>
|
94 |
+
<?php esc_html_e( 'Automatically send new orders or packing slips to your printer, as soon as the customer orders!', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
95 |
<div class="more" style="display:none;">
|
96 |
<table>
|
97 |
<tr>
|
98 |
+
<td><img src="<?php echo esc_url( WPO_WCPDF()->plugin_url() . '/assets/images/cloud-print.png' ); ?>" class="cloud-logo"></td>
|
99 |
<td>
|
100 |
+
<?php esc_html_e( 'Check out the WooCommerce Automatic Order Printing extension from our partners at Simba Hosting', 'woocommerce-pdf-invoices-packing-slips' ); ?><br/>
|
101 |
+
<a href="https://www.simbahosting.co.uk/s3/product/woocommerce-printnode-automatic-order-printing/?affiliates=2" target="_blank"><?php esc_html_e( "WooCommerce Automatic Order Printing", 'woocommerce-pdf-invoices-packing-slips' ); ?></a>
|
102 |
</td>
|
103 |
</tr>
|
104 |
</table>
|
107 |
<?php } ?>
|
108 |
|
109 |
<?php
|
110 |
+
if ( ! class_exists( 'WooCommerce_PDF_IPS_Templates' ) && ! class_exists( 'WPO_WCPDF_Templates' ) && ! $no_pro ) {
|
111 |
$template_link = '<a href="https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/" target="_blank">wpovernight.com</a>';
|
112 |
$email_link = '<a href="mailto:support@wpovernight.com">support@wpovernight.com</a>'
|
113 |
?>
|
114 |
<li>
|
115 |
+
<?php esc_html_e( 'Advanced, customizable templates', 'woocommerce-pdf-invoices-packing-slips' ); ?>
|
116 |
<div class="more" style="display:none;">
|
117 |
<ul>
|
118 |
+
<li><?php esc_html_e( 'Completely customize the invoice contents (prices, taxes, thumbnails) to your needs with a drag & drop customizer', 'woocommerce-pdf-invoices-packing-slips' ); ?></li>
|
119 |
+
<li><?php esc_html_e( 'Two extra stylish premade templates (Modern & Business)', 'woocommerce-pdf-invoices-packing-slips' ); ?></li>
|
120 |
<?php /* translators: Premium Templates link */?>
|
121 |
+
<li><?php printf( esc_html__( "Check out the Premium PDF Invoice & Packing Slips templates at %s.", 'woocommerce-pdf-invoices-packing-slips' ), $template_link ); ?></li>
|
122 |
<?php /* translators: email link */?>
|
123 |
+
<li><?php printf( esc_html__( "For custom templates, contact us at %s.", 'woocommerce-pdf-invoices-packing-slips' ), $email_link ); ?></li>
|
124 |
</ul>
|
125 |
</div>
|
126 |
</li>
|
128 |
</ul>
|
129 |
<?php
|
130 |
// link to hide message when one of the premium extensions is installed
|
131 |
+
if ( class_exists( 'WooCommerce_PDF_IPS_Pro' ) || class_exists( 'WPO_WCPDF_Templates' ) || class_exists( 'WooCommerce_PDF_IPS_Templates' ) || class_exists( 'WooCommerce_Ext_PrintOrders' ) || class_exists( 'WPO_WC_Smart_Reminder_Emails' ) ) {
|
132 |
+
printf('<a href="%s" style="display:inline-block; margin-top: 10px;">%s</a>', esc_url( add_query_arg( 'wpo_wcpdf_hide_extensions_ad', 'true' ) ), esc_html__( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ) );
|
133 |
}
|
134 |
?>
|
135 |
</div>
|
includes/views/wcpdf-settings-page.php
CHANGED
@@ -1,17 +1,26 @@
|
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
<script type="text/javascript">
|
3 |
jQuery( function( $ ) {
|
4 |
-
$("#footer-thankyou").html(
|
5 |
});
|
6 |
</script>
|
7 |
<div class="wrap">
|
8 |
<div class="icon32" id="icon-options-general"><br /></div>
|
9 |
-
<h2><?php
|
10 |
<h2 class="nav-tab-wrapper">
|
11 |
<?php
|
12 |
-
foreach ($settings_tabs as $tab_slug => $tab_title ) {
|
13 |
$tab_link = esc_url("?page=wpo_wcpdf_options_page&tab={$tab_slug}");
|
14 |
-
printf('<a href="%1$s" class="nav-tab nav-tab-%2$s %3$s">%4$s</a>', $tab_link, $tab_slug, (($active_tab == $tab_slug) ? 'nav-tab-active' : ''), $tab_title);
|
15 |
}
|
16 |
?>
|
17 |
</h2>
|
@@ -27,12 +36,12 @@
|
|
27 |
$hide_ad = get_option( 'wpo_wcpdf_hide_extensions_ad' );
|
28 |
}
|
29 |
|
30 |
-
if (
|
31 |
include('wcpdf-extensions.php');
|
32 |
}
|
33 |
|
34 |
?>
|
35 |
-
<form method="post" action="options.php" id="wpo-wcpdf-settings" class="<?php echo "{$active_tab} {$active_section}"; ?>">
|
36 |
<?php
|
37 |
do_action( 'wpo_wcpdf_before_settings', $active_tab, $active_section );
|
38 |
if ( has_action( 'wpo_wcpdf_settings_output_'.$active_tab ) ) {
|
1 |
<?php defined( 'ABSPATH' ) or exit; ?>
|
2 |
+
<?php
|
3 |
+
$review_url = 'https://wordpress.org/support/plugin/woocommerce-pdf-invoices-packing-slips/reviews/#new-post';
|
4 |
+
$review_link = sprintf( '<a href="%s">★★★★★</a>', $review_url );
|
5 |
+
$review_invitation = sprintf(
|
6 |
+
/* translators: ★★★★★ (5-star) */
|
7 |
+
__( 'If you like <strong>WooCommerce PDF Invoices & Packing Slips</strong> please leave us a %s rating. A huge thank you in advance!', 'woocommerce-pdf-invoices-packing-slips' ),
|
8 |
+
$review_link
|
9 |
+
);
|
10 |
+
?>
|
11 |
<script type="text/javascript">
|
12 |
jQuery( function( $ ) {
|
13 |
+
$("#footer-thankyou").html('<?php echo wp_kses_post( $review_invitation ); ?>');
|
14 |
});
|
15 |
</script>
|
16 |
<div class="wrap">
|
17 |
<div class="icon32" id="icon-options-general"><br /></div>
|
18 |
+
<h2><?php esc_html_e( 'WooCommerce PDF Invoices', 'woocommerce-pdf-invoices-packing-slips' ); ?></h2>
|
19 |
<h2 class="nav-tab-wrapper">
|
20 |
<?php
|
21 |
+
foreach ( $settings_tabs as $tab_slug => $tab_title ) {
|
22 |
$tab_link = esc_url("?page=wpo_wcpdf_options_page&tab={$tab_slug}");
|
23 |
+
printf('<a href="%1$s" class="nav-tab nav-tab-%2$s %3$s">%4$s</a>', $tab_link, esc_attr( $tab_slug ), ( ( $active_tab == $tab_slug ) ? 'nav-tab-active' : '' ), esc_html( $tab_title ) );
|
24 |
}
|
25 |
?>
|
26 |
</h2>
|
36 |
$hide_ad = get_option( 'wpo_wcpdf_hide_extensions_ad' );
|
37 |
}
|
38 |
|
39 |
+
if ( ! $hide_ad && ! ( class_exists( 'WooCommerce_PDF_IPS_Pro' ) && class_exists( 'WooCommerce_PDF_IPS_Templates' ) && class_exists( 'WooCommerce_Ext_PrintOrders' ) ) ) {
|
40 |
include('wcpdf-extensions.php');
|
41 |
}
|
42 |
|
43 |
?>
|
44 |
+
<form method="post" action="options.php" id="wpo-wcpdf-settings" class="<?php echo esc_attr( "{$active_tab} {$active_section}" ); ?>">
|
45 |
<?php
|
46 |
do_action( 'wpo_wcpdf_before_settings', $active_tab, $active_section );
|
47 |
if ( has_action( 'wpo_wcpdf_settings_output_'.$active_tab ) ) {
|
includes/wcpdf-functions.php
CHANGED
@@ -162,8 +162,8 @@ function wcpdf_deprecated_function( $function, $version, $replacement = null ) {
|
|
162 |
// if the deprecated function is called from one of our filters, $this should be $document
|
163 |
$filter = current_filter();
|
164 |
$global_wcpdf_filters = array( 'wp_ajax_generate_wpo_wcpdf' );
|
165 |
-
if ( !in_array($filter, $global_wcpdf_filters) && strpos($filter, 'wpo_wcpdf') !== false && strpos($replacement, '$this') !== false ) {
|
166 |
-
$replacement = str_replace('$this', '$document', $replacement);
|
167 |
$replacement = "{$replacement} - check that the \$document parameter is included in your action or filter ($filter)!";
|
168 |
}
|
169 |
if ( is_ajax() ) {
|
@@ -181,7 +181,7 @@ function wcpdf_deprecated_function( $function, $version, $replacement = null ) {
|
|
181 |
* Logger function to capture errors thrown by this plugin, uses the WC Logger when possible (WC3.0+)
|
182 |
*/
|
183 |
function wcpdf_log_error( $message, $level = 'error', $e = null ) {
|
184 |
-
if (function_exists('wc_get_logger')) {
|
185 |
$logger = wc_get_logger();
|
186 |
$context = array( 'source' => 'wpo-wcpdf' );
|
187 |
|
@@ -205,13 +205,13 @@ function wcpdf_log_error( $message, $level = 'error', $e = null ) {
|
|
205 |
}
|
206 |
|
207 |
function wcpdf_output_error( $message, $level = 'error', $e = null ) {
|
208 |
-
if ( !current_user_can( 'edit_shop_orders' ) ) {
|
209 |
-
|
210 |
return;
|
211 |
}
|
212 |
?>
|
213 |
<div style="border: 2px solid red; padding: 5px;">
|
214 |
-
<h3><?php echo $message; ?></h3>
|
215 |
<?php if ( !empty($e) && is_callable( array( $e, 'getTraceAsString') ) ): ?>
|
216 |
<pre><?php echo $e->getTraceAsString(); ?></pre>
|
217 |
<?php endif ?>
|
162 |
// if the deprecated function is called from one of our filters, $this should be $document
|
163 |
$filter = current_filter();
|
164 |
$global_wcpdf_filters = array( 'wp_ajax_generate_wpo_wcpdf' );
|
165 |
+
if ( ! in_array ($filter, $global_wcpdf_filters ) && strpos( $filter, 'wpo_wcpdf' ) !== false && strpos( $replacement, '$this' ) !== false ) {
|
166 |
+
$replacement = str_replace( '$this', '$document', $replacement );
|
167 |
$replacement = "{$replacement} - check that the \$document parameter is included in your action or filter ($filter)!";
|
168 |
}
|
169 |
if ( is_ajax() ) {
|
181 |
* Logger function to capture errors thrown by this plugin, uses the WC Logger when possible (WC3.0+)
|
182 |
*/
|
183 |
function wcpdf_log_error( $message, $level = 'error', $e = null ) {
|
184 |
+
if ( function_exists( 'wc_get_logger' ) ) {
|
185 |
$logger = wc_get_logger();
|
186 |
$context = array( 'source' => 'wpo-wcpdf' );
|
187 |
|
205 |
}
|
206 |
|
207 |
function wcpdf_output_error( $message, $level = 'error', $e = null ) {
|
208 |
+
if ( ! current_user_can( 'edit_shop_orders' ) ) {
|
209 |
+
esc_html_e( 'Error creating PDF, please contact the site owner.', 'woocommerce-pdf-invoices-packing-slips' );
|
210 |
return;
|
211 |
}
|
212 |
?>
|
213 |
<div style="border: 2px solid red; padding: 5px;">
|
214 |
+
<h3><?php echo wp_kses_post( $message ); ?></h3>
|
215 |
<?php if ( !empty($e) && is_callable( array( $e, 'getTraceAsString') ) ): ?>
|
216 |
<pre><?php echo $e->getTraceAsString(); ?></pre>
|
217 |
<?php endif ?>
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: woocommerce, pdf, invoices, packing slips, print, delivery notes, invoice,
|
|
5 |
Requires at least: 3.5
|
6 |
Tested up to: 5.8
|
7 |
Requires PHP: 7.1
|
8 |
-
Stable tag: 2.10.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -102,6 +102,9 @@ There's a setting on the Status tab of the settings page that allows you to togg
|
|
102 |
|
103 |
== Changelog ==
|
104 |
|
|
|
|
|
|
|
105 |
= 2.10.4 =
|
106 |
* Fix: Billing phone not displaying in Packing Slip when billing address was enabled
|
107 |
* Fix: Support for special characters on sites without the PHP MB-string module
|
5 |
Requires at least: 3.5
|
6 |
Tested up to: 5.8
|
7 |
Requires PHP: 7.1
|
8 |
+
Stable tag: 2.10.5
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
102 |
|
103 |
== Changelog ==
|
104 |
|
105 |
+
= 2.10.5 =
|
106 |
+
* Security: Apply escaping to translated strings
|
107 |
+
|
108 |
= 2.10.4 =
|
109 |
* Fix: Billing phone not displaying in Packing Slip when billing address was enabled
|
110 |
* Fix: Support for special characters on sites without the PHP MB-string module
|
vendor/composer/ClassLoader.php
CHANGED
@@ -1,479 +1,479 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of Composer.
|
5 |
-
*
|
6 |
-
* (c) Nils Adermann <naderman@naderman.de>
|
7 |
-
* Jordi Boggiano <j.boggiano@seld.be>
|
8 |
-
*
|
9 |
-
* For the full copyright and license information, please view the LICENSE
|
10 |
-
* file that was distributed with this source code.
|
11 |
-
*/
|
12 |
-
|
13 |
-
namespace Composer\Autoload;
|
14 |
-
|
15 |
-
/**
|
16 |
-
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
17 |
-
*
|
18 |
-
* $loader = new \Composer\Autoload\ClassLoader();
|
19 |
-
*
|
20 |
-
* // register classes with namespaces
|
21 |
-
* $loader->add('Symfony\Component', __DIR__.'/component');
|
22 |
-
* $loader->add('Symfony', __DIR__.'/framework');
|
23 |
-
*
|
24 |
-
* // activate the autoloader
|
25 |
-
* $loader->register();
|
26 |
-
*
|
27 |
-
* // to enable searching the include path (eg. for PEAR packages)
|
28 |
-
* $loader->setUseIncludePath(true);
|
29 |
-
*
|
30 |
-
* In this example, if you try to use a class in the Symfony\Component
|
31 |
-
* namespace or one of its children (Symfony\Component\Console for instance),
|
32 |
-
* the autoloader will first look for the class under the component/
|
33 |
-
* directory, and it will then fallback to the framework/ directory if not
|
34 |
-
* found before giving up.
|
35 |
-
*
|
36 |
-
* This class is loosely based on the Symfony UniversalClassLoader.
|
37 |
-
*
|
38 |
-
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
-
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
-
* @see https://www.php-fig.org/psr/psr-0/
|
41 |
-
* @see https://www.php-fig.org/psr/psr-4/
|
42 |
-
*/
|
43 |
-
class ClassLoader
|
44 |
-
{
|
45 |
-
private $vendorDir;
|
46 |
-
|
47 |
-
// PSR-4
|
48 |
-
private $prefixLengthsPsr4 = array();
|
49 |
-
private $prefixDirsPsr4 = array();
|
50 |
-
private $fallbackDirsPsr4 = array();
|
51 |
-
|
52 |
-
// PSR-0
|
53 |
-
private $prefixesPsr0 = array();
|
54 |
-
private $fallbackDirsPsr0 = array();
|
55 |
-
|
56 |
-
private $useIncludePath = false;
|
57 |
-
private $classMap = array();
|
58 |
-
private $classMapAuthoritative = false;
|
59 |
-
private $missingClasses = array();
|
60 |
-
private $apcuPrefix;
|
61 |
-
|
62 |
-
private static $registeredLoaders = array();
|
63 |
-
|
64 |
-
public function __construct($vendorDir = null)
|
65 |
-
{
|
66 |
-
$this->vendorDir = $vendorDir;
|
67 |
-
}
|
68 |
-
|
69 |
-
public function getPrefixes()
|
70 |
-
{
|
71 |
-
if (!empty($this->prefixesPsr0)) {
|
72 |
-
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
73 |
-
}
|
74 |
-
|
75 |
-
return array();
|
76 |
-
}
|
77 |
-
|
78 |
-
public function getPrefixesPsr4()
|
79 |
-
{
|
80 |
-
return $this->prefixDirsPsr4;
|
81 |
-
}
|
82 |
-
|
83 |
-
public function getFallbackDirs()
|
84 |
-
{
|
85 |
-
return $this->fallbackDirsPsr0;
|
86 |
-
}
|
87 |
-
|
88 |
-
public function getFallbackDirsPsr4()
|
89 |
-
{
|
90 |
-
return $this->fallbackDirsPsr4;
|
91 |
-
}
|
92 |
-
|
93 |
-
public function getClassMap()
|
94 |
-
{
|
95 |
-
return $this->classMap;
|
96 |
-
}
|
97 |
-
|
98 |
-
/**
|
99 |
-
* @param array $classMap Class to filename map
|
100 |
-
*/
|
101 |
-
public function addClassMap(array $classMap)
|
102 |
-
{
|
103 |
-
if ($this->classMap) {
|
104 |
-
$this->classMap = array_merge($this->classMap, $classMap);
|
105 |
-
} else {
|
106 |
-
$this->classMap = $classMap;
|
107 |
-
}
|
108 |
-
}
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Registers a set of PSR-0 directories for a given prefix, either
|
112 |
-
* appending or prepending to the ones previously set for this prefix.
|
113 |
-
*
|
114 |
-
* @param string $prefix The prefix
|
115 |
-
* @param array|string $paths The PSR-0 root directories
|
116 |
-
* @param bool $prepend Whether to prepend the directories
|
117 |
-
*/
|
118 |
-
public function add($prefix, $paths, $prepend = false)
|
119 |
-
{
|
120 |
-
if (!$prefix) {
|
121 |
-
if ($prepend) {
|
122 |
-
$this->fallbackDirsPsr0 = array_merge(
|
123 |
-
(array) $paths,
|
124 |
-
$this->fallbackDirsPsr0
|
125 |
-
);
|
126 |
-
} else {
|
127 |
-
$this->fallbackDirsPsr0 = array_merge(
|
128 |
-
$this->fallbackDirsPsr0,
|
129 |
-
(array) $paths
|
130 |
-
);
|
131 |
-
}
|
132 |
-
|
133 |
-
return;
|
134 |
-
}
|
135 |
-
|
136 |
-
$first = $prefix[0];
|
137 |
-
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
138 |
-
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
139 |
-
|
140 |
-
return;
|
141 |
-
}
|
142 |
-
if ($prepend) {
|
143 |
-
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
144 |
-
(array) $paths,
|
145 |
-
$this->prefixesPsr0[$first][$prefix]
|
146 |
-
);
|
147 |
-
} else {
|
148 |
-
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
149 |
-
$this->prefixesPsr0[$first][$prefix],
|
150 |
-
(array) $paths
|
151 |
-
);
|
152 |
-
}
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* Registers a set of PSR-4 directories for a given namespace, either
|
157 |
-
* appending or prepending to the ones previously set for this namespace.
|
158 |
-
*
|
159 |
-
* @param string $prefix The prefix/namespace, with trailing '\\'
|
160 |
-
* @param array|string $paths The PSR-4 base directories
|
161 |
-
* @param bool $prepend Whether to prepend the directories
|
162 |
-
*
|
163 |
-
* @throws \InvalidArgumentException
|
164 |
-
*/
|
165 |
-
public function addPsr4($prefix, $paths, $prepend = false)
|
166 |
-
{
|
167 |
-
if (!$prefix) {
|
168 |
-
// Register directories for the root namespace.
|
169 |
-
if ($prepend) {
|
170 |
-
$this->fallbackDirsPsr4 = array_merge(
|
171 |
-
(array) $paths,
|
172 |
-
$this->fallbackDirsPsr4
|
173 |
-
);
|
174 |
-
} else {
|
175 |
-
$this->fallbackDirsPsr4 = array_merge(
|
176 |
-
$this->fallbackDirsPsr4,
|
177 |
-
(array) $paths
|
178 |
-
);
|
179 |
-
}
|
180 |
-
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
181 |
-
// Register directories for a new namespace.
|
182 |
-
$length = strlen($prefix);
|
183 |
-
if ('\\' !== $prefix[$length - 1]) {
|
184 |
-
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
185 |
-
}
|
186 |
-
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
187 |
-
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
188 |
-
} elseif ($prepend) {
|
189 |
-
// Prepend directories for an already registered namespace.
|
190 |
-
$this->prefixDirsPsr4[$prefix] = array_merge(
|
191 |
-
(array) $paths,
|
192 |
-
$this->prefixDirsPsr4[$prefix]
|
193 |
-
);
|
194 |
-
} else {
|
195 |
-
// Append directories for an already registered namespace.
|
196 |
-
$this->prefixDirsPsr4[$prefix] = array_merge(
|
197 |
-
$this->prefixDirsPsr4[$prefix],
|
198 |
-
(array) $paths
|
199 |
-
);
|
200 |
-
}
|
201 |
-
}
|
202 |
-
|
203 |
-
/**
|
204 |
-
* Registers a set of PSR-0 directories for a given prefix,
|
205 |
-
* replacing any others previously set for this prefix.
|
206 |
-
*
|
207 |
-
* @param string $prefix The prefix
|
208 |
-
* @param array|string $paths The PSR-0 base directories
|
209 |
-
*/
|
210 |
-
public function set($prefix, $paths)
|
211 |
-
{
|
212 |
-
if (!$prefix) {
|
213 |
-
$this->fallbackDirsPsr0 = (array) $paths;
|
214 |
-
} else {
|
215 |
-
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
216 |
-
}
|
217 |
-
}
|
218 |
-
|
219 |
-
/**
|
220 |
-
* Registers a set of PSR-4 directories for a given namespace,
|
221 |
-
* replacing any others previously set for this namespace.
|
222 |
-
*
|
223 |
-
* @param string $prefix The prefix/namespace, with trailing '\\'
|
224 |
-
* @param array|string $paths The PSR-4 base directories
|
225 |
-
*
|
226 |
-
* @throws \InvalidArgumentException
|
227 |
-
*/
|
228 |
-
public function setPsr4($prefix, $paths)
|
229 |
-
{
|
230 |
-
if (!$prefix) {
|
231 |
-
$this->fallbackDirsPsr4 = (array) $paths;
|
232 |
-
} else {
|
233 |
-
$length = strlen($prefix);
|
234 |
-
if ('\\' !== $prefix[$length - 1]) {
|
235 |
-
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
236 |
-
}
|
237 |
-
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
238 |
-
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
239 |
-
}
|
240 |
-
}
|
241 |
-
|
242 |
-
/**
|
243 |
-
* Turns on searching the include path for class files.
|
244 |
-
*
|
245 |
-
* @param bool $useIncludePath
|
246 |
-
*/
|
247 |
-
public function setUseIncludePath($useIncludePath)
|
248 |
-
{
|
249 |
-
$this->useIncludePath = $useIncludePath;
|
250 |
-
}
|
251 |
-
|
252 |
-
/**
|
253 |
-
* Can be used to check if the autoloader uses the include path to check
|
254 |
-
* for classes.
|
255 |
-
*
|
256 |
-
* @return bool
|
257 |
-
*/
|
258 |
-
public function getUseIncludePath()
|
259 |
-
{
|
260 |
-
return $this->useIncludePath;
|
261 |
-
}
|
262 |
-
|
263 |
-
/**
|
264 |
-
* Turns off searching the prefix and fallback directories for classes
|
265 |
-
* that have not been registered with the class map.
|
266 |
-
*
|
267 |
-
* @param bool $classMapAuthoritative
|
268 |
-
*/
|
269 |
-
public function setClassMapAuthoritative($classMapAuthoritative)
|
270 |
-
{
|
271 |
-
$this->classMapAuthoritative = $classMapAuthoritative;
|
272 |
-
}
|
273 |
-
|
274 |
-
/**
|
275 |
-
* Should class lookup fail if not found in the current class map?
|
276 |
-
*
|
277 |
-
* @return bool
|
278 |
-
*/
|
279 |
-
public function isClassMapAuthoritative()
|
280 |
-
{
|
281 |
-
return $this->classMapAuthoritative;
|
282 |
-
}
|
283 |
-
|
284 |
-
/**
|
285 |
-
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
286 |
-
*
|
287 |
-
* @param string|null $apcuPrefix
|
288 |
-
*/
|
289 |
-
public function setApcuPrefix($apcuPrefix)
|
290 |
-
{
|
291 |
-
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
292 |
-
}
|
293 |
-
|
294 |
-
/**
|
295 |
-
* The APCu prefix in use, or null if APCu caching is not enabled.
|
296 |
-
*
|
297 |
-
* @return string|null
|
298 |
-
*/
|
299 |
-
public function getApcuPrefix()
|
300 |
-
{
|
301 |
-
return $this->apcuPrefix;
|
302 |
-
}
|
303 |
-
|
304 |
-
/**
|
305 |
-
* Registers this instance as an autoloader.
|
306 |
-
*
|
307 |
-
* @param bool $prepend Whether to prepend the autoloader or not
|
308 |
-
*/
|
309 |
-
public function register($prepend = false)
|
310 |
-
{
|
311 |
-
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
312 |
-
|
313 |
-
if (null === $this->vendorDir) {
|
314 |
-
return;
|
315 |
-
}
|
316 |
-
|
317 |
-
if ($prepend) {
|
318 |
-
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
319 |
-
} else {
|
320 |
-
unset(self::$registeredLoaders[$this->vendorDir]);
|
321 |
-
self::$registeredLoaders[$this->vendorDir] = $this;
|
322 |
-
}
|
323 |
-
}
|
324 |
-
|
325 |
-
/**
|
326 |
-
* Unregisters this instance as an autoloader.
|
327 |
-
*/
|
328 |
-
public function unregister()
|
329 |
-
{
|
330 |
-
spl_autoload_unregister(array($this, 'loadClass'));
|
331 |
-
|
332 |
-
if (null !== $this->vendorDir) {
|
333 |
-
unset(self::$registeredLoaders[$this->vendorDir]);
|
334 |
-
}
|
335 |
-
}
|
336 |
-
|
337 |
-
/**
|
338 |
-
* Loads the given class or interface.
|
339 |
-
*
|
340 |
-
* @param string $class The name of the class
|
341 |
-
* @return bool|null True if loaded, null otherwise
|
342 |
-
*/
|
343 |
-
public function loadClass($class)
|
344 |
-
{
|
345 |
-
if ($file = $this->findFile($class)) {
|
346 |
-
includeFile($file);
|
347 |
-
|
348 |
-
return true;
|
349 |
-
}
|
350 |
-
}
|
351 |
-
|
352 |
-
/**
|
353 |
-
* Finds the path to the file where the class is defined.
|
354 |
-
*
|
355 |
-
* @param string $class The name of the class
|
356 |
-
*
|
357 |
-
* @return string|false The path if found, false otherwise
|
358 |
-
*/
|
359 |
-
public function findFile($class)
|
360 |
-
{
|
361 |
-
// class map lookup
|
362 |
-
if (isset($this->classMap[$class])) {
|
363 |
-
return $this->classMap[$class];
|
364 |
-
}
|
365 |
-
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
366 |
-
return false;
|
367 |
-
}
|
368 |
-
if (null !== $this->apcuPrefix) {
|
369 |
-
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
370 |
-
if ($hit) {
|
371 |
-
return $file;
|
372 |
-
}
|
373 |
-
}
|
374 |
-
|
375 |
-
$file = $this->findFileWithExtension($class, '.php');
|
376 |
-
|
377 |
-
// Search for Hack files if we are running on HHVM
|
378 |
-
if (false === $file && defined('HHVM_VERSION')) {
|
379 |
-
$file = $this->findFileWithExtension($class, '.hh');
|
380 |
-
}
|
381 |
-
|
382 |
-
if (null !== $this->apcuPrefix) {
|
383 |
-
apcu_add($this->apcuPrefix.$class, $file);
|
384 |
-
}
|
385 |
-
|
386 |
-
if (false === $file) {
|
387 |
-
// Remember that this class does not exist.
|
388 |
-
$this->missingClasses[$class] = true;
|
389 |
-
}
|
390 |
-
|
391 |
-
return $file;
|
392 |
-
}
|
393 |
-
|
394 |
-
/**
|
395 |
-
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
396 |
-
*
|
397 |
-
* @return self[]
|
398 |
-
*/
|
399 |
-
public static function getRegisteredLoaders()
|
400 |
-
{
|
401 |
-
return self::$registeredLoaders;
|
402 |
-
}
|
403 |
-
|
404 |
-
private function findFileWithExtension($class, $ext)
|
405 |
-
{
|
406 |
-
// PSR-4 lookup
|
407 |
-
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
408 |
-
|
409 |
-
$first = $class[0];
|
410 |
-
if (isset($this->prefixLengthsPsr4[$first])) {
|
411 |
-
$subPath = $class;
|
412 |
-
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
413 |
-
$subPath = substr($subPath, 0, $lastPos);
|
414 |
-
$search = $subPath . '\\';
|
415 |
-
if (isset($this->prefixDirsPsr4[$search])) {
|
416 |
-
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
417 |
-
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
418 |
-
if (file_exists($file = $dir . $pathEnd)) {
|
419 |
-
return $file;
|
420 |
-
}
|
421 |
-
}
|
422 |
-
}
|
423 |
-
}
|
424 |
-
}
|
425 |
-
|
426 |
-
// PSR-4 fallback dirs
|
427 |
-
foreach ($this->fallbackDirsPsr4 as $dir) {
|
428 |
-
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
429 |
-
return $file;
|
430 |
-
}
|
431 |
-
}
|
432 |
-
|
433 |
-
// PSR-0 lookup
|
434 |
-
if (false !== $pos = strrpos($class, '\\')) {
|
435 |
-
// namespaced class name
|
436 |
-
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
437 |
-
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
438 |
-
} else {
|
439 |
-
// PEAR-like class name
|
440 |
-
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
441 |
-
}
|
442 |
-
|
443 |
-
if (isset($this->prefixesPsr0[$first])) {
|
444 |
-
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
445 |
-
if (0 === strpos($class, $prefix)) {
|
446 |
-
foreach ($dirs as $dir) {
|
447 |
-
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
448 |
-
return $file;
|
449 |
-
}
|
450 |
-
}
|
451 |
-
}
|
452 |
-
}
|
453 |
-
}
|
454 |
-
|
455 |
-
// PSR-0 fallback dirs
|
456 |
-
foreach ($this->fallbackDirsPsr0 as $dir) {
|
457 |
-
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
458 |
-
return $file;
|
459 |
-
}
|
460 |
-
}
|
461 |
-
|
462 |
-
// PSR-0 include paths.
|
463 |
-
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
464 |
-
return $file;
|
465 |
-
}
|
466 |
-
|
467 |
-
return false;
|
468 |
-
}
|
469 |
-
}
|
470 |
-
|
471 |
-
/**
|
472 |
-
* Scope isolated include.
|
473 |
-
*
|
474 |
-
* Prevents access to $this/self from included files.
|
475 |
-
*/
|
476 |
-
function includeFile($file)
|
477 |
-
{
|
478 |
-
include $file;
|
479 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Composer.
|
5 |
+
*
|
6 |
+
* (c) Nils Adermann <naderman@naderman.de>
|
7 |
+
* Jordi Boggiano <j.boggiano@seld.be>
|
8 |
+
*
|
9 |
+
* For the full copyright and license information, please view the LICENSE
|
10 |
+
* file that was distributed with this source code.
|
11 |
+
*/
|
12 |
+
|
13 |
+
namespace Composer\Autoload;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
17 |
+
*
|
18 |
+
* $loader = new \Composer\Autoload\ClassLoader();
|
19 |
+
*
|
20 |
+
* // register classes with namespaces
|
21 |
+
* $loader->add('Symfony\Component', __DIR__.'/component');
|
22 |
+
* $loader->add('Symfony', __DIR__.'/framework');
|
23 |
+
*
|
24 |
+
* // activate the autoloader
|
25 |
+
* $loader->register();
|
26 |
+
*
|
27 |
+
* // to enable searching the include path (eg. for PEAR packages)
|
28 |
+
* $loader->setUseIncludePath(true);
|
29 |
+
*
|
30 |
+
* In this example, if you try to use a class in the Symfony\Component
|
31 |
+
* namespace or one of its children (Symfony\Component\Console for instance),
|
32 |
+
* the autoloader will first look for the class under the component/
|
33 |
+
* directory, and it will then fallback to the framework/ directory if not
|
34 |
+
* found before giving up.
|
35 |
+
*
|
36 |
+
* This class is loosely based on the Symfony UniversalClassLoader.
|
37 |
+
*
|
38 |
+
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
+
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
+
* @see https://www.php-fig.org/psr/psr-0/
|
41 |
+
* @see https://www.php-fig.org/psr/psr-4/
|
42 |
+
*/
|
43 |
+
class ClassLoader
|
44 |
+
{
|
45 |
+
private $vendorDir;
|
46 |
+
|
47 |
+
// PSR-4
|
48 |
+
private $prefixLengthsPsr4 = array();
|
49 |
+
private $prefixDirsPsr4 = array();
|
50 |
+
private $fallbackDirsPsr4 = array();
|
51 |
+
|
52 |
+
// PSR-0
|
53 |
+
private $prefixesPsr0 = array();
|
54 |
+
private $fallbackDirsPsr0 = array();
|
55 |
+
|
56 |
+
private $useIncludePath = false;
|
57 |
+
private $classMap = array();
|
58 |
+
private $classMapAuthoritative = false;
|
59 |
+
private $missingClasses = array();
|
60 |
+
private $apcuPrefix;
|
61 |
+
|
62 |
+
private static $registeredLoaders = array();
|
63 |
+
|
64 |
+
public function __construct($vendorDir = null)
|
65 |
+
{
|
66 |
+
$this->vendorDir = $vendorDir;
|
67 |
+
}
|
68 |
+
|
69 |
+
public function getPrefixes()
|
70 |
+
{
|
71 |
+
if (!empty($this->prefixesPsr0)) {
|
72 |
+
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
73 |
+
}
|
74 |
+
|
75 |
+
return array();
|
76 |
+
}
|
77 |
+
|
78 |
+
public function getPrefixesPsr4()
|
79 |
+
{
|
80 |
+
return $this->prefixDirsPsr4;
|
81 |
+
}
|
82 |
+
|
83 |
+
public function getFallbackDirs()
|
84 |
+
{
|
85 |
+
return $this->fallbackDirsPsr0;
|
86 |
+
}
|
87 |
+
|
88 |
+
public function getFallbackDirsPsr4()
|
89 |
+
{
|
90 |
+
return $this->fallbackDirsPsr4;
|
91 |
+
}
|
92 |
+
|
93 |
+
public function getClassMap()
|
94 |
+
{
|
95 |
+
return $this->classMap;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* @param array $classMap Class to filename map
|
100 |
+
*/
|
101 |
+
public function addClassMap(array $classMap)
|
102 |
+
{
|
103 |
+
if ($this->classMap) {
|
104 |
+
$this->classMap = array_merge($this->classMap, $classMap);
|
105 |
+
} else {
|
106 |
+
$this->classMap = $classMap;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Registers a set of PSR-0 directories for a given prefix, either
|
112 |
+
* appending or prepending to the ones previously set for this prefix.
|
113 |
+
*
|
114 |
+
* @param string $prefix The prefix
|
115 |
+
* @param array|string $paths The PSR-0 root directories
|
116 |
+
* @param bool $prepend Whether to prepend the directories
|
117 |
+
*/
|
118 |
+
public function add($prefix, $paths, $prepend = false)
|
119 |
+
{
|
120 |
+
if (!$prefix) {
|
121 |
+
if ($prepend) {
|
122 |
+
$this->fallbackDirsPsr0 = array_merge(
|
123 |
+
(array) $paths,
|
124 |
+
$this->fallbackDirsPsr0
|
125 |
+
);
|
126 |
+
} else {
|
127 |
+
$this->fallbackDirsPsr0 = array_merge(
|
128 |
+
$this->fallbackDirsPsr0,
|
129 |
+
(array) $paths
|
130 |
+
);
|
131 |
+
}
|
132 |
+
|
133 |
+
return;
|
134 |
+
}
|
135 |
+
|
136 |
+
$first = $prefix[0];
|
137 |
+
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
138 |
+
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
139 |
+
|
140 |
+
return;
|
141 |
+
}
|
142 |
+
if ($prepend) {
|
143 |
+
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
144 |
+
(array) $paths,
|
145 |
+
$this->prefixesPsr0[$first][$prefix]
|
146 |
+
);
|
147 |
+
} else {
|
148 |
+
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
149 |
+
$this->prefixesPsr0[$first][$prefix],
|
150 |
+
(array) $paths
|
151 |
+
);
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Registers a set of PSR-4 directories for a given namespace, either
|
157 |
+
* appending or prepending to the ones previously set for this namespace.
|
158 |
+
*
|
159 |
+
* @param string $prefix The prefix/namespace, with trailing '\\'
|
160 |
+
* @param array|string $paths The PSR-4 base directories
|
161 |
+
* @param bool $prepend Whether to prepend the directories
|
162 |
+
*
|
163 |
+
* @throws \InvalidArgumentException
|
164 |
+
*/
|
165 |
+
public function addPsr4($prefix, $paths, $prepend = false)
|
166 |
+
{
|
167 |
+
if (!$prefix) {
|
168 |
+
// Register directories for the root namespace.
|
169 |
+
if ($prepend) {
|
170 |
+
$this->fallbackDirsPsr4 = array_merge(
|
171 |
+
(array) $paths,
|
172 |
+
$this->fallbackDirsPsr4
|
173 |
+
);
|
174 |
+
} else {
|
175 |
+
$this->fallbackDirsPsr4 = array_merge(
|
176 |
+
$this->fallbackDirsPsr4,
|
177 |
+
(array) $paths
|
178 |
+
);
|
179 |
+
}
|
180 |
+
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
181 |
+
// Register directories for a new namespace.
|
182 |
+
$length = strlen($prefix);
|
183 |
+
if ('\\' !== $prefix[$length - 1]) {
|
184 |
+
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
185 |
+
}
|
186 |
+
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
187 |
+
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
188 |
+
} elseif ($prepend) {
|
189 |
+
// Prepend directories for an already registered namespace.
|
190 |
+
$this->prefixDirsPsr4[$prefix] = array_merge(
|
191 |
+
(array) $paths,
|
192 |
+
$this->prefixDirsPsr4[$prefix]
|
193 |
+
);
|
194 |
+
} else {
|
195 |
+
// Append directories for an already registered namespace.
|
196 |
+
$this->prefixDirsPsr4[$prefix] = array_merge(
|
197 |
+
$this->prefixDirsPsr4[$prefix],
|
198 |
+
(array) $paths
|
199 |
+
);
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* Registers a set of PSR-0 directories for a given prefix,
|
205 |
+
* replacing any others previously set for this prefix.
|
206 |
+
*
|
207 |
+
* @param string $prefix The prefix
|
208 |
+
* @param array|string $paths The PSR-0 base directories
|
209 |
+
*/
|
210 |
+
public function set($prefix, $paths)
|
211 |
+
{
|
212 |
+
if (!$prefix) {
|
213 |
+
$this->fallbackDirsPsr0 = (array) $paths;
|
214 |
+
} else {
|
215 |
+
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
216 |
+
}
|
217 |
+
}
|
218 |
+
|
219 |
+
/**
|
220 |
+
* Registers a set of PSR-4 directories for a given namespace,
|
221 |
+
* replacing any others previously set for this namespace.
|
222 |
+
*
|
223 |
+
* @param string $prefix The prefix/namespace, with trailing '\\'
|
224 |
+
* @param array|string $paths The PSR-4 base directories
|
225 |
+
*
|
226 |
+
* @throws \InvalidArgumentException
|
227 |
+
*/
|
228 |
+
public function setPsr4($prefix, $paths)
|
229 |
+
{
|
230 |
+
if (!$prefix) {
|
231 |
+
$this->fallbackDirsPsr4 = (array) $paths;
|
232 |
+
} else {
|
233 |
+
$length = strlen($prefix);
|
234 |
+
if ('\\' !== $prefix[$length - 1]) {
|
235 |
+
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
236 |
+
}
|
237 |
+
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
238 |
+
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Turns on searching the include path for class files.
|
244 |
+
*
|
245 |
+
* @param bool $useIncludePath
|
246 |
+
*/
|
247 |
+
public function setUseIncludePath($useIncludePath)
|
248 |
+
{
|
249 |
+
$this->useIncludePath = $useIncludePath;
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* Can be used to check if the autoloader uses the include path to check
|
254 |
+
* for classes.
|
255 |
+
*
|
256 |
+
* @return bool
|
257 |
+
*/
|
258 |
+
public function getUseIncludePath()
|
259 |
+
{
|
260 |
+
return $this->useIncludePath;
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Turns off searching the prefix and fallback directories for classes
|
265 |
+
* that have not been registered with the class map.
|
266 |
+
*
|
267 |
+
* @param bool $classMapAuthoritative
|
268 |
+
*/
|
269 |
+
public function setClassMapAuthoritative($classMapAuthoritative)
|
270 |
+
{
|
271 |
+
$this->classMapAuthoritative = $classMapAuthoritative;
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Should class lookup fail if not found in the current class map?
|
276 |
+
*
|
277 |
+
* @return bool
|
278 |
+
*/
|
279 |
+
public function isClassMapAuthoritative()
|
280 |
+
{
|
281 |
+
return $this->classMapAuthoritative;
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
286 |
+
*
|
287 |
+
* @param string|null $apcuPrefix
|
288 |
+
*/
|
289 |
+
public function setApcuPrefix($apcuPrefix)
|
290 |
+
{
|
291 |
+
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
292 |
+
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* The APCu prefix in use, or null if APCu caching is not enabled.
|
296 |
+
*
|
297 |
+
* @return string|null
|
298 |
+
*/
|
299 |
+
public function getApcuPrefix()
|
300 |
+
{
|
301 |
+
return $this->apcuPrefix;
|
302 |
+
}
|
303 |
+
|
304 |
+
/**
|
305 |
+
* Registers this instance as an autoloader.
|
306 |
+
*
|
307 |
+
* @param bool $prepend Whether to prepend the autoloader or not
|
308 |
+
*/
|
309 |
+
public function register($prepend = false)
|
310 |
+
{
|
311 |
+
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
312 |
+
|
313 |
+
if (null === $this->vendorDir) {
|
314 |
+
return;
|
315 |
+
}
|
316 |
+
|
317 |
+
if ($prepend) {
|
318 |
+
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
319 |
+
} else {
|
320 |
+
unset(self::$registeredLoaders[$this->vendorDir]);
|
321 |
+
self::$registeredLoaders[$this->vendorDir] = $this;
|
322 |
+
}
|
323 |
+
}
|
324 |
+
|
325 |
+
/**
|
326 |
+
* Unregisters this instance as an autoloader.
|
327 |
+
*/
|
328 |
+
public function unregister()
|
329 |
+
{
|
330 |
+
spl_autoload_unregister(array($this, 'loadClass'));
|
331 |
+
|
332 |
+
if (null !== $this->vendorDir) {
|
333 |
+
unset(self::$registeredLoaders[$this->vendorDir]);
|
334 |
+
}
|
335 |
+
}
|
336 |
+
|
337 |
+
/**
|
338 |
+
* Loads the given class or interface.
|
339 |
+
*
|
340 |
+
* @param string $class The name of the class
|
341 |
+
* @return bool|null True if loaded, null otherwise
|
342 |
+
*/
|
343 |
+
public function loadClass($class)
|
344 |
+
{
|
345 |
+
if ($file = $this->findFile($class)) {
|
346 |
+
includeFile($file);
|
347 |
+
|
348 |
+
return true;
|
349 |
+
}
|
350 |
+
}
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Finds the path to the file where the class is defined.
|
354 |
+
*
|
355 |
+
* @param string $class The name of the class
|
356 |
+
*
|
357 |
+
* @return string|false The path if found, false otherwise
|
358 |
+
*/
|
359 |
+
public function findFile($class)
|
360 |
+
{
|
361 |
+
// class map lookup
|
362 |
+
if (isset($this->classMap[$class])) {
|
363 |
+
return $this->classMap[$class];
|
364 |
+
}
|
365 |
+
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
366 |
+
return false;
|
367 |
+
}
|
368 |
+
if (null !== $this->apcuPrefix) {
|
369 |
+
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
370 |
+
if ($hit) {
|
371 |
+
return $file;
|
372 |
+
}
|
373 |
+
}
|
374 |
+
|
375 |
+
$file = $this->findFileWithExtension($class, '.php');
|
376 |
+
|
377 |
+
// Search for Hack files if we are running on HHVM
|
378 |
+
if (false === $file && defined('HHVM_VERSION')) {
|
379 |
+
$file = $this->findFileWithExtension($class, '.hh');
|
380 |
+
}
|
381 |
+
|
382 |
+
if (null !== $this->apcuPrefix) {
|
383 |
+
apcu_add($this->apcuPrefix.$class, $file);
|
384 |
+
}
|
385 |
+
|
386 |
+
if (false === $file) {
|
387 |
+
// Remember that this class does not exist.
|
388 |
+
$this->missingClasses[$class] = true;
|
389 |
+
}
|
390 |
+
|
391 |
+
return $file;
|
392 |
+
}
|
393 |
+
|
394 |
+
/**
|
395 |
+
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
396 |
+
*
|
397 |
+
* @return self[]
|
398 |
+
*/
|
399 |
+
public static function getRegisteredLoaders()
|
400 |
+
{
|
401 |
+
return self::$registeredLoaders;
|
402 |
+
}
|
403 |
+
|
404 |
+
private function findFileWithExtension($class, $ext)
|
405 |
+
{
|
406 |
+
// PSR-4 lookup
|
407 |
+
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
408 |
+
|
409 |
+
$first = $class[0];
|
410 |
+
if (isset($this->prefixLengthsPsr4[$first])) {
|
411 |
+
$subPath = $class;
|
412 |
+
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
413 |
+
$subPath = substr($subPath, 0, $lastPos);
|
414 |
+
$search = $subPath . '\\';
|
415 |
+
if (isset($this->prefixDirsPsr4[$search])) {
|
416 |
+
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
417 |
+
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
418 |
+
if (file_exists($file = $dir . $pathEnd)) {
|
419 |
+
return $file;
|
420 |
+
}
|
421 |
+
}
|
422 |
+
}
|
423 |
+
}
|
424 |
+
}
|
425 |
+
|
426 |
+
// PSR-4 fallback dirs
|
427 |
+
foreach ($this->fallbackDirsPsr4 as $dir) {
|
428 |
+
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
429 |
+
return $file;
|
430 |
+
}
|
431 |
+
}
|
432 |
+
|
433 |
+
// PSR-0 lookup
|
434 |
+
if (false !== $pos = strrpos($class, '\\')) {
|
435 |
+
// namespaced class name
|
436 |
+
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
437 |
+
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
438 |
+
} else {
|
439 |
+
// PEAR-like class name
|
440 |
+
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
441 |
+
}
|
442 |
+
|
443 |
+
if (isset($this->prefixesPsr0[$first])) {
|
444 |
+
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
445 |
+
if (0 === strpos($class, $prefix)) {
|
446 |
+
foreach ($dirs as $dir) {
|
447 |
+
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
448 |
+
return $file;
|
449 |
+
}
|
450 |
+
}
|
451 |
+
}
|
452 |
+
}
|
453 |
+
}
|
454 |
+
|
455 |
+
// PSR-0 fallback dirs
|
456 |
+
foreach ($this->fallbackDirsPsr0 as $dir) {
|
457 |
+
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
458 |
+
return $file;
|
459 |
+
}
|
460 |
+
}
|
461 |
+
|
462 |
+
// PSR-0 include paths.
|
463 |
+
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
464 |
+
return $file;
|
465 |
+
}
|
466 |
+
|
467 |
+
return false;
|
468 |
+
}
|
469 |
+
}
|
470 |
+
|
471 |
+
/**
|
472 |
+
* Scope isolated include.
|
473 |
+
*
|
474 |
+
* Prevents access to $this/self from included files.
|
475 |
+
*/
|
476 |
+
function includeFile($file)
|
477 |
+
{
|
478 |
+
include $file;
|
479 |
+
}
|
vendor/composer/InstalledVersions.php
CHANGED
@@ -1,328 +1,328 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
namespace Composer;
|
14 |
-
|
15 |
-
use Composer\Autoload\ClassLoader;
|
16 |
-
use Composer\Semver\VersionParser;
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
class InstalledVersions
|
24 |
-
{
|
25 |
-
private static $installed = array (
|
26 |
-
'root' =>
|
27 |
-
array (
|
28 |
-
'pretty_version' => 'dev-master',
|
29 |
-
'version' => 'dev-master',
|
30 |
-
'aliases' =>
|
31 |
-
array (
|
32 |
-
),
|
33 |
-
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
34 |
-
'name' => '__root__',
|
35 |
-
),
|
36 |
-
'versions' =>
|
37 |
-
array (
|
38 |
-
'__root__' =>
|
39 |
-
array (
|
40 |
-
'pretty_version' => 'dev-master',
|
41 |
-
'version' => 'dev-master',
|
42 |
-
'aliases' =>
|
43 |
-
array (
|
44 |
-
),
|
45 |
-
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
46 |
-
),
|
47 |
-
'dompdf/dompdf' =>
|
48 |
-
array (
|
49 |
-
'pretty_version' => 'v1.0.2',
|
50 |
-
'version' => '1.0.2.0',
|
51 |
-
'aliases' =>
|
52 |
-
array (
|
53 |
-
),
|
54 |
-
'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
|
55 |
-
),
|
56 |
-
'phenx/php-font-lib' =>
|
57 |
-
array (
|
58 |
-
'pretty_version' => '0.5.2',
|
59 |
-
'version' => '0.5.2.0',
|
60 |
-
'aliases' =>
|
61 |
-
array (
|
62 |
-
),
|
63 |
-
'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
|
64 |
-
),
|
65 |
-
'phenx/php-svg-lib' =>
|
66 |
-
array (
|
67 |
-
'pretty_version' => 'v0.3.3',
|
68 |
-
'version' => '0.3.3.0',
|
69 |
-
'aliases' =>
|
70 |
-
array (
|
71 |
-
),
|
72 |
-
'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
|
73 |
-
),
|
74 |
-
'sabberworm/php-css-parser' =>
|
75 |
-
array (
|
76 |
-
'pretty_version' => '8.3.1',
|
77 |
-
'version' => '8.3.1.0',
|
78 |
-
'aliases' =>
|
79 |
-
array (
|
80 |
-
),
|
81 |
-
'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
|
82 |
-
),
|
83 |
-
'symfony/polyfill-mbstring' =>
|
84 |
-
array (
|
85 |
-
'pretty_version' => 'v1.20.0',
|
86 |
-
'version' => '1.20.0.0',
|
87 |
-
'aliases' =>
|
88 |
-
array (
|
89 |
-
),
|
90 |
-
'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
|
91 |
-
),
|
92 |
-
),
|
93 |
-
);
|
94 |
-
private static $canGetVendors;
|
95 |
-
private static $installedByVendor = array();
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
public static function getInstalledPackages()
|
104 |
-
{
|
105 |
-
$packages = array();
|
106 |
-
foreach (self::getInstalled() as $installed) {
|
107 |
-
$packages[] = array_keys($installed['versions']);
|
108 |
-
}
|
109 |
-
|
110 |
-
|
111 |
-
if (1 === \count($packages)) {
|
112 |
-
return $packages[0];
|
113 |
-
}
|
114 |
-
|
115 |
-
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
116 |
-
}
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
public static function isInstalled($packageName)
|
127 |
-
{
|
128 |
-
foreach (self::getInstalled() as $installed) {
|
129 |
-
if (isset($installed['versions'][$packageName])) {
|
130 |
-
return true;
|
131 |
-
}
|
132 |
-
}
|
133 |
-
|
134 |
-
return false;
|
135 |
-
}
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
151 |
-
{
|
152 |
-
$constraint = $parser->parseConstraints($constraint);
|
153 |
-
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
154 |
-
|
155 |
-
return $provided->matches($constraint);
|
156 |
-
}
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
public static function getVersionRanges($packageName)
|
168 |
-
{
|
169 |
-
foreach (self::getInstalled() as $installed) {
|
170 |
-
if (!isset($installed['versions'][$packageName])) {
|
171 |
-
continue;
|
172 |
-
}
|
173 |
-
|
174 |
-
$ranges = array();
|
175 |
-
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
176 |
-
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
177 |
-
}
|
178 |
-
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
179 |
-
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
180 |
-
}
|
181 |
-
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
182 |
-
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
183 |
-
}
|
184 |
-
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
185 |
-
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
186 |
-
}
|
187 |
-
|
188 |
-
return implode(' || ', $ranges);
|
189 |
-
}
|
190 |
-
|
191 |
-
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
192 |
-
}
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
public static function getVersion($packageName)
|
199 |
-
{
|
200 |
-
foreach (self::getInstalled() as $installed) {
|
201 |
-
if (!isset($installed['versions'][$packageName])) {
|
202 |
-
continue;
|
203 |
-
}
|
204 |
-
|
205 |
-
if (!isset($installed['versions'][$packageName]['version'])) {
|
206 |
-
return null;
|
207 |
-
}
|
208 |
-
|
209 |
-
return $installed['versions'][$packageName]['version'];
|
210 |
-
}
|
211 |
-
|
212 |
-
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
213 |
-
}
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
public static function getPrettyVersion($packageName)
|
220 |
-
{
|
221 |
-
foreach (self::getInstalled() as $installed) {
|
222 |
-
if (!isset($installed['versions'][$packageName])) {
|
223 |
-
continue;
|
224 |
-
}
|
225 |
-
|
226 |
-
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
227 |
-
return null;
|
228 |
-
}
|
229 |
-
|
230 |
-
return $installed['versions'][$packageName]['pretty_version'];
|
231 |
-
}
|
232 |
-
|
233 |
-
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
234 |
-
}
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
public static function getReference($packageName)
|
241 |
-
{
|
242 |
-
foreach (self::getInstalled() as $installed) {
|
243 |
-
if (!isset($installed['versions'][$packageName])) {
|
244 |
-
continue;
|
245 |
-
}
|
246 |
-
|
247 |
-
if (!isset($installed['versions'][$packageName]['reference'])) {
|
248 |
-
return null;
|
249 |
-
}
|
250 |
-
|
251 |
-
return $installed['versions'][$packageName]['reference'];
|
252 |
-
}
|
253 |
-
|
254 |
-
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
255 |
-
}
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
public static function getRootPackage()
|
262 |
-
{
|
263 |
-
$installed = self::getInstalled();
|
264 |
-
|
265 |
-
return $installed[0]['root'];
|
266 |
-
}
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
public static function getRawData()
|
275 |
-
{
|
276 |
-
return self::$installed;
|
277 |
-
}
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
public static function reload($data)
|
298 |
-
{
|
299 |
-
self::$installed = $data;
|
300 |
-
self::$installedByVendor = array();
|
301 |
-
}
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
private static function getInstalled()
|
307 |
-
{
|
308 |
-
if (null === self::$canGetVendors) {
|
309 |
-
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
310 |
-
}
|
311 |
-
|
312 |
-
$installed = array();
|
313 |
-
|
314 |
-
if (self::$canGetVendors) {
|
315 |
-
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
316 |
-
if (isset(self::$installedByVendor[$vendorDir])) {
|
317 |
-
$installed[] = self::$installedByVendor[$vendorDir];
|
318 |
-
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
319 |
-
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
320 |
-
}
|
321 |
-
}
|
322 |
-
}
|
323 |
-
|
324 |
-
$installed[] = self::$installed;
|
325 |
-
|
326 |
-
return $installed;
|
327 |
-
}
|
328 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
namespace Composer;
|
14 |
+
|
15 |
+
use Composer\Autoload\ClassLoader;
|
16 |
+
use Composer\Semver\VersionParser;
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
|
22 |
+
|
23 |
+
class InstalledVersions
|
24 |
+
{
|
25 |
+
private static $installed = array (
|
26 |
+
'root' =>
|
27 |
+
array (
|
28 |
+
'pretty_version' => 'dev-master',
|
29 |
+
'version' => 'dev-master',
|
30 |
+
'aliases' =>
|
31 |
+
array (
|
32 |
+
),
|
33 |
+
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
34 |
+
'name' => '__root__',
|
35 |
+
),
|
36 |
+
'versions' =>
|
37 |
+
array (
|
38 |
+
'__root__' =>
|
39 |
+
array (
|
40 |
+
'pretty_version' => 'dev-master',
|
41 |
+
'version' => 'dev-master',
|
42 |
+
'aliases' =>
|
43 |
+
array (
|
44 |
+
),
|
45 |
+
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
46 |
+
),
|
47 |
+
'dompdf/dompdf' =>
|
48 |
+
array (
|
49 |
+
'pretty_version' => 'v1.0.2',
|
50 |
+
'version' => '1.0.2.0',
|
51 |
+
'aliases' =>
|
52 |
+
array (
|
53 |
+
),
|
54 |
+
'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
|
55 |
+
),
|
56 |
+
'phenx/php-font-lib' =>
|
57 |
+
array (
|
58 |
+
'pretty_version' => '0.5.2',
|
59 |
+
'version' => '0.5.2.0',
|
60 |
+
'aliases' =>
|
61 |
+
array (
|
62 |
+
),
|
63 |
+
'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
|
64 |
+
),
|
65 |
+
'phenx/php-svg-lib' =>
|
66 |
+
array (
|
67 |
+
'pretty_version' => 'v0.3.3',
|
68 |
+
'version' => '0.3.3.0',
|
69 |
+
'aliases' =>
|
70 |
+
array (
|
71 |
+
),
|
72 |
+
'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
|
73 |
+
),
|
74 |
+
'sabberworm/php-css-parser' =>
|
75 |
+
array (
|
76 |
+
'pretty_version' => '8.3.1',
|
77 |
+
'version' => '8.3.1.0',
|
78 |
+
'aliases' =>
|
79 |
+
array (
|
80 |
+
),
|
81 |
+
'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
|
82 |
+
),
|
83 |
+
'symfony/polyfill-mbstring' =>
|
84 |
+
array (
|
85 |
+
'pretty_version' => 'v1.20.0',
|
86 |
+
'version' => '1.20.0.0',
|
87 |
+
'aliases' =>
|
88 |
+
array (
|
89 |
+
),
|
90 |
+
'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
|
91 |
+
),
|
92 |
+
),
|
93 |
+
);
|
94 |
+
private static $canGetVendors;
|
95 |
+
private static $installedByVendor = array();
|
96 |
+
|
97 |
+
|
98 |
+
|
99 |
+
|
100 |
+
|
101 |
+
|
102 |
+
|
103 |
+
public static function getInstalledPackages()
|
104 |
+
{
|
105 |
+
$packages = array();
|
106 |
+
foreach (self::getInstalled() as $installed) {
|
107 |
+
$packages[] = array_keys($installed['versions']);
|
108 |
+
}
|
109 |
+
|
110 |
+
|
111 |
+
if (1 === \count($packages)) {
|
112 |
+
return $packages[0];
|
113 |
+
}
|
114 |
+
|
115 |
+
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
116 |
+
}
|
117 |
+
|
118 |
+
|
119 |
+
|
120 |
+
|
121 |
+
|
122 |
+
|
123 |
+
|
124 |
+
|
125 |
+
|
126 |
+
public static function isInstalled($packageName)
|
127 |
+
{
|
128 |
+
foreach (self::getInstalled() as $installed) {
|
129 |
+
if (isset($installed['versions'][$packageName])) {
|
130 |
+
return true;
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
return false;
|
135 |
+
}
|
136 |
+
|
137 |
+
|
138 |
+
|
139 |
+
|
140 |
+
|
141 |
+
|
142 |
+
|
143 |
+
|
144 |
+
|
145 |
+
|
146 |
+
|
147 |
+
|
148 |
+
|
149 |
+
|
150 |
+
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
151 |
+
{
|
152 |
+
$constraint = $parser->parseConstraints($constraint);
|
153 |
+
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
154 |
+
|
155 |
+
return $provided->matches($constraint);
|
156 |
+
}
|
157 |
+
|
158 |
+
|
159 |
+
|
160 |
+
|
161 |
+
|
162 |
+
|
163 |
+
|
164 |
+
|
165 |
+
|
166 |
+
|
167 |
+
public static function getVersionRanges($packageName)
|
168 |
+
{
|
169 |
+
foreach (self::getInstalled() as $installed) {
|
170 |
+
if (!isset($installed['versions'][$packageName])) {
|
171 |
+
continue;
|
172 |
+
}
|
173 |
+
|
174 |
+
$ranges = array();
|
175 |
+
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
176 |
+
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
177 |
+
}
|
178 |
+
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
179 |
+
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
180 |
+
}
|
181 |
+
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
182 |
+
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
183 |
+
}
|
184 |
+
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
185 |
+
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
186 |
+
}
|
187 |
+
|
188 |
+
return implode(' || ', $ranges);
|
189 |
+
}
|
190 |
+
|
191 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
192 |
+
}
|
193 |
+
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
|
198 |
+
public static function getVersion($packageName)
|
199 |
+
{
|
200 |
+
foreach (self::getInstalled() as $installed) {
|
201 |
+
if (!isset($installed['versions'][$packageName])) {
|
202 |
+
continue;
|
203 |
+
}
|
204 |
+
|
205 |
+
if (!isset($installed['versions'][$packageName]['version'])) {
|
206 |
+
return null;
|
207 |
+
}
|
208 |
+
|
209 |
+
return $installed['versions'][$packageName]['version'];
|
210 |
+
}
|
211 |
+
|
212 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
213 |
+
}
|
214 |
+
|
215 |
+
|
216 |
+
|
217 |
+
|
218 |
+
|
219 |
+
public static function getPrettyVersion($packageName)
|
220 |
+
{
|
221 |
+
foreach (self::getInstalled() as $installed) {
|
222 |
+
if (!isset($installed['versions'][$packageName])) {
|
223 |
+
continue;
|
224 |
+
}
|
225 |
+
|
226 |
+
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
227 |
+
return null;
|
228 |
+
}
|
229 |
+
|
230 |
+
return $installed['versions'][$packageName]['pretty_version'];
|
231 |
+
}
|
232 |
+
|
233 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
234 |
+
}
|
235 |
+
|
236 |
+
|
237 |
+
|
238 |
+
|
239 |
+
|
240 |
+
public static function getReference($packageName)
|
241 |
+
{
|
242 |
+
foreach (self::getInstalled() as $installed) {
|
243 |
+
if (!isset($installed['versions'][$packageName])) {
|
244 |
+
continue;
|
245 |
+
}
|
246 |
+
|
247 |
+
if (!isset($installed['versions'][$packageName]['reference'])) {
|
248 |
+
return null;
|
249 |
+
}
|
250 |
+
|
251 |
+
return $installed['versions'][$packageName]['reference'];
|
252 |
+
}
|
253 |
+
|
254 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
255 |
+
}
|
256 |
+
|
257 |
+
|
258 |
+
|
259 |
+
|
260 |
+
|
261 |
+
public static function getRootPackage()
|
262 |
+
{
|
263 |
+
$installed = self::getInstalled();
|
264 |
+
|
265 |
+
return $installed[0]['root'];
|
266 |
+
}
|
267 |
+
|
268 |
+
|
269 |
+
|
270 |
+
|
271 |
+
|
272 |
+
|
273 |
+
|
274 |
+
public static function getRawData()
|
275 |
+
{
|
276 |
+
return self::$installed;
|
277 |
+
}
|
278 |
+
|
279 |
+
|
280 |
+
|
281 |
+
|
282 |
+
|
283 |
+
|
284 |
+
|
285 |
+
|
286 |
+
|
287 |
+
|
288 |
+
|
289 |
+
|
290 |
+
|
291 |
+
|
292 |
+
|
293 |
+
|
294 |
+
|
295 |
+
|
296 |
+
|
297 |
+
public static function reload($data)
|
298 |
+
{
|
299 |
+
self::$installed = $data;
|
300 |
+
self::$installedByVendor = array();
|
301 |
+
}
|
302 |
+
|
303 |
+
|
304 |
+
|
305 |
+
|
306 |
+
private static function getInstalled()
|
307 |
+
{
|
308 |
+
if (null === self::$canGetVendors) {
|
309 |
+
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
310 |
+
}
|
311 |
+
|
312 |
+
$installed = array();
|
313 |
+
|
314 |
+
if (self::$canGetVendors) {
|
315 |
+
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
316 |
+
if (isset(self::$installedByVendor[$vendorDir])) {
|
317 |
+
$installed[] = self::$installedByVendor[$vendorDir];
|
318 |
+
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
319 |
+
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
$installed[] = self::$installed;
|
325 |
+
|
326 |
+
return $installed;
|
327 |
+
}
|
328 |
+
}
|
vendor/composer/autoload_files.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// autoload_files.php @generated by Composer
|
4 |
-
|
5 |
-
$vendorDir = dirname(dirname(__FILE__));
|
6 |
-
$baseDir = dirname($vendorDir);
|
7 |
-
|
8 |
-
return array(
|
9 |
-
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
10 |
-
);
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_files.php @generated by Composer
|
4 |
+
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
+
$baseDir = dirname($vendorDir);
|
7 |
+
|
8 |
+
return array(
|
9 |
+
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
10 |
+
);
|
vendor/composer/autoload_psr4.php
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// autoload_psr4.php @generated by Composer
|
4 |
-
|
5 |
-
$vendorDir = dirname(dirname(__FILE__));
|
6 |
-
$baseDir = dirname($vendorDir);
|
7 |
-
|
8 |
-
return array(
|
9 |
-
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
10 |
-
'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'),
|
11 |
-
'FontLib\\' => array($vendorDir . '/phenx/php-font-lib/src/FontLib'),
|
12 |
-
'Dompdf\\' => array($vendorDir . '/dompdf/dompdf/src'),
|
13 |
-
);
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_psr4.php @generated by Composer
|
4 |
+
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
+
$baseDir = dirname($vendorDir);
|
7 |
+
|
8 |
+
return array(
|
9 |
+
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
10 |
+
'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'),
|
11 |
+
'FontLib\\' => array($vendorDir . '/phenx/php-font-lib/src/FontLib'),
|
12 |
+
'Dompdf\\' => array($vendorDir . '/dompdf/dompdf/src'),
|
13 |
+
);
|
vendor/composer/autoload_real.php
CHANGED
@@ -1,75 +1,75 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// autoload_real.php @generated by Composer
|
4 |
-
|
5 |
-
class ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af
|
6 |
-
{
|
7 |
-
private static $loader;
|
8 |
-
|
9 |
-
public static function loadClassLoader($class)
|
10 |
-
{
|
11 |
-
if ('Composer\Autoload\ClassLoader' === $class) {
|
12 |
-
require __DIR__ . '/ClassLoader.php';
|
13 |
-
}
|
14 |
-
}
|
15 |
-
|
16 |
-
/**
|
17 |
-
* @return \Composer\Autoload\ClassLoader
|
18 |
-
*/
|
19 |
-
public static function getLoader()
|
20 |
-
{
|
21 |
-
if (null !== self::$loader) {
|
22 |
-
return self::$loader;
|
23 |
-
}
|
24 |
-
|
25 |
-
require __DIR__ . '/platform_check.php';
|
26 |
-
|
27 |
-
spl_autoload_register(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'), true, true);
|
28 |
-
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
29 |
-
spl_autoload_unregister(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'));
|
30 |
-
|
31 |
-
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
32 |
-
if ($useStaticLoader) {
|
33 |
-
require __DIR__ . '/autoload_static.php';
|
34 |
-
|
35 |
-
call_user_func(\Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::getInitializer($loader));
|
36 |
-
} else {
|
37 |
-
$map = require __DIR__ . '/autoload_namespaces.php';
|
38 |
-
foreach ($map as $namespace => $path) {
|
39 |
-
$loader->set($namespace, $path);
|
40 |
-
}
|
41 |
-
|
42 |
-
$map = require __DIR__ . '/autoload_psr4.php';
|
43 |
-
foreach ($map as $namespace => $path) {
|
44 |
-
$loader->setPsr4($namespace, $path);
|
45 |
-
}
|
46 |
-
|
47 |
-
$classMap = require __DIR__ . '/autoload_classmap.php';
|
48 |
-
if ($classMap) {
|
49 |
-
$loader->addClassMap($classMap);
|
50 |
-
}
|
51 |
-
}
|
52 |
-
|
53 |
-
$loader->register(true);
|
54 |
-
|
55 |
-
if ($useStaticLoader) {
|
56 |
-
$includeFiles = Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::$files;
|
57 |
-
} else {
|
58 |
-
$includeFiles = require __DIR__ . '/autoload_files.php';
|
59 |
-
}
|
60 |
-
foreach ($includeFiles as $fileIdentifier => $file) {
|
61 |
-
composerRequire91fa098344a2dea6316819c06b8931af($fileIdentifier, $file);
|
62 |
-
}
|
63 |
-
|
64 |
-
return $loader;
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
-
function composerRequire91fa098344a2dea6316819c06b8931af($fileIdentifier, $file)
|
69 |
-
{
|
70 |
-
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
71 |
-
require $file;
|
72 |
-
|
73 |
-
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
74 |
-
}
|
75 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_real.php @generated by Composer
|
4 |
+
|
5 |
+
class ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af
|
6 |
+
{
|
7 |
+
private static $loader;
|
8 |
+
|
9 |
+
public static function loadClassLoader($class)
|
10 |
+
{
|
11 |
+
if ('Composer\Autoload\ClassLoader' === $class) {
|
12 |
+
require __DIR__ . '/ClassLoader.php';
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @return \Composer\Autoload\ClassLoader
|
18 |
+
*/
|
19 |
+
public static function getLoader()
|
20 |
+
{
|
21 |
+
if (null !== self::$loader) {
|
22 |
+
return self::$loader;
|
23 |
+
}
|
24 |
+
|
25 |
+
require __DIR__ . '/platform_check.php';
|
26 |
+
|
27 |
+
spl_autoload_register(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'), true, true);
|
28 |
+
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
29 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'));
|
30 |
+
|
31 |
+
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
32 |
+
if ($useStaticLoader) {
|
33 |
+
require __DIR__ . '/autoload_static.php';
|
34 |
+
|
35 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::getInitializer($loader));
|
36 |
+
} else {
|
37 |
+
$map = require __DIR__ . '/autoload_namespaces.php';
|
38 |
+
foreach ($map as $namespace => $path) {
|
39 |
+
$loader->set($namespace, $path);
|
40 |
+
}
|
41 |
+
|
42 |
+
$map = require __DIR__ . '/autoload_psr4.php';
|
43 |
+
foreach ($map as $namespace => $path) {
|
44 |
+
$loader->setPsr4($namespace, $path);
|
45 |
+
}
|
46 |
+
|
47 |
+
$classMap = require __DIR__ . '/autoload_classmap.php';
|
48 |
+
if ($classMap) {
|
49 |
+
$loader->addClassMap($classMap);
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
$loader->register(true);
|
54 |
+
|
55 |
+
if ($useStaticLoader) {
|
56 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::$files;
|
57 |
+
} else {
|
58 |
+
$includeFiles = require __DIR__ . '/autoload_files.php';
|
59 |
+
}
|
60 |
+
foreach ($includeFiles as $fileIdentifier => $file) {
|
61 |
+
composerRequire91fa098344a2dea6316819c06b8931af($fileIdentifier, $file);
|
62 |
+
}
|
63 |
+
|
64 |
+
return $loader;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
function composerRequire91fa098344a2dea6316819c06b8931af($fileIdentifier, $file)
|
69 |
+
{
|
70 |
+
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
71 |
+
require $file;
|
72 |
+
|
73 |
+
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
74 |
+
}
|
75 |
+
}
|
vendor/composer/autoload_static.php
CHANGED
@@ -1,78 +1,78 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// autoload_static.php @generated by Composer
|
4 |
-
|
5 |
-
namespace Composer\Autoload;
|
6 |
-
|
7 |
-
class ComposerStaticInit91fa098344a2dea6316819c06b8931af
|
8 |
-
{
|
9 |
-
public static $files = array (
|
10 |
-
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
11 |
-
);
|
12 |
-
|
13 |
-
public static $prefixLengthsPsr4 = array (
|
14 |
-
'S' =>
|
15 |
-
array (
|
16 |
-
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
17 |
-
'Svg\\' => 4,
|
18 |
-
),
|
19 |
-
'F' =>
|
20 |
-
array (
|
21 |
-
'FontLib\\' => 8,
|
22 |
-
),
|
23 |
-
'D' =>
|
24 |
-
array (
|
25 |
-
'Dompdf\\' => 7,
|
26 |
-
),
|
27 |
-
);
|
28 |
-
|
29 |
-
public static $prefixDirsPsr4 = array (
|
30 |
-
'Symfony\\Polyfill\\Mbstring\\' =>
|
31 |
-
array (
|
32 |
-
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
33 |
-
),
|
34 |
-
'Svg\\' =>
|
35 |
-
array (
|
36 |
-
0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg',
|
37 |
-
),
|
38 |
-
'FontLib\\' =>
|
39 |
-
array (
|
40 |
-
0 => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib',
|
41 |
-
),
|
42 |
-
'Dompdf\\' =>
|
43 |
-
array (
|
44 |
-
0 => __DIR__ . '/..' . '/dompdf/dompdf/src',
|
45 |
-
),
|
46 |
-
);
|
47 |
-
|
48 |
-
public static $prefixesPsr0 = array (
|
49 |
-
'S' =>
|
50 |
-
array (
|
51 |
-
'Sabberworm\\CSS' =>
|
52 |
-
array (
|
53 |
-
0 => __DIR__ . '/..' . '/sabberworm/php-css-parser/lib',
|
54 |
-
),
|
55 |
-
),
|
56 |
-
);
|
57 |
-
|
58 |
-
public static $classMap = array (
|
59 |
-
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
60 |
-
'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php',
|
61 |
-
'HTML5_Data' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Data.php',
|
62 |
-
'HTML5_InputStream' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/InputStream.php',
|
63 |
-
'HTML5_Parser' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Parser.php',
|
64 |
-
'HTML5_Tokenizer' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Tokenizer.php',
|
65 |
-
'HTML5_TreeBuilder' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/TreeBuilder.php',
|
66 |
-
);
|
67 |
-
|
68 |
-
public static function getInitializer(ClassLoader $loader)
|
69 |
-
{
|
70 |
-
return \Closure::bind(function () use ($loader) {
|
71 |
-
$loader->prefixLengthsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixLengthsPsr4;
|
72 |
-
$loader->prefixDirsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixDirsPsr4;
|
73 |
-
$loader->prefixesPsr0 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixesPsr0;
|
74 |
-
$loader->classMap = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$classMap;
|
75 |
-
|
76 |
-
}, null, ClassLoader::class);
|
77 |
-
}
|
78 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_static.php @generated by Composer
|
4 |
+
|
5 |
+
namespace Composer\Autoload;
|
6 |
+
|
7 |
+
class ComposerStaticInit91fa098344a2dea6316819c06b8931af
|
8 |
+
{
|
9 |
+
public static $files = array (
|
10 |
+
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
11 |
+
);
|
12 |
+
|
13 |
+
public static $prefixLengthsPsr4 = array (
|
14 |
+
'S' =>
|
15 |
+
array (
|
16 |
+
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
17 |
+
'Svg\\' => 4,
|
18 |
+
),
|
19 |
+
'F' =>
|
20 |
+
array (
|
21 |
+
'FontLib\\' => 8,
|
22 |
+
),
|
23 |
+
'D' =>
|
24 |
+
array (
|
25 |
+
'Dompdf\\' => 7,
|
26 |
+
),
|
27 |
+
);
|
28 |
+
|
29 |
+
public static $prefixDirsPsr4 = array (
|
30 |
+
'Symfony\\Polyfill\\Mbstring\\' =>
|
31 |
+
array (
|
32 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
33 |
+
),
|
34 |
+
'Svg\\' =>
|
35 |
+
array (
|
36 |
+
0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg',
|
37 |
+
),
|
38 |
+
'FontLib\\' =>
|
39 |
+
array (
|
40 |
+
0 => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib',
|
41 |
+
),
|
42 |
+
'Dompdf\\' =>
|
43 |
+
array (
|
44 |
+
0 => __DIR__ . '/..' . '/dompdf/dompdf/src',
|
45 |
+
),
|
46 |
+
);
|
47 |
+
|
48 |
+
public static $prefixesPsr0 = array (
|
49 |
+
'S' =>
|
50 |
+
array (
|
51 |
+
'Sabberworm\\CSS' =>
|
52 |
+
array (
|
53 |
+
0 => __DIR__ . '/..' . '/sabberworm/php-css-parser/lib',
|
54 |
+
),
|
55 |
+
),
|
56 |
+
);
|
57 |
+
|
58 |
+
public static $classMap = array (
|
59 |
+
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
60 |
+
'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php',
|
61 |
+
'HTML5_Data' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Data.php',
|
62 |
+
'HTML5_InputStream' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/InputStream.php',
|
63 |
+
'HTML5_Parser' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Parser.php',
|
64 |
+
'HTML5_Tokenizer' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Tokenizer.php',
|
65 |
+
'HTML5_TreeBuilder' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/TreeBuilder.php',
|
66 |
+
);
|
67 |
+
|
68 |
+
public static function getInitializer(ClassLoader $loader)
|
69 |
+
{
|
70 |
+
return \Closure::bind(function () use ($loader) {
|
71 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixLengthsPsr4;
|
72 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixDirsPsr4;
|
73 |
+
$loader->prefixesPsr0 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixesPsr0;
|
74 |
+
$loader->classMap = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$classMap;
|
75 |
+
|
76 |
+
}, null, ClassLoader::class);
|
77 |
+
}
|
78 |
+
}
|
vendor/composer/installed.json
CHANGED
@@ -1,307 +1,307 @@
|
|
1 |
-
{
|
2 |
-
"packages": [
|
3 |
-
{
|
4 |
-
"name": "dompdf/dompdf",
|
5 |
-
"version": "v1.0.2",
|
6 |
-
"version_normalized": "1.0.2.0",
|
7 |
-
"source": {
|
8 |
-
"type": "git",
|
9 |
-
"url": "https://github.com/dompdf/dompdf.git",
|
10 |
-
"reference": "8768448244967a46d6e67b891d30878e0e15d25c"
|
11 |
-
},
|
12 |
-
"dist": {
|
13 |
-
"type": "zip",
|
14 |
-
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
|
15 |
-
"reference": "8768448244967a46d6e67b891d30878e0e15d25c",
|
16 |
-
"shasum": ""
|
17 |
-
},
|
18 |
-
"require": {
|
19 |
-
"ext-dom": "*",
|
20 |
-
"ext-mbstring": "*",
|
21 |
-
"phenx/php-font-lib": "^0.5.2",
|
22 |
-
"phenx/php-svg-lib": "^0.3.3",
|
23 |
-
"php": "^7.1 || ^8.0"
|
24 |
-
},
|
25 |
-
"require-dev": {
|
26 |
-
"mockery/mockery": "^1.3",
|
27 |
-
"phpunit/phpunit": "^7.5 || ^8 || ^9",
|
28 |
-
"squizlabs/php_codesniffer": "^3.5"
|
29 |
-
},
|
30 |
-
"suggest": {
|
31 |
-
"ext-gd": "Needed to process images",
|
32 |
-
"ext-gmagick": "Improves image processing performance",
|
33 |
-
"ext-imagick": "Improves image processing performance",
|
34 |
-
"ext-zlib": "Needed for pdf stream compression"
|
35 |
-
},
|
36 |
-
"time": "2021-01-08T14:18:52+00:00",
|
37 |
-
"type": "library",
|
38 |
-
"extra": {
|
39 |
-
"branch-alias": {
|
40 |
-
"dev-develop": "0.7-dev"
|
41 |
-
}
|
42 |
-
},
|
43 |
-
"installation-source": "dist",
|
44 |
-
"autoload": {
|
45 |
-
"psr-4": {
|
46 |
-
"Dompdf\\": "src/"
|
47 |
-
},
|
48 |
-
"classmap": [
|
49 |
-
"lib/"
|
50 |
-
]
|
51 |
-
},
|
52 |
-
"notification-url": "https://packagist.org/downloads/",
|
53 |
-
"license": [
|
54 |
-
"LGPL-2.1"
|
55 |
-
],
|
56 |
-
"authors": [
|
57 |
-
{
|
58 |
-
"name": "Fabien Ménager",
|
59 |
-
"email": "fabien.menager@gmail.com"
|
60 |
-
},
|
61 |
-
{
|
62 |
-
"name": "Brian Sweeney",
|
63 |
-
"email": "eclecticgeek@gmail.com"
|
64 |
-
},
|
65 |
-
{
|
66 |
-
"name": "Gabriel Bull",
|
67 |
-
"email": "me@gabrielbull.com"
|
68 |
-
}
|
69 |
-
],
|
70 |
-
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
71 |
-
"homepage": "https://github.com/dompdf/dompdf",
|
72 |
-
"support": {
|
73 |
-
"issues": "https://github.com/dompdf/dompdf/issues",
|
74 |
-
"source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
|
75 |
-
},
|
76 |
-
"install-path": "../dompdf/dompdf"
|
77 |
-
},
|
78 |
-
{
|
79 |
-
"name": "phenx/php-font-lib",
|
80 |
-
"version": "0.5.2",
|
81 |
-
"version_normalized": "0.5.2.0",
|
82 |
-
"source": {
|
83 |
-
"type": "git",
|
84 |
-
"url": "https://github.com/PhenX/php-font-lib.git",
|
85 |
-
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
|
86 |
-
},
|
87 |
-
"dist": {
|
88 |
-
"type": "zip",
|
89 |
-
"url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
90 |
-
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
91 |
-
"shasum": ""
|
92 |
-
},
|
93 |
-
"require-dev": {
|
94 |
-
"phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
|
95 |
-
},
|
96 |
-
"time": "2020-03-08T15:31:32+00:00",
|
97 |
-
"type": "library",
|
98 |
-
"installation-source": "dist",
|
99 |
-
"autoload": {
|
100 |
-
"psr-4": {
|
101 |
-
"FontLib\\": "src/FontLib"
|
102 |
-
}
|
103 |
-
},
|
104 |
-
"notification-url": "https://packagist.org/downloads/",
|
105 |
-
"license": [
|
106 |
-
"LGPL-3.0"
|
107 |
-
],
|
108 |
-
"authors": [
|
109 |
-
{
|
110 |
-
"name": "Fabien Ménager",
|
111 |
-
"email": "fabien.menager@gmail.com"
|
112 |
-
}
|
113 |
-
],
|
114 |
-
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
115 |
-
"homepage": "https://github.com/PhenX/php-font-lib",
|
116 |
-
"support": {
|
117 |
-
"issues": "https://github.com/PhenX/php-font-lib/issues",
|
118 |
-
"source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
|
119 |
-
},
|
120 |
-
"install-path": "../phenx/php-font-lib"
|
121 |
-
},
|
122 |
-
{
|
123 |
-
"name": "phenx/php-svg-lib",
|
124 |
-
"version": "v0.3.3",
|
125 |
-
"version_normalized": "0.3.3.0",
|
126 |
-
"source": {
|
127 |
-
"type": "git",
|
128 |
-
"url": "https://github.com/PhenX/php-svg-lib.git",
|
129 |
-
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
|
130 |
-
},
|
131 |
-
"dist": {
|
132 |
-
"type": "zip",
|
133 |
-
"url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
134 |
-
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
135 |
-
"shasum": ""
|
136 |
-
},
|
137 |
-
"require": {
|
138 |
-
"sabberworm/php-css-parser": "^8.3"
|
139 |
-
},
|
140 |
-
"require-dev": {
|
141 |
-
"phpunit/phpunit": "^5.5|^6.5"
|
142 |
-
},
|
143 |
-
"time": "2019-09-11T20:02:13+00:00",
|
144 |
-
"type": "library",
|
145 |
-
"installation-source": "dist",
|
146 |
-
"autoload": {
|
147 |
-
"psr-4": {
|
148 |
-
"Svg\\": "src/Svg"
|
149 |
-
}
|
150 |
-
},
|
151 |
-
"notification-url": "https://packagist.org/downloads/",
|
152 |
-
"license": [
|
153 |
-
"LGPL-3.0"
|
154 |
-
],
|
155 |
-
"authors": [
|
156 |
-
{
|
157 |
-
"name": "Fabien Ménager",
|
158 |
-
"email": "fabien.menager@gmail.com"
|
159 |
-
}
|
160 |
-
],
|
161 |
-
"description": "A library to read, parse and export to PDF SVG files.",
|
162 |
-
"homepage": "https://github.com/PhenX/php-svg-lib",
|
163 |
-
"support": {
|
164 |
-
"issues": "https://github.com/PhenX/php-svg-lib/issues",
|
165 |
-
"source": "https://github.com/PhenX/php-svg-lib/tree/master"
|
166 |
-
},
|
167 |
-
"install-path": "../phenx/php-svg-lib"
|
168 |
-
},
|
169 |
-
{
|
170 |
-
"name": "sabberworm/php-css-parser",
|
171 |
-
"version": "8.3.1",
|
172 |
-
"version_normalized": "8.3.1.0",
|
173 |
-
"source": {
|
174 |
-
"type": "git",
|
175 |
-
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
|
176 |
-
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
|
177 |
-
},
|
178 |
-
"dist": {
|
179 |
-
"type": "zip",
|
180 |
-
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
|
181 |
-
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
|
182 |
-
"shasum": ""
|
183 |
-
},
|
184 |
-
"require": {
|
185 |
-
"php": ">=5.3.2"
|
186 |
-
},
|
187 |
-
"require-dev": {
|
188 |
-
"codacy/coverage": "^1.4",
|
189 |
-
"phpunit/phpunit": "~4.8"
|
190 |
-
},
|
191 |
-
"time": "2020-06-01T09:10:00+00:00",
|
192 |
-
"type": "library",
|
193 |
-
"installation-source": "dist",
|
194 |
-
"autoload": {
|
195 |
-
"psr-0": {
|
196 |
-
"Sabberworm\\CSS": "lib/"
|
197 |
-
}
|
198 |
-
},
|
199 |
-
"notification-url": "https://packagist.org/downloads/",
|
200 |
-
"license": [
|
201 |
-
"MIT"
|
202 |
-
],
|
203 |
-
"authors": [
|
204 |
-
{
|
205 |
-
"name": "Raphael Schweikert"
|
206 |
-
}
|
207 |
-
],
|
208 |
-
"description": "Parser for CSS Files written in PHP",
|
209 |
-
"homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
210 |
-
"keywords": [
|
211 |
-
"css",
|
212 |
-
"parser",
|
213 |
-
"stylesheet"
|
214 |
-
],
|
215 |
-
"support": {
|
216 |
-
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
|
217 |
-
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
|
218 |
-
},
|
219 |
-
"install-path": "../sabberworm/php-css-parser"
|
220 |
-
},
|
221 |
-
{
|
222 |
-
"name": "symfony/polyfill-mbstring",
|
223 |
-
"version": "v1.20.0",
|
224 |
-
"version_normalized": "1.20.0.0",
|
225 |
-
"source": {
|
226 |
-
"type": "git",
|
227 |
-
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
228 |
-
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
|
229 |
-
},
|
230 |
-
"dist": {
|
231 |
-
"type": "zip",
|
232 |
-
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
|
233 |
-
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
|
234 |
-
"shasum": ""
|
235 |
-
},
|
236 |
-
"require": {
|
237 |
-
"php": ">=7.1"
|
238 |
-
},
|
239 |
-
"suggest": {
|
240 |
-
"ext-mbstring": "For best performance"
|
241 |
-
},
|
242 |
-
"time": "2020-10-23T14:02:19+00:00",
|
243 |
-
"type": "library",
|
244 |
-
"extra": {
|
245 |
-
"branch-alias": {
|
246 |
-
"dev-main": "1.20-dev"
|
247 |
-
},
|
248 |
-
"thanks": {
|
249 |
-
"name": "symfony/polyfill",
|
250 |
-
"url": "https://github.com/symfony/polyfill"
|
251 |
-
}
|
252 |
-
},
|
253 |
-
"installation-source": "dist",
|
254 |
-
"autoload": {
|
255 |
-
"psr-4": {
|
256 |
-
"Symfony\\Polyfill\\Mbstring\\": ""
|
257 |
-
},
|
258 |
-
"files": [
|
259 |
-
"bootstrap.php"
|
260 |
-
]
|
261 |
-
},
|
262 |
-
"notification-url": "https://packagist.org/downloads/",
|
263 |
-
"license": [
|
264 |
-
"MIT"
|
265 |
-
],
|
266 |
-
"authors": [
|
267 |
-
{
|
268 |
-
"name": "Nicolas Grekas",
|
269 |
-
"email": "p@tchwork.com"
|
270 |
-
},
|
271 |
-
{
|
272 |
-
"name": "Symfony Community",
|
273 |
-
"homepage": "https://symfony.com/contributors"
|
274 |
-
}
|
275 |
-
],
|
276 |
-
"description": "Symfony polyfill for the Mbstring extension",
|
277 |
-
"homepage": "https://symfony.com",
|
278 |
-
"keywords": [
|
279 |
-
"compatibility",
|
280 |
-
"mbstring",
|
281 |
-
"polyfill",
|
282 |
-
"portable",
|
283 |
-
"shim"
|
284 |
-
],
|
285 |
-
"support": {
|
286 |
-
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
|
287 |
-
},
|
288 |
-
"funding": [
|
289 |
-
{
|
290 |
-
"url": "https://symfony.com/sponsor",
|
291 |
-
"type": "custom"
|
292 |
-
},
|
293 |
-
{
|
294 |
-
"url": "https://github.com/fabpot",
|
295 |
-
"type": "github"
|
296 |
-
},
|
297 |
-
{
|
298 |
-
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
299 |
-
"type": "tidelift"
|
300 |
-
}
|
301 |
-
],
|
302 |
-
"install-path": "../symfony/polyfill-mbstring"
|
303 |
-
}
|
304 |
-
],
|
305 |
-
"dev": true,
|
306 |
-
"dev-package-names": []
|
307 |
-
}
|
1 |
+
{
|
2 |
+
"packages": [
|
3 |
+
{
|
4 |
+
"name": "dompdf/dompdf",
|
5 |
+
"version": "v1.0.2",
|
6 |
+
"version_normalized": "1.0.2.0",
|
7 |
+
"source": {
|
8 |
+
"type": "git",
|
9 |
+
"url": "https://github.com/dompdf/dompdf.git",
|
10 |
+
"reference": "8768448244967a46d6e67b891d30878e0e15d25c"
|
11 |
+
},
|
12 |
+
"dist": {
|
13 |
+
"type": "zip",
|
14 |
+
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
|
15 |
+
"reference": "8768448244967a46d6e67b891d30878e0e15d25c",
|
16 |
+
"shasum": ""
|
17 |
+
},
|
18 |
+
"require": {
|
19 |
+
"ext-dom": "*",
|
20 |
+
"ext-mbstring": "*",
|
21 |
+
"phenx/php-font-lib": "^0.5.2",
|
22 |
+
"phenx/php-svg-lib": "^0.3.3",
|
23 |
+
"php": "^7.1 || ^8.0"
|
24 |
+
},
|
25 |
+
"require-dev": {
|
26 |
+
"mockery/mockery": "^1.3",
|
27 |
+
"phpunit/phpunit": "^7.5 || ^8 || ^9",
|
28 |
+
"squizlabs/php_codesniffer": "^3.5"
|
29 |
+
},
|
30 |
+
"suggest": {
|
31 |
+
"ext-gd": "Needed to process images",
|
32 |
+
"ext-gmagick": "Improves image processing performance",
|
33 |
+
"ext-imagick": "Improves image processing performance",
|
34 |
+
"ext-zlib": "Needed for pdf stream compression"
|
35 |
+
},
|
36 |
+
"time": "2021-01-08T14:18:52+00:00",
|
37 |
+
"type": "library",
|
38 |
+
"extra": {
|
39 |
+
"branch-alias": {
|
40 |
+
"dev-develop": "0.7-dev"
|
41 |
+
}
|
42 |
+
},
|
43 |
+
"installation-source": "dist",
|
44 |
+
"autoload": {
|
45 |
+
"psr-4": {
|
46 |
+
"Dompdf\\": "src/"
|
47 |
+
},
|
48 |
+
"classmap": [
|
49 |
+
"lib/"
|
50 |
+
]
|
51 |
+
},
|
52 |
+
"notification-url": "https://packagist.org/downloads/",
|
53 |
+
"license": [
|
54 |
+
"LGPL-2.1"
|
55 |
+
],
|
56 |
+
"authors": [
|
57 |
+
{
|
58 |
+
"name": "Fabien Ménager",
|
59 |
+
"email": "fabien.menager@gmail.com"
|
60 |
+
},
|
61 |
+
{
|
62 |
+
"name": "Brian Sweeney",
|
63 |
+
"email": "eclecticgeek@gmail.com"
|
64 |
+
},
|
65 |
+
{
|
66 |
+
"name": "Gabriel Bull",
|
67 |
+
"email": "me@gabrielbull.com"
|
68 |
+
}
|
69 |
+
],
|
70 |
+
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
71 |
+
"homepage": "https://github.com/dompdf/dompdf",
|
72 |
+
"support": {
|
73 |
+
"issues": "https://github.com/dompdf/dompdf/issues",
|
74 |
+
"source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
|
75 |
+
},
|
76 |
+
"install-path": "../dompdf/dompdf"
|
77 |
+
},
|
78 |
+
{
|
79 |
+
"name": "phenx/php-font-lib",
|
80 |
+
"version": "0.5.2",
|
81 |
+
"version_normalized": "0.5.2.0",
|
82 |
+
"source": {
|
83 |
+
"type": "git",
|
84 |
+
"url": "https://github.com/PhenX/php-font-lib.git",
|
85 |
+
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
|
86 |
+
},
|
87 |
+
"dist": {
|
88 |
+
"type": "zip",
|
89 |
+
"url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
90 |
+
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
|
91 |
+
"shasum": ""
|
92 |
+
},
|
93 |
+
"require-dev": {
|
94 |
+
"phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
|
95 |
+
},
|
96 |
+
"time": "2020-03-08T15:31:32+00:00",
|
97 |
+
"type": "library",
|
98 |
+
"installation-source": "dist",
|
99 |
+
"autoload": {
|
100 |
+
"psr-4": {
|
101 |
+
"FontLib\\": "src/FontLib"
|
102 |
+
}
|
103 |
+
},
|
104 |
+
"notification-url": "https://packagist.org/downloads/",
|
105 |
+
"license": [
|
106 |
+
"LGPL-3.0"
|
107 |
+
],
|
108 |
+
"authors": [
|
109 |
+
{
|
110 |
+
"name": "Fabien Ménager",
|
111 |
+
"email": "fabien.menager@gmail.com"
|
112 |
+
}
|
113 |
+
],
|
114 |
+
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
115 |
+
"homepage": "https://github.com/PhenX/php-font-lib",
|
116 |
+
"support": {
|
117 |
+
"issues": "https://github.com/PhenX/php-font-lib/issues",
|
118 |
+
"source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
|
119 |
+
},
|
120 |
+
"install-path": "../phenx/php-font-lib"
|
121 |
+
},
|
122 |
+
{
|
123 |
+
"name": "phenx/php-svg-lib",
|
124 |
+
"version": "v0.3.3",
|
125 |
+
"version_normalized": "0.3.3.0",
|
126 |
+
"source": {
|
127 |
+
"type": "git",
|
128 |
+
"url": "https://github.com/PhenX/php-svg-lib.git",
|
129 |
+
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
|
130 |
+
},
|
131 |
+
"dist": {
|
132 |
+
"type": "zip",
|
133 |
+
"url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
134 |
+
"reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
|
135 |
+
"shasum": ""
|
136 |
+
},
|
137 |
+
"require": {
|
138 |
+
"sabberworm/php-css-parser": "^8.3"
|
139 |
+
},
|
140 |
+
"require-dev": {
|
141 |
+
"phpunit/phpunit": "^5.5|^6.5"
|
142 |
+
},
|
143 |
+
"time": "2019-09-11T20:02:13+00:00",
|
144 |
+
"type": "library",
|
145 |
+
"installation-source": "dist",
|
146 |
+
"autoload": {
|
147 |
+
"psr-4": {
|
148 |
+
"Svg\\": "src/Svg"
|
149 |
+
}
|
150 |
+
},
|
151 |
+
"notification-url": "https://packagist.org/downloads/",
|
152 |
+
"license": [
|
153 |
+
"LGPL-3.0"
|
154 |
+
],
|
155 |
+
"authors": [
|
156 |
+
{
|
157 |
+
"name": "Fabien Ménager",
|
158 |
+
"email": "fabien.menager@gmail.com"
|
159 |
+
}
|
160 |
+
],
|
161 |
+
"description": "A library to read, parse and export to PDF SVG files.",
|
162 |
+
"homepage": "https://github.com/PhenX/php-svg-lib",
|
163 |
+
"support": {
|
164 |
+
"issues": "https://github.com/PhenX/php-svg-lib/issues",
|
165 |
+
"source": "https://github.com/PhenX/php-svg-lib/tree/master"
|
166 |
+
},
|
167 |
+
"install-path": "../phenx/php-svg-lib"
|
168 |
+
},
|
169 |
+
{
|
170 |
+
"name": "sabberworm/php-css-parser",
|
171 |
+
"version": "8.3.1",
|
172 |
+
"version_normalized": "8.3.1.0",
|
173 |
+
"source": {
|
174 |
+
"type": "git",
|
175 |
+
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
|
176 |
+
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
|
177 |
+
},
|
178 |
+
"dist": {
|
179 |
+
"type": "zip",
|
180 |
+
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
|
181 |
+
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
|
182 |
+
"shasum": ""
|
183 |
+
},
|
184 |
+
"require": {
|
185 |
+
"php": ">=5.3.2"
|
186 |
+
},
|
187 |
+
"require-dev": {
|
188 |
+
"codacy/coverage": "^1.4",
|
189 |
+
"phpunit/phpunit": "~4.8"
|
190 |
+
},
|
191 |
+
"time": "2020-06-01T09:10:00+00:00",
|
192 |
+
"type": "library",
|
193 |
+
"installation-source": "dist",
|
194 |
+
"autoload": {
|
195 |
+
"psr-0": {
|
196 |
+
"Sabberworm\\CSS": "lib/"
|
197 |
+
}
|
198 |
+
},
|
199 |
+
"notification-url": "https://packagist.org/downloads/",
|
200 |
+
"license": [
|
201 |
+
"MIT"
|
202 |
+
],
|
203 |
+
"authors": [
|
204 |
+
{
|
205 |
+
"name": "Raphael Schweikert"
|
206 |
+
}
|
207 |
+
],
|
208 |
+
"description": "Parser for CSS Files written in PHP",
|
209 |
+
"homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
210 |
+
"keywords": [
|
211 |
+
"css",
|
212 |
+
"parser",
|
213 |
+
"stylesheet"
|
214 |
+
],
|
215 |
+
"support": {
|
216 |
+
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
|
217 |
+
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
|
218 |
+
},
|
219 |
+
"install-path": "../sabberworm/php-css-parser"
|
220 |
+
},
|
221 |
+
{
|
222 |
+
"name": "symfony/polyfill-mbstring",
|
223 |
+
"version": "v1.20.0",
|
224 |
+
"version_normalized": "1.20.0.0",
|
225 |
+
"source": {
|
226 |
+
"type": "git",
|
227 |
+
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
228 |
+
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
|
229 |
+
},
|
230 |
+
"dist": {
|
231 |
+
"type": "zip",
|
232 |
+
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
|
233 |
+
"reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
|
234 |
+
"shasum": ""
|
235 |
+
},
|
236 |
+
"require": {
|
237 |
+
"php": ">=7.1"
|
238 |
+
},
|
239 |
+
"suggest": {
|
240 |
+
"ext-mbstring": "For best performance"
|
241 |
+
},
|
242 |
+
"time": "2020-10-23T14:02:19+00:00",
|
243 |
+
"type": "library",
|
244 |
+
"extra": {
|
245 |
+
"branch-alias": {
|
246 |
+
"dev-main": "1.20-dev"
|
247 |
+
},
|
248 |
+
"thanks": {
|
249 |
+
"name": "symfony/polyfill",
|
250 |
+
"url": "https://github.com/symfony/polyfill"
|
251 |
+
}
|
252 |
+
},
|
253 |
+
"installation-source": "dist",
|
254 |
+
"autoload": {
|
255 |
+
"psr-4": {
|
256 |
+
"Symfony\\Polyfill\\Mbstring\\": ""
|
257 |
+
},
|
258 |
+
"files": [
|
259 |
+
"bootstrap.php"
|
260 |
+
]
|
261 |
+
},
|
262 |
+
"notification-url": "https://packagist.org/downloads/",
|
263 |
+
"license": [
|
264 |
+
"MIT"
|
265 |
+
],
|
266 |
+
"authors": [
|
267 |
+
{
|
268 |
+
"name": "Nicolas Grekas",
|
269 |
+
"email": "p@tchwork.com"
|
270 |
+
},
|
271 |
+
{
|
272 |
+
"name": "Symfony Community",
|
273 |
+
"homepage": "https://symfony.com/contributors"
|
274 |
+
}
|
275 |
+
],
|
276 |
+
"description": "Symfony polyfill for the Mbstring extension",
|
277 |
+
"homepage": "https://symfony.com",
|
278 |
+
"keywords": [
|
279 |
+
"compatibility",
|
280 |
+
"mbstring",
|
281 |
+
"polyfill",
|
282 |
+
"portable",
|
283 |
+
"shim"
|
284 |
+
],
|
285 |
+
"support": {
|
286 |
+
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
|
287 |
+
},
|
288 |
+
"funding": [
|
289 |
+
{
|
290 |
+
"url": "https://symfony.com/sponsor",
|
291 |
+
"type": "custom"
|
292 |
+
},
|
293 |
+
{
|
294 |
+
"url": "https://github.com/fabpot",
|
295 |
+
"type": "github"
|
296 |
+
},
|
297 |
+
{
|
298 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
299 |
+
"type": "tidelift"
|
300 |
+
}
|
301 |
+
],
|
302 |
+
"install-path": "../symfony/polyfill-mbstring"
|
303 |
+
}
|
304 |
+
],
|
305 |
+
"dev": true,
|
306 |
+
"dev-package-names": []
|
307 |
+
}
|
vendor/composer/installed.php
CHANGED
@@ -1,69 +1,69 @@
|
|
1 |
-
<?php return array (
|
2 |
-
'root' =>
|
3 |
-
array (
|
4 |
-
'pretty_version' => 'dev-master',
|
5 |
-
'version' => 'dev-master',
|
6 |
-
'aliases' =>
|
7 |
-
array (
|
8 |
-
),
|
9 |
-
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
10 |
-
'name' => '__root__',
|
11 |
-
),
|
12 |
-
'versions' =>
|
13 |
-
array (
|
14 |
-
'__root__' =>
|
15 |
-
array (
|
16 |
-
'pretty_version' => 'dev-master',
|
17 |
-
'version' => 'dev-master',
|
18 |
-
'aliases' =>
|
19 |
-
array (
|
20 |
-
),
|
21 |
-
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
22 |
-
),
|
23 |
-
'dompdf/dompdf' =>
|
24 |
-
array (
|
25 |
-
'pretty_version' => 'v1.0.2',
|
26 |
-
'version' => '1.0.2.0',
|
27 |
-
'aliases' =>
|
28 |
-
array (
|
29 |
-
),
|
30 |
-
'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
|
31 |
-
),
|
32 |
-
'phenx/php-font-lib' =>
|
33 |
-
array (
|
34 |
-
'pretty_version' => '0.5.2',
|
35 |
-
'version' => '0.5.2.0',
|
36 |
-
'aliases' =>
|
37 |
-
array (
|
38 |
-
),
|
39 |
-
'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
|
40 |
-
),
|
41 |
-
'phenx/php-svg-lib' =>
|
42 |
-
array (
|
43 |
-
'pretty_version' => 'v0.3.3',
|
44 |
-
'version' => '0.3.3.0',
|
45 |
-
'aliases' =>
|
46 |
-
array (
|
47 |
-
),
|
48 |
-
'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
|
49 |
-
),
|
50 |
-
'sabberworm/php-css-parser' =>
|
51 |
-
array (
|
52 |
-
'pretty_version' => '8.3.1',
|
53 |
-
'version' => '8.3.1.0',
|
54 |
-
'aliases' =>
|
55 |
-
array (
|
56 |
-
),
|
57 |
-
'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
|
58 |
-
),
|
59 |
-
'symfony/polyfill-mbstring' =>
|
60 |
-
array (
|
61 |
-
'pretty_version' => 'v1.20.0',
|
62 |
-
'version' => '1.20.0.0',
|
63 |
-
'aliases' =>
|
64 |
-
array (
|
65 |
-
),
|
66 |
-
'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
|
67 |
-
),
|
68 |
-
),
|
69 |
-
);
|
1 |
+
<?php return array (
|
2 |
+
'root' =>
|
3 |
+
array (
|
4 |
+
'pretty_version' => 'dev-master',
|
5 |
+
'version' => 'dev-master',
|
6 |
+
'aliases' =>
|
7 |
+
array (
|
8 |
+
),
|
9 |
+
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
10 |
+
'name' => '__root__',
|
11 |
+
),
|
12 |
+
'versions' =>
|
13 |
+
array (
|
14 |
+
'__root__' =>
|
15 |
+
array (
|
16 |
+
'pretty_version' => 'dev-master',
|
17 |
+
'version' => 'dev-master',
|
18 |
+
'aliases' =>
|
19 |
+
array (
|
20 |
+
),
|
21 |
+
'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
|
22 |
+
),
|
23 |
+
'dompdf/dompdf' =>
|
24 |
+
array (
|
25 |
+
'pretty_version' => 'v1.0.2',
|
26 |
+
'version' => '1.0.2.0',
|
27 |
+
'aliases' =>
|
28 |
+
array (
|
29 |
+
),
|
30 |
+
'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
|
31 |
+
),
|
32 |
+
'phenx/php-font-lib' =>
|
33 |
+
array (
|
34 |
+
'pretty_version' => '0.5.2',
|
35 |
+
'version' => '0.5.2.0',
|
36 |
+
'aliases' =>
|
37 |
+
array (
|
38 |
+
),
|
39 |
+
'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
|
40 |
+
),
|
41 |
+
'phenx/php-svg-lib' =>
|
42 |
+
array (
|
43 |
+
'pretty_version' => 'v0.3.3',
|
44 |
+
'version' => '0.3.3.0',
|
45 |
+
'aliases' =>
|
46 |
+
array (
|
47 |
+
),
|
48 |
+
'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
|
49 |
+
),
|
50 |
+
'sabberworm/php-css-parser' =>
|
51 |
+
array (
|
52 |
+
'pretty_version' => '8.3.1',
|
53 |
+
'version' => '8.3.1.0',
|
54 |
+
'aliases' =>
|
55 |
+
array (
|
56 |
+
),
|
57 |
+
'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
|
58 |
+
),
|
59 |
+
'symfony/polyfill-mbstring' =>
|
60 |
+
array (
|
61 |
+
'pretty_version' => 'v1.20.0',
|
62 |
+
'version' => '1.20.0.0',
|
63 |
+
'aliases' =>
|
64 |
+
array (
|
65 |
+
),
|
66 |
+
'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
|
67 |
+
),
|
68 |
+
),
|
69 |
+
);
|
vendor/symfony/polyfill-mbstring/LICENSE
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
-
Copyright (c) 2015-2019 Fabien Potencier
|
2 |
-
|
3 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
-
of this software and associated documentation files (the "Software"), to deal
|
5 |
-
in the Software without restriction, including without limitation the rights
|
6 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
-
copies of the Software, and to permit persons to whom the Software is furnished
|
8 |
-
to do so, subject to the following conditions:
|
9 |
-
|
10 |
-
The above copyright notice and this permission notice shall be included in all
|
11 |
-
copies or substantial portions of the Software.
|
12 |
-
|
13 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
-
THE SOFTWARE.
|
1 |
+
Copyright (c) 2015-2019 Fabien Potencier
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is furnished
|
8 |
+
to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in all
|
11 |
+
copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
vendor/symfony/polyfill-mbstring/Mbstring.php
CHANGED
@@ -1,846 +1,846 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Polyfill\Mbstring;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
|
16 |
-
*
|
17 |
-
* Implemented:
|
18 |
-
* - mb_chr - Returns a specific character from its Unicode code point
|
19 |
-
* - mb_convert_encoding - Convert character encoding
|
20 |
-
* - mb_convert_variables - Convert character code in variable(s)
|
21 |
-
* - mb_decode_mimeheader - Decode string in MIME header field
|
22 |
-
* - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
|
23 |
-
* - mb_decode_numericentity - Decode HTML numeric string reference to character
|
24 |
-
* - mb_encode_numericentity - Encode character to HTML numeric string reference
|
25 |
-
* - mb_convert_case - Perform case folding on a string
|
26 |
-
* - mb_detect_encoding - Detect character encoding
|
27 |
-
* - mb_get_info - Get internal settings of mbstring
|
28 |
-
* - mb_http_input - Detect HTTP input character encoding
|
29 |
-
* - mb_http_output - Set/Get HTTP output character encoding
|
30 |
-
* - mb_internal_encoding - Set/Get internal character encoding
|
31 |
-
* - mb_list_encodings - Returns an array of all supported encodings
|
32 |
-
* - mb_ord - Returns the Unicode code point of a character
|
33 |
-
* - mb_output_handler - Callback function converts character encoding in output buffer
|
34 |
-
* - mb_scrub - Replaces ill-formed byte sequences with substitute characters
|
35 |
-
* - mb_strlen - Get string length
|
36 |
-
* - mb_strpos - Find position of first occurrence of string in a string
|
37 |
-
* - mb_strrpos - Find position of last occurrence of a string in a string
|
38 |
-
* - mb_str_split - Convert a string to an array
|
39 |
-
* - mb_strtolower - Make a string lowercase
|
40 |
-
* - mb_strtoupper - Make a string uppercase
|
41 |
-
* - mb_substitute_character - Set/Get substitution character
|
42 |
-
* - mb_substr - Get part of string
|
43 |
-
* - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
|
44 |
-
* - mb_stristr - Finds first occurrence of a string within another, case insensitive
|
45 |
-
* - mb_strrchr - Finds the last occurrence of a character in a string within another
|
46 |
-
* - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
|
47 |
-
* - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
|
48 |
-
* - mb_strstr - Finds first occurrence of a string within another
|
49 |
-
* - mb_strwidth - Return width of string
|
50 |
-
* - mb_substr_count - Count the number of substring occurrences
|
51 |
-
*
|
52 |
-
* Not implemented:
|
53 |
-
* - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
|
54 |
-
* - mb_ereg_* - Regular expression with multibyte support
|
55 |
-
* - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
|
56 |
-
* - mb_preferred_mime_name - Get MIME charset string
|
57 |
-
* - mb_regex_encoding - Returns current encoding for multibyte regex as string
|
58 |
-
* - mb_regex_set_options - Set/Get the default options for mbregex functions
|
59 |
-
* - mb_send_mail - Send encoded mail
|
60 |
-
* - mb_split - Split multibyte string using regular expression
|
61 |
-
* - mb_strcut - Get part of string
|
62 |
-
* - mb_strimwidth - Get truncated string with specified width
|
63 |
-
*
|
64 |
-
* @author Nicolas Grekas <p@tchwork.com>
|
65 |
-
*
|
66 |
-
* @internal
|
67 |
-
*/
|
68 |
-
final class Mbstring
|
69 |
-
{
|
70 |
-
const MB_CASE_FOLD = PHP_INT_MAX;
|
71 |
-
|
72 |
-
private static $encodingList = array('ASCII', 'UTF-8');
|
73 |
-
private static $language = 'neutral';
|
74 |
-
private static $internalEncoding = 'UTF-8';
|
75 |
-
private static $caseFold = array(
|
76 |
-
array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
|
77 |
-
array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'),
|
78 |
-
);
|
79 |
-
|
80 |
-
public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
|
81 |
-
{
|
82 |
-
if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
|
83 |
-
$fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
|
84 |
-
} else {
|
85 |
-
$fromEncoding = self::getEncoding($fromEncoding);
|
86 |
-
}
|
87 |
-
|
88 |
-
$toEncoding = self::getEncoding($toEncoding);
|
89 |
-
|
90 |
-
if ('BASE64' === $fromEncoding) {
|
91 |
-
$s = base64_decode($s);
|
92 |
-
$fromEncoding = $toEncoding;
|
93 |
-
}
|
94 |
-
|
95 |
-
if ('BASE64' === $toEncoding) {
|
96 |
-
return base64_encode($s);
|
97 |
-
}
|
98 |
-
|
99 |
-
if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
|
100 |
-
if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
|
101 |
-
$fromEncoding = 'Windows-1252';
|
102 |
-
}
|
103 |
-
if ('UTF-8' !== $fromEncoding) {
|
104 |
-
$s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
|
105 |
-
}
|
106 |
-
|
107 |
-
return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
|
108 |
-
}
|
109 |
-
|
110 |
-
if ('HTML-ENTITIES' === $fromEncoding) {
|
111 |
-
$s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
|
112 |
-
$fromEncoding = 'UTF-8';
|
113 |
-
}
|
114 |
-
|
115 |
-
return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
|
116 |
-
}
|
117 |
-
|
118 |
-
public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
|
119 |
-
{
|
120 |
-
$ok = true;
|
121 |
-
array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
|
122 |
-
if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
|
123 |
-
$ok = false;
|
124 |
-
}
|
125 |
-
});
|
126 |
-
|
127 |
-
return $ok ? $fromEncoding : false;
|
128 |
-
}
|
129 |
-
|
130 |
-
public static function mb_decode_mimeheader($s)
|
131 |
-
{
|
132 |
-
return iconv_mime_decode($s, 2, self::$internalEncoding);
|
133 |
-
}
|
134 |
-
|
135 |
-
public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
|
136 |
-
{
|
137 |
-
trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
|
138 |
-
}
|
139 |
-
|
140 |
-
public static function mb_decode_numericentity($s, $convmap, $encoding = null)
|
141 |
-
{
|
142 |
-
if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
|
143 |
-
trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
144 |
-
|
145 |
-
return null;
|
146 |
-
}
|
147 |
-
|
148 |
-
if (!\is_array($convmap) || !$convmap) {
|
149 |
-
return false;
|
150 |
-
}
|
151 |
-
|
152 |
-
if (null !== $encoding && !\is_scalar($encoding)) {
|
153 |
-
trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
154 |
-
|
155 |
-
return ''; // Instead of null (cf. mb_encode_numericentity).
|
156 |
-
}
|
157 |
-
|
158 |
-
$s = (string) $s;
|
159 |
-
if ('' === $s) {
|
160 |
-
return '';
|
161 |
-
}
|
162 |
-
|
163 |
-
$encoding = self::getEncoding($encoding);
|
164 |
-
|
165 |
-
if ('UTF-8' === $encoding) {
|
166 |
-
$encoding = null;
|
167 |
-
if (!preg_match('//u', $s)) {
|
168 |
-
$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
|
169 |
-
}
|
170 |
-
} else {
|
171 |
-
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
172 |
-
}
|
173 |
-
|
174 |
-
$cnt = floor(\count($convmap) / 4) * 4;
|
175 |
-
|
176 |
-
for ($i = 0; $i < $cnt; $i += 4) {
|
177 |
-
// collector_decode_htmlnumericentity ignores $convmap[$i + 3]
|
178 |
-
$convmap[$i] += $convmap[$i + 2];
|
179 |
-
$convmap[$i + 1] += $convmap[$i + 2];
|
180 |
-
}
|
181 |
-
|
182 |
-
$s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
|
183 |
-
$c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
|
184 |
-
for ($i = 0; $i < $cnt; $i += 4) {
|
185 |
-
if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
|
186 |
-
return Mbstring::mb_chr($c - $convmap[$i + 2]);
|
187 |
-
}
|
188 |
-
}
|
189 |
-
|
190 |
-
return $m[0];
|
191 |
-
}, $s);
|
192 |
-
|
193 |
-
if (null === $encoding) {
|
194 |
-
return $s;
|
195 |
-
}
|
196 |
-
|
197 |
-
return iconv('UTF-8', $encoding.'//IGNORE', $s);
|
198 |
-
}
|
199 |
-
|
200 |
-
public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
|
201 |
-
{
|
202 |
-
if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
|
203 |
-
trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
204 |
-
|
205 |
-
return null;
|
206 |
-
}
|
207 |
-
|
208 |
-
if (!\is_array($convmap) || !$convmap) {
|
209 |
-
return false;
|
210 |
-
}
|
211 |
-
|
212 |
-
if (null !== $encoding && !\is_scalar($encoding)) {
|
213 |
-
trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
214 |
-
|
215 |
-
return null; // Instead of '' (cf. mb_decode_numericentity).
|
216 |
-
}
|
217 |
-
|
218 |
-
if (null !== $is_hex && !\is_scalar($is_hex)) {
|
219 |
-
trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
|
220 |
-
|
221 |
-
return null;
|
222 |
-
}
|
223 |
-
|
224 |
-
$s = (string) $s;
|
225 |
-
if ('' === $s) {
|
226 |
-
return '';
|
227 |
-
}
|
228 |
-
|
229 |
-
$encoding = self::getEncoding($encoding);
|
230 |
-
|
231 |
-
if ('UTF-8' === $encoding) {
|
232 |
-
$encoding = null;
|
233 |
-
if (!preg_match('//u', $s)) {
|
234 |
-
$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
|
235 |
-
}
|
236 |
-
} else {
|
237 |
-
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
238 |
-
}
|
239 |
-
|
240 |
-
static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
|
241 |
-
|
242 |
-
$cnt = floor(\count($convmap) / 4) * 4;
|
243 |
-
$i = 0;
|
244 |
-
$len = \strlen($s);
|
245 |
-
$result = '';
|
246 |
-
|
247 |
-
while ($i < $len) {
|
248 |
-
$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
|
249 |
-
$uchr = substr($s, $i, $ulen);
|
250 |
-
$i += $ulen;
|
251 |
-
$c = self::mb_ord($uchr);
|
252 |
-
|
253 |
-
for ($j = 0; $j < $cnt; $j += 4) {
|
254 |
-
if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
|
255 |
-
$cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
|
256 |
-
$result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
|
257 |
-
continue 2;
|
258 |
-
}
|
259 |
-
}
|
260 |
-
$result .= $uchr;
|
261 |
-
}
|
262 |
-
|
263 |
-
if (null === $encoding) {
|
264 |
-
return $result;
|
265 |
-
}
|
266 |
-
|
267 |
-
return iconv('UTF-8', $encoding.'//IGNORE', $result);
|
268 |
-
}
|
269 |
-
|
270 |
-
public static function mb_convert_case($s, $mode, $encoding = null)
|
271 |
-
{
|
272 |
-
$s = (string) $s;
|
273 |
-
if ('' === $s) {
|
274 |
-
return '';
|
275 |
-
}
|
276 |
-
|
277 |
-
$encoding = self::getEncoding($encoding);
|
278 |
-
|
279 |
-
if ('UTF-8' === $encoding) {
|
280 |
-
$encoding = null;
|
281 |
-
if (!preg_match('//u', $s)) {
|
282 |
-
$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
|
283 |
-
}
|
284 |
-
} else {
|
285 |
-
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
286 |
-
}
|
287 |
-
|
288 |
-
if (MB_CASE_TITLE == $mode) {
|
289 |
-
static $titleRegexp = null;
|
290 |
-
if (null === $titleRegexp) {
|
291 |
-
$titleRegexp = self::getData('titleCaseRegexp');
|
292 |
-
}
|
293 |
-
$s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
|
294 |
-
} else {
|
295 |
-
if (MB_CASE_UPPER == $mode) {
|
296 |
-
static $upper = null;
|
297 |
-
if (null === $upper) {
|
298 |
-
$upper = self::getData('upperCase');
|
299 |
-
}
|
300 |
-
$map = $upper;
|
301 |
-
} else {
|
302 |
-
if (self::MB_CASE_FOLD === $mode) {
|
303 |
-
$s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
|
304 |
-
}
|
305 |
-
|
306 |
-
static $lower = null;
|
307 |
-
if (null === $lower) {
|
308 |
-
$lower = self::getData('lowerCase');
|
309 |
-
}
|
310 |
-
$map = $lower;
|
311 |
-
}
|
312 |
-
|
313 |
-
static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
|
314 |
-
|
315 |
-
$i = 0;
|
316 |
-
$len = \strlen($s);
|
317 |
-
|
318 |
-
while ($i < $len) {
|
319 |
-
$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
|
320 |
-
$uchr = substr($s, $i, $ulen);
|
321 |
-
$i += $ulen;
|
322 |
-
|
323 |
-
if (isset($map[$uchr])) {
|
324 |
-
$uchr = $map[$uchr];
|
325 |
-
$nlen = \strlen($uchr);
|
326 |
-
|
327 |
-
if ($nlen == $ulen) {
|
328 |
-
$nlen = $i;
|
329 |
-
do {
|
330 |
-
$s[--$nlen] = $uchr[--$ulen];
|
331 |
-
} while ($ulen);
|
332 |
-
} else {
|
333 |
-
$s = substr_replace($s, $uchr, $i - $ulen, $ulen);
|
334 |
-
$len += $nlen - $ulen;
|
335 |
-
$i += $nlen - $ulen;
|
336 |
-
}
|
337 |
-
}
|
338 |
-
}
|
339 |
-
}
|
340 |
-
|
341 |
-
if (null === $encoding) {
|
342 |
-
return $s;
|
343 |
-
}
|
344 |
-
|
345 |
-
return iconv('UTF-8', $encoding.'//IGNORE', $s);
|
346 |
-
}
|
347 |
-
|
348 |
-
public static function mb_internal_encoding($encoding = null)
|
349 |
-
{
|
350 |
-
if (null === $encoding) {
|
351 |
-
return self::$internalEncoding;
|
352 |
-
}
|
353 |
-
|
354 |
-
$encoding = self::getEncoding($encoding);
|
355 |
-
|
356 |
-
if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
|
357 |
-
self::$internalEncoding = $encoding;
|
358 |
-
|
359 |
-
return true;
|
360 |
-
}
|
361 |
-
|
362 |
-
return false;
|
363 |
-
}
|
364 |
-
|
365 |
-
public static function mb_language($lang = null)
|
366 |
-
{
|
367 |
-
if (null === $lang) {
|
368 |
-
return self::$language;
|
369 |
-
}
|
370 |
-
|
371 |
-
switch ($lang = strtolower($lang)) {
|
372 |
-
case 'uni':
|
373 |
-
case 'neutral':
|
374 |
-
self::$language = $lang;
|
375 |
-
|
376 |
-
return true;
|
377 |
-
}
|
378 |
-
|
379 |
-
return false;
|
380 |
-
}
|
381 |
-
|
382 |
-
public static function mb_list_encodings()
|
383 |
-
{
|
384 |
-
return array('UTF-8');
|
385 |
-
}
|
386 |
-
|
387 |
-
public static function mb_encoding_aliases($encoding)
|
388 |
-
{
|
389 |
-
switch (strtoupper($encoding)) {
|
390 |
-
case 'UTF8':
|
391 |
-
case 'UTF-8':
|
392 |
-
return array('utf8');
|
393 |
-
}
|
394 |
-
|
395 |
-
return false;
|
396 |
-
}
|
397 |
-
|
398 |
-
public static function mb_check_encoding($var = null, $encoding = null)
|
399 |
-
{
|
400 |
-
if (null === $encoding) {
|
401 |
-
if (null === $var) {
|
402 |
-
return false;
|
403 |
-
}
|
404 |
-
$encoding = self::$internalEncoding;
|
405 |
-
}
|
406 |
-
|
407 |
-
return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
|
408 |
-
}
|
409 |
-
|
410 |
-
public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
|
411 |
-
{
|
412 |
-
if (null === $encodingList) {
|
413 |
-
$encodingList = self::$encodingList;
|
414 |
-
} else {
|
415 |
-
if (!\is_array($encodingList)) {
|
416 |
-
$encodingList = array_map('trim', explode(',', $encodingList));
|
417 |
-
}
|
418 |
-
$encodingList = array_map('strtoupper', $encodingList);
|
419 |
-
}
|
420 |
-
|
421 |
-
foreach ($encodingList as $enc) {
|
422 |
-
switch ($enc) {
|
423 |
-
case 'ASCII':
|
424 |
-
if (!preg_match('/[\x80-\xFF]/', $str)) {
|
425 |
-
return $enc;
|
426 |
-
}
|
427 |
-
break;
|
428 |
-
|
429 |
-
case 'UTF8':
|
430 |
-
case 'UTF-8':
|
431 |
-
if (preg_match('//u', $str)) {
|
432 |
-
return 'UTF-8';
|
433 |
-
}
|
434 |
-
break;
|
435 |
-
|
436 |
-
default:
|
437 |
-
if (0 === strncmp($enc, 'ISO-8859-', 9)) {
|
438 |
-
return $enc;
|
439 |
-
}
|
440 |
-
}
|
441 |
-
}
|
442 |
-
|
443 |
-
return false;
|
444 |
-
}
|
445 |
-
|
446 |
-
public static function mb_detect_order($encodingList = null)
|
447 |
-
{
|
448 |
-
if (null === $encodingList) {
|
449 |
-
return self::$encodingList;
|
450 |
-
}
|
451 |
-
|
452 |
-
if (!\is_array($encodingList)) {
|
453 |
-
$encodingList = array_map('trim', explode(',', $encodingList));
|
454 |
-
}
|
455 |
-
$encodingList = array_map('strtoupper', $encodingList);
|
456 |
-
|
457 |
-
foreach ($encodingList as $enc) {
|
458 |
-
switch ($enc) {
|
459 |
-
default:
|
460 |
-
if (strncmp($enc, 'ISO-8859-', 9)) {
|
461 |
-
return false;
|
462 |
-
}
|
463 |
-
// no break
|
464 |
-
case 'ASCII':
|
465 |
-
case 'UTF8':
|
466 |
-
case 'UTF-8':
|
467 |
-
}
|
468 |
-
}
|
469 |
-
|
470 |
-
self::$encodingList = $encodingList;
|
471 |
-
|
472 |
-
return true;
|
473 |
-
}
|
474 |
-
|
475 |
-
public static function mb_strlen($s, $encoding = null)
|
476 |
-
{
|
477 |
-
$encoding = self::getEncoding($encoding);
|
478 |
-
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
479 |
-
return \strlen($s);
|
480 |
-
}
|
481 |
-
|
482 |
-
return @iconv_strlen($s, $encoding);
|
483 |
-
}
|
484 |
-
|
485 |
-
public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
|
486 |
-
{
|
487 |
-
$encoding = self::getEncoding($encoding);
|
488 |
-
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
489 |
-
return strpos($haystack, $needle, $offset);
|
490 |
-
}
|
491 |
-
|
492 |
-
$needle = (string) $needle;
|
493 |
-
if ('' === $needle) {
|
494 |
-
trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
|
495 |
-
|
496 |
-
return false;
|
497 |
-
}
|
498 |
-
|
499 |
-
return iconv_strpos($haystack, $needle, $offset, $encoding);
|
500 |
-
}
|
501 |
-
|
502 |
-
public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
|
503 |
-
{
|
504 |
-
$encoding = self::getEncoding($encoding);
|
505 |
-
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
506 |
-
return strrpos($haystack, $needle, $offset);
|
507 |
-
}
|
508 |
-
|
509 |
-
if ($offset != (int) $offset) {
|
510 |
-
$offset = 0;
|
511 |
-
} elseif ($offset = (int) $offset) {
|
512 |
-
if ($offset < 0) {
|
513 |
-
if (0 > $offset += self::mb_strlen($needle)) {
|
514 |
-
$haystack = self::mb_substr($haystack, 0, $offset, $encoding);
|
515 |
-
}
|
516 |
-
$offset = 0;
|
517 |
-
} else {
|
518 |
-
$haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
|
519 |
-
}
|
520 |
-
}
|
521 |
-
|
522 |
-
$pos = iconv_strrpos($haystack, $needle, $encoding);
|
523 |
-
|
524 |
-
return false !== $pos ? $offset + $pos : false;
|
525 |
-
}
|
526 |
-
|
527 |
-
public static function mb_str_split($string, $split_length = 1, $encoding = null)
|
528 |
-
{
|
529 |
-
if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
|
530 |
-
trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
|
531 |
-
|
532 |
-
return null;
|
533 |
-
}
|
534 |
-
|
535 |
-
if (1 > $split_length = (int) $split_length) {
|
536 |
-
trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
|
537 |
-
|
538 |
-
return false;
|
539 |
-
}
|
540 |
-
|
541 |
-
if (null === $encoding) {
|
542 |
-
$encoding = mb_internal_encoding();
|
543 |
-
}
|
544 |
-
|
545 |
-
if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
|
546 |
-
$rx = '/(';
|
547 |
-
while (65535 < $split_length) {
|
548 |
-
$rx .= '.{65535}';
|
549 |
-
$split_length -= 65535;
|
550 |
-
}
|
551 |
-
$rx .= '.{'.$split_length.'})/us';
|
552 |
-
|
553 |
-
return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
554 |
-
}
|
555 |
-
|
556 |
-
$result = array();
|
557 |
-
$length = mb_strlen($string, $encoding);
|
558 |
-
|
559 |
-
for ($i = 0; $i < $length; $i += $split_length) {
|
560 |
-
$result[] = mb_substr($string, $i, $split_length, $encoding);
|
561 |
-
}
|
562 |
-
|
563 |
-
return $result;
|
564 |
-
}
|
565 |
-
|
566 |
-
public static function mb_strtolower($s, $encoding = null)
|
567 |
-
{
|
568 |
-
return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
|
569 |
-
}
|
570 |
-
|
571 |
-
public static function mb_strtoupper($s, $encoding = null)
|
572 |
-
{
|
573 |
-
return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
|
574 |
-
}
|
575 |
-
|
576 |
-
public static function mb_substitute_character($c = null)
|
577 |
-
{
|
578 |
-
if (0 === strcasecmp($c, 'none')) {
|
579 |
-
return true;
|
580 |
-
}
|
581 |
-
|
582 |
-
return null !== $c ? false : 'none';
|
583 |
-
}
|
584 |
-
|
585 |
-
public static function mb_substr($s, $start, $length = null, $encoding = null)
|
586 |
-
{
|
587 |
-
$encoding = self::getEncoding($encoding);
|
588 |
-
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
589 |
-
return (string) substr($s, $start, null === $length ? 2147483647 : $length);
|
590 |
-
}
|
591 |
-
|
592 |
-
if ($start < 0) {
|
593 |
-
$start = iconv_strlen($s, $encoding) + $start;
|
594 |
-
if ($start < 0) {
|
595 |
-
$start = 0;
|
596 |
-
}
|
597 |
-
}
|
598 |
-
|
599 |
-
if (null === $length) {
|
600 |
-
$length = 2147483647;
|
601 |
-
} elseif ($length < 0) {
|
602 |
-
$length = iconv_strlen($s, $encoding) + $length - $start;
|
603 |
-
if ($length < 0) {
|
604 |
-
return '';
|
605 |
-
}
|
606 |
-
}
|
607 |
-
|
608 |
-
return (string) iconv_substr($s, $start, $length, $encoding);
|
609 |
-
}
|
610 |
-
|
611 |
-
public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
|
612 |
-
{
|
613 |
-
$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
|
614 |
-
$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
|
615 |
-
|
616 |
-
return self::mb_strpos($haystack, $needle, $offset, $encoding);
|
617 |
-
}
|
618 |
-
|
619 |
-
public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
|
620 |
-
{
|
621 |
-
$pos = self::mb_stripos($haystack, $needle, 0, $encoding);
|
622 |
-
|
623 |
-
return self::getSubpart($pos, $part, $haystack, $encoding);
|
624 |
-
}
|
625 |
-
|
626 |
-
public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
|
627 |
-
{
|
628 |
-
$encoding = self::getEncoding($encoding);
|
629 |
-
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
630 |
-
$pos = strrpos($haystack, $needle);
|
631 |
-
} else {
|
632 |
-
$needle = self::mb_substr($needle, 0, 1, $encoding);
|
633 |
-
$pos = iconv_strrpos($haystack, $needle, $encoding);
|
634 |
-
}
|
635 |
-
|
636 |
-
return self::getSubpart($pos, $part, $haystack, $encoding);
|
637 |
-
}
|
638 |
-
|
639 |
-
public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
|
640 |
-
{
|
641 |
-
$needle = self::mb_substr($needle, 0, 1, $encoding);
|
642 |
-
$pos = self::mb_strripos($haystack, $needle, $encoding);
|
643 |
-
|
644 |
-
return self::getSubpart($pos, $part, $haystack, $encoding);
|
645 |
-
}
|
646 |
-
|
647 |
-
public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
|
648 |
-
{
|
649 |
-
$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
|
650 |
-
$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
|
651 |
-
|
652 |
-
return self::mb_strrpos($haystack, $needle, $offset, $encoding);
|
653 |
-
}
|
654 |
-
|
655 |
-
public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
|
656 |
-
{
|
657 |
-
$pos = strpos($haystack, $needle);
|
658 |
-
if (false === $pos) {
|
659 |
-
return false;
|
660 |
-
}
|
661 |
-
if ($part) {
|
662 |
-
return substr($haystack, 0, $pos);
|
663 |
-
}
|
664 |
-
|
665 |
-
return substr($haystack, $pos);
|
666 |
-
}
|
667 |
-
|
668 |
-
public static function mb_get_info($type = 'all')
|
669 |
-
{
|
670 |
-
$info = array(
|
671 |
-
'internal_encoding' => self::$internalEncoding,
|
672 |
-
'http_output' => 'pass',
|
673 |
-
'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
|
674 |
-
'func_overload' => 0,
|
675 |
-
'func_overload_list' => 'no overload',
|
676 |
-
'mail_charset' => 'UTF-8',
|
677 |
-
'mail_header_encoding' => 'BASE64',
|
678 |
-
'mail_body_encoding' => 'BASE64',
|
679 |
-
'illegal_chars' => 0,
|
680 |
-
'encoding_translation' => 'Off',
|
681 |
-
'language' => self::$language,
|
682 |
-
'detect_order' => self::$encodingList,
|
683 |
-
'substitute_character' => 'none',
|
684 |
-
'strict_detection' => 'Off',
|
685 |
-
);
|
686 |
-
|
687 |
-
if ('all' === $type) {
|
688 |
-
return $info;
|
689 |
-
}
|
690 |
-
if (isset($info[$type])) {
|
691 |
-
return $info[$type];
|
692 |
-
}
|
693 |
-
|
694 |
-
return false;
|
695 |
-
}
|
696 |
-
|
697 |
-
public static function mb_http_input($type = '')
|
698 |
-
{
|
699 |
-
return false;
|
700 |
-
}
|
701 |
-
|
702 |
-
public static function mb_http_output($encoding = null)
|
703 |
-
{
|
704 |
-
return null !== $encoding ? 'pass' === $encoding : 'pass';
|
705 |
-
}
|
706 |
-
|
707 |
-
public static function mb_strwidth($s, $encoding = null)
|
708 |
-
{
|
709 |
-
$encoding = self::getEncoding($encoding);
|
710 |
-
|
711 |
-
if ('UTF-8' !== $encoding) {
|
712 |
-
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
713 |
-
}
|
714 |
-
|
715 |
-
$s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
|
716 |
-
|
717 |
-
return ($wide << 1) + iconv_strlen($s, 'UTF-8');
|
718 |
-
}
|
719 |
-
|
720 |
-
public static function mb_substr_count($haystack, $needle, $encoding = null)
|
721 |
-
{
|
722 |
-
return substr_count($haystack, $needle);
|
723 |
-
}
|
724 |
-
|
725 |
-
public static function mb_output_handler($contents, $status)
|
726 |
-
{
|
727 |
-
return $contents;
|
728 |
-
}
|
729 |
-
|
730 |
-
public static function mb_chr($code, $encoding = null)
|
731 |
-
{
|
732 |
-
if (0x80 > $code %= 0x200000) {
|
733 |
-
$s = \chr($code);
|
734 |
-
} elseif (0x800 > $code) {
|
735 |
-
$s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
|
736 |
-
} elseif (0x10000 > $code) {
|
737 |
-
$s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
|
738 |
-
} else {
|
739 |
-
$s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
|
740 |
-
}
|
741 |
-
|
742 |
-
if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
|
743 |
-
$s = mb_convert_encoding($s, $encoding, 'UTF-8');
|
744 |
-
}
|
745 |
-
|
746 |
-
return $s;
|
747 |
-
}
|
748 |
-
|
749 |
-
public static function mb_ord($s, $encoding = null)
|
750 |
-
{
|
751 |
-
if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
|
752 |
-
$s = mb_convert_encoding($s, 'UTF-8', $encoding);
|
753 |
-
}
|
754 |
-
|
755 |
-
if (1 === \strlen($s)) {
|
756 |
-
return \ord($s);
|
757 |
-
}
|
758 |
-
|
759 |
-
$code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
|
760 |
-
if (0xF0 <= $code) {
|
761 |
-
return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
|
762 |
-
}
|
763 |
-
if (0xE0 <= $code) {
|
764 |
-
return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
|
765 |
-
}
|
766 |
-
if (0xC0 <= $code) {
|
767 |
-
return (($code - 0xC0) << 6) + $s[2] - 0x80;
|
768 |
-
}
|
769 |
-
|
770 |
-
return $code;
|
771 |
-
}
|
772 |
-
|
773 |
-
private static function getSubpart($pos, $part, $haystack, $encoding)
|
774 |
-
{
|
775 |
-
if (false === $pos) {
|
776 |
-
return false;
|
777 |
-
}
|
778 |
-
if ($part) {
|
779 |
-
return self::mb_substr($haystack, 0, $pos, $encoding);
|
780 |
-
}
|
781 |
-
|
782 |
-
return self::mb_substr($haystack, $pos, null, $encoding);
|
783 |
-
}
|
784 |
-
|
785 |
-
private static function html_encoding_callback(array $m)
|
786 |
-
{
|
787 |
-
$i = 1;
|
788 |
-
$entities = '';
|
789 |
-
$m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
|
790 |
-
|
791 |
-
while (isset($m[$i])) {
|
792 |
-
if (0x80 > $m[$i]) {
|
793 |
-
$entities .= \chr($m[$i++]);
|
794 |
-
continue;
|
795 |
-
}
|
796 |
-
if (0xF0 <= $m[$i]) {
|
797 |
-
$c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
|
798 |
-
} elseif (0xE0 <= $m[$i]) {
|
799 |
-
$c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
|
800 |
-
} else {
|
801 |
-
$c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
|
802 |
-
}
|
803 |
-
|
804 |
-
$entities .= '&#'.$c.';';
|
805 |
-
}
|
806 |
-
|
807 |
-
return $entities;
|
808 |
-
}
|
809 |
-
|
810 |
-
private static function title_case(array $s)
|
811 |
-
{
|
812 |
-
return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
|
813 |
-
}
|
814 |
-
|
815 |
-
private static function getData($file)
|
816 |
-
{
|
817 |
-
if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
|
818 |
-
return require $file;
|
819 |
-
}
|
820 |
-
|
821 |
-
return false;
|
822 |
-
}
|
823 |
-
|
824 |
-
private static function getEncoding($encoding)
|
825 |
-
{
|
826 |
-
if (null === $encoding) {
|
827 |
-
return self::$internalEncoding;
|
828 |
-
}
|
829 |
-
|
830 |
-
if ('UTF-8' === $encoding) {
|
831 |
-
return 'UTF-8';
|
832 |
-
}
|
833 |
-
|
834 |
-
$encoding = strtoupper($encoding);
|
835 |
-
|
836 |
-
if ('8BIT' === $encoding || 'BINARY' === $encoding) {
|
837 |
-
return 'CP850';
|
838 |
-
}
|
839 |
-
|
840 |
-
if ('UTF8' === $encoding) {
|
841 |
-
return 'UTF-8';
|
842 |
-
}
|
843 |
-
|
844 |
-
return $encoding;
|
845 |
-
}
|
846 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Symfony package.
|
5 |
+
*
|
6 |
+
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Symfony\Polyfill\Mbstring;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
|
16 |
+
*
|
17 |
+
* Implemented:
|
18 |
+
* - mb_chr - Returns a specific character from its Unicode code point
|
19 |
+
* - mb_convert_encoding - Convert character encoding
|
20 |
+
* - mb_convert_variables - Convert character code in variable(s)
|
21 |
+
* - mb_decode_mimeheader - Decode string in MIME header field
|
22 |
+
* - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
|
23 |
+
* - mb_decode_numericentity - Decode HTML numeric string reference to character
|
24 |
+
* - mb_encode_numericentity - Encode character to HTML numeric string reference
|
25 |
+
* - mb_convert_case - Perform case folding on a string
|
26 |
+
* - mb_detect_encoding - Detect character encoding
|
27 |
+
* - mb_get_info - Get internal settings of mbstring
|
28 |
+
* - mb_http_input - Detect HTTP input character encoding
|
29 |
+
* - mb_http_output - Set/Get HTTP output character encoding
|
30 |
+
* - mb_internal_encoding - Set/Get internal character encoding
|
31 |
+
* - mb_list_encodings - Returns an array of all supported encodings
|
32 |
+
* - mb_ord - Returns the Unicode code point of a character
|
33 |
+
* - mb_output_handler - Callback function converts character encoding in output buffer
|
34 |
+
* - mb_scrub - Replaces ill-formed byte sequences with substitute characters
|
35 |
+
* - mb_strlen - Get string length
|
36 |
+
* - mb_strpos - Find position of first occurrence of string in a string
|
37 |
+
* - mb_strrpos - Find position of last occurrence of a string in a string
|
38 |
+
* - mb_str_split - Convert a string to an array
|
39 |
+
* - mb_strtolower - Make a string lowercase
|
40 |
+
* - mb_strtoupper - Make a string uppercase
|
41 |
+
* - mb_substitute_character - Set/Get substitution character
|
42 |
+
* - mb_substr - Get part of string
|
43 |
+
* - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
|
44 |
+
* - mb_stristr - Finds first occurrence of a string within another, case insensitive
|
45 |
+
* - mb_strrchr - Finds the last occurrence of a character in a string within another
|
46 |
+
* - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
|
47 |
+
* - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
|
48 |
+
* - mb_strstr - Finds first occurrence of a string within another
|
49 |
+
* - mb_strwidth - Return width of string
|
50 |
+
* - mb_substr_count - Count the number of substring occurrences
|
51 |
+
*
|
52 |
+
* Not implemented:
|
53 |
+
* - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
|
54 |
+
* - mb_ereg_* - Regular expression with multibyte support
|
55 |
+
* - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
|
56 |
+
* - mb_preferred_mime_name - Get MIME charset string
|
57 |
+
* - mb_regex_encoding - Returns current encoding for multibyte regex as string
|
58 |
+
* - mb_regex_set_options - Set/Get the default options for mbregex functions
|
59 |
+
* - mb_send_mail - Send encoded mail
|
60 |
+
* - mb_split - Split multibyte string using regular expression
|
61 |
+
* - mb_strcut - Get part of string
|
62 |
+
* - mb_strimwidth - Get truncated string with specified width
|
63 |
+
*
|
64 |
+
* @author Nicolas Grekas <p@tchwork.com>
|
65 |
+
*
|
66 |
+
* @internal
|
67 |
+
*/
|
68 |
+
final class Mbstring
|
69 |
+
{
|
70 |
+
const MB_CASE_FOLD = PHP_INT_MAX;
|
71 |
+
|
72 |
+
private static $encodingList = array('ASCII', 'UTF-8');
|
73 |
+
private static $language = 'neutral';
|
74 |
+
private static $internalEncoding = 'UTF-8';
|
75 |
+
private static $caseFold = array(
|
76 |
+
array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
|
77 |
+
array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'),
|
78 |
+
);
|
79 |
+
|
80 |
+
public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
|
81 |
+
{
|
82 |
+
if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
|
83 |
+
$fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
|
84 |
+
} else {
|
85 |
+
$fromEncoding = self::getEncoding($fromEncoding);
|
86 |
+
}
|
87 |
+
|
88 |
+
$toEncoding = self::getEncoding($toEncoding);
|
89 |
+
|
90 |
+
if ('BASE64' === $fromEncoding) {
|
91 |
+
$s = base64_decode($s);
|
92 |
+
$fromEncoding = $toEncoding;
|
93 |
+
}
|
94 |
+
|
95 |
+
if ('BASE64' === $toEncoding) {
|
96 |
+
return base64_encode($s);
|
97 |
+
}
|
98 |
+
|
99 |
+
if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
|
100 |
+
if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
|
101 |
+
$fromEncoding = 'Windows-1252';
|
102 |
+
}
|
103 |
+
if ('UTF-8' !== $fromEncoding) {
|
104 |
+
$s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
|
105 |
+
}
|
106 |
+
|
107 |
+
return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
|
108 |
+
}
|
109 |
+
|
110 |
+
if ('HTML-ENTITIES' === $fromEncoding) {
|
111 |
+
$s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
|
112 |
+
$fromEncoding = 'UTF-8';
|
113 |
+
}
|
114 |
+
|
115 |
+
return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
|
116 |
+
}
|
117 |
+
|
118 |
+
public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
|
119 |
+
{
|
120 |
+
$ok = true;
|
121 |
+
array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
|
122 |
+
if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
|
123 |
+
$ok = false;
|
124 |
+
}
|
125 |
+
});
|
126 |
+
|
127 |
+
return $ok ? $fromEncoding : false;
|
128 |
+
}
|
129 |
+
|
130 |
+
public static function mb_decode_mimeheader($s)
|
131 |
+
{
|
132 |
+
return iconv_mime_decode($s, 2, self::$internalEncoding);
|
133 |
+
}
|
134 |
+
|
135 |
+
public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
|
136 |
+
{
|
137 |
+
trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
|
138 |
+
}
|
139 |
+
|
140 |
+
public static function mb_decode_numericentity($s, $convmap, $encoding = null)
|
141 |
+
{
|
142 |
+
if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
|
143 |
+
trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
144 |
+
|
145 |
+
return null;
|
146 |
+
}
|
147 |
+
|
148 |
+
if (!\is_array($convmap) || !$convmap) {
|
149 |
+
return false;
|
150 |
+
}
|
151 |
+
|
152 |
+
if (null !== $encoding && !\is_scalar($encoding)) {
|
153 |
+
trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
154 |
+
|
155 |
+
return ''; // Instead of null (cf. mb_encode_numericentity).
|
156 |
+
}
|
157 |
+
|
158 |
+
$s = (string) $s;
|
159 |
+
if ('' === $s) {
|
160 |
+
return '';
|
161 |
+
}
|
162 |
+
|
163 |
+
$encoding = self::getEncoding($encoding);
|
164 |
+
|
165 |
+
if ('UTF-8' === $encoding) {
|
166 |
+
$encoding = null;
|
167 |
+
if (!preg_match('//u', $s)) {
|
168 |
+
$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
|
169 |
+
}
|
170 |
+
} else {
|
171 |
+
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
172 |
+
}
|
173 |
+
|
174 |
+
$cnt = floor(\count($convmap) / 4) * 4;
|
175 |
+
|
176 |
+
for ($i = 0; $i < $cnt; $i += 4) {
|
177 |
+
// collector_decode_htmlnumericentity ignores $convmap[$i + 3]
|
178 |
+
$convmap[$i] += $convmap[$i + 2];
|
179 |
+
$convmap[$i + 1] += $convmap[$i + 2];
|
180 |
+
}
|
181 |
+
|
182 |
+
$s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
|
183 |
+
$c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
|
184 |
+
for ($i = 0; $i < $cnt; $i += 4) {
|
185 |
+
if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
|
186 |
+
return Mbstring::mb_chr($c - $convmap[$i + 2]);
|
187 |
+
}
|
188 |
+
}
|
189 |
+
|
190 |
+
return $m[0];
|
191 |
+
}, $s);
|
192 |
+
|
193 |
+
if (null === $encoding) {
|
194 |
+
return $s;
|
195 |
+
}
|
196 |
+
|
197 |
+
return iconv('UTF-8', $encoding.'//IGNORE', $s);
|
198 |
+
}
|
199 |
+
|
200 |
+
public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
|
201 |
+
{
|
202 |
+
if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
|
203 |
+
trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
204 |
+
|
205 |
+
return null;
|
206 |
+
}
|
207 |
+
|
208 |
+
if (!\is_array($convmap) || !$convmap) {
|
209 |
+
return false;
|
210 |
+
}
|
211 |
+
|
212 |
+
if (null !== $encoding && !\is_scalar($encoding)) {
|
213 |
+
trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
|
214 |
+
|
215 |
+
return null; // Instead of '' (cf. mb_decode_numericentity).
|
216 |
+
}
|
217 |
+
|
218 |
+
if (null !== $is_hex && !\is_scalar($is_hex)) {
|
219 |
+
trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
|
220 |
+
|
221 |
+
return null;
|
222 |
+
}
|
223 |
+
|
224 |
+
$s = (string) $s;
|
225 |
+
if ('' === $s) {
|
226 |
+
return '';
|
227 |
+
}
|
228 |
+
|
229 |
+
$encoding = self::getEncoding($encoding);
|
230 |
+
|
231 |
+
if ('UTF-8' === $encoding) {
|
232 |
+
$encoding = null;
|
233 |
+
if (!preg_match('//u', $s)) {
|
234 |
+
$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
|
235 |
+
}
|
236 |
+
} else {
|
237 |
+
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
238 |
+
}
|
239 |
+
|
240 |
+
static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
|
241 |
+
|
242 |
+
$cnt = floor(\count($convmap) / 4) * 4;
|
243 |
+
$i = 0;
|
244 |
+
$len = \strlen($s);
|
245 |
+
$result = '';
|
246 |
+
|
247 |
+
while ($i < $len) {
|
248 |
+
$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
|
249 |
+
$uchr = substr($s, $i, $ulen);
|
250 |
+
$i += $ulen;
|
251 |
+
$c = self::mb_ord($uchr);
|
252 |
+
|
253 |
+
for ($j = 0; $j < $cnt; $j += 4) {
|
254 |
+
if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
|
255 |
+
$cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
|
256 |
+
$result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
|
257 |
+
continue 2;
|
258 |
+
}
|
259 |
+
}
|
260 |
+
$result .= $uchr;
|
261 |
+
}
|
262 |
+
|
263 |
+
if (null === $encoding) {
|
264 |
+
return $result;
|
265 |
+
}
|
266 |
+
|
267 |
+
return iconv('UTF-8', $encoding.'//IGNORE', $result);
|
268 |
+
}
|
269 |
+
|
270 |
+
public static function mb_convert_case($s, $mode, $encoding = null)
|
271 |
+
{
|
272 |
+
$s = (string) $s;
|
273 |
+
if ('' === $s) {
|
274 |
+
return '';
|
275 |
+
}
|
276 |
+
|
277 |
+
$encoding = self::getEncoding($encoding);
|
278 |
+
|
279 |
+
if ('UTF-8' === $encoding) {
|
280 |
+
$encoding = null;
|
281 |
+
if (!preg_match('//u', $s)) {
|
282 |
+
$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
|
283 |
+
}
|
284 |
+
} else {
|
285 |
+
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
286 |
+
}
|
287 |
+
|
288 |
+
if (MB_CASE_TITLE == $mode) {
|
289 |
+
static $titleRegexp = null;
|
290 |
+
if (null === $titleRegexp) {
|
291 |
+
$titleRegexp = self::getData('titleCaseRegexp');
|
292 |
+
}
|
293 |
+
$s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
|
294 |
+
} else {
|
295 |
+
if (MB_CASE_UPPER == $mode) {
|
296 |
+
static $upper = null;
|
297 |
+
if (null === $upper) {
|
298 |
+
$upper = self::getData('upperCase');
|
299 |
+
}
|
300 |
+
$map = $upper;
|
301 |
+
} else {
|
302 |
+
if (self::MB_CASE_FOLD === $mode) {
|
303 |
+
$s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
|
304 |
+
}
|
305 |
+
|
306 |
+
static $lower = null;
|
307 |
+
if (null === $lower) {
|
308 |
+
$lower = self::getData('lowerCase');
|
309 |
+
}
|
310 |
+
$map = $lower;
|
311 |
+
}
|
312 |
+
|
313 |
+
static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
|
314 |
+
|
315 |
+
$i = 0;
|
316 |
+
$len = \strlen($s);
|
317 |
+
|
318 |
+
while ($i < $len) {
|
319 |
+
$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
|
320 |
+
$uchr = substr($s, $i, $ulen);
|
321 |
+
$i += $ulen;
|
322 |
+
|
323 |
+
if (isset($map[$uchr])) {
|
324 |
+
$uchr = $map[$uchr];
|
325 |
+
$nlen = \strlen($uchr);
|
326 |
+
|
327 |
+
if ($nlen == $ulen) {
|
328 |
+
$nlen = $i;
|
329 |
+
do {
|
330 |
+
$s[--$nlen] = $uchr[--$ulen];
|
331 |
+
} while ($ulen);
|
332 |
+
} else {
|
333 |
+
$s = substr_replace($s, $uchr, $i - $ulen, $ulen);
|
334 |
+
$len += $nlen - $ulen;
|
335 |
+
$i += $nlen - $ulen;
|
336 |
+
}
|
337 |
+
}
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
if (null === $encoding) {
|
342 |
+
return $s;
|
343 |
+
}
|
344 |
+
|
345 |
+
return iconv('UTF-8', $encoding.'//IGNORE', $s);
|
346 |
+
}
|
347 |
+
|
348 |
+
public static function mb_internal_encoding($encoding = null)
|
349 |
+
{
|
350 |
+
if (null === $encoding) {
|
351 |
+
return self::$internalEncoding;
|
352 |
+
}
|
353 |
+
|
354 |
+
$encoding = self::getEncoding($encoding);
|
355 |
+
|
356 |
+
if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
|
357 |
+
self::$internalEncoding = $encoding;
|
358 |
+
|
359 |
+
return true;
|
360 |
+
}
|
361 |
+
|
362 |
+
return false;
|
363 |
+
}
|
364 |
+
|
365 |
+
public static function mb_language($lang = null)
|
366 |
+
{
|
367 |
+
if (null === $lang) {
|
368 |
+
return self::$language;
|
369 |
+
}
|
370 |
+
|
371 |
+
switch ($lang = strtolower($lang)) {
|
372 |
+
case 'uni':
|
373 |
+
case 'neutral':
|
374 |
+
self::$language = $lang;
|
375 |
+
|
376 |
+
return true;
|
377 |
+
}
|
378 |
+
|
379 |
+
return false;
|
380 |
+
}
|
381 |
+
|
382 |
+
public static function mb_list_encodings()
|
383 |
+
{
|
384 |
+
return array('UTF-8');
|
385 |
+
}
|
386 |
+
|
387 |
+
public static function mb_encoding_aliases($encoding)
|
388 |
+
{
|
389 |
+
switch (strtoupper($encoding)) {
|
390 |
+
case 'UTF8':
|
391 |
+
case 'UTF-8':
|
392 |
+
return array('utf8');
|
393 |
+
}
|
394 |
+
|
395 |
+
return false;
|
396 |
+
}
|
397 |
+
|
398 |
+
public static function mb_check_encoding($var = null, $encoding = null)
|
399 |
+
{
|
400 |
+
if (null === $encoding) {
|
401 |
+
if (null === $var) {
|
402 |
+
return false;
|
403 |
+
}
|
404 |
+
$encoding = self::$internalEncoding;
|
405 |
+
}
|
406 |
+
|
407 |
+
return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
|
408 |
+
}
|
409 |
+
|
410 |
+
public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
|
411 |
+
{
|
412 |
+
if (null === $encodingList) {
|
413 |
+
$encodingList = self::$encodingList;
|
414 |
+
} else {
|
415 |
+
if (!\is_array($encodingList)) {
|
416 |
+
$encodingList = array_map('trim', explode(',', $encodingList));
|
417 |
+
}
|
418 |
+
$encodingList = array_map('strtoupper', $encodingList);
|
419 |
+
}
|
420 |
+
|
421 |
+
foreach ($encodingList as $enc) {
|
422 |
+
switch ($enc) {
|
423 |
+
case 'ASCII':
|
424 |
+
if (!preg_match('/[\x80-\xFF]/', $str)) {
|
425 |
+
return $enc;
|
426 |
+
}
|
427 |
+
break;
|
428 |
+
|
429 |
+
case 'UTF8':
|
430 |
+
case 'UTF-8':
|
431 |
+
if (preg_match('//u', $str)) {
|
432 |
+
return 'UTF-8';
|
433 |
+
}
|
434 |
+
break;
|
435 |
+
|
436 |
+
default:
|
437 |
+
if (0 === strncmp($enc, 'ISO-8859-', 9)) {
|
438 |
+
return $enc;
|
439 |
+
}
|
440 |
+
}
|
441 |
+
}
|
442 |
+
|
443 |
+
return false;
|
444 |
+
}
|
445 |
+
|
446 |
+
public static function mb_detect_order($encodingList = null)
|
447 |
+
{
|
448 |
+
if (null === $encodingList) {
|
449 |
+
return self::$encodingList;
|
450 |
+
}
|
451 |
+
|
452 |
+
if (!\is_array($encodingList)) {
|
453 |
+
$encodingList = array_map('trim', explode(',', $encodingList));
|
454 |
+
}
|
455 |
+
$encodingList = array_map('strtoupper', $encodingList);
|
456 |
+
|
457 |
+
foreach ($encodingList as $enc) {
|
458 |
+
switch ($enc) {
|
459 |
+
default:
|
460 |
+
if (strncmp($enc, 'ISO-8859-', 9)) {
|
461 |
+
return false;
|
462 |
+
}
|
463 |
+
// no break
|
464 |
+
case 'ASCII':
|
465 |
+
case 'UTF8':
|
466 |
+
case 'UTF-8':
|
467 |
+
}
|
468 |
+
}
|
469 |
+
|
470 |
+
self::$encodingList = $encodingList;
|
471 |
+
|
472 |
+
return true;
|
473 |
+
}
|
474 |
+
|
475 |
+
public static function mb_strlen($s, $encoding = null)
|
476 |
+
{
|
477 |
+
$encoding = self::getEncoding($encoding);
|
478 |
+
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
479 |
+
return \strlen($s);
|
480 |
+
}
|
481 |
+
|
482 |
+
return @iconv_strlen($s, $encoding);
|
483 |
+
}
|
484 |
+
|
485 |
+
public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
|
486 |
+
{
|
487 |
+
$encoding = self::getEncoding($encoding);
|
488 |
+
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
489 |
+
return strpos($haystack, $needle, $offset);
|
490 |
+
}
|
491 |
+
|
492 |
+
$needle = (string) $needle;
|
493 |
+
if ('' === $needle) {
|
494 |
+
trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
|
495 |
+
|
496 |
+
return false;
|
497 |
+
}
|
498 |
+
|
499 |
+
return iconv_strpos($haystack, $needle, $offset, $encoding);
|
500 |
+
}
|
501 |
+
|
502 |
+
public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
|
503 |
+
{
|
504 |
+
$encoding = self::getEncoding($encoding);
|
505 |
+
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
506 |
+
return strrpos($haystack, $needle, $offset);
|
507 |
+
}
|
508 |
+
|
509 |
+
if ($offset != (int) $offset) {
|
510 |
+
$offset = 0;
|
511 |
+
} elseif ($offset = (int) $offset) {
|
512 |
+
if ($offset < 0) {
|
513 |
+
if (0 > $offset += self::mb_strlen($needle)) {
|
514 |
+
$haystack = self::mb_substr($haystack, 0, $offset, $encoding);
|
515 |
+
}
|
516 |
+
$offset = 0;
|
517 |
+
} else {
|
518 |
+
$haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
|
519 |
+
}
|
520 |
+
}
|
521 |
+
|
522 |
+
$pos = iconv_strrpos($haystack, $needle, $encoding);
|
523 |
+
|
524 |
+
return false !== $pos ? $offset + $pos : false;
|
525 |
+
}
|
526 |
+
|
527 |
+
public static function mb_str_split($string, $split_length = 1, $encoding = null)
|
528 |
+
{
|
529 |
+
if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
|
530 |
+
trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
|
531 |
+
|
532 |
+
return null;
|
533 |
+
}
|
534 |
+
|
535 |
+
if (1 > $split_length = (int) $split_length) {
|
536 |
+
trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
|
537 |
+
|
538 |
+
return false;
|
539 |
+
}
|
540 |
+
|
541 |
+
if (null === $encoding) {
|
542 |
+
$encoding = mb_internal_encoding();
|
543 |
+
}
|
544 |
+
|
545 |
+
if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
|
546 |
+
$rx = '/(';
|
547 |
+
while (65535 < $split_length) {
|
548 |
+
$rx .= '.{65535}';
|
549 |
+
$split_length -= 65535;
|
550 |
+
}
|
551 |
+
$rx .= '.{'.$split_length.'})/us';
|
552 |
+
|
553 |
+
return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
554 |
+
}
|
555 |
+
|
556 |
+
$result = array();
|
557 |
+
$length = mb_strlen($string, $encoding);
|
558 |
+
|
559 |
+
for ($i = 0; $i < $length; $i += $split_length) {
|
560 |
+
$result[] = mb_substr($string, $i, $split_length, $encoding);
|
561 |
+
}
|
562 |
+
|
563 |
+
return $result;
|
564 |
+
}
|
565 |
+
|
566 |
+
public static function mb_strtolower($s, $encoding = null)
|
567 |
+
{
|
568 |
+
return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
|
569 |
+
}
|
570 |
+
|
571 |
+
public static function mb_strtoupper($s, $encoding = null)
|
572 |
+
{
|
573 |
+
return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
|
574 |
+
}
|
575 |
+
|
576 |
+
public static function mb_substitute_character($c = null)
|
577 |
+
{
|
578 |
+
if (0 === strcasecmp($c, 'none')) {
|
579 |
+
return true;
|
580 |
+
}
|
581 |
+
|
582 |
+
return null !== $c ? false : 'none';
|
583 |
+
}
|
584 |
+
|
585 |
+
public static function mb_substr($s, $start, $length = null, $encoding = null)
|
586 |
+
{
|
587 |
+
$encoding = self::getEncoding($encoding);
|
588 |
+
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
589 |
+
return (string) substr($s, $start, null === $length ? 2147483647 : $length);
|
590 |
+
}
|
591 |
+
|
592 |
+
if ($start < 0) {
|
593 |
+
$start = iconv_strlen($s, $encoding) + $start;
|
594 |
+
if ($start < 0) {
|
595 |
+
$start = 0;
|
596 |
+
}
|
597 |
+
}
|
598 |
+
|
599 |
+
if (null === $length) {
|
600 |
+
$length = 2147483647;
|
601 |
+
} elseif ($length < 0) {
|
602 |
+
$length = iconv_strlen($s, $encoding) + $length - $start;
|
603 |
+
if ($length < 0) {
|
604 |
+
return '';
|
605 |
+
}
|
606 |
+
}
|
607 |
+
|
608 |
+
return (string) iconv_substr($s, $start, $length, $encoding);
|
609 |
+
}
|
610 |
+
|
611 |
+
public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
|
612 |
+
{
|
613 |
+
$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
|
614 |
+
$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
|
615 |
+
|
616 |
+
return self::mb_strpos($haystack, $needle, $offset, $encoding);
|
617 |
+
}
|
618 |
+
|
619 |
+
public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
|
620 |
+
{
|
621 |
+
$pos = self::mb_stripos($haystack, $needle, 0, $encoding);
|
622 |
+
|
623 |
+
return self::getSubpart($pos, $part, $haystack, $encoding);
|
624 |
+
}
|
625 |
+
|
626 |
+
public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
|
627 |
+
{
|
628 |
+
$encoding = self::getEncoding($encoding);
|
629 |
+
if ('CP850' === $encoding || 'ASCII' === $encoding) {
|
630 |
+
$pos = strrpos($haystack, $needle);
|
631 |
+
} else {
|
632 |
+
$needle = self::mb_substr($needle, 0, 1, $encoding);
|
633 |
+
$pos = iconv_strrpos($haystack, $needle, $encoding);
|
634 |
+
}
|
635 |
+
|
636 |
+
return self::getSubpart($pos, $part, $haystack, $encoding);
|
637 |
+
}
|
638 |
+
|
639 |
+
public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
|
640 |
+
{
|
641 |
+
$needle = self::mb_substr($needle, 0, 1, $encoding);
|
642 |
+
$pos = self::mb_strripos($haystack, $needle, $encoding);
|
643 |
+
|
644 |
+
return self::getSubpart($pos, $part, $haystack, $encoding);
|
645 |
+
}
|
646 |
+
|
647 |
+
public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
|
648 |
+
{
|
649 |
+
$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
|
650 |
+
$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
|
651 |
+
|
652 |
+
return self::mb_strrpos($haystack, $needle, $offset, $encoding);
|
653 |
+
}
|
654 |
+
|
655 |
+
public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
|
656 |
+
{
|
657 |
+
$pos = strpos($haystack, $needle);
|
658 |
+
if (false === $pos) {
|
659 |
+
return false;
|
660 |
+
}
|
661 |
+
if ($part) {
|
662 |
+
return substr($haystack, 0, $pos);
|
663 |
+
}
|
664 |
+
|
665 |
+
return substr($haystack, $pos);
|
666 |
+
}
|
667 |
+
|
668 |
+
public static function mb_get_info($type = 'all')
|
669 |
+
{
|
670 |
+
$info = array(
|
671 |
+
'internal_encoding' => self::$internalEncoding,
|
672 |
+
'http_output' => 'pass',
|
673 |
+
'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
|
674 |
+
'func_overload' => 0,
|
675 |
+
'func_overload_list' => 'no overload',
|
676 |
+
'mail_charset' => 'UTF-8',
|
677 |
+
'mail_header_encoding' => 'BASE64',
|
678 |
+
'mail_body_encoding' => 'BASE64',
|
679 |
+
'illegal_chars' => 0,
|
680 |
+
'encoding_translation' => 'Off',
|
681 |
+
'language' => self::$language,
|
682 |
+
'detect_order' => self::$encodingList,
|
683 |
+
'substitute_character' => 'none',
|
684 |
+
'strict_detection' => 'Off',
|
685 |
+
);
|
686 |
+
|
687 |
+
if ('all' === $type) {
|
688 |
+
return $info;
|
689 |
+
}
|
690 |
+
if (isset($info[$type])) {
|
691 |
+
return $info[$type];
|
692 |
+
}
|
693 |
+
|
694 |
+
return false;
|
695 |
+
}
|
696 |
+
|
697 |
+
public static function mb_http_input($type = '')
|
698 |
+
{
|
699 |
+
return false;
|
700 |
+
}
|
701 |
+
|
702 |
+
public static function mb_http_output($encoding = null)
|
703 |
+
{
|
704 |
+
return null !== $encoding ? 'pass' === $encoding : 'pass';
|
705 |
+
}
|
706 |
+
|
707 |
+
public static function mb_strwidth($s, $encoding = null)
|
708 |
+
{
|
709 |
+
$encoding = self::getEncoding($encoding);
|
710 |
+
|
711 |
+
if ('UTF-8' !== $encoding) {
|
712 |
+
$s = iconv($encoding, 'UTF-8//IGNORE', $s);
|
713 |
+
}
|
714 |
+
|
715 |
+
$s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
|
716 |
+
|
717 |
+
return ($wide << 1) + iconv_strlen($s, 'UTF-8');
|
718 |
+
}
|
719 |
+
|
720 |
+
public static function mb_substr_count($haystack, $needle, $encoding = null)
|
721 |
+
{
|
722 |
+
return substr_count($haystack, $needle);
|
723 |
+
}
|
724 |
+
|
725 |
+
public static function mb_output_handler($contents, $status)
|
726 |
+
{
|
727 |
+
return $contents;
|
728 |
+
}
|
729 |
+
|
730 |
+
public static function mb_chr($code, $encoding = null)
|
731 |
+
{
|
732 |
+
if (0x80 > $code %= 0x200000) {
|
733 |
+
$s = \chr($code);
|
734 |
+
} elseif (0x800 > $code) {
|
735 |
+
$s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
|
736 |
+
} elseif (0x10000 > $code) {
|
737 |
+
$s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
|
738 |
+
} else {
|
739 |
+
$s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
|
740 |
+
}
|
741 |
+
|
742 |
+
if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
|
743 |
+
$s = mb_convert_encoding($s, $encoding, 'UTF-8');
|
744 |
+
}
|
745 |
+
|
746 |
+
return $s;
|
747 |
+
}
|
748 |
+
|
749 |
+
public static function mb_ord($s, $encoding = null)
|
750 |
+
{
|
751 |
+
if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
|
752 |
+
$s = mb_convert_encoding($s, 'UTF-8', $encoding);
|
753 |
+
}
|
754 |
+
|
755 |
+
if (1 === \strlen($s)) {
|
756 |
+
return \ord($s);
|
757 |
+
}
|
758 |
+
|
759 |
+
$code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
|
760 |
+
if (0xF0 <= $code) {
|
761 |
+
return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
|
762 |
+
}
|
763 |
+
if (0xE0 <= $code) {
|
764 |
+
return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
|
765 |
+
}
|
766 |
+
if (0xC0 <= $code) {
|
767 |
+
return (($code - 0xC0) << 6) + $s[2] - 0x80;
|
768 |
+
}
|
769 |
+
|
770 |
+
return $code;
|
771 |
+
}
|
772 |
+
|
773 |
+
private static function getSubpart($pos, $part, $haystack, $encoding)
|
774 |
+
{
|
775 |
+
if (false === $pos) {
|
776 |
+
return false;
|
777 |
+
}
|
778 |
+
if ($part) {
|
779 |
+
return self::mb_substr($haystack, 0, $pos, $encoding);
|
780 |
+
}
|
781 |
+
|
782 |
+
return self::mb_substr($haystack, $pos, null, $encoding);
|
783 |
+
}
|
784 |
+
|
785 |
+
private static function html_encoding_callback(array $m)
|
786 |
+
{
|
787 |
+
$i = 1;
|
788 |
+
$entities = '';
|
789 |
+
$m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
|
790 |
+
|
791 |
+
while (isset($m[$i])) {
|
792 |
+
if (0x80 > $m[$i]) {
|
793 |
+
$entities .= \chr($m[$i++]);
|
794 |
+
continue;
|
795 |
+
}
|
796 |
+
if (0xF0 <= $m[$i]) {
|
797 |
+
$c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
|
798 |
+
} elseif (0xE0 <= $m[$i]) {
|
799 |
+
$c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
|
800 |
+
} else {
|
801 |
+
$c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
|
802 |
+
}
|
803 |
+
|
804 |
+
$entities .= '&#'.$c.';';
|
805 |
+
}
|
806 |
+
|
807 |
+
return $entities;
|
808 |
+
}
|
809 |
+
|
810 |
+
private static function title_case(array $s)
|
811 |
+
{
|
812 |
+
return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
|
813 |
+
}
|
814 |
+
|
815 |
+
private static function getData($file)
|
816 |
+
{
|
817 |
+
if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
|
818 |
+
return require $file;
|
819 |
+
}
|
820 |
+
|
821 |
+
return false;
|
822 |
+
}
|
823 |
+
|
824 |
+
private static function getEncoding($encoding)
|
825 |
+
{
|
826 |
+
if (null === $encoding) {
|
827 |
+
return self::$internalEncoding;
|
828 |
+
}
|
829 |
+
|
830 |
+
if ('UTF-8' === $encoding) {
|
831 |
+
return 'UTF-8';
|
832 |
+
}
|
833 |
+
|
834 |
+
$encoding = strtoupper($encoding);
|
835 |
+
|
836 |
+
if ('8BIT' === $encoding || 'BINARY' === $encoding) {
|
837 |
+
return 'CP850';
|
838 |
+
}
|
839 |
+
|
840 |
+
if ('UTF8' === $encoding) {
|
841 |
+
return 'UTF-8';
|
842 |
+
}
|
843 |
+
|
844 |
+
return $encoding;
|
845 |
+
}
|
846 |
+
}
|
vendor/symfony/polyfill-mbstring/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
-
Symfony Polyfill / Mbstring
|
2 |
-
===========================
|
3 |
-
|
4 |
-
This component provides a partial, native PHP implementation for the
|
5 |
-
[Mbstring](https://php.net/mbstring) extension.
|
6 |
-
|
7 |
-
More information can be found in the
|
8 |
-
[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
|
9 |
-
|
10 |
-
License
|
11 |
-
=======
|
12 |
-
|
13 |
-
This library is released under the [MIT license](LICENSE).
|
1 |
+
Symfony Polyfill / Mbstring
|
2 |
+
===========================
|
3 |
+
|
4 |
+
This component provides a partial, native PHP implementation for the
|
5 |
+
[Mbstring](https://php.net/mbstring) extension.
|
6 |
+
|
7 |
+
More information can be found in the
|
8 |
+
[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
|
9 |
+
|
10 |
+
License
|
11 |
+
=======
|
12 |
+
|
13 |
+
This library is released under the [MIT license](LICENSE).
|
vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
CHANGED
@@ -1,1397 +1,1397 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
return array (
|
4 |
-
'A' => 'a',
|
5 |
-
'B' => 'b',
|
6 |
-
'C' => 'c',
|
7 |
-
'D' => 'd',
|
8 |
-
'E' => 'e',
|
9 |
-
'F' => 'f',
|
10 |
-
'G' => 'g',
|
11 |
-
'H' => 'h',
|
12 |
-
'I' => 'i',
|
13 |
-
'J' => 'j',
|
14 |
-
'K' => 'k',
|
15 |
-
'L' => 'l',
|
16 |
-
'M' => 'm',
|
17 |
-
'N' => 'n',
|
18 |
-
'O' => 'o',
|
19 |
-
'P' => 'p',
|
20 |
-
'Q' => 'q',
|
21 |
-
'R' => 'r',
|
22 |
-
'S' => 's',
|
23 |
-
'T' => 't',
|
24 |
-
'U' => 'u',
|
25 |
-
'V' => 'v',
|
26 |
-
'W' => 'w',
|
27 |
-
'X' => 'x',
|
28 |
-
'Y' => 'y',
|
29 |
-
'Z' => 'z',
|
30 |
-
'À' => 'à',
|
31 |
-
'Á' => 'á',
|
32 |
-
'Â' => 'â',
|
33 |
-
'Ã' => 'ã',
|
34 |
-
'Ä' => 'ä',
|
35 |
-
'Å' => 'å',
|
36 |
-
'Æ' => 'æ',
|
37 |
-
'Ç' => 'ç',
|
38 |
-
'È' => 'è',
|
39 |
-
'É' => 'é',
|
40 |
-
'Ê' => 'ê',
|
41 |
-
'Ë' => 'ë',
|
42 |
-
'Ì' => 'ì',
|
43 |
-
'Í' => 'í',
|
44 |
-
'Î' => 'î',
|
45 |
-
'Ï' => 'ï',
|
46 |
-
'Ð' => 'ð',
|
47 |
-
'Ñ' => 'ñ',
|
48 |
-
'Ò' => 'ò',
|
49 |
-
'Ó' => 'ó',
|
50 |
-
'Ô' => 'ô',
|
51 |
-
'Õ' => 'õ',
|
52 |
-
'Ö' => 'ö',
|
53 |
-
'Ø' => 'ø',
|
54 |
-
'Ù' => 'ù',
|
55 |
-
'Ú' => 'ú',
|
56 |
-
'Û' => 'û',
|
57 |
-
'Ü' => 'ü',
|
58 |
-
'Ý' => 'ý',
|
59 |
-
'Þ' => 'þ',
|
60 |
-
'Ā' => 'ā',
|
61 |
-
'Ă' => 'ă',
|
62 |
-
'Ą' => 'ą',
|
63 |
-
'Ć' => 'ć',
|
64 |
-
'Ĉ' => 'ĉ',
|
65 |
-
'Ċ' => 'ċ',
|
66 |
-
'Č' => 'č',
|
67 |
-
'Ď' => 'ď',
|
68 |
-
'Đ' => 'đ',
|
69 |
-
'Ē' => 'ē',
|
70 |
-
'Ĕ' => 'ĕ',
|
71 |
-
'Ė' => 'ė',
|
72 |
-
'Ę' => 'ę',
|
73 |
-
'Ě' => 'ě',
|
74 |
-
'Ĝ' => 'ĝ',
|
75 |
-
'Ğ' => 'ğ',
|
76 |
-
'Ġ' => 'ġ',
|
77 |
-
'Ģ' => 'ģ',
|
78 |
-
'Ĥ' => 'ĥ',
|
79 |
-
'Ħ' => 'ħ',
|
80 |
-
'Ĩ' => 'ĩ',
|
81 |
-
'Ī' => 'ī',
|
82 |
-
'Ĭ' => 'ĭ',
|
83 |
-
'Į' => 'į',
|
84 |
-
'İ' => 'i',
|
85 |
-
'IJ' => 'ij',
|
86 |
-
'Ĵ' => 'ĵ',
|
87 |
-
'Ķ' => 'ķ',
|
88 |
-
'Ĺ' => 'ĺ',
|
89 |
-
'Ļ' => 'ļ',
|
90 |
-
'Ľ' => 'ľ',
|
91 |
-
'Ŀ' => 'ŀ',
|
92 |
-
'Ł' => 'ł',
|
93 |
-
'Ń' => 'ń',
|
94 |
-
'Ņ' => 'ņ',
|
95 |
-
'Ň' => 'ň',
|
96 |
-
'Ŋ' => 'ŋ',
|
97 |
-
'Ō' => 'ō',
|
98 |
-
'Ŏ' => 'ŏ',
|
99 |
-
'Ő' => 'ő',
|
100 |
-
'Œ' => 'œ',
|
101 |
-
'Ŕ' => 'ŕ',
|
102 |
-
'Ŗ' => 'ŗ',
|
103 |
-
'Ř' => 'ř',
|
104 |
-
'Ś' => 'ś',
|
105 |
-
'Ŝ' => 'ŝ',
|
106 |
-
'Ş' => 'ş',
|
107 |
-
'Š' => 'š',
|
108 |
-
'Ţ' => 'ţ',
|
109 |
-
'Ť' => 'ť',
|
110 |
-
'Ŧ' => 'ŧ',
|
111 |
-
'Ũ' => 'ũ',
|
112 |
-
'Ū' => 'ū',
|
113 |
-
'Ŭ' => 'ŭ',
|
114 |
-
'Ů' => 'ů',
|
115 |
-
'Ű' => 'ű',
|
116 |
-
'Ų' => 'ų',
|
117 |
-
'Ŵ' => 'ŵ',
|
118 |
-
'Ŷ' => 'ŷ',
|
119 |
-
'Ÿ' => 'ÿ',
|
120 |
-
'Ź' => 'ź',
|
121 |
-
'Ż' => 'ż',
|
122 |
-
'Ž' => 'ž',
|
123 |
-
'Ɓ' => 'ɓ',
|
124 |
-
'Ƃ' => 'ƃ',
|
125 |
-
'Ƅ' => 'ƅ',
|
126 |
-
'Ɔ' => 'ɔ',
|
127 |
-
'Ƈ' => 'ƈ',
|
128 |
-
'Ɖ' => 'ɖ',
|
129 |
-
'Ɗ' => 'ɗ',
|
130 |
-
'Ƌ' => 'ƌ',
|
131 |
-
'Ǝ' => 'ǝ',
|
132 |
-
'Ə' => 'ə',
|
133 |
-
'Ɛ' => 'ɛ',
|
134 |
-
'Ƒ' => 'ƒ',
|
135 |
-
'Ɠ' => 'ɠ',
|
136 |
-
'Ɣ' => 'ɣ',
|
137 |
-
'Ɩ' => 'ɩ',
|
138 |
-
'Ɨ' => 'ɨ',
|
139 |
-
'Ƙ' => 'ƙ',
|
140 |
-
'Ɯ' => 'ɯ',
|
141 |
-
'Ɲ' => 'ɲ',
|
142 |
-
'Ɵ' => 'ɵ',
|
143 |
-
'Ơ' => 'ơ',
|
144 |
-
'Ƣ' => 'ƣ',
|
145 |
-
'Ƥ' => 'ƥ',
|
146 |
-
'Ʀ' => 'ʀ',
|
147 |
-
'Ƨ' => 'ƨ',
|
148 |
-
'Ʃ' => 'ʃ',
|
149 |
-
'Ƭ' => 'ƭ',
|
150 |
-
'Ʈ' => 'ʈ',
|
151 |
-
'Ư' => 'ư',
|
152 |
-
'Ʊ' => 'ʊ',
|
153 |
-
'Ʋ' => 'ʋ',
|
154 |
-
'Ƴ' => 'ƴ',
|
155 |
-
'Ƶ' => 'ƶ',
|
156 |
-
'Ʒ' => 'ʒ',
|
157 |
-
'Ƹ' => 'ƹ',
|
158 |
-
'Ƽ' => 'ƽ',
|
159 |
-
'DŽ' => 'dž',
|
160 |
-
'Dž' => 'dž',
|
161 |
-
'LJ' => 'lj',
|
162 |
-
'Lj' => 'lj',
|
163 |
-
'NJ' => 'nj',
|
164 |
-
'Nj' => 'nj',
|
165 |
-
'Ǎ' => 'ǎ',
|
166 |
-
'Ǐ' => 'ǐ',
|
167 |
-
'Ǒ' => 'ǒ',
|
168 |
-
'Ǔ' => 'ǔ',
|
169 |
-
'Ǖ' => 'ǖ',
|
170 |
-
'Ǘ' => 'ǘ',
|
171 |
-
'Ǚ' => 'ǚ',
|
172 |
-
'Ǜ' => 'ǜ',
|
173 |
-
'Ǟ' => 'ǟ',
|
174 |
-
'Ǡ' => 'ǡ',
|
175 |
-
'Ǣ' => 'ǣ',
|
176 |
-
'Ǥ' => 'ǥ',
|
177 |
-
'Ǧ' => 'ǧ',
|
178 |
-
'Ǩ' => 'ǩ',
|
179 |
-
'Ǫ' => 'ǫ',
|
180 |
-
'Ǭ' => 'ǭ',
|
181 |
-
'Ǯ' => 'ǯ',
|
182 |
-
'DZ' => 'dz',
|
183 |
-
'Dz' => 'dz',
|
184 |
-
'Ǵ' => 'ǵ',
|
185 |
-
'Ƕ' => 'ƕ',
|
186 |
-
'Ƿ' => 'ƿ',
|
187 |
-
'Ǹ' => 'ǹ',
|
188 |
-
'Ǻ' => 'ǻ',
|
189 |
-
'Ǽ' => 'ǽ',
|
190 |
-
'Ǿ' => 'ǿ',
|
191 |
-
'Ȁ' => 'ȁ',
|
192 |
-
'Ȃ' => 'ȃ',
|
193 |
-
'Ȅ' => 'ȅ',
|
194 |
-
'Ȇ' => 'ȇ',
|
195 |
-
'Ȉ' => 'ȉ',
|
196 |
-
'Ȋ' => 'ȋ',
|
197 |
-
'Ȍ' => 'ȍ',
|
198 |
-
'Ȏ' => 'ȏ',
|
199 |
-
'Ȑ' => 'ȑ',
|
200 |
-
'Ȓ' => 'ȓ',
|
201 |
-
'Ȕ' => 'ȕ',
|
202 |
-
'Ȗ' => 'ȗ',
|
203 |
-
'Ș' => 'ș',
|
204 |
-
'Ț' => 'ț',
|
205 |
-
'Ȝ' => 'ȝ',
|
206 |
-
'Ȟ' => 'ȟ',
|
207 |
-
'Ƞ' => 'ƞ',
|
208 |
-
'Ȣ' => 'ȣ',
|
209 |
-
'Ȥ' => 'ȥ',
|
210 |
-
'Ȧ' => 'ȧ',
|
211 |
-
'Ȩ' => 'ȩ',
|
212 |
-
'Ȫ' => 'ȫ',
|
213 |
-
'Ȭ' => 'ȭ',
|
214 |
-
'Ȯ' => 'ȯ',
|
215 |
-
'Ȱ' => 'ȱ',
|
216 |
-
'Ȳ' => 'ȳ',
|
217 |
-
'Ⱥ' => 'ⱥ',
|
218 |
-
'Ȼ' => 'ȼ',
|
219 |
-
'Ƚ' => 'ƚ',
|
220 |
-
'Ⱦ' => 'ⱦ',
|
221 |
-
'Ɂ' => 'ɂ',
|
222 |
-
'Ƀ' => 'ƀ',
|
223 |
-
'Ʉ' => 'ʉ',
|
224 |
-
'Ʌ' => 'ʌ',
|
225 |
-
'Ɇ' => 'ɇ',
|
226 |
-
'Ɉ' => 'ɉ',
|
227 |
-
'Ɋ' => 'ɋ',
|
228 |
-
'Ɍ' => 'ɍ',
|
229 |
-
'Ɏ' => 'ɏ',
|
230 |
-
'Ͱ' => 'ͱ',
|
231 |
-
'Ͳ' => 'ͳ',
|
232 |
-
'Ͷ' => 'ͷ',
|
233 |
-
'Ϳ' => 'ϳ',
|
234 |
-
'Ά' => 'ά',
|
235 |
-
'Έ' => 'έ',
|
236 |
-
'Ή' => 'ή',
|
237 |
-
'Ί' => 'ί',
|
238 |
-
'Ό' => 'ό',
|
239 |
-
'Ύ' => 'ύ',
|
240 |
-
'Ώ' => 'ώ',
|
241 |
-
'Α' => 'α',
|
242 |
-
'Β' => 'β',
|
243 |
-
'Γ' => 'γ',
|
244 |
-
'Δ' => 'δ',
|
245 |
-
'Ε' => 'ε',
|
246 |
-
'Ζ' => 'ζ',
|
247 |
-
'Η' => 'η',
|
248 |
-
'Θ' => 'θ',
|
249 |
-
'Ι' => 'ι',
|
250 |
-
'Κ' => 'κ',
|
251 |
-
'Λ' => 'λ',
|
252 |
-
'Μ' => 'μ',
|
253 |
-
'Ν' => 'ν',
|
254 |
-
'Ξ' => 'ξ',
|
255 |
-
'Ο' => 'ο',
|
256 |
-
'Π' => 'π',
|
257 |
-
'Ρ' => 'ρ',
|
258 |
-
'Σ' => 'σ',
|
259 |
-
'Τ' => 'τ',
|
260 |
-
'Υ' => 'υ',
|
261 |
-
'Φ' => 'φ',
|
262 |
-
'Χ' => 'χ',
|
263 |
-
'Ψ' => 'ψ',
|
264 |
-
'Ω' => 'ω',
|
265 |
-
'Ϊ' => 'ϊ',
|
266 |
-
'Ϋ' => 'ϋ',
|
267 |
-
'Ϗ' => 'ϗ',
|
268 |
-
'Ϙ' => 'ϙ',
|
269 |
-
'Ϛ' => 'ϛ',
|
270 |
-
'Ϝ' => 'ϝ',
|
271 |
-
'Ϟ' => 'ϟ',
|
272 |
-
'Ϡ' => 'ϡ',
|
273 |
-
'Ϣ' => 'ϣ',
|
274 |
-
'Ϥ' => 'ϥ',
|
275 |
-
'Ϧ' => 'ϧ',
|
276 |
-
'Ϩ' => 'ϩ',
|
277 |
-
'Ϫ' => 'ϫ',
|
278 |
-
'Ϭ' => 'ϭ',
|
279 |
-
'Ϯ' => 'ϯ',
|
280 |
-
'ϴ' => 'θ',
|
281 |
-
'Ϸ' => 'ϸ',
|
282 |
-
'Ϲ' => 'ϲ',
|
283 |
-
'Ϻ' => 'ϻ',
|
284 |
-
'Ͻ' => 'ͻ',
|
285 |
-
'Ͼ' => 'ͼ',
|
286 |
-
'Ͽ' => 'ͽ',
|
287 |
-
'Ѐ' => 'ѐ',
|
288 |
-
'Ё' => 'ё',
|
289 |
-
'Ђ' => 'ђ',
|
290 |
-
'Ѓ' => 'ѓ',
|
291 |
-
'Є' => 'є',
|
292 |
-
'Ѕ' => 'ѕ',
|
293 |
-
'І' => 'і',
|
294 |
-
'Ї' => 'ї',
|
295 |
-
'Ј' => 'ј',
|
296 |
-
'Љ' => 'љ',
|
297 |
-
'Њ' => 'њ',
|
298 |
-
'Ћ' => 'ћ',
|
299 |
-
'Ќ' => 'ќ',
|
300 |
-
'Ѝ' => 'ѝ',
|
301 |
-
'Ў' => 'ў',
|
302 |
-
'Џ' => 'џ',
|
303 |
-
'А' => 'а',
|
304 |
-
'Б' => 'б',
|
305 |
-
'В' => 'в',
|
306 |
-
'Г' => 'г',
|
307 |
-
'Д' => 'д',
|
308 |
-
'Е' => 'е',
|
309 |
-
'Ж' => 'ж',
|
310 |
-
'З' => 'з',
|
311 |
-
'И' => 'и',
|
312 |
-
'Й' => 'й',
|
313 |
-
'К' => 'к',
|
314 |
-
'Л' => 'л',
|
315 |
-
'М' => 'м',
|
316 |
-
'Н' => 'н',
|
317 |
-
'О' => 'о',
|
318 |
-
'П' => 'п',
|
319 |
-
'Р' => 'р',
|
320 |
-
'С' => 'с',
|
321 |
-
'Т' => 'т',
|
322 |
-
'У' => 'у',
|
323 |
-
'Ф' => 'ф',
|
324 |
-
'Х' => 'х',
|
325 |
-
'Ц' => 'ц',
|
326 |
-
'Ч' => 'ч',
|
327 |
-
'Ш' => 'ш',
|
328 |
-
'Щ' => 'щ',
|
329 |
-
'Ъ' => 'ъ',
|
330 |
-
'Ы' => 'ы',
|
331 |
-
'Ь' => 'ь',
|
332 |
-
'Э' => 'э',
|
333 |
-
'Ю' => 'ю',
|
334 |
-
'Я' => 'я',
|
335 |
-
'Ѡ' => 'ѡ',
|
336 |
-
'Ѣ' => 'ѣ',
|
337 |
-
'Ѥ' => 'ѥ',
|
338 |
-
'Ѧ' => 'ѧ',
|
339 |
-
'Ѩ' => 'ѩ',
|
340 |
-
'Ѫ' => 'ѫ',
|
341 |
-
'Ѭ' => 'ѭ',
|
342 |
-
'Ѯ' => 'ѯ',
|
343 |
-
'Ѱ' => 'ѱ',
|
344 |
-
'Ѳ' => 'ѳ',
|
345 |
-
'Ѵ' => 'ѵ',
|
346 |
-
'Ѷ' => 'ѷ',
|
347 |
-
'Ѹ' => 'ѹ',
|
348 |
-
'Ѻ' => 'ѻ',
|
349 |
-
'Ѽ' => 'ѽ',
|
350 |
-
'Ѿ' => 'ѿ',
|
351 |
-
'Ҁ' => 'ҁ',
|
352 |
-
'Ҋ' => 'ҋ',
|
353 |
-
'Ҍ' => 'ҍ',
|
354 |
-
'Ҏ' => 'ҏ',
|
355 |
-
'Ґ' => 'ґ',
|
356 |
-
'Ғ' => 'ғ',
|
357 |
-
'Ҕ' => 'ҕ',
|
358 |
-
'Җ' => 'җ',
|
359 |
-
'Ҙ' => 'ҙ',
|
360 |
-
'Қ' => 'қ',
|
361 |
-
'Ҝ' => 'ҝ',
|
362 |
-
'Ҟ' => 'ҟ',
|
363 |
-
'Ҡ' => 'ҡ',
|
364 |
-
'Ң' => 'ң',
|
365 |
-
'Ҥ' => 'ҥ',
|
366 |
-
'Ҧ' => 'ҧ',
|
367 |
-
'Ҩ' => 'ҩ',
|
368 |
-
'Ҫ' => 'ҫ',
|
369 |
-
'Ҭ' => 'ҭ',
|
370 |
-
'Ү' => 'ү',
|
371 |
-
'Ұ' => 'ұ',
|
372 |
-
'Ҳ' => 'ҳ',
|
373 |
-
'Ҵ' => 'ҵ',
|
374 |
-
'Ҷ' => 'ҷ',
|
375 |
-
'Ҹ' => 'ҹ',
|
376 |
-
'Һ' => 'һ',
|
377 |
-
'Ҽ' => 'ҽ',
|
378 |
-
'Ҿ' => 'ҿ',
|
379 |
-
'Ӏ' => 'ӏ',
|
380 |
-
'Ӂ' => 'ӂ',
|
381 |
-
'Ӄ' => 'ӄ',
|
382 |
-
'Ӆ' => 'ӆ',
|
383 |
-
'Ӈ' => 'ӈ',
|
384 |
-
'Ӊ' => 'ӊ',
|
385 |
-
'Ӌ' => 'ӌ',
|
386 |
-
'Ӎ' => 'ӎ',
|
387 |
-
'Ӑ' => 'ӑ',
|
388 |
-
'Ӓ' => 'ӓ',
|
389 |
-
'Ӕ' => 'ӕ',
|
390 |
-
'Ӗ' => 'ӗ',
|
391 |
-
'Ә' => 'ә',
|
392 |
-
'Ӛ' => 'ӛ',
|
393 |
-
'Ӝ' => 'ӝ',
|
394 |
-
'Ӟ' => 'ӟ',
|
395 |
-
'Ӡ' => 'ӡ',
|
396 |
-
'Ӣ' => 'ӣ',
|
397 |
-
'Ӥ' => 'ӥ',
|
398 |
-
'Ӧ' => 'ӧ',
|
399 |
-
'Ө' => 'ө',
|
400 |
-
'Ӫ' => 'ӫ',
|
401 |
-
'Ӭ' => 'ӭ',
|
402 |
-
'Ӯ' => 'ӯ',
|
403 |
-
'Ӱ' => 'ӱ',
|
404 |
-
'Ӳ' => 'ӳ',
|
405 |
-
'Ӵ' => 'ӵ',
|
406 |
-
'Ӷ' => 'ӷ',
|
407 |
-
'Ӹ' => 'ӹ',
|
408 |
-
'Ӻ' => 'ӻ',
|
409 |
-
'Ӽ' => 'ӽ',
|
410 |
-
'Ӿ' => 'ӿ',
|
411 |
-
'Ԁ' => 'ԁ',
|
412 |
-
'Ԃ' => 'ԃ',
|
413 |
-
'Ԅ' => 'ԅ',
|
414 |
-
'Ԇ' => 'ԇ',
|
415 |
-
'Ԉ' => 'ԉ',
|
416 |
-
'Ԋ' => 'ԋ',
|
417 |
-
'Ԍ' => 'ԍ',
|
418 |
-
'Ԏ' => 'ԏ',
|
419 |
-
'Ԑ' => 'ԑ',
|
420 |
-
'Ԓ' => 'ԓ',
|
421 |
-
'Ԕ' => 'ԕ',
|
422 |
-
'Ԗ' => 'ԗ',
|
423 |
-
'Ԙ' => 'ԙ',
|
424 |
-
'Ԛ' => 'ԛ',
|
425 |
-
'Ԝ' => 'ԝ',
|
426 |
-
'Ԟ' => 'ԟ',
|
427 |
-
'Ԡ' => 'ԡ',
|
428 |
-
'Ԣ' => 'ԣ',
|
429 |
-
'Ԥ' => 'ԥ',
|
430 |
-
'Ԧ' => 'ԧ',
|
431 |
-
'Ԩ' => 'ԩ',
|
432 |
-
'Ԫ' => 'ԫ',
|
433 |
-
'Ԭ' => 'ԭ',
|
434 |
-
'Ԯ' => 'ԯ',
|
435 |
-
'Ա' => 'ա',
|
436 |
-
'Բ' => 'բ',
|
437 |
-
'Գ' => 'գ',
|
438 |
-
'Դ' => 'դ',
|
439 |
-
'Ե' => 'ե',
|
440 |
-
'Զ' => 'զ',
|
441 |
-
'Է' => 'է',
|
442 |
-
'Ը' => 'ը',
|
443 |
-
'Թ' => 'թ',
|
444 |
-
'Ժ' => 'ժ',
|
445 |
-
'Ի' => 'ի',
|
446 |
-
'Լ' => 'լ',
|
447 |
-
'Խ' => 'խ',
|
448 |
-
'Ծ' => 'ծ',
|
449 |
-
'Կ' => 'կ',
|
450 |
-
'Հ' => 'հ',
|
451 |
-
'Ձ' => 'ձ',
|
452 |
-
'Ղ' => 'ղ',
|
453 |
-
'Ճ' => 'ճ',
|
454 |
-
'Մ' => 'մ',
|
455 |
-
'Յ' => 'յ',
|
456 |
-
'Ն' => 'ն',
|
457 |
-
'Շ' => 'շ',
|
458 |
-
'Ո' => 'ո',
|
459 |
-
'Չ' => 'չ',
|
460 |
-
'Պ' => 'պ',
|
461 |
-
'Ջ' => 'ջ',
|
462 |
-
'Ռ' => 'ռ',
|
463 |
-
'Ս' => 'ս',
|
464 |
-
'Վ' => 'վ',
|
465 |
-
'Տ' => 'տ',
|
466 |
-
'Ր' => 'ր',
|
467 |
-
'Ց' => 'ց',
|
468 |
-
'Ւ' => 'ւ',
|
469 |
-
'Փ' => 'փ',
|
470 |
-
'Ք' => 'ք',
|
471 |
-
'Օ' => 'օ',
|
472 |
-
'Ֆ' => 'ֆ',
|
473 |
-
'Ⴀ' => 'ⴀ',
|
474 |
-
'Ⴁ' => 'ⴁ',
|
475 |
-
'Ⴂ' => 'ⴂ',
|
476 |
-
'Ⴃ' => 'ⴃ',
|
477 |
-
'Ⴄ' => 'ⴄ',
|
478 |
-
'Ⴅ' => 'ⴅ',
|
479 |
-
'Ⴆ' => 'ⴆ',
|
480 |
-
'Ⴇ' => 'ⴇ',
|
481 |
-
'Ⴈ' => 'ⴈ',
|
482 |
-
'Ⴉ' => 'ⴉ',
|
483 |
-
'Ⴊ' => 'ⴊ',
|
484 |
-
'Ⴋ' => 'ⴋ',
|
485 |
-
'Ⴌ' => 'ⴌ',
|
486 |
-
'Ⴍ' => 'ⴍ',
|
487 |
-
'Ⴎ' => 'ⴎ',
|
488 |
-
'Ⴏ' => 'ⴏ',
|
489 |
-
'Ⴐ' => 'ⴐ',
|
490 |
-
'Ⴑ' => 'ⴑ',
|
491 |
-
'Ⴒ' => 'ⴒ',
|
492 |
-
'Ⴓ' => 'ⴓ',
|
493 |
-
'Ⴔ' => 'ⴔ',
|
494 |
-
'Ⴕ' => 'ⴕ',
|
495 |
-
'Ⴖ' => 'ⴖ',
|
496 |
-
'Ⴗ' => 'ⴗ',
|
497 |
-
'Ⴘ' => 'ⴘ',
|
498 |
-
'Ⴙ' => 'ⴙ',
|
499 |
-
'Ⴚ' => 'ⴚ',
|
500 |
-
'Ⴛ' => 'ⴛ',
|
501 |
-
'Ⴜ' => 'ⴜ',
|
502 |
-
'Ⴝ' => 'ⴝ',
|
503 |
-
'Ⴞ' => 'ⴞ',
|
504 |
-
'Ⴟ' => 'ⴟ',
|
505 |
-
'Ⴠ' => 'ⴠ',
|
506 |
-
'Ⴡ' => 'ⴡ',
|
507 |
-
'Ⴢ' => 'ⴢ',
|
508 |
-
'Ⴣ' => 'ⴣ',
|
509 |
-
'Ⴤ' => 'ⴤ',
|
510 |
-
'Ⴥ' => 'ⴥ',
|
511 |
-
'Ⴧ' => 'ⴧ',
|
512 |
-
'Ⴭ' => 'ⴭ',
|
513 |
-
'Ꭰ' => 'ꭰ',
|
514 |
-
'Ꭱ' => 'ꭱ',
|
515 |
-
'Ꭲ' => 'ꭲ',
|
516 |
-
'Ꭳ' => 'ꭳ',
|
517 |
-
'Ꭴ' => 'ꭴ',
|
518 |
-
'Ꭵ' => 'ꭵ',
|
519 |
-
'Ꭶ' => 'ꭶ',
|
520 |
-
'Ꭷ' => 'ꭷ',
|
521 |
-
'Ꭸ' => 'ꭸ',
|
522 |
-
'Ꭹ' => 'ꭹ',
|
523 |
-
'Ꭺ' => 'ꭺ',
|
524 |
-
'Ꭻ' => 'ꭻ',
|
525 |
-
'Ꭼ' => 'ꭼ',
|
526 |
-
'Ꭽ' => 'ꭽ',
|
527 |
-
'Ꭾ' => 'ꭾ',
|
528 |
-
'Ꭿ' => 'ꭿ',
|
529 |
-
'Ꮀ' => 'ꮀ',
|
530 |
-
'Ꮁ' => 'ꮁ',
|
531 |
-
'Ꮂ' => 'ꮂ',
|
532 |
-
'Ꮃ' => 'ꮃ',
|
533 |
-
'Ꮄ' => 'ꮄ',
|
534 |
-
'Ꮅ' => 'ꮅ',
|
535 |
-
'Ꮆ' => 'ꮆ',
|
536 |
-
'Ꮇ' => 'ꮇ',
|
537 |
-
'Ꮈ' => 'ꮈ',
|
538 |
-
'Ꮉ' => 'ꮉ',
|
539 |
-
'Ꮊ' => 'ꮊ',
|
540 |
-
'Ꮋ' => 'ꮋ',
|
541 |
-
'Ꮌ' => 'ꮌ',
|
542 |
-
'Ꮍ' => 'ꮍ',
|
543 |
-
'Ꮎ' => 'ꮎ',
|
544 |
-
'Ꮏ' => 'ꮏ',
|
545 |
-
'Ꮐ' => 'ꮐ',
|
546 |
-
'Ꮑ' => 'ꮑ',
|
547 |
-
'Ꮒ' => 'ꮒ',
|
548 |
-
'Ꮓ' => 'ꮓ',
|
549 |
-
'Ꮔ' => 'ꮔ',
|
550 |
-
'Ꮕ' => 'ꮕ',
|
551 |
-
'Ꮖ' => 'ꮖ',
|
552 |
-
'Ꮗ' => 'ꮗ',
|
553 |
-
'Ꮘ' => 'ꮘ',
|
554 |
-
'Ꮙ' => 'ꮙ',
|
555 |
-
'Ꮚ' => 'ꮚ',
|
556 |
-
'Ꮛ' => 'ꮛ',
|
557 |
-
'Ꮜ' => 'ꮜ',
|
558 |
-
'Ꮝ' => 'ꮝ',
|
559 |
-
'Ꮞ' => 'ꮞ',
|
560 |
-
'Ꮟ' => 'ꮟ',
|
561 |
-
'Ꮠ' => 'ꮠ',
|
562 |
-
'Ꮡ' => 'ꮡ',
|
563 |
-
'Ꮢ' => 'ꮢ',
|
564 |
-
'Ꮣ' => 'ꮣ',
|
565 |
-
'Ꮤ' => 'ꮤ',
|
566 |
-
'Ꮥ' => 'ꮥ',
|
567 |
-
'Ꮦ' => 'ꮦ',
|
568 |
-
'Ꮧ' => 'ꮧ',
|
569 |
-
'Ꮨ' => 'ꮨ',
|
570 |
-
'Ꮩ' => 'ꮩ',
|
571 |
-
'Ꮪ' => 'ꮪ',
|
572 |
-
'Ꮫ' => 'ꮫ',
|
573 |
-
'Ꮬ' => 'ꮬ',
|
574 |
-
'Ꮭ' => 'ꮭ',
|
575 |
-
'Ꮮ' => 'ꮮ',
|
576 |
-
'Ꮯ' => 'ꮯ',
|
577 |
-
'Ꮰ' => 'ꮰ',
|
578 |
-
'Ꮱ' => 'ꮱ',
|
579 |
-
'Ꮲ' => 'ꮲ',
|
580 |
-
'Ꮳ' => 'ꮳ',
|
581 |
-
'Ꮴ' => 'ꮴ',
|
582 |
-
'Ꮵ' => 'ꮵ',
|
583 |
-
'Ꮶ' => 'ꮶ',
|
584 |
-
'Ꮷ' => 'ꮷ',
|
585 |
-
'Ꮸ' => 'ꮸ',
|
586 |
-
'Ꮹ' => 'ꮹ',
|
587 |
-
'Ꮺ' => 'ꮺ',
|
588 |
-
'Ꮻ' => 'ꮻ',
|
589 |
-
'Ꮼ' => 'ꮼ',
|
590 |
-
'Ꮽ' => 'ꮽ',
|
591 |
-
'Ꮾ' => 'ꮾ',
|
592 |
-
'Ꮿ' => 'ꮿ',
|
593 |
-
'Ᏸ' => 'ᏸ',
|
594 |
-
'Ᏹ' => 'ᏹ',
|
595 |
-
'Ᏺ' => 'ᏺ',
|
596 |
-
'Ᏻ' => 'ᏻ',
|
597 |
-
'Ᏼ' => 'ᏼ',
|
598 |
-
'Ᏽ' => 'ᏽ',
|
599 |
-
'Ა' => 'ა',
|
600 |
-
'Ბ' => 'ბ',
|
601 |
-
'Გ' => 'გ',
|
602 |
-
'Დ' => 'დ',
|
603 |
-
'Ე' => 'ე',
|
604 |
-
'Ვ' => 'ვ',
|
605 |
-
'Ზ' => 'ზ',
|
606 |
-
'Თ' => 'თ',
|
607 |
-
'Ი' => 'ი',
|
608 |
-
'Კ' => 'კ',
|
609 |
-
'Ლ' => 'ლ',
|
610 |
-
'Მ' => 'მ',
|
611 |
-
'Ნ' => 'ნ',
|
612 |
-
'Ო' => 'ო',
|
613 |
-
'Პ' => 'პ',
|
614 |
-
'Ჟ' => 'ჟ',
|
615 |
-
'Რ' => 'რ',
|
616 |
-
'Ს' => 'ს',
|
617 |
-
'Ტ' => 'ტ',
|
618 |
-
'Უ' => 'უ',
|
619 |
-
'Ფ' => 'ფ',
|
620 |
-
'Ქ' => 'ქ',
|
621 |
-
'Ღ' => 'ღ',
|
622 |
-
'Ყ' => 'ყ',
|
623 |
-
'Შ' => 'შ',
|
624 |
-
'Ჩ' => 'ჩ',
|
625 |
-
'Ც' => 'ც',
|
626 |
-
'Ძ' => 'ძ',
|
627 |
-
'Წ' => 'წ',
|
628 |
-
'Ჭ' => 'ჭ',
|
629 |
-
'Ხ' => 'ხ',
|
630 |
-
'Ჯ' => 'ჯ',
|
631 |
-
'Ჰ' => 'ჰ',
|
632 |
-
'Ჱ' => 'ჱ',
|
633 |
-
'Ჲ' => 'ჲ',
|
634 |
-
'Ჳ' => 'ჳ',
|
635 |
-
'Ჴ' => 'ჴ',
|
636 |
-
'Ჵ' => 'ჵ',
|
637 |
-
'Ჶ' => 'ჶ',
|
638 |
-
'Ჷ' => 'ჷ',
|
639 |
-
'Ჸ' => 'ჸ',
|
640 |
-
'Ჹ' => 'ჹ',
|
641 |
-
'Ჺ' => 'ჺ',
|
642 |
-
'Ჽ' => 'ჽ',
|
643 |
-
'Ჾ' => 'ჾ',
|
644 |
-
'Ჿ' => 'ჿ',
|
645 |
-
'Ḁ' => 'ḁ',
|
646 |
-
'Ḃ' => 'ḃ',
|
647 |
-
'Ḅ' => 'ḅ',
|
648 |
-
'Ḇ' => 'ḇ',
|
649 |
-
'Ḉ' => 'ḉ',
|
650 |
-
'Ḋ' => 'ḋ',
|
651 |
-
'Ḍ' => 'ḍ',
|
652 |
-
'Ḏ' => 'ḏ',
|
653 |
-
'Ḑ' => 'ḑ',
|
654 |
-
'Ḓ' => 'ḓ',
|
655 |
-
'Ḕ' => 'ḕ',
|
656 |
-
'Ḗ' => 'ḗ',
|
657 |
-
'Ḙ' => 'ḙ',
|
658 |
-
'Ḛ' => 'ḛ',
|
659 |
-
'Ḝ' => 'ḝ',
|
660 |
-
'Ḟ' => 'ḟ',
|
661 |
-
'Ḡ' => 'ḡ',
|
662 |
-
'Ḣ' => 'ḣ',
|
663 |
-
'Ḥ' => 'ḥ',
|
664 |
-
'Ḧ' => 'ḧ',
|
665 |
-
'Ḩ' => 'ḩ',
|
666 |
-
'Ḫ' => 'ḫ',
|
667 |
-
'Ḭ' => 'ḭ',
|
668 |
-
'Ḯ' => 'ḯ',
|
669 |
-
'Ḱ' => 'ḱ',
|
670 |
-
'Ḳ' => 'ḳ',
|
671 |
-
'Ḵ' => 'ḵ',
|
672 |
-
'Ḷ' => 'ḷ',
|
673 |
-
'Ḹ' => 'ḹ',
|
674 |
-
'Ḻ' => 'ḻ',
|
675 |
-
'Ḽ' => 'ḽ',
|
676 |
-
'Ḿ' => 'ḿ',
|
677 |
-
'Ṁ' => 'ṁ',
|
678 |
-
'Ṃ' => 'ṃ',
|
679 |
-
'Ṅ' => 'ṅ',
|
680 |
-
'Ṇ' => 'ṇ',
|
681 |
-
'Ṉ' => 'ṉ',
|
682 |
-
'Ṋ' => 'ṋ',
|
683 |
-
'Ṍ' => 'ṍ',
|
684 |
-
'Ṏ' => 'ṏ',
|
685 |
-
'Ṑ' => 'ṑ',
|
686 |
-
'Ṓ' => 'ṓ',
|
687 |
-
'Ṕ' => 'ṕ',
|
688 |
-
'Ṗ' => 'ṗ',
|
689 |
-
'Ṙ' => 'ṙ',
|
690 |
-
'Ṛ' => 'ṛ',
|
691 |
-
'Ṝ' => 'ṝ',
|
692 |
-
'Ṟ' => 'ṟ',
|
693 |
-
'Ṡ' => 'ṡ',
|
694 |
-
'Ṣ' => 'ṣ',
|
695 |
-
'Ṥ' => 'ṥ',
|
696 |
-
'Ṧ' => 'ṧ',
|
697 |
-
'Ṩ' => 'ṩ',
|
698 |
-
'Ṫ' => 'ṫ',
|
699 |
-
'Ṭ' => 'ṭ',
|
700 |
-
'Ṯ' => 'ṯ',
|
701 |
-
'Ṱ' => 'ṱ',
|
702 |
-
'Ṳ' => 'ṳ',
|
703 |
-
'Ṵ' => 'ṵ',
|
704 |
-
'Ṷ' => 'ṷ',
|
705 |
-
'Ṹ' => 'ṹ',
|
706 |
-
'Ṻ' => 'ṻ',
|
707 |
-
'Ṽ' => 'ṽ',
|
708 |
-
'Ṿ' => 'ṿ',
|
709 |
-
'Ẁ' => 'ẁ',
|
710 |
-
'Ẃ' => 'ẃ',
|
711 |
-
'Ẅ' => 'ẅ',
|
712 |
-
'Ẇ' => 'ẇ',
|
713 |
-
'Ẉ' => 'ẉ',
|
714 |
-
'Ẋ' => 'ẋ',
|
715 |
-
'Ẍ' => 'ẍ',
|
716 |
-
'Ẏ' => 'ẏ',
|
717 |
-
'Ẑ' => 'ẑ',
|
718 |
-
'Ẓ' => 'ẓ',
|
719 |
-
'Ẕ' => 'ẕ',
|
720 |
-
'ẞ' => 'ß',
|
721 |
-
'Ạ' => 'ạ',
|
722 |
-
'Ả' => 'ả',
|
723 |
-
'Ấ' => 'ấ',
|
724 |
-
'Ầ' => 'ầ',
|
725 |
-
'Ẩ' => 'ẩ',
|
726 |
-
'Ẫ' => 'ẫ',
|
727 |
-
'Ậ' => 'ậ',
|
728 |
-
'Ắ' => 'ắ',
|
729 |
-
'Ằ' => 'ằ',
|
730 |
-
'Ẳ' => 'ẳ',
|
731 |
-
'Ẵ' => 'ẵ',
|
732 |
-
'Ặ' => 'ặ',
|
733 |
-
'Ẹ' => 'ẹ',
|
734 |
-
'Ẻ' => 'ẻ',
|
735 |
-
'Ẽ' => 'ẽ',
|
736 |
-
'Ế' => 'ế',
|
737 |
-
'Ề' => 'ề',
|
738 |
-
'Ể' => 'ể',
|
739 |
-
'Ễ' => 'ễ',
|
740 |
-
'Ệ' => 'ệ',
|
741 |
-
'Ỉ' => 'ỉ',
|
742 |
-
'Ị' => 'ị',
|
743 |
-
'Ọ' => 'ọ',
|
744 |
-
'Ỏ' => 'ỏ',
|
745 |
-
'Ố' => 'ố',
|
746 |
-
'Ồ' => 'ồ',
|
747 |
-
'Ổ' => 'ổ',
|
748 |
-
'Ỗ' => 'ỗ',
|
749 |
-
'Ộ' => 'ộ',
|
750 |
-
'Ớ' => 'ớ',
|
751 |
-
'Ờ' => 'ờ',
|
752 |
-
'Ở' => 'ở',
|
753 |
-
'Ỡ' => 'ỡ',
|
754 |
-
'Ợ' => 'ợ',
|
755 |
-
'Ụ' => 'ụ',
|
756 |
-
'Ủ' => 'ủ',
|
757 |
-
'Ứ' => 'ứ',
|
758 |
-
'Ừ' => 'ừ',
|
759 |
-
'Ử' => 'ử',
|
760 |
-
'Ữ' => 'ữ',
|
761 |
-
'Ự' => 'ự',
|
762 |
-
'Ỳ' => 'ỳ',
|
763 |
-
'Ỵ' => 'ỵ',
|
764 |
-
'Ỷ' => 'ỷ',
|
765 |
-
'Ỹ' => 'ỹ',
|
766 |
-
'Ỻ' => 'ỻ',
|
767 |
-
'Ỽ' => 'ỽ',
|
768 |
-
'Ỿ' => 'ỿ',
|
769 |
-
'Ἀ' => 'ἀ',
|
770 |
-
'Ἁ' => 'ἁ',
|
771 |
-
'Ἂ' => 'ἂ',
|
772 |
-
'Ἃ' => 'ἃ',
|
773 |
-
'Ἄ' => 'ἄ',
|
774 |
-
'Ἅ' => 'ἅ',
|
775 |
-
'Ἆ' => 'ἆ',
|
776 |
-
'Ἇ' => 'ἇ',
|
777 |
-
'Ἐ' => 'ἐ',
|
778 |
-
'Ἑ' => 'ἑ',
|
779 |
-
'Ἒ' => 'ἒ',
|
780 |
-
'Ἓ' => 'ἓ',
|
781 |
-
'Ἔ' => 'ἔ',
|
782 |
-
'Ἕ' => 'ἕ',
|
783 |
-
'Ἠ' => 'ἠ',
|
784 |
-
'Ἡ' => 'ἡ',
|
785 |
-
'Ἢ' => 'ἢ',
|
786 |
-
'Ἣ' => 'ἣ',
|
787 |
-
'Ἤ' => 'ἤ',
|
788 |
-
'Ἥ' => 'ἥ',
|
789 |
-
'Ἦ' => 'ἦ',
|
790 |
-
'Ἧ' => 'ἧ',
|
791 |
-
'Ἰ' => 'ἰ',
|
792 |
-
'Ἱ' => 'ἱ',
|
793 |
-
'Ἲ' => 'ἲ',
|
794 |
-
'Ἳ' => 'ἳ',
|
795 |
-
'Ἴ' => 'ἴ',
|
796 |
-
'Ἵ' => 'ἵ',
|
797 |
-
'Ἶ' => 'ἶ',
|
798 |
-
'Ἷ' => 'ἷ',
|
799 |
-
'Ὀ' => 'ὀ',
|
800 |
-
'Ὁ' => 'ὁ',
|
801 |
-
'Ὂ' => 'ὂ',
|
802 |
-
'Ὃ' => 'ὃ',
|
803 |
-
'Ὄ' => 'ὄ',
|
804 |
-
'Ὅ' => 'ὅ',
|
805 |
-
'Ὑ' => 'ὑ',
|
806 |
-
'Ὓ' => 'ὓ',
|
807 |
-
'Ὕ' => 'ὕ',
|
808 |
-
'Ὗ' => 'ὗ',
|
809 |
-
'Ὠ' => 'ὠ',
|
810 |
-
'Ὡ' => 'ὡ',
|
811 |
-
'Ὢ' => 'ὢ',
|
812 |
-
'Ὣ' => 'ὣ',
|
813 |
-
'Ὤ' => 'ὤ',
|
814 |
-
'Ὥ' => 'ὥ',
|
815 |
-
'Ὦ' => 'ὦ',
|
816 |
-
'Ὧ' => 'ὧ',
|
817 |
-
'ᾈ' => 'ᾀ',
|
818 |
-
'ᾉ' => 'ᾁ',
|
819 |
-
'ᾊ' => 'ᾂ',
|
820 |
-
'ᾋ' => 'ᾃ',
|
821 |
-
'ᾌ' => 'ᾄ',
|
822 |
-
'ᾍ' => 'ᾅ',
|
823 |
-
'ᾎ' => 'ᾆ',
|
824 |
-
'ᾏ' => 'ᾇ',
|
825 |
-
'ᾘ' => 'ᾐ',
|
826 |
-
'ᾙ' => 'ᾑ',
|
827 |
-
'ᾚ' => 'ᾒ',
|
828 |
-
'ᾛ' => 'ᾓ',
|
829 |
-
'ᾜ' => 'ᾔ',
|
830 |
-
'ᾝ' => 'ᾕ',
|
831 |
-
'ᾞ' => 'ᾖ',
|
832 |
-
'ᾟ' => 'ᾗ',
|
833 |
-
'ᾨ' => 'ᾠ',
|
834 |
-
'ᾩ' => 'ᾡ',
|
835 |
-
'ᾪ' => 'ᾢ',
|
836 |
-
'ᾫ' => 'ᾣ',
|
837 |
-
'ᾬ' => 'ᾤ',
|
838 |
-
'ᾭ' => 'ᾥ',
|
839 |
-
'ᾮ' => 'ᾦ',
|
840 |
-
'ᾯ' => 'ᾧ',
|
841 |
-
'Ᾰ' => 'ᾰ',
|
842 |
-
'Ᾱ' => 'ᾱ',
|
843 |
-
'Ὰ' => 'ὰ',
|
844 |
-
'Ά' => 'ά',
|
845 |
-
'ᾼ' => 'ᾳ',
|
846 |
-
'Ὲ' => 'ὲ',
|
847 |
-
'Έ' => 'έ',
|
848 |
-
'Ὴ' => 'ὴ',
|
849 |
-
'Ή' => 'ή',
|
850 |
-
'ῌ' => 'ῃ',
|
851 |
-
'Ῐ' => 'ῐ',
|
852 |
-
'Ῑ' => 'ῑ',
|
853 |
-
'Ὶ' => 'ὶ',
|
854 |
-
'Ί' => 'ί',
|
855 |
-
'Ῠ' => 'ῠ',
|
856 |
-
'Ῡ' => 'ῡ',
|
857 |
-
'Ὺ' => 'ὺ',
|
858 |
-
'Ύ' => 'ύ',
|
859 |
-
'Ῥ' => 'ῥ',
|
860 |
-
'Ὸ' => 'ὸ',
|
861 |
-
'Ό' => 'ό',
|
862 |
-
'Ὼ' => 'ὼ',
|
863 |
-
'Ώ' => 'ώ',
|
864 |
-
'ῼ' => 'ῳ',
|
865 |
-
'Ω' => 'ω',
|
866 |
-
'K' => 'k',
|
867 |
-
'Å' => 'å',
|
868 |
-
'Ⅎ' => 'ⅎ',
|
869 |
-
'Ⅰ' => 'ⅰ',
|
870 |
-
'Ⅱ' => 'ⅱ',
|
871 |
-
'Ⅲ' => 'ⅲ',
|
872 |
-
'Ⅳ' => 'ⅳ',
|
873 |
-
'Ⅴ' => 'ⅴ',
|
874 |
-
'Ⅵ' => 'ⅵ',
|
875 |
-
'Ⅶ' => 'ⅶ',
|
876 |
-
'Ⅷ' => 'ⅷ',
|
877 |
-
'Ⅸ' => 'ⅸ',
|
878 |
-
'Ⅹ' => 'ⅹ',
|
879 |
-
'Ⅺ' => 'ⅺ',
|
880 |
-
'Ⅻ' => 'ⅻ',
|
881 |
-
'Ⅼ' => 'ⅼ',
|
882 |
-
'Ⅽ' => 'ⅽ',
|
883 |
-
'Ⅾ' => 'ⅾ',
|
884 |
-
'Ⅿ' => 'ⅿ',
|
885 |
-
'Ↄ' => 'ↄ',
|
886 |
-
'Ⓐ' => 'ⓐ',
|
887 |
-
'Ⓑ' => 'ⓑ',
|
888 |
-
'Ⓒ' => 'ⓒ',
|
889 |
-
'Ⓓ' => 'ⓓ',
|
890 |
-
'Ⓔ' => 'ⓔ',
|
891 |
-
'Ⓕ' => 'ⓕ',
|
892 |
-
'Ⓖ' => 'ⓖ',
|
893 |
-
'Ⓗ' => 'ⓗ',
|
894 |
-
'Ⓘ' => 'ⓘ',
|
895 |
-
'Ⓙ' => 'ⓙ',
|
896 |
-
'Ⓚ' => 'ⓚ',
|
897 |
-
'Ⓛ' => 'ⓛ',
|
898 |
-
'Ⓜ' => 'ⓜ',
|
899 |
-
'Ⓝ' => 'ⓝ',
|
900 |
-
'Ⓞ' => 'ⓞ',
|
901 |
-
'Ⓟ' => 'ⓟ',
|
902 |
-
'Ⓠ' => 'ⓠ',
|
903 |
-
'Ⓡ' => 'ⓡ',
|
904 |
-
'Ⓢ' => 'ⓢ',
|
905 |
-
'Ⓣ' => 'ⓣ',
|
906 |
-
'Ⓤ' => 'ⓤ',
|
907 |
-
'Ⓥ' => 'ⓥ',
|
908 |
-
'Ⓦ' => 'ⓦ',
|
909 |
-
'Ⓧ' => 'ⓧ',
|
910 |
-
'Ⓨ' => 'ⓨ',
|
911 |
-
'Ⓩ' => 'ⓩ',
|
912 |
-
'Ⰰ' => 'ⰰ',
|
913 |
-
'Ⰱ' => 'ⰱ',
|
914 |
-
'Ⰲ' => 'ⰲ',
|
915 |
-
'Ⰳ' => 'ⰳ',
|
916 |
-
'Ⰴ' => 'ⰴ',
|
917 |
-
'Ⰵ' => 'ⰵ',
|
918 |
-
'Ⰶ' => 'ⰶ',
|
919 |
-
'Ⰷ' => 'ⰷ',
|
920 |
-
'Ⰸ' => 'ⰸ',
|
921 |
-
'Ⰹ' => 'ⰹ',
|
922 |
-
'Ⰺ' => 'ⰺ',
|
923 |
-
'Ⰻ' => 'ⰻ',
|
924 |
-
'Ⰼ' => 'ⰼ',
|
925 |
-
'Ⰽ' => 'ⰽ',
|
926 |
-
'Ⰾ' => 'ⰾ',
|
927 |
-
'Ⰿ' => 'ⰿ',
|
928 |
-
'Ⱀ' => 'ⱀ',
|
929 |
-
'Ⱁ' => 'ⱁ',
|
930 |
-
'Ⱂ' => 'ⱂ',
|
931 |
-
'Ⱃ' => 'ⱃ',
|
932 |
-
'Ⱄ' => 'ⱄ',
|
933 |
-
'Ⱅ' => 'ⱅ',
|
934 |
-
'Ⱆ' => 'ⱆ',
|
935 |
-
'Ⱇ' => 'ⱇ',
|
936 |
-
'Ⱈ' => 'ⱈ',
|
937 |
-
'Ⱉ' => 'ⱉ',
|
938 |
-
'Ⱊ' => 'ⱊ',
|
939 |
-
'Ⱋ' => 'ⱋ',
|
940 |
-
'Ⱌ' => 'ⱌ',
|
941 |
-
'Ⱍ' => 'ⱍ',
|
942 |
-
'Ⱎ' => 'ⱎ',
|
943 |
-
'Ⱏ' => 'ⱏ',
|
944 |
-
'Ⱐ' => 'ⱐ',
|
945 |
-
'Ⱑ' => 'ⱑ',
|
946 |
-
'Ⱒ' => 'ⱒ',
|
947 |
-
'Ⱓ' => 'ⱓ',
|
948 |
-
'Ⱔ' => 'ⱔ',
|
949 |
-
'Ⱕ' => 'ⱕ',
|
950 |
-
'Ⱖ' => 'ⱖ',
|
951 |
-
'Ⱗ' => 'ⱗ',
|
952 |
-
'Ⱘ' => 'ⱘ',
|
953 |
-
'Ⱙ' => 'ⱙ',
|
954 |
-
'Ⱚ' => 'ⱚ',
|
955 |
-
'Ⱛ' => 'ⱛ',
|
956 |
-
'Ⱜ' => 'ⱜ',
|
957 |
-
'Ⱝ' => 'ⱝ',
|
958 |
-
'Ⱞ' => 'ⱞ',
|
959 |
-
'Ⱡ' => 'ⱡ',
|
960 |
-
'Ɫ' => 'ɫ',
|
961 |
-
'Ᵽ' => 'ᵽ',
|
962 |
-
'Ɽ' => 'ɽ',
|
963 |
-
'Ⱨ' => 'ⱨ',
|
964 |
-
'Ⱪ' => 'ⱪ',
|
965 |
-
'Ⱬ' => 'ⱬ',
|
966 |
-
'Ɑ' => 'ɑ',
|
967 |
-
'Ɱ' => 'ɱ',
|
968 |
-
'Ɐ' => 'ɐ',
|
969 |
-
'Ɒ' => 'ɒ',
|
970 |
-
'Ⱳ' => 'ⱳ',
|
971 |
-
'Ⱶ' => 'ⱶ',
|
972 |
-
'Ȿ' => 'ȿ',
|
973 |
-
'Ɀ' => 'ɀ',
|
974 |
-
'Ⲁ' => 'ⲁ',
|
975 |
-
'Ⲃ' => 'ⲃ',
|
976 |
-
'Ⲅ' => 'ⲅ',
|
977 |
-
'Ⲇ' => 'ⲇ',
|
978 |
-
'Ⲉ' => 'ⲉ',
|
979 |
-
'Ⲋ' => 'ⲋ',
|
980 |
-
'Ⲍ' => 'ⲍ',
|
981 |
-
'Ⲏ' => 'ⲏ',
|
982 |
-
'Ⲑ' => 'ⲑ',
|
983 |
-
'Ⲓ' => 'ⲓ',
|
984 |
-
'Ⲕ' => 'ⲕ',
|
985 |
-
'Ⲗ' => 'ⲗ',
|
986 |
-
'Ⲙ' => 'ⲙ',
|
987 |
-
'Ⲛ' => 'ⲛ',
|
988 |
-
'Ⲝ' => 'ⲝ',
|
989 |
-
'Ⲟ' => 'ⲟ',
|
990 |
-
'Ⲡ' => 'ⲡ',
|
991 |
-
'Ⲣ' => 'ⲣ',
|
992 |
-
'Ⲥ' => 'ⲥ',
|
993 |
-
'Ⲧ' => 'ⲧ',
|
994 |
-
'Ⲩ' => 'ⲩ',
|
995 |
-
'Ⲫ' => 'ⲫ',
|
996 |
-
'Ⲭ' => 'ⲭ',
|
997 |
-
'Ⲯ' => 'ⲯ',
|
998 |
-
'Ⲱ' => 'ⲱ',
|
999 |
-
'Ⲳ' => 'ⲳ',
|
1000 |
-
'Ⲵ' => 'ⲵ',
|
1001 |
-
'Ⲷ' => 'ⲷ',
|
1002 |
-
'Ⲹ' => 'ⲹ',
|
1003 |
-
'Ⲻ' => 'ⲻ',
|
1004 |
-
'Ⲽ' => 'ⲽ',
|
1005 |
-
'Ⲿ' => 'ⲿ',
|
1006 |
-
'Ⳁ' => 'ⳁ',
|
1007 |
-
'Ⳃ' => 'ⳃ',
|
1008 |
-
'Ⳅ' => 'ⳅ',
|
1009 |
-
'Ⳇ' => 'ⳇ',
|
1010 |
-
'Ⳉ' => 'ⳉ',
|
1011 |
-
'Ⳋ' => 'ⳋ',
|
1012 |
-
'Ⳍ' => 'ⳍ',
|
1013 |
-
'Ⳏ' => 'ⳏ',
|
1014 |
-
'Ⳑ' => 'ⳑ',
|
1015 |
-
'Ⳓ' => 'ⳓ',
|
1016 |
-
'Ⳕ' => 'ⳕ',
|
1017 |
-
'Ⳗ' => 'ⳗ',
|
1018 |
-
'Ⳙ' => 'ⳙ',
|
1019 |
-
'Ⳛ' => 'ⳛ',
|
1020 |
-
'Ⳝ' => 'ⳝ',
|
1021 |
-
'Ⳟ' => 'ⳟ',
|
1022 |
-
'Ⳡ' => 'ⳡ',
|
1023 |
-
'Ⳣ' => 'ⳣ',
|
1024 |
-
'Ⳬ' => 'ⳬ',
|
1025 |
-
'Ⳮ' => 'ⳮ',
|
1026 |
-
'Ⳳ' => 'ⳳ',
|
1027 |
-
'Ꙁ' => 'ꙁ',
|
1028 |
-
'Ꙃ' => 'ꙃ',
|
1029 |
-
'Ꙅ' => 'ꙅ',
|
1030 |
-
'Ꙇ' => 'ꙇ',
|
1031 |
-
'Ꙉ' => 'ꙉ',
|
1032 |
-
'Ꙋ' => 'ꙋ',
|
1033 |
-
'Ꙍ' => 'ꙍ',
|
1034 |
-
'Ꙏ' => 'ꙏ',
|
1035 |
-
'Ꙑ' => 'ꙑ',
|
1036 |
-
'Ꙓ' => 'ꙓ',
|
1037 |
-
'Ꙕ' => 'ꙕ',
|
1038 |
-
'Ꙗ' => 'ꙗ',
|
1039 |
-
'Ꙙ' => 'ꙙ',
|
1040 |
-
'Ꙛ' => 'ꙛ',
|
1041 |
-
'Ꙝ' => 'ꙝ',
|
1042 |
-
'Ꙟ' => 'ꙟ',
|
1043 |
-
'Ꙡ' => 'ꙡ',
|
1044 |
-
'Ꙣ' => 'ꙣ',
|
1045 |
-
'Ꙥ' => 'ꙥ',
|
1046 |
-
'Ꙧ' => 'ꙧ',
|
1047 |
-
'Ꙩ' => 'ꙩ',
|
1048 |
-
'Ꙫ' => 'ꙫ',
|
1049 |
-
'Ꙭ' => 'ꙭ',
|
1050 |
-
'Ꚁ' => 'ꚁ',
|
1051 |
-
'Ꚃ' => 'ꚃ',
|
1052 |
-
'Ꚅ' => 'ꚅ',
|
1053 |
-
'Ꚇ' => 'ꚇ',
|
1054 |
-
'Ꚉ' => 'ꚉ',
|
1055 |
-
'Ꚋ' => 'ꚋ',
|
1056 |
-
'Ꚍ' => 'ꚍ',
|
1057 |
-
'Ꚏ' => 'ꚏ',
|
1058 |
-
'Ꚑ' => 'ꚑ',
|
1059 |
-
'Ꚓ' => 'ꚓ',
|
1060 |
-
'Ꚕ' => 'ꚕ',
|
1061 |
-
'Ꚗ' => 'ꚗ',
|
1062 |
-
'Ꚙ' => 'ꚙ',
|
1063 |
-
'Ꚛ' => 'ꚛ',
|
1064 |
-
'Ꜣ' => 'ꜣ',
|
1065 |
-
'Ꜥ' => 'ꜥ',
|
1066 |
-
'Ꜧ' => 'ꜧ',
|
1067 |
-
'Ꜩ' => 'ꜩ',
|
1068 |
-
'Ꜫ' => 'ꜫ',
|
1069 |
-
'Ꜭ' => 'ꜭ',
|
1070 |
-
'Ꜯ' => 'ꜯ',
|
1071 |
-
'Ꜳ' => 'ꜳ',
|
1072 |
-
'Ꜵ' => 'ꜵ',
|
1073 |
-
'Ꜷ' => 'ꜷ',
|
1074 |
-
'Ꜹ' => 'ꜹ',
|
1075 |
-
'Ꜻ' => 'ꜻ',
|
1076 |
-
'Ꜽ' => 'ꜽ',
|
1077 |
-
'Ꜿ' => 'ꜿ',
|
1078 |
-
'Ꝁ' => 'ꝁ',
|
1079 |
-
'Ꝃ' => 'ꝃ',
|
1080 |
-
'Ꝅ' => 'ꝅ',
|
1081 |
-
'Ꝇ' => 'ꝇ',
|
1082 |
-
'Ꝉ' => 'ꝉ',
|
1083 |
-
'Ꝋ' => 'ꝋ',
|
1084 |
-
'Ꝍ' => 'ꝍ',
|
1085 |
-
'Ꝏ' => 'ꝏ',
|
1086 |
-
'Ꝑ' => 'ꝑ',
|
1087 |
-
'Ꝓ' => 'ꝓ',
|
1088 |
-
'Ꝕ' => 'ꝕ',
|
1089 |
-
'Ꝗ' => 'ꝗ',
|
1090 |
-
'Ꝙ' => 'ꝙ',
|
1091 |
-
'Ꝛ' => 'ꝛ',
|
1092 |
-
'Ꝝ' => 'ꝝ',
|
1093 |
-
'Ꝟ' => 'ꝟ',
|
1094 |
-
'Ꝡ' => 'ꝡ',
|
1095 |
-
'Ꝣ' => 'ꝣ',
|
1096 |
-
'Ꝥ' => 'ꝥ',
|
1097 |
-
'Ꝧ' => 'ꝧ',
|
1098 |
-
'Ꝩ' => 'ꝩ',
|
1099 |
-
'Ꝫ' => 'ꝫ',
|
1100 |
-
'Ꝭ' => 'ꝭ',
|
1101 |
-
'Ꝯ' => 'ꝯ',
|
1102 |
-
'Ꝺ' => 'ꝺ',
|
1103 |
-
'Ꝼ' => 'ꝼ',
|
1104 |
-
'Ᵹ' => 'ᵹ',
|
1105 |
-
'Ꝿ' => 'ꝿ',
|
1106 |
-
'Ꞁ' => 'ꞁ',
|
1107 |
-
'Ꞃ' => 'ꞃ',
|
1108 |
-
'Ꞅ' => 'ꞅ',
|
1109 |
-
'Ꞇ' => 'ꞇ',
|
1110 |
-
'Ꞌ' => 'ꞌ',
|
1111 |
-
'Ɥ' => 'ɥ',
|
1112 |
-
'Ꞑ' => 'ꞑ',
|
1113 |
-
'Ꞓ' => 'ꞓ',
|
1114 |
-
'Ꞗ' => 'ꞗ',
|
1115 |
-
'Ꞙ' => 'ꞙ',
|
1116 |
-
'Ꞛ' => 'ꞛ',
|
1117 |
-
'Ꞝ' => 'ꞝ',
|
1118 |
-
'Ꞟ' => 'ꞟ',
|
1119 |
-
'Ꞡ' => 'ꞡ',
|
1120 |
-
'Ꞣ' => 'ꞣ',
|
1121 |
-
'Ꞥ' => 'ꞥ',
|
1122 |
-
'Ꞧ' => 'ꞧ',
|
1123 |
-
'Ꞩ' => 'ꞩ',
|
1124 |
-
'Ɦ' => 'ɦ',
|
1125 |
-
'Ɜ' => 'ɜ',
|
1126 |
-
'Ɡ' => 'ɡ',
|
1127 |
-
'Ɬ' => 'ɬ',
|
1128 |
-
'Ɪ' => 'ɪ',
|
1129 |
-
'Ʞ' => 'ʞ',
|
1130 |
-
'Ʇ' => 'ʇ',
|
1131 |
-
'Ʝ' => 'ʝ',
|
1132 |
-
'Ꭓ' => 'ꭓ',
|
1133 |
-
'Ꞵ' => 'ꞵ',
|
1134 |
-
'Ꞷ' => 'ꞷ',
|
1135 |
-
'Ꞹ' => 'ꞹ',
|
1136 |
-
'Ꞻ' => 'ꞻ',
|
1137 |
-
'Ꞽ' => 'ꞽ',
|
1138 |
-
'Ꞿ' => 'ꞿ',
|
1139 |
-
'Ꟃ' => 'ꟃ',
|
1140 |
-
'Ꞔ' => 'ꞔ',
|
1141 |
-
'Ʂ' => 'ʂ',
|
1142 |
-
'Ᶎ' => 'ᶎ',
|
1143 |
-
'Ꟈ' => 'ꟈ',
|
1144 |
-
'Ꟊ' => 'ꟊ',
|
1145 |
-
'Ꟶ' => 'ꟶ',
|
1146 |
-
'A' => 'a',
|
1147 |
-
'B' => 'b',
|
1148 |
-
'C' => 'c',
|
1149 |
-
'D' => 'd',
|
1150 |
-
'E' => 'e',
|
1151 |
-
'F' => 'f',
|
1152 |
-
'G' => 'g',
|
1153 |
-
'H' => 'h',
|
1154 |
-
'I' => 'i',
|
1155 |
-
'J' => 'j',
|
1156 |
-
'K' => 'k',
|
1157 |
-
'L' => 'l',
|
1158 |
-
'M' => 'm',
|
1159 |
-
'N' => 'n',
|
1160 |
-
'O' => 'o',
|
1161 |
-
'P' => 'p',
|
1162 |
-
'Q' => 'q',
|
1163 |
-
'R' => 'r',
|
1164 |
-
'S' => 's',
|
1165 |
-
'T' => 't',
|
1166 |
-
'U' => 'u',
|
1167 |
-
'V' => 'v',
|
1168 |
-
'W' => 'w',
|
1169 |
-
'X' => 'x',
|
1170 |
-
'Y' => 'y',
|
1171 |
-
'Z' => 'z',
|
1172 |
-
'𐐀' => '𐐨',
|
1173 |
-
'𐐁' => '𐐩',
|
1174 |
-
'𐐂' => '𐐪',
|
1175 |
-
'𐐃' => '𐐫',
|
1176 |
-
'𐐄' => '𐐬',
|
1177 |
-
'𐐅' => '𐐭',
|
1178 |
-
'𐐆' => '𐐮',
|
1179 |
-
'𐐇' => '𐐯',
|
1180 |
-
'𐐈' => '𐐰',
|
1181 |
-
'𐐉' => '𐐱',
|
1182 |
-
'𐐊' => '𐐲',
|
1183 |
-
'𐐋' => '𐐳',
|
1184 |
-
'𐐌' => '𐐴',
|
1185 |
-
'𐐍' => '𐐵',
|
1186 |
-
'𐐎' => '𐐶',
|
1187 |
-
'𐐏' => '𐐷',
|
1188 |
-
'𐐐' => '𐐸',
|
1189 |
-
'𐐑' => '𐐹',
|
1190 |
-
'𐐒' => '𐐺',
|
1191 |
-
'𐐓' => '𐐻',
|
1192 |
-
'𐐔' => '𐐼',
|
1193 |
-
'𐐕' => '𐐽',
|
1194 |
-
'𐐖' => '𐐾',
|
1195 |
-
'𐐗' => '𐐿',
|
1196 |
-
'𐐘' => '𐑀',
|
1197 |
-
'𐐙' => '𐑁',
|
1198 |
-
'𐐚' => '𐑂',
|
1199 |
-
'𐐛' => '𐑃',
|
1200 |
-
'𐐜' => '𐑄',
|
1201 |
-
'𐐝' => '𐑅',
|
1202 |
-
'𐐞' => '𐑆',
|
1203 |
-
'𐐟' => '𐑇',
|
1204 |
-
'𐐠' => '𐑈',
|
1205 |
-
'𐐡' => '𐑉',
|
1206 |
-
'𐐢' => '𐑊',
|
1207 |
-
'𐐣' => '𐑋',
|
1208 |
-
'𐐤' => '𐑌',
|
1209 |
-
'𐐥' => '𐑍',
|
1210 |
-
'𐐦' => '𐑎',
|
1211 |
-
'𐐧' => '𐑏',
|
1212 |
-
'𐒰' => '𐓘',
|
1213 |
-
'𐒱' => '𐓙',
|
1214 |
-
'𐒲' => '𐓚',
|
1215 |
-
'𐒳' => '𐓛',
|
1216 |
-
'𐒴' => '𐓜',
|
1217 |
-
'𐒵' => '𐓝',
|
1218 |
-
'𐒶' => '𐓞',
|
1219 |
-
'𐒷' => '𐓟',
|
1220 |
-
'𐒸' => '𐓠',
|
1221 |
-
'𐒹' => '𐓡',
|
1222 |
-
'𐒺' => '𐓢',
|
1223 |
-
'𐒻' => '𐓣',
|
1224 |
-
'𐒼' => '𐓤',
|
1225 |
-
'𐒽' => '𐓥',
|
1226 |
-
'𐒾' => '𐓦',
|
1227 |
-
'𐒿' => '𐓧',
|
1228 |
-
'𐓀' => '𐓨',
|
1229 |
-
'𐓁' => '𐓩',
|
1230 |
-
'𐓂' => '𐓪',
|
1231 |
-
'𐓃' => '𐓫',
|
1232 |
-
'𐓄' => '𐓬',
|
1233 |
-
'𐓅' => '𐓭',
|
1234 |
-
'𐓆' => '𐓮',
|
1235 |
-
'𐓇' => '𐓯',
|
1236 |
-
'𐓈' => '𐓰',
|
1237 |
-
'𐓉' => '𐓱',
|
1238 |
-
'𐓊' => '𐓲',
|
1239 |
-
'𐓋' => '𐓳',
|
1240 |
-
'𐓌' => '𐓴',
|
1241 |
-
'𐓍' => '𐓵',
|
1242 |
-
'𐓎' => '𐓶',
|
1243 |
-
'𐓏' => '𐓷',
|
1244 |
-
'𐓐' => '𐓸',
|
1245 |
-
'𐓑' => '𐓹',
|
1246 |
-
'𐓒' => '𐓺',
|
1247 |
-
'𐓓' => '𐓻',
|
1248 |
-
'𐲀' => '𐳀',
|
1249 |
-
'𐲁' => '𐳁',
|
1250 |
-
'𐲂' => '𐳂',
|
1251 |
-
'𐲃' => '𐳃',
|
1252 |
-
'𐲄' => '𐳄',
|
1253 |
-
'𐲅' => '𐳅',
|
1254 |
-
'𐲆' => '𐳆',
|
1255 |
-
'𐲇' => '𐳇',
|
1256 |
-
'𐲈' => '𐳈',
|
1257 |
-
'𐲉' => '𐳉',
|
1258 |
-
'𐲊' => '𐳊',
|
1259 |
-
'𐲋' => '𐳋',
|
1260 |
-
'𐲌' => '𐳌',
|
1261 |
-
'𐲍' => '𐳍',
|
1262 |
-
'𐲎' => '𐳎',
|
1263 |
-
'𐲏' => '𐳏',
|
1264 |
-
'𐲐' => '𐳐',
|
1265 |
-
'𐲑' => '𐳑',
|
1266 |
-
'𐲒' => '𐳒',
|
1267 |
-
'𐲓' => '𐳓',
|
1268 |
-
'𐲔' => '𐳔',
|
1269 |
-
'𐲕' => '𐳕',
|
1270 |
-
'𐲖' => '𐳖',
|
1271 |
-
'𐲗' => '𐳗',
|
1272 |
-
'𐲘' => '𐳘',
|
1273 |
-
'𐲙' => '𐳙',
|
1274 |
-
'𐲚' => '𐳚',
|
1275 |
-
'𐲛' => '𐳛',
|
1276 |
-
'𐲜' => '𐳜',
|
1277 |
-
'𐲝' => '𐳝',
|
1278 |
-
'𐲞' => '𐳞',
|
1279 |
-
'𐲟' => '𐳟',
|
1280 |
-
'𐲠' => '𐳠',
|
1281 |
-
'𐲡' => '𐳡',
|
1282 |
-
'𐲢' => '𐳢',
|
1283 |
-
'𐲣' => '𐳣',
|
1284 |
-
'𐲤' => '𐳤',
|
1285 |
-
'𐲥' => '𐳥',
|
1286 |
-
'𐲦' => '𐳦',
|
1287 |
-
'𐲧' => '𐳧',
|
1288 |
-
'𐲨' => '𐳨',
|
1289 |
-
'𐲩' => '𐳩',
|
1290 |
-
'𐲪' => '𐳪',
|
1291 |
-
'𐲫' => '𐳫',
|
1292 |
-
'𐲬' => '𐳬',
|
1293 |
-
'𐲭' => '𐳭',
|
1294 |
-
'𐲮' => '𐳮',
|
1295 |
-
'𐲯' => '𐳯',
|
1296 |
-
'𐲰' => '𐳰',
|
1297 |
-
'𐲱' => '𐳱',
|
1298 |
-
'𐲲' => '𐳲',
|
1299 |
-
'𑢠' => '𑣀',
|
1300 |
-
'𑢡' => '𑣁',
|
1301 |
-
'𑢢' => '𑣂',
|
1302 |
-
'𑢣' => '𑣃',
|
1303 |
-
'𑢤' => '𑣄',
|
1304 |
-
'𑢥' => '𑣅',
|
1305 |
-
'𑢦' => '𑣆',
|
1306 |
-
'𑢧' => '𑣇',
|
1307 |
-
'𑢨' => '𑣈',
|
1308 |
-
'𑢩' => '𑣉',
|
1309 |
-
'𑢪' => '𑣊',
|
1310 |
-
'𑢫' => '𑣋',
|
1311 |
-
'𑢬' => '𑣌',
|
1312 |
-
'𑢭' => '𑣍',
|
1313 |
-
'𑢮' => '𑣎',
|
1314 |
-
'𑢯' => '𑣏',
|
1315 |
-
'𑢰' => '𑣐',
|
1316 |
-
'𑢱' => '𑣑',
|
1317 |
-
'𑢲' => '𑣒',
|
1318 |
-
'𑢳' => '𑣓',
|
1319 |
-
'𑢴' => '𑣔',
|
1320 |
-
'𑢵' => '𑣕',
|
1321 |
-
'𑢶' => '𑣖',
|
1322 |
-
'𑢷' => '𑣗',
|
1323 |
-
'𑢸' => '𑣘',
|
1324 |
-
'𑢹' => '𑣙',
|
1325 |
-
'𑢺' => '𑣚',
|
1326 |
-
'𑢻' => '𑣛',
|
1327 |
-
'𑢼' => '𑣜',
|
1328 |
-
'𑢽' => '𑣝',
|
1329 |
-
'𑢾' => '𑣞',
|
1330 |
-
'𑢿' => '𑣟',
|
1331 |
-
'𖹀' => '𖹠',
|
1332 |
-
'𖹁' => '𖹡',
|
1333 |
-
'𖹂' => '𖹢',
|
1334 |
-
'𖹃' => '𖹣',
|
1335 |
-
'𖹄' => '𖹤',
|
1336 |
-
'𖹅' => '𖹥',
|
1337 |
-
'𖹆' => '𖹦',
|
1338 |
-
'𖹇' => '𖹧',
|
1339 |
-
'𖹈' => '𖹨',
|
1340 |
-
'𖹉' => '𖹩',
|
1341 |
-
'𖹊' => '𖹪',
|
1342 |
-
'𖹋' => '𖹫',
|
1343 |
-
'𖹌' => '𖹬',
|
1344 |
-
'𖹍' => '𖹭',
|
1345 |
-
'𖹎' => '𖹮',
|
1346 |
-
'𖹏' => '𖹯',
|
1347 |
-
'𖹐' => '𖹰',
|
1348 |
-
'𖹑' => '𖹱',
|
1349 |
-
'𖹒' => '𖹲',
|
1350 |
-
'𖹓' => '𖹳',
|
1351 |
-
'𖹔' => '𖹴',
|
1352 |
-
'𖹕' => '𖹵',
|
1353 |
-
'𖹖' => '𖹶',
|
1354 |
-
'𖹗' => '𖹷',
|
1355 |
-
'𖹘' => '𖹸',
|
1356 |
-
'𖹙' => '𖹹',
|
1357 |
-
'𖹚' => '𖹺',
|
1358 |
-
'𖹛' => '𖹻',
|
1359 |
-
'𖹜' => '𖹼',
|
1360 |
-
'𖹝' => '𖹽',
|
1361 |
-
'𖹞' => '𖹾',
|
1362 |
-
'𖹟' => '𖹿',
|
1363 |
-
'𞤀' => '𞤢',
|
1364 |
-
'𞤁' => '𞤣',
|
1365 |
-
'𞤂' => '𞤤',
|
1366 |
-
'𞤃' => '𞤥',
|
1367 |
-
'𞤄' => '𞤦',
|
1368 |
-
'𞤅' => '𞤧',
|
1369 |
-
'𞤆' => '𞤨',
|
1370 |
-
'𞤇' => '𞤩',
|
1371 |
-
'𞤈' => '𞤪',
|
1372 |
-
'𞤉' => '𞤫',
|
1373 |
-
'𞤊' => '𞤬',
|
1374 |
-
'𞤋' => '𞤭',
|
1375 |
-
'𞤌' => '𞤮',
|
1376 |
-
'𞤍' => '𞤯',
|
1377 |
-
'𞤎' => '𞤰',
|
1378 |
-
'𞤏' => '𞤱',
|
1379 |
-
'𞤐' => '𞤲',
|
1380 |
-
'𞤑' => '𞤳',
|
1381 |
-
'𞤒' => '𞤴',
|
1382 |
-
'𞤓' => '𞤵',
|
1383 |
-
'𞤔' => '𞤶',
|
1384 |
-
'𞤕' => '𞤷',
|
1385 |
-
'𞤖' => '𞤸',
|
1386 |
-
'𞤗' => '𞤹',
|
1387 |
-
'𞤘' => '𞤺',
|
1388 |
-
'𞤙' => '𞤻',
|
1389 |
-
'𞤚' => '𞤼',
|
1390 |
-
'𞤛' => '𞤽',
|
1391 |
-
'𞤜' => '𞤾',
|
1392 |
-
'𞤝' => '𞤿',
|
1393 |
-
'𞤞' => '𞥀',
|
1394 |
-
'𞤟' => '𞥁',
|
1395 |
-
'𞤠' => '𞥂',
|
1396 |
-
'𞤡' => '𞥃',
|
1397 |
-
);
|
1 |
+
<?php
|
2 |
+
|
3 |
+
return array (
|
4 |
+
'A' => 'a',
|
5 |
+
'B' => 'b',
|
6 |
+
'C' => 'c',
|
7 |
+
'D' => 'd',
|
8 |
+
'E' => 'e',
|
9 |
+
'F' => 'f',
|
10 |
+
'G' => 'g',
|
11 |
+
'H' => 'h',
|
12 |
+
'I' => 'i',
|
13 |
+
'J' => 'j',
|
14 |
+
'K' => 'k',
|
15 |
+
'L' => 'l',
|
16 |
+
'M' => 'm',
|
17 |
+
'N' => 'n',
|
18 |
+
'O' => 'o',
|
19 |
+
'P' => 'p',
|
20 |
+
'Q' => 'q',
|
21 |
+
'R' => 'r',
|
22 |
+
'S' => 's',
|
23 |
+
'T' => 't',
|
24 |
+
'U' => 'u',
|
25 |
+
'V' => 'v',
|
26 |
+
'W' => 'w',
|
27 |
+
'X' => 'x',
|
28 |
+
'Y' => 'y',
|
29 |
+
'Z' => 'z',
|
30 |
+
'À' => 'à',
|
31 |
+
'Á' => 'á',
|
32 |
+
'Â' => 'â',
|
33 |
+
'Ã' => 'ã',
|
34 |
+
'Ä' => 'ä',
|
35 |
+
'Å' => 'å',
|
36 |
+
'Æ' => 'æ',
|
37 |
+
'Ç' => 'ç',
|
38 |
+
'È' => 'è',
|
39 |
+
'É' => 'é',
|
40 |
+
'Ê' => 'ê',
|
41 |
+
'Ë' => 'ë',
|
42 |
+
'Ì' => 'ì',
|
43 |
+
'Í' => 'í',
|
44 |
+
'Î' => 'î',
|
45 |
+
'Ï' => 'ï',
|
46 |
+
'Ð' => 'ð',
|
47 |
+
'Ñ' => 'ñ',
|
48 |
+
'Ò' => 'ò',
|
49 |
+
'Ó' => 'ó',
|
50 |
+
'Ô' => 'ô',
|
51 |
+
'Õ' => 'õ',
|
52 |
+
'Ö' => 'ö',
|
53 |
+
'Ø' => 'ø',
|
54 |
+
'Ù' => 'ù',
|
55 |
+
'Ú' => 'ú',
|
56 |
+
'Û' => 'û',
|
57 |
+
'Ü' => 'ü',
|
58 |
+
'Ý' => 'ý',
|
59 |
+
'Þ' => 'þ',
|
60 |
+
'Ā' => 'ā',
|
61 |
+
'Ă' => 'ă',
|
62 |
+
'Ą' => 'ą',
|
63 |
+
'Ć' => 'ć',
|
64 |
+
'Ĉ' => 'ĉ',
|
65 |
+
'Ċ' => 'ċ',
|
66 |
+
'Č' => 'č',
|
67 |
+
'Ď' => 'ď',
|
68 |
+
'Đ' => 'đ',
|
69 |
+
'Ē' => 'ē',
|
70 |
+
'Ĕ' => 'ĕ',
|
71 |
+
'Ė' => 'ė',
|
72 |
+
'Ę' => 'ę',
|
73 |
+
'Ě' => 'ě',
|
74 |
+
'Ĝ' => 'ĝ',
|
75 |
+
'Ğ' => 'ğ',
|
76 |
+
'Ġ' => 'ġ',
|
77 |
+
'Ģ' => 'ģ',
|
78 |
+
'Ĥ' => 'ĥ',
|
79 |
+
'Ħ' => 'ħ',
|
80 |
+
'Ĩ' => 'ĩ',
|
81 |
+
'Ī' => 'ī',
|
82 |
+
'Ĭ' => 'ĭ',
|
83 |
+
'Į' => 'į',
|
84 |
+
'İ' => 'i',
|
85 |
+
'IJ' => 'ij',
|
86 |
+
'Ĵ' => 'ĵ',
|
87 |
+
'Ķ' => 'ķ',
|
88 |
+
'Ĺ' => 'ĺ',
|
89 |
+
'Ļ' => 'ļ',
|
90 |
+
'Ľ' => 'ľ',
|
91 |
+
'Ŀ' => 'ŀ',
|
92 |
+
'Ł' => 'ł',
|
93 |
+
'Ń' => 'ń',
|
94 |
+
'Ņ' => 'ņ',
|
95 |
+
'Ň' => 'ň',
|
96 |
+
'Ŋ' => 'ŋ',
|
97 |
+
'Ō' => 'ō',
|
98 |
+
'Ŏ' => 'ŏ',
|
99 |
+
'Ő' => 'ő',
|
100 |
+
'Œ' => 'œ',
|
101 |
+
'Ŕ' => 'ŕ',
|
102 |
+
'Ŗ' => 'ŗ',
|
103 |
+
'Ř' => 'ř',
|
104 |
+
'Ś' => 'ś',
|
105 |
+
'Ŝ' => 'ŝ',
|
106 |
+
'Ş' => 'ş',
|
107 |
+
'Š' => 'š',
|
108 |
+
'Ţ' => 'ţ',
|
109 |
+
'Ť' => 'ť',
|
110 |
+
'Ŧ' => 'ŧ',
|
111 |
+
'Ũ' => 'ũ',
|
112 |
+
'Ū' => 'ū',
|
113 |
+
'Ŭ' => 'ŭ',
|
114 |
+
'Ů' => 'ů',
|
115 |
+
'Ű' => 'ű',
|
116 |
+
'Ų' => 'ų',
|
117 |
+
'Ŵ' => 'ŵ',
|
118 |
+
'Ŷ' => 'ŷ',
|
119 |
+
'Ÿ' => 'ÿ',
|
120 |
+
'Ź' => 'ź',
|
121 |
+
'Ż' => 'ż',
|
122 |
+
'Ž' => 'ž',
|
123 |
+
'Ɓ' => 'ɓ',
|
124 |
+
'Ƃ' => 'ƃ',
|
125 |
+
'Ƅ' => 'ƅ',
|
126 |
+
'Ɔ' => 'ɔ',
|
127 |
+
'Ƈ' => 'ƈ',
|
128 |
+
'Ɖ' => 'ɖ',
|
129 |
+
'Ɗ' => 'ɗ',
|
130 |
+
'Ƌ' => 'ƌ',
|
131 |
+
'Ǝ' => 'ǝ',
|
132 |
+
'Ə' => 'ə',
|
133 |
+
'Ɛ' => 'ɛ',
|
134 |
+
'Ƒ' => 'ƒ',
|
135 |
+
'Ɠ' => 'ɠ',
|
136 |
+
'Ɣ' => 'ɣ',
|
137 |
+
'Ɩ' => 'ɩ',
|
138 |
+
'Ɨ' => 'ɨ',
|
139 |
+
'Ƙ' => 'ƙ',
|
140 |
+
'Ɯ' => 'ɯ',
|
141 |
+
'Ɲ' => 'ɲ',
|
142 |
+
'Ɵ' => 'ɵ',
|
143 |
+
'Ơ' => 'ơ',
|
144 |
+
'Ƣ' => 'ƣ',
|
145 |
+
'Ƥ' => 'ƥ',
|
146 |
+
'Ʀ' => 'ʀ',
|
147 |
+
'Ƨ' => 'ƨ',
|
148 |
+
'Ʃ' => 'ʃ',
|
149 |
+
'Ƭ' => 'ƭ',
|
150 |
+
'Ʈ' => 'ʈ',
|
151 |
+
'Ư' => 'ư',
|
152 |
+
'Ʊ' => 'ʊ',
|
153 |
+
'Ʋ' => 'ʋ',
|
154 |
+
'Ƴ' => 'ƴ',
|
155 |
+
'Ƶ' => 'ƶ',
|
156 |
+
'Ʒ' => 'ʒ',
|
157 |
+
'Ƹ' => 'ƹ',
|
158 |
+
'Ƽ' => 'ƽ',
|
159 |
+
'DŽ' => 'dž',
|
160 |
+
'Dž' => 'dž',
|
161 |
+
'LJ' => 'lj',
|
162 |
+
'Lj' => 'lj',
|
163 |
+
'NJ' => 'nj',
|
164 |
+
'Nj' => 'nj',
|
165 |
+
'Ǎ' => 'ǎ',
|
166 |
+
'Ǐ' => 'ǐ',
|
167 |
+
'Ǒ' => 'ǒ',
|
168 |
+
'Ǔ' => 'ǔ',
|
169 |
+
'Ǖ' => 'ǖ',
|
170 |
+
'Ǘ' => 'ǘ',
|
171 |
+
'Ǚ' => 'ǚ',
|
172 |
+
'Ǜ' => 'ǜ',
|
173 |
+
'Ǟ' => 'ǟ',
|
174 |
+
'Ǡ' => 'ǡ',
|
175 |
+
'Ǣ' => 'ǣ',
|
176 |
+
'Ǥ' => 'ǥ',
|
177 |
+
'Ǧ' => 'ǧ',
|
178 |
+
'Ǩ' => 'ǩ',
|
179 |
+
'Ǫ' => 'ǫ',
|
180 |
+
'Ǭ' => 'ǭ',
|
181 |
+
'Ǯ' => 'ǯ',
|
182 |
+
'DZ' => 'dz',
|
183 |
+
'Dz' => 'dz',
|
184 |
+
'Ǵ' => 'ǵ',
|
185 |
+
'Ƕ' => 'ƕ',
|
186 |
+
'Ƿ' => 'ƿ',
|
187 |
+
'Ǹ' => 'ǹ',
|
188 |
+
'Ǻ' => 'ǻ',
|
189 |
+
'Ǽ' => 'ǽ',
|
190 |
+
'Ǿ' => 'ǿ',
|
191 |
+
'Ȁ' => 'ȁ',
|
192 |
+
'Ȃ' => 'ȃ',
|
193 |
+
'Ȅ' => 'ȅ',
|
194 |
+
'Ȇ' => 'ȇ',
|
195 |
+
'Ȉ' => 'ȉ',
|
196 |
+
'Ȋ' => 'ȋ',
|
197 |
+
'Ȍ' => 'ȍ',
|
198 |
+
'Ȏ' => 'ȏ',
|
199 |
+
'Ȑ' => 'ȑ',
|
200 |
+
'Ȓ' => 'ȓ',
|
201 |
+
'Ȕ' => 'ȕ',
|
202 |
+
'Ȗ' => 'ȗ',
|
203 |
+
'Ș' => 'ș',
|
204 |
+
'Ț' => 'ț',
|
205 |
+
'Ȝ' => 'ȝ',
|
206 |
+
'Ȟ' => 'ȟ',
|
207 |
+
'Ƞ' => 'ƞ',
|
208 |
+
'Ȣ' => 'ȣ',
|
209 |
+
'Ȥ' => 'ȥ',
|
210 |
+
'Ȧ' => 'ȧ',
|
211 |
+
'Ȩ' => 'ȩ',
|
212 |
+
'Ȫ' => 'ȫ',
|
213 |
+
'Ȭ' => 'ȭ',
|
214 |
+
'Ȯ' => 'ȯ',
|
215 |
+
'Ȱ' => 'ȱ',
|
216 |
+
'Ȳ' => 'ȳ',
|
217 |
+
'Ⱥ' => 'ⱥ',
|
218 |
+
'Ȼ' => 'ȼ',
|
219 |
+
'Ƚ' => 'ƚ',
|
220 |
+
'Ⱦ' => 'ⱦ',
|
221 |
+
'Ɂ' => 'ɂ',
|
222 |
+
'Ƀ' => 'ƀ',
|
223 |
+
'Ʉ' => 'ʉ',
|
224 |
+
'Ʌ' => 'ʌ',
|
225 |
+
'Ɇ' => 'ɇ',
|
226 |
+
'Ɉ' => 'ɉ',
|
227 |
+
'Ɋ' => 'ɋ',
|
228 |
+
'Ɍ' => 'ɍ',
|
229 |
+
'Ɏ' => 'ɏ',
|
230 |
+
'Ͱ' => 'ͱ',
|
231 |
+
'Ͳ' => 'ͳ',
|
232 |
+
'Ͷ' => 'ͷ',
|
233 |
+
'Ϳ' => 'ϳ',
|
234 |
+
'Ά' => 'ά',
|
235 |
+
'Έ' => 'έ',
|
236 |
+
'Ή' => 'ή',
|
237 |
+
'Ί' => 'ί',
|
238 |
+
'Ό' => 'ό',
|
239 |
+
'Ύ' => 'ύ',
|
240 |
+
'Ώ' => 'ώ',
|
241 |
+
'Α' => 'α',
|
242 |
+
'Β' => 'β',
|
243 |
+
'Γ' => 'γ',
|
244 |
+
'Δ' => 'δ',
|
245 |
+
'Ε' => 'ε',
|
246 |
+
'Ζ' => 'ζ',
|
247 |
+
'Η' => 'η',
|
248 |
+
'Θ' => 'θ',
|
249 |
+
'Ι' => 'ι',
|
250 |
+
'Κ' => 'κ',
|
251 |
+
'Λ' => 'λ',
|
252 |
+
'Μ' => 'μ',
|
253 |
+
'Ν' => 'ν',
|
254 |
+
'Ξ' => 'ξ',
|
255 |
+
'Ο' => 'ο',
|
256 |
+
'Π' => 'π',
|
257 |
+
'Ρ' => 'ρ',
|
258 |
+
'Σ' => 'σ',
|
259 |
+
'Τ' => 'τ',
|
260 |
+
'Υ' => 'υ',
|
261 |
+
'Φ' => 'φ',
|
262 |
+
'Χ' => 'χ',
|
263 |
+
'Ψ' => 'ψ',
|
264 |
+
'Ω' => 'ω',
|
265 |
+
'Ϊ' => 'ϊ',
|
266 |
+
'Ϋ' => 'ϋ',
|
267 |
+
'Ϗ' => 'ϗ',
|
268 |
+
'Ϙ' => 'ϙ',
|
269 |
+
'Ϛ' => 'ϛ',
|
270 |
+
'Ϝ' => 'ϝ',
|
271 |
+
'Ϟ' => 'ϟ',
|
272 |
+
'Ϡ' => 'ϡ',
|
273 |
+
'Ϣ' => 'ϣ',
|
274 |
+
'Ϥ' => 'ϥ',
|
275 |
+
'Ϧ' => 'ϧ',
|
276 |
+
'Ϩ' => 'ϩ',
|
277 |
+
'Ϫ' => 'ϫ',
|
278 |
+
'Ϭ' => 'ϭ',
|
279 |
+
'Ϯ' => 'ϯ',
|
280 |
+
'ϴ' => 'θ',
|
281 |
+
'Ϸ' => 'ϸ',
|
282 |
+
'Ϲ' => 'ϲ',
|
283 |
+
'Ϻ' => 'ϻ',
|
284 |
+
'Ͻ' => 'ͻ',
|
285 |
+
'Ͼ' => 'ͼ',
|
286 |
+
'Ͽ' => 'ͽ',
|
287 |
+
'Ѐ' => 'ѐ',
|
288 |
+
'Ё' => 'ё',
|
289 |
+
'Ђ' => 'ђ',
|
290 |
+
'Ѓ' => 'ѓ',
|
291 |
+
'Є' => 'є',
|
292 |
+
'Ѕ' => 'ѕ',
|
293 |
+
'І' => 'і',
|
294 |
+
'Ї' => 'ї',
|
295 |
+
'Ј' => 'ј',
|
296 |
+
'Љ' => 'љ',
|
297 |
+
'Њ' => 'њ',
|
298 |
+
'Ћ' => 'ћ',
|
299 |
+
'Ќ' => 'ќ',
|
300 |
+
'Ѝ' => 'ѝ',
|
301 |
+
'Ў' => 'ў',
|
302 |
+
'Џ' => 'џ',
|
303 |
+
'А' => 'а',
|
304 |
+
'Б' => 'б',
|
305 |
+
'В' => 'в',
|
306 |
+
'Г' => 'г',
|
307 |
+
'Д' => 'д',
|
308 |
+
'Е' => 'е',
|
309 |
+
'Ж' => 'ж',
|
310 |
+
'З' => 'з',
|
311 |
+
'И' => 'и',
|
312 |
+
'Й' => 'й',
|
313 |
+
'К' => 'к',
|
314 |
+
'Л' => 'л',
|
315 |
+
'М' => 'м',
|
316 |
+
'Н' => 'н',
|
317 |
+
'О' => 'о',
|
318 |
+
'П' => 'п',
|
319 |
+
'Р' => 'р',
|
320 |
+
'С' => 'с',
|
321 |
+
'Т' => 'т',
|
322 |
+
'У' => 'у',
|
323 |
+
'Ф' => 'ф',
|
324 |
+
'Х' => 'х',
|
325 |
+
'Ц' => 'ц',
|
326 |
+
'Ч' => 'ч',
|
327 |
+
'Ш' => 'ш',
|
328 |
+
'Щ' => 'щ',
|
329 |
+
'Ъ' => 'ъ',
|
330 |
+
'Ы' => 'ы',
|
331 |
+
'Ь' => 'ь',
|
332 |
+
'Э' => 'э',
|
333 |
+
'Ю' => 'ю',
|
334 |
+
'Я' => 'я',
|
335 |
+
'Ѡ' => 'ѡ',
|
336 |
+
'Ѣ' => 'ѣ',
|
337 |
+
'Ѥ' => 'ѥ',
|
338 |
+
'Ѧ' => 'ѧ',
|
339 |
+
'Ѩ' => 'ѩ',
|
340 |
+
'Ѫ' => 'ѫ',
|
341 |
+
'Ѭ' => 'ѭ',
|
342 |
+
'Ѯ' => 'ѯ',
|
343 |
+
'Ѱ' => 'ѱ',
|
344 |
+
'Ѳ' => 'ѳ',
|
345 |
+
'Ѵ' => 'ѵ',
|
346 |
+
'Ѷ' => 'ѷ',
|
347 |
+
'Ѹ' => 'ѹ',
|
348 |
+
'Ѻ' => 'ѻ',
|
349 |
+
'Ѽ' => 'ѽ',
|
350 |
+
'Ѿ' => 'ѿ',
|
351 |
+
'Ҁ' => 'ҁ',
|
352 |
+
'Ҋ' => 'ҋ',
|
353 |
+
'Ҍ' => 'ҍ',
|
354 |
+
'Ҏ' => 'ҏ',
|
355 |
+
'Ґ' => 'ґ',
|
356 |
+
'Ғ' => 'ғ',
|
357 |
+
'Ҕ' => 'ҕ',
|
358 |
+
'Җ' => 'җ',
|
359 |
+
'Ҙ' => 'ҙ',
|
360 |
+
'Қ' => 'қ',
|
361 |
+
'Ҝ' => 'ҝ',
|
362 |
+
'Ҟ' => 'ҟ',
|
363 |
+
'Ҡ' => 'ҡ',
|
364 |
+
'Ң' => 'ң',
|
365 |
+
'Ҥ' => 'ҥ',
|
366 |
+
'Ҧ' => 'ҧ',
|
367 |
+
'Ҩ' => 'ҩ',
|
368 |
+
'Ҫ' => 'ҫ',
|
369 |
+
'Ҭ' => 'ҭ',
|
370 |
+
'Ү' => 'ү',
|
371 |
+
'Ұ' => 'ұ',
|
372 |
+
'Ҳ' => 'ҳ',
|
373 |
+
'Ҵ' => 'ҵ',
|
374 |
+
'Ҷ' => 'ҷ',
|
375 |
+
'Ҹ' => 'ҹ',
|
376 |
+
'Һ' => 'һ',
|
377 |
+
'Ҽ' => 'ҽ',
|
378 |
+
'Ҿ' => 'ҿ',
|
379 |
+
'Ӏ' => 'ӏ',
|
380 |
+
'Ӂ' => 'ӂ',
|
381 |
+
'Ӄ' => 'ӄ',
|
382 |
+
'Ӆ' => 'ӆ',
|
383 |
+
'Ӈ' => 'ӈ',
|
384 |
+
'Ӊ' => 'ӊ',
|
385 |
+
'Ӌ' => 'ӌ',
|
386 |
+
'Ӎ' => 'ӎ',
|
387 |
+
'Ӑ' => 'ӑ',
|
388 |
+
'Ӓ' => 'ӓ',
|
389 |
+
'Ӕ' => 'ӕ',
|
390 |
+
'Ӗ' => 'ӗ',
|
391 |
+
'Ә' => 'ә',
|
392 |
+
'Ӛ' => 'ӛ',
|
393 |
+
'Ӝ' => 'ӝ',
|
394 |
+
'Ӟ' => 'ӟ',
|
395 |
+
'Ӡ' => 'ӡ',
|
396 |
+
'Ӣ' => 'ӣ',
|
397 |
+
'Ӥ' => 'ӥ',
|
398 |
+
'Ӧ' => 'ӧ',
|
399 |
+
'Ө' => 'ө',
|
400 |
+
'Ӫ' => 'ӫ',
|
401 |
+
'Ӭ' => 'ӭ',
|
402 |
+
'Ӯ' => 'ӯ',
|
403 |
+
'Ӱ' => 'ӱ',
|
404 |
+
'Ӳ' => 'ӳ',
|
405 |
+
'Ӵ' => 'ӵ',
|
406 |
+
'Ӷ' => 'ӷ',
|
407 |
+
'Ӹ' => 'ӹ',
|
408 |
+
'Ӻ' => 'ӻ',
|
409 |
+
'Ӽ' => 'ӽ',
|
410 |
+
'Ӿ' => 'ӿ',
|
411 |
+
'Ԁ' => 'ԁ',
|
412 |
+
'Ԃ' => 'ԃ',
|
413 |
+
'Ԅ' => 'ԅ',
|
414 |
+
'Ԇ' => 'ԇ',
|
415 |
+
'Ԉ' => 'ԉ',
|
416 |
+
'Ԋ' => 'ԋ',
|
417 |
+
'Ԍ' => 'ԍ',
|
418 |
+
'Ԏ' => 'ԏ',
|
419 |
+
'Ԑ' => 'ԑ',
|
420 |
+
'Ԓ' => 'ԓ',
|
421 |
+
'Ԕ' => 'ԕ',
|
422 |
+
'Ԗ' => 'ԗ',
|
423 |
+
'Ԙ' => 'ԙ',
|
424 |
+
'Ԛ' => 'ԛ',
|
425 |
+
'Ԝ' => 'ԝ',
|
426 |
+
'Ԟ' => 'ԟ',
|
427 |
+
'Ԡ' => 'ԡ',
|
428 |
+
'Ԣ' => 'ԣ',
|
429 |
+
'Ԥ' => 'ԥ',
|
430 |
+
'Ԧ' => 'ԧ',
|
431 |
+
'Ԩ' => 'ԩ',
|
432 |
+
'Ԫ' => 'ԫ',
|
433 |
+
'Ԭ' => 'ԭ',
|
434 |
+
'Ԯ' => 'ԯ',
|
435 |
+
'Ա' => 'ա',
|
436 |
+
'Բ' => 'բ',
|
437 |
+
'Գ' => 'գ',
|
438 |
+
'Դ' => 'դ',
|
439 |
+
'Ե' => 'ե',
|
440 |
+
'Զ' => 'զ',
|
441 |
+
'Է' => 'է',
|
442 |
+
'Ը' => 'ը',
|
443 |
+
'Թ' => 'թ',
|
444 |
+
'Ժ' => 'ժ',
|
445 |
+
'Ի' => 'ի',
|
446 |
+
'Լ' => 'լ',
|
447 |
+
'Խ' => 'խ',
|
448 |
+
'Ծ' => 'ծ',
|
449 |
+
'Կ' => 'կ',
|
450 |
+
'Հ' => 'հ',
|
451 |
+
'Ձ' => 'ձ',
|
452 |
+
'Ղ' => 'ղ',
|
453 |
+
'Ճ' => 'ճ',
|
454 |
+
'Մ' => 'մ',
|
455 |
+
'Յ' => 'յ',
|
456 |
+
'Ն' => 'ն',
|
457 |
+
'Շ' => 'շ',
|
458 |
+
'Ո' => 'ո',
|
459 |
+
'Չ' => 'չ',
|
460 |
+
'Պ' => 'պ',
|
461 |
+
'Ջ' => 'ջ',
|
462 |
+
'Ռ' => 'ռ',
|
463 |
+
'Ս' => 'ս',
|
464 |
+
'Վ' => 'վ',
|
465 |
+
'Տ' => 'տ',
|
466 |
+
'Ր' => 'ր',
|
467 |
+
'Ց' => 'ց',
|
468 |
+
'Ւ' => 'ւ',
|
469 |
+
'Փ' => 'փ',
|
470 |
+
'Ք' => 'ք',
|
471 |
+
'Օ' => 'օ',
|
472 |
+
'Ֆ' => 'ֆ',
|
473 |
+
'Ⴀ' => 'ⴀ',
|
474 |
+
'Ⴁ' => 'ⴁ',
|
475 |
+
'Ⴂ' => 'ⴂ',
|
476 |
+
'Ⴃ' => 'ⴃ',
|
477 |
+
'Ⴄ' => 'ⴄ',
|
478 |
+
'Ⴅ' => 'ⴅ',
|
479 |
+
'Ⴆ' => 'ⴆ',
|
480 |
+
'Ⴇ' => 'ⴇ',
|
481 |
+
'Ⴈ' => 'ⴈ',
|
482 |
+
'Ⴉ' => 'ⴉ',
|
483 |
+
'Ⴊ' => 'ⴊ',
|
484 |
+
'Ⴋ' => 'ⴋ',
|
485 |
+
'Ⴌ' => 'ⴌ',
|
486 |
+
'Ⴍ' => 'ⴍ',
|
487 |
+
'Ⴎ' => 'ⴎ',
|
488 |
+
'Ⴏ' => 'ⴏ',
|
489 |
+
'Ⴐ' => 'ⴐ',
|
490 |
+
'Ⴑ' => 'ⴑ',
|
491 |
+
'Ⴒ' => 'ⴒ',
|
492 |
+
'Ⴓ' => 'ⴓ',
|
493 |
+
'Ⴔ' => 'ⴔ',
|
494 |
+
'Ⴕ' => 'ⴕ',
|
495 |
+
'Ⴖ' => 'ⴖ',
|
496 |
+
'Ⴗ' => 'ⴗ',
|
497 |
+
'Ⴘ' => 'ⴘ',
|
498 |
+
'Ⴙ' => 'ⴙ',
|
499 |
+
'Ⴚ' => 'ⴚ',
|
500 |
+
'Ⴛ' => 'ⴛ',
|
501 |
+
'Ⴜ' => 'ⴜ',
|
502 |
+
'Ⴝ' => 'ⴝ',
|
503 |
+
'Ⴞ' => 'ⴞ',
|
504 |
+
'Ⴟ' => 'ⴟ',
|
505 |
+
'Ⴠ' => 'ⴠ',
|
506 |
+
'Ⴡ' => 'ⴡ',
|
507 |
+
'Ⴢ' => 'ⴢ',
|
508 |
+
'Ⴣ' => 'ⴣ',
|
509 |
+
'Ⴤ' => 'ⴤ',
|
510 |
+
'Ⴥ' => 'ⴥ',
|
511 |
+
'Ⴧ' => 'ⴧ',
|
512 |
+
'Ⴭ' => 'ⴭ',
|
513 |
+
'Ꭰ' => 'ꭰ',
|
514 |
+
'Ꭱ' => 'ꭱ',
|
515 |
+
'Ꭲ' => 'ꭲ',
|
516 |
+
'Ꭳ' => 'ꭳ',
|
517 |
+
'Ꭴ' => 'ꭴ',
|
518 |
+
'Ꭵ' => 'ꭵ',
|
519 |
+
'Ꭶ' => 'ꭶ',
|
520 |
+
'Ꭷ' => 'ꭷ',
|
521 |
+
'Ꭸ' => 'ꭸ',
|
522 |
+
'Ꭹ' => 'ꭹ',
|
523 |
+
'Ꭺ' => 'ꭺ',
|
524 |
+
'Ꭻ' => 'ꭻ',
|
525 |
+
'Ꭼ' => 'ꭼ',
|
526 |
+
'Ꭽ' => 'ꭽ',
|
527 |
+
'Ꭾ' => 'ꭾ',
|
528 |
+
'Ꭿ' => 'ꭿ',
|
529 |
+
'Ꮀ' => 'ꮀ',
|
530 |
+
'Ꮁ' => 'ꮁ',
|
531 |
+
'Ꮂ' => 'ꮂ',
|
532 |
+
'Ꮃ' => 'ꮃ',
|
533 |
+
'Ꮄ' => 'ꮄ',
|
534 |
+
'Ꮅ' => 'ꮅ',
|
535 |
+
'Ꮆ' => 'ꮆ',
|
536 |
+
'Ꮇ' => 'ꮇ',
|
537 |
+
'Ꮈ' => 'ꮈ',
|
538 |
+
'Ꮉ' => 'ꮉ',
|
539 |
+
'Ꮊ' => 'ꮊ',
|
540 |
+
'Ꮋ' => 'ꮋ',
|
541 |
+
'Ꮌ' => 'ꮌ',
|
542 |
+
'Ꮍ' => 'ꮍ',
|
543 |
+
'Ꮎ' => 'ꮎ',
|
544 |
+
'Ꮏ' => 'ꮏ',
|
545 |
+
'Ꮐ' => 'ꮐ',
|
546 |
+
'Ꮑ' => 'ꮑ',
|
547 |
+
'Ꮒ' => 'ꮒ',
|
548 |
+
'Ꮓ' => 'ꮓ',
|
549 |
+
'Ꮔ' => 'ꮔ',
|
550 |
+
'Ꮕ' => 'ꮕ',
|
551 |
+
'Ꮖ' => 'ꮖ',
|
552 |
+
'Ꮗ' => 'ꮗ',
|
553 |
+
'Ꮘ' => 'ꮘ',
|
554 |
+
'Ꮙ' => 'ꮙ',
|
555 |
+
'Ꮚ' => 'ꮚ',
|
556 |
+
'Ꮛ' => 'ꮛ',
|
557 |
+
'Ꮜ' => 'ꮜ',
|
558 |
+
'Ꮝ' => 'ꮝ',
|
559 |
+
'Ꮞ' => 'ꮞ',
|
560 |
+
'Ꮟ' => 'ꮟ',
|
561 |
+
'Ꮠ' => 'ꮠ',
|
562 |
+
'Ꮡ' => 'ꮡ',
|
563 |
+
'Ꮢ' => 'ꮢ',
|
564 |
+
'Ꮣ' => 'ꮣ',
|
565 |
+
'Ꮤ' => 'ꮤ',
|
566 |
+
'Ꮥ' => 'ꮥ',
|
567 |
+
'Ꮦ' => 'ꮦ',
|
568 |
+
'Ꮧ' => 'ꮧ',
|
569 |
+
'Ꮨ' => 'ꮨ',
|
570 |
+
'Ꮩ' => 'ꮩ',
|
571 |
+
'Ꮪ' => 'ꮪ',
|
572 |
+
'Ꮫ' => 'ꮫ',
|
573 |
+
'Ꮬ' => 'ꮬ',
|
574 |
+
'Ꮭ' => 'ꮭ',
|
575 |
+
'Ꮮ' => 'ꮮ',
|
576 |
+
'Ꮯ' => 'ꮯ',
|
577 |
+
'Ꮰ' => 'ꮰ',
|
578 |
+
'Ꮱ' => 'ꮱ',
|
579 |
+
'Ꮲ' => 'ꮲ',
|
580 |
+
'Ꮳ' => 'ꮳ',
|
581 |
+
'Ꮴ' => 'ꮴ',
|
582 |
+
'Ꮵ' => 'ꮵ',
|
583 |
+
'Ꮶ' => 'ꮶ',
|
584 |
+
'Ꮷ' => 'ꮷ',
|
585 |
+
'Ꮸ' => 'ꮸ',
|
586 |
+
'Ꮹ' => 'ꮹ',
|
587 |
+
'Ꮺ' => 'ꮺ',
|
588 |
+
'Ꮻ' => 'ꮻ',
|
589 |
+
'Ꮼ' => 'ꮼ',
|
590 |
+
'Ꮽ' => 'ꮽ',
|
591 |
+
'Ꮾ' => 'ꮾ',
|
592 |
+
'Ꮿ' => 'ꮿ',
|
593 |
+
'Ᏸ' => 'ᏸ',
|
594 |
+
'Ᏹ' => 'ᏹ',
|
595 |
+
'Ᏺ' => 'ᏺ',
|
596 |
+
'Ᏻ' => 'ᏻ',
|
597 |
+
'Ᏼ' => 'ᏼ',
|
598 |
+
'Ᏽ' => 'ᏽ',
|
599 |
+
'Ა' => 'ა',
|
600 |
+
'Ბ' => 'ბ',
|
601 |
+
'Გ' => 'გ',
|
602 |
+
'Დ' => 'დ',
|
603 |
+
'Ე' => 'ე',
|
604 |
+
'Ვ' => 'ვ',
|
605 |
+
'Ზ' => 'ზ',
|
606 |
+
'Თ' => 'თ',
|
607 |
+
'Ი' => 'ი',
|
608 |
+
'Კ' => 'კ',
|
609 |
+
'Ლ' => 'ლ',
|
610 |
+
'Მ' => 'მ',
|
611 |
+
'Ნ' => 'ნ',
|
612 |
+
'Ო' => 'ო',
|
613 |
+
'Პ' => 'პ',
|
614 |
+
'Ჟ' => 'ჟ',
|
615 |
+
'Რ' => 'რ',
|
616 |
+
'Ს' => 'ს',
|
617 |
+
'Ტ' => 'ტ',
|
618 |
+
'Უ' => 'უ',
|
619 |
+
'Ფ' => 'ფ',
|
620 |
+
'Ქ' => 'ქ',
|
621 |
+
'Ღ' => 'ღ',
|
622 |
+
'Ყ' => 'ყ',
|
623 |
+
'Შ' => 'შ',
|
624 |
+
'Ჩ' => 'ჩ',
|
625 |
+
'Ც' => 'ც',
|
626 |
+
'Ძ' => 'ძ',
|
627 |
+
'Წ' => 'წ',
|
628 |
+
'Ჭ' => 'ჭ',
|
629 |
+
'Ხ' => 'ხ',
|
630 |
+
'Ჯ' => 'ჯ',
|
631 |
+
'Ჰ' => 'ჰ',
|
632 |
+
'Ჱ' => 'ჱ',
|
633 |
+
'Ჲ' => 'ჲ',
|
634 |
+
'Ჳ' => 'ჳ',
|
635 |
+
'Ჴ' => 'ჴ',
|
636 |
+
'Ჵ' => 'ჵ',
|
637 |
+
'Ჶ' => 'ჶ',
|
638 |
+
'Ჷ' => 'ჷ',
|
639 |
+
'Ჸ' => 'ჸ',
|
640 |
+
'Ჹ' => 'ჹ',
|
641 |
+
'Ჺ' => 'ჺ',
|
642 |
+
'Ჽ' => 'ჽ',
|
643 |
+
'Ჾ' => 'ჾ',
|
644 |
+
'Ჿ' => 'ჿ',
|
645 |
+
'Ḁ' => 'ḁ',
|
646 |
+
'Ḃ' => 'ḃ',
|
647 |
+
'Ḅ' => 'ḅ',
|
648 |
+
'Ḇ' => 'ḇ',
|
649 |
+
'Ḉ' => 'ḉ',
|
650 |
+
'Ḋ' => 'ḋ',
|
651 |
+
'Ḍ' => 'ḍ',
|
652 |
+
'Ḏ' => 'ḏ',
|
653 |
+
'Ḑ' => 'ḑ',
|
654 |
+
'Ḓ' => 'ḓ',
|
655 |
+
'Ḕ' => 'ḕ',
|
656 |
+
'Ḗ' => 'ḗ',
|
657 |
+
'Ḙ' => 'ḙ',
|
658 |
+
'Ḛ' => 'ḛ',
|
659 |
+
'Ḝ' => 'ḝ',
|
660 |
+
'Ḟ' => 'ḟ',
|
661 |
+
'Ḡ' => 'ḡ',
|
662 |
+
'Ḣ' => 'ḣ',
|
663 |
+
'Ḥ' => 'ḥ',
|
664 |
+
'Ḧ' => 'ḧ',
|
665 |
+
'Ḩ' => 'ḩ',
|
666 |
+
'Ḫ' => 'ḫ',
|
667 |
+
'Ḭ' => 'ḭ',
|
668 |
+
'Ḯ' => 'ḯ',
|
669 |
+
'Ḱ' => 'ḱ',
|
670 |
+
'Ḳ' => 'ḳ',
|
671 |
+
'Ḵ' => 'ḵ',
|
672 |
+
'Ḷ' => 'ḷ',
|
673 |
+
'Ḹ' => 'ḹ',
|
674 |
+
'Ḻ' => 'ḻ',
|
675 |
+
'Ḽ' => 'ḽ',
|
676 |
+
'Ḿ' => 'ḿ',
|
677 |
+
'Ṁ' => 'ṁ',
|
678 |
+
'Ṃ' => 'ṃ',
|
679 |
+
'Ṅ' => 'ṅ',
|
680 |
+
'Ṇ' => 'ṇ',
|
681 |
+
'Ṉ' => 'ṉ',
|
682 |
+
'Ṋ' => 'ṋ',
|
683 |
+
'Ṍ' => 'ṍ',
|
684 |
+
'Ṏ' => 'ṏ',
|
685 |
+
'Ṑ' => 'ṑ',
|
686 |
+
'Ṓ' => 'ṓ',
|
687 |
+
'Ṕ' => 'ṕ',
|
688 |
+
'Ṗ' => 'ṗ',
|
689 |
+
'Ṙ' => 'ṙ',
|
690 |
+
'Ṛ' => 'ṛ',
|
691 |
+
'Ṝ' => 'ṝ',
|
692 |
+
'Ṟ' => 'ṟ',
|
693 |
+
'Ṡ' => 'ṡ',
|
694 |
+
'Ṣ' => 'ṣ',
|
695 |
+
'Ṥ' => 'ṥ',
|
696 |
+
'Ṧ' => 'ṧ',
|
697 |
+
'Ṩ' => 'ṩ',
|
698 |
+
'Ṫ' => 'ṫ',
|
699 |
+
'Ṭ' => 'ṭ',
|
700 |
+
'Ṯ' => 'ṯ',
|
701 |
+
'Ṱ' => 'ṱ',
|
702 |
+
'Ṳ' => 'ṳ',
|
703 |
+
'Ṵ' => 'ṵ',
|
704 |
+
'Ṷ' => 'ṷ',
|
705 |
+
'Ṹ' => 'ṹ',
|
706 |
+
'Ṻ' => 'ṻ',
|
707 |
+
'Ṽ' => 'ṽ',
|
708 |
+
'Ṿ' => 'ṿ',
|
709 |
+
'Ẁ' => 'ẁ',
|
710 |
+
'Ẃ' => 'ẃ',
|
711 |
+
'Ẅ' => 'ẅ',
|
712 |
+
'Ẇ' => 'ẇ',
|
713 |
+
'Ẉ' => 'ẉ',
|
714 |
+
'Ẋ' => 'ẋ',
|
715 |
+
'Ẍ' => 'ẍ',
|
716 |
+
'Ẏ' => 'ẏ',
|
717 |
+
'Ẑ' => 'ẑ',
|
718 |
+
'Ẓ' => 'ẓ',
|
719 |
+
'Ẕ' => 'ẕ',
|
720 |
+
'ẞ' => 'ß',
|
721 |
+
'Ạ' => 'ạ',
|
722 |
+
'Ả' => 'ả',
|
723 |
+
'Ấ' => 'ấ',
|
724 |
+
'Ầ' => 'ầ',
|
725 |
+
'Ẩ' => 'ẩ',
|
726 |
+
'Ẫ' => 'ẫ',
|
727 |
+
'Ậ' => 'ậ',
|
728 |
+
'Ắ' => 'ắ',
|
729 |
+
'Ằ' => 'ằ',
|
730 |
+
'Ẳ' => 'ẳ',
|
731 |
+
'Ẵ' => 'ẵ',
|
732 |
+
'Ặ' => 'ặ',
|
733 |
+
'Ẹ' => 'ẹ',
|
734 |
+
'Ẻ' => 'ẻ',
|
735 |
+
'Ẽ' => 'ẽ',
|
736 |
+
'Ế' => 'ế',
|
737 |
+
'Ề' => 'ề',
|
738 |
+
'Ể' => 'ể',
|
739 |
+
'Ễ' => 'ễ',
|
740 |
+
'Ệ' => 'ệ',
|
741 |
+
'Ỉ' => 'ỉ',
|
742 |
+
'Ị' => 'ị',
|
743 |
+
'Ọ' => 'ọ',
|
744 |
+
'Ỏ' => 'ỏ',
|
745 |
+
'Ố' => 'ố',
|
746 |
+
'Ồ' => 'ồ',
|
747 |
+
'Ổ' => 'ổ',
|
748 |
+
'Ỗ' => 'ỗ',
|
749 |
+
'Ộ' => 'ộ',
|
750 |
+
'Ớ' => 'ớ',
|
751 |
+
'Ờ' => 'ờ',
|
752 |
+
'Ở' => 'ở',
|
753 |
+
'Ỡ' => 'ỡ',
|
754 |
+
'Ợ' => 'ợ',
|
755 |
+
'Ụ' => 'ụ',
|
756 |
+
'Ủ' => 'ủ',
|
757 |
+
'Ứ' => 'ứ',
|
758 |
+
'Ừ' => 'ừ',
|
759 |
+
'Ử' => 'ử',
|
760 |
+
'Ữ' => 'ữ',
|
761 |
+
'Ự' => 'ự',
|
762 |
+
'Ỳ' => 'ỳ',
|
763 |
+
'Ỵ' => 'ỵ',
|
764 |
+
'Ỷ' => 'ỷ',
|
765 |
+
'Ỹ' => 'ỹ',
|
766 |
+
'Ỻ' => 'ỻ',
|
767 |
+
'Ỽ' => 'ỽ',
|
768 |
+
'Ỿ' => 'ỿ',
|
769 |
+
'Ἀ' => 'ἀ',
|
770 |
+
'Ἁ' => 'ἁ',
|
771 |
+
'Ἂ' => 'ἂ',
|
772 |
+
'Ἃ' => 'ἃ',
|
773 |
+
'Ἄ' => 'ἄ',
|
774 |
+
'Ἅ' => 'ἅ',
|
775 |
+
'Ἆ' => 'ἆ',
|
776 |
+
'Ἇ' => 'ἇ',
|
777 |
+
'Ἐ' => 'ἐ',
|
778 |
+
'Ἑ' => 'ἑ',
|
779 |
+
'Ἒ' => 'ἒ',
|
780 |
+
'Ἓ' => 'ἓ',
|
781 |
+
'Ἔ' => 'ἔ',
|
782 |
+
'Ἕ' => 'ἕ',
|
783 |
+
'Ἠ' => 'ἠ',
|
784 |
+
'Ἡ' => 'ἡ',
|
785 |
+
'Ἢ' => 'ἢ',
|
786 |
+
'Ἣ' => 'ἣ',
|
787 |
+
'Ἤ' => 'ἤ',
|
788 |
+
'Ἥ' => 'ἥ',
|
789 |
+
'Ἦ' => 'ἦ',
|
790 |
+
'Ἧ' => 'ἧ',
|
791 |
+
'Ἰ' => 'ἰ',
|
792 |
+
'Ἱ' => 'ἱ',
|
793 |
+
'Ἲ' => 'ἲ',
|
794 |
+
'Ἳ' => 'ἳ',
|
795 |
+
'Ἴ' => 'ἴ',
|
796 |
+
'Ἵ' => 'ἵ',
|
797 |
+
'Ἶ' => 'ἶ',
|
798 |
+
'Ἷ' => 'ἷ',
|
799 |
+
'Ὀ' => 'ὀ',
|
800 |
+
'Ὁ' => 'ὁ',
|
801 |
+
'Ὂ' => 'ὂ',
|
802 |
+
'Ὃ' => 'ὃ',
|
803 |
+
'Ὄ' => 'ὄ',
|
804 |
+
'Ὅ' => 'ὅ',
|
805 |
+
'Ὑ' => 'ὑ',
|
806 |
+
'Ὓ' => 'ὓ',
|
807 |
+
'Ὕ' => 'ὕ',
|
808 |
+
'Ὗ' => 'ὗ',
|
809 |
+
'Ὠ' => 'ὠ',
|
810 |
+
'Ὡ' => 'ὡ',
|
811 |
+
'Ὢ' => 'ὢ',
|
812 |
+
'Ὣ' => 'ὣ',
|
813 |
+
'Ὤ' => 'ὤ',
|
814 |
+
'Ὥ' => 'ὥ',
|
815 |
+
'Ὦ' => 'ὦ',
|
816 |
+
'Ὧ' => 'ὧ',
|
817 |
+
'ᾈ' => 'ᾀ',
|
818 |
+
'ᾉ' => 'ᾁ',
|
819 |
+
'ᾊ' => 'ᾂ',
|
820 |
+
'ᾋ' => 'ᾃ',
|
821 |
+
'ᾌ' => 'ᾄ',
|
822 |
+
'ᾍ' => 'ᾅ',
|
823 |
+
'ᾎ' => 'ᾆ',
|
824 |
+
'ᾏ' => 'ᾇ',
|
825 |
+
'ᾘ' => 'ᾐ',
|
826 |
+
'ᾙ' => 'ᾑ',
|
827 |
+
'ᾚ' => 'ᾒ',
|
828 |
+
'ᾛ' => 'ᾓ',
|
829 |
+
'ᾜ' => 'ᾔ',
|
830 |
+
'ᾝ' => 'ᾕ',
|
831 |
+
'ᾞ' => 'ᾖ',
|
832 |
+
'ᾟ' => 'ᾗ',
|
833 |
+
'ᾨ' => 'ᾠ',
|
834 |
+
'ᾩ' => 'ᾡ',
|
835 |
+
'ᾪ' => 'ᾢ',
|
836 |
+
'ᾫ' => 'ᾣ',
|
837 |
+
'ᾬ' => 'ᾤ',
|
838 |
+
'ᾭ' => 'ᾥ',
|
839 |
+
'ᾮ' => 'ᾦ',
|
840 |
+
'ᾯ' => 'ᾧ',
|
841 |
+
'Ᾰ' => 'ᾰ',
|
842 |
+
'Ᾱ' => 'ᾱ',
|
843 |
+
'Ὰ' => 'ὰ',
|
844 |
+
'Ά' => 'ά',
|
845 |
+
'ᾼ' => 'ᾳ',
|
846 |
+
'Ὲ' => 'ὲ',
|
847 |
+
'Έ' => 'έ',
|
848 |
+
'Ὴ' => 'ὴ',
|
849 |
+
'Ή' => 'ή',
|
850 |
+
'ῌ' => 'ῃ',
|
851 |
+
'Ῐ' => 'ῐ',
|
852 |
+
'Ῑ' => 'ῑ',
|
853 |
+
'Ὶ' => 'ὶ',
|
854 |
+
'Ί' => 'ί',
|
855 |
+
'Ῠ' => 'ῠ',
|
856 |
+
'Ῡ' => 'ῡ',
|
857 |
+
'Ὺ' => 'ὺ',
|
858 |
+
'Ύ' => 'ύ',
|
859 |
+
'Ῥ' => 'ῥ',
|
860 |
+
'Ὸ' => 'ὸ',
|
861 |
+
'Ό' => 'ό',
|
862 |
+
'Ὼ' => 'ὼ',
|
863 |
+
'Ώ' => 'ώ',
|
864 |
+
'ῼ' => 'ῳ',
|
865 |
+
'Ω' => 'ω',
|
866 |
+
'K' => 'k',
|
867 |
+
'Å' => 'å',
|
868 |
+
'Ⅎ' => 'ⅎ',
|
869 |
+
'Ⅰ' => 'ⅰ',
|
870 |
+
'Ⅱ' => 'ⅱ',
|
871 |
+
'Ⅲ' => 'ⅲ',
|
872 |
+
'Ⅳ' => 'ⅳ',
|
873 |
+
'Ⅴ' => 'ⅴ',
|
874 |
+
'Ⅵ' => 'ⅵ',
|
875 |
+
'Ⅶ' => 'ⅶ',
|
876 |
+
'Ⅷ' => 'ⅷ',
|
877 |
+
'Ⅸ' => 'ⅸ',
|
878 |
+
'Ⅹ' => 'ⅹ',
|
879 |
+
'Ⅺ' => 'ⅺ',
|
880 |
+
'Ⅻ' => 'ⅻ',
|
881 |
+
'Ⅼ' => 'ⅼ',
|
882 |
+
'Ⅽ' => 'ⅽ',
|
883 |
+
'Ⅾ' => 'ⅾ',
|
884 |
+
'Ⅿ' => 'ⅿ',
|
885 |
+
'Ↄ' => 'ↄ',
|
886 |
+
'Ⓐ' => 'ⓐ',
|
887 |
+
'Ⓑ' => 'ⓑ',
|
888 |
+
'Ⓒ' => 'ⓒ',
|
889 |
+
'Ⓓ' => 'ⓓ',
|
890 |
+
'Ⓔ' => 'ⓔ',
|
891 |
+
'Ⓕ' => 'ⓕ',
|
892 |
+
'Ⓖ' => 'ⓖ',
|
893 |
+
'Ⓗ' => 'ⓗ',
|
894 |
+
'Ⓘ' => 'ⓘ',
|
895 |
+
'Ⓙ' => 'ⓙ',
|
896 |
+
'Ⓚ' => 'ⓚ',
|
897 |
+
'Ⓛ' => 'ⓛ',
|
898 |
+
'Ⓜ' => 'ⓜ',
|
899 |
+
'Ⓝ' => 'ⓝ',
|
900 |
+
'Ⓞ' => 'ⓞ',
|
901 |
+
'Ⓟ' => 'ⓟ',
|
902 |
+
'Ⓠ' => 'ⓠ',
|
903 |
+
'Ⓡ' => 'ⓡ',
|
904 |
+
'Ⓢ' => 'ⓢ',
|
905 |
+
'Ⓣ' => 'ⓣ',
|
906 |
+
'Ⓤ' => 'ⓤ',
|
907 |
+
'Ⓥ' => 'ⓥ',
|
908 |
+
'Ⓦ' => 'ⓦ',
|
909 |
+
'Ⓧ' => 'ⓧ',
|
910 |
+
'Ⓨ' => 'ⓨ',
|
911 |
+
'Ⓩ' => 'ⓩ',
|
912 |
+
'Ⰰ' => 'ⰰ',
|
913 |
+
'Ⰱ' => 'ⰱ',
|
914 |
+
'Ⰲ' => 'ⰲ',
|
915 |
+
'Ⰳ' => 'ⰳ',
|
916 |
+
'Ⰴ' => 'ⰴ',
|
917 |
+
'Ⰵ' => 'ⰵ',
|
918 |
+
'Ⰶ' => 'ⰶ',
|
919 |
+
'Ⰷ' => 'ⰷ',
|
920 |
+
'Ⰸ' => 'ⰸ',
|
921 |
+
'Ⰹ' => 'ⰹ',
|
922 |
+
'Ⰺ' => 'ⰺ',
|
923 |
+
'Ⰻ' => 'ⰻ',
|
924 |
+
'Ⰼ' => 'ⰼ',
|
925 |
+
'Ⰽ' => 'ⰽ',
|
926 |
+
'Ⰾ' => 'ⰾ',
|
927 |
+
'Ⰿ' => 'ⰿ',
|
928 |
+
'Ⱀ' => 'ⱀ',
|
929 |
+
'Ⱁ' => 'ⱁ',
|
930 |
+
'Ⱂ' => 'ⱂ',
|
931 |
+
'Ⱃ' => 'ⱃ',
|
932 |
+
'Ⱄ' => 'ⱄ',
|
933 |
+
'Ⱅ' => 'ⱅ',
|
934 |
+
'Ⱆ' => 'ⱆ',
|
935 |
+
'Ⱇ' => 'ⱇ',
|
936 |
+
'Ⱈ' => 'ⱈ',
|
937 |
+
'Ⱉ' => 'ⱉ',
|
938 |
+
'Ⱊ' => 'ⱊ',
|
939 |
+
'Ⱋ' => 'ⱋ',
|
940 |
+
'Ⱌ' => 'ⱌ',
|
941 |
+
'Ⱍ' => 'ⱍ',
|
942 |
+
'Ⱎ' => 'ⱎ',
|
943 |
+
'Ⱏ' => 'ⱏ',
|
944 |
+
'Ⱐ' => 'ⱐ',
|
945 |
+
'Ⱑ' => 'ⱑ',
|
946 |
+
'Ⱒ' => 'ⱒ',
|
947 |
+
'Ⱓ' => 'ⱓ',
|
948 |
+
'Ⱔ' => 'ⱔ',
|
949 |
+
'Ⱕ' => 'ⱕ',
|
950 |
+
'Ⱖ' => 'ⱖ',
|
951 |
+
'Ⱗ' => 'ⱗ',
|
952 |
+
'Ⱘ' => 'ⱘ',
|
953 |
+
'Ⱙ' => 'ⱙ',
|
954 |
+
'Ⱚ' => 'ⱚ',
|
955 |
+
'Ⱛ' => 'ⱛ',
|
956 |
+
'Ⱜ' => 'ⱜ',
|
957 |
+
'Ⱝ' => 'ⱝ',
|
958 |
+
'Ⱞ' => 'ⱞ',
|
959 |
+
'Ⱡ' => 'ⱡ',
|
960 |
+
'Ɫ' => 'ɫ',
|
961 |
+
'Ᵽ' => 'ᵽ',
|
962 |
+
'Ɽ' => 'ɽ',
|
963 |
+
'Ⱨ' => 'ⱨ',
|
964 |
+
'Ⱪ' => 'ⱪ',
|
965 |
+
'Ⱬ' => 'ⱬ',
|
966 |
+
'Ɑ' => 'ɑ',
|
967 |
+
'Ɱ' => 'ɱ',
|
968 |
+
'Ɐ' => 'ɐ',
|
969 |
+
'Ɒ' => 'ɒ',
|
970 |
+
'Ⱳ' => 'ⱳ',
|
971 |
+
'Ⱶ' => 'ⱶ',
|
972 |
+
'Ȿ' => 'ȿ',
|
973 |
+
'Ɀ' => 'ɀ',
|
974 |
+
'Ⲁ' => 'ⲁ',
|
975 |
+
'Ⲃ' => 'ⲃ',
|
976 |
+
'Ⲅ' => 'ⲅ',
|
977 |
+
'Ⲇ' => 'ⲇ',
|
978 |
+
'Ⲉ' => 'ⲉ',
|
979 |
+
'Ⲋ' => 'ⲋ',
|
980 |
+
'Ⲍ' => 'ⲍ',
|
981 |
+
'Ⲏ' => 'ⲏ',
|
982 |
+
'Ⲑ' => 'ⲑ',
|
983 |
+
'Ⲓ' => 'ⲓ',
|
984 |
+
'Ⲕ' => 'ⲕ',
|
985 |
+
'Ⲗ' => 'ⲗ',
|
986 |
+
'Ⲙ' => 'ⲙ',
|
987 |
+
'Ⲛ' => 'ⲛ',
|
988 |
+
'Ⲝ' => 'ⲝ',
|
989 |
+
'Ⲟ' => 'ⲟ',
|
990 |
+
'Ⲡ' => 'ⲡ',
|
991 |
+
'Ⲣ' => 'ⲣ',
|
992 |
+
'Ⲥ' => 'ⲥ',
|
993 |
+
'Ⲧ' => 'ⲧ',
|
994 |
+
'Ⲩ' => 'ⲩ',
|
995 |
+
'Ⲫ' => 'ⲫ',
|
996 |
+
'Ⲭ' => 'ⲭ',
|
997 |
+
'Ⲯ' => 'ⲯ',
|
998 |
+
'Ⲱ' => 'ⲱ',
|
999 |
+
'Ⲳ' => 'ⲳ',
|
1000 |
+
'Ⲵ' => 'ⲵ',
|
1001 |
+
'Ⲷ' => 'ⲷ',
|
1002 |
+
'Ⲹ' => 'ⲹ',
|
1003 |
+
'Ⲻ' => 'ⲻ',
|
1004 |
+
'Ⲽ' => 'ⲽ',
|
1005 |
+
'Ⲿ' => 'ⲿ',
|
1006 |
+
'Ⳁ' => 'ⳁ',
|
1007 |
+
'Ⳃ' => 'ⳃ',
|
1008 |
+
'Ⳅ' => 'ⳅ',
|
1009 |
+
'Ⳇ' => 'ⳇ',
|
1010 |
+
'Ⳉ' => 'ⳉ',
|
1011 |
+
'Ⳋ' => 'ⳋ',
|
1012 |
+
'Ⳍ' => 'ⳍ',
|
1013 |
+
'Ⳏ' => 'ⳏ',
|
1014 |
+
'Ⳑ' => 'ⳑ',
|
1015 |
+
'Ⳓ' => 'ⳓ',
|
1016 |
+
'Ⳕ' => 'ⳕ',
|
1017 |
+
'Ⳗ' => 'ⳗ',
|
1018 |
+
'Ⳙ' => 'ⳙ',
|
1019 |
+
'Ⳛ' => 'ⳛ',
|
1020 |
+
'Ⳝ' => 'ⳝ',
|
1021 |
+
'Ⳟ' => 'ⳟ',
|
1022 |
+
'Ⳡ' => 'ⳡ',
|
1023 |
+
'Ⳣ' => 'ⳣ',
|
1024 |
+
'Ⳬ' => 'ⳬ',
|
1025 |
+
'Ⳮ' => 'ⳮ',
|
1026 |
+
'Ⳳ' => 'ⳳ',
|
1027 |
+
'Ꙁ' => 'ꙁ',
|
1028 |
+
'Ꙃ' => 'ꙃ',
|
1029 |
+
'Ꙅ' => 'ꙅ',
|
1030 |
+
'Ꙇ' => 'ꙇ',
|
1031 |
+
'Ꙉ' => 'ꙉ',
|
1032 |
+
'Ꙋ' => 'ꙋ',
|
1033 |
+
'Ꙍ' => 'ꙍ',
|
1034 |
+
'Ꙏ' => 'ꙏ',
|
1035 |
+
'Ꙑ' => 'ꙑ',
|
1036 |
+
'Ꙓ' => 'ꙓ',
|
1037 |
+
'Ꙕ' => 'ꙕ',
|
1038 |
+
'Ꙗ' => 'ꙗ',
|
1039 |
+
'Ꙙ' => 'ꙙ',
|
1040 |
+
'Ꙛ' => 'ꙛ',
|
1041 |
+
'Ꙝ' => 'ꙝ',
|
1042 |
+
'Ꙟ' => 'ꙟ',
|
1043 |
+
'Ꙡ' => 'ꙡ',
|
1044 |
+
'Ꙣ' => 'ꙣ',
|
1045 |
+
'Ꙥ' => 'ꙥ',
|
1046 |
+
'Ꙧ' => 'ꙧ',
|
1047 |
+
'Ꙩ' => 'ꙩ',
|
1048 |
+
'Ꙫ' => 'ꙫ',
|
1049 |
+
'Ꙭ' => 'ꙭ',
|
1050 |
+
'Ꚁ' => 'ꚁ',
|
1051 |
+
'Ꚃ' => 'ꚃ',
|
1052 |
+
'Ꚅ' => 'ꚅ',
|
1053 |
+
'Ꚇ' => 'ꚇ',
|
1054 |
+
'Ꚉ' => 'ꚉ',
|
1055 |
+
'Ꚋ' => 'ꚋ',
|
1056 |
+
'Ꚍ' => 'ꚍ',
|
1057 |
+
'Ꚏ' => 'ꚏ',
|
1058 |
+
'Ꚑ' => 'ꚑ',
|
1059 |
+
'Ꚓ' => 'ꚓ',
|
1060 |
+
'Ꚕ' => 'ꚕ',
|
1061 |
+
'Ꚗ' => 'ꚗ',
|
1062 |
+
'Ꚙ' => 'ꚙ',
|
1063 |
+
'Ꚛ' => 'ꚛ',
|
1064 |
+
'Ꜣ' => 'ꜣ',
|
1065 |
+
'Ꜥ' => 'ꜥ',
|
1066 |
+
'Ꜧ' => 'ꜧ',
|
1067 |
+
'Ꜩ' => 'ꜩ',
|
1068 |
+
'Ꜫ' => 'ꜫ',
|
1069 |
+
'Ꜭ' => 'ꜭ',
|
1070 |
+
'Ꜯ' => 'ꜯ',
|
1071 |
+
'Ꜳ' => 'ꜳ',
|
1072 |
+
'Ꜵ' => 'ꜵ',
|
1073 |
+
'Ꜷ' => 'ꜷ',
|
1074 |
+
'Ꜹ' => 'ꜹ',
|
1075 |
+
'Ꜻ' => 'ꜻ',
|
1076 |
+
'Ꜽ' => 'ꜽ',
|
1077 |
+
'Ꜿ' => 'ꜿ',
|
1078 |
+
'Ꝁ' => 'ꝁ',
|
1079 |
+
'Ꝃ' => 'ꝃ',
|
1080 |
+
'Ꝅ' => 'ꝅ',
|
1081 |
+
'Ꝇ' => 'ꝇ',
|
1082 |
+
'Ꝉ' => 'ꝉ',
|
1083 |
+
'Ꝋ' => 'ꝋ',
|
1084 |
+
'Ꝍ' => 'ꝍ',
|
1085 |
+
'Ꝏ' => 'ꝏ',
|
1086 |
+
'Ꝑ' => 'ꝑ',
|
1087 |
+
'Ꝓ' => 'ꝓ',
|
1088 |
+
'Ꝕ' => 'ꝕ',
|
1089 |
+
'Ꝗ' => 'ꝗ',
|
1090 |
+
'Ꝙ' => 'ꝙ',
|
1091 |
+
'Ꝛ' => 'ꝛ',
|
1092 |
+
'Ꝝ' => 'ꝝ',
|
1093 |
+
'Ꝟ' => 'ꝟ',
|
1094 |
+
'Ꝡ' => 'ꝡ',
|
1095 |
+
'Ꝣ' => 'ꝣ',
|
1096 |
+
'Ꝥ' => 'ꝥ',
|
1097 |
+
'Ꝧ' => 'ꝧ',
|
1098 |
+
'Ꝩ' => 'ꝩ',
|
1099 |
+
'Ꝫ' => 'ꝫ',
|
1100 |
+
'Ꝭ' => 'ꝭ',
|
1101 |
+
'Ꝯ' => 'ꝯ',
|
1102 |
+
'Ꝺ' => 'ꝺ',
|
1103 |
+
'Ꝼ' => 'ꝼ',
|
1104 |
+
'Ᵹ' => 'ᵹ',
|
1105 |
+
'Ꝿ' => 'ꝿ',
|
1106 |
+
'Ꞁ' => 'ꞁ',
|
1107 |
+
'Ꞃ' => 'ꞃ',
|
1108 |
+
'Ꞅ' => 'ꞅ',
|
1109 |
+
'Ꞇ' => 'ꞇ',
|
1110 |
+
'Ꞌ' => 'ꞌ',
|
1111 |
+
'Ɥ' => 'ɥ',
|
1112 |
+
'Ꞑ' => 'ꞑ',
|
1113 |
+
'Ꞓ' => 'ꞓ',
|
1114 |
+
'Ꞗ' => 'ꞗ',
|
1115 |
+
'Ꞙ' => 'ꞙ',
|
1116 |
+
'Ꞛ' => 'ꞛ',
|
1117 |
+
'Ꞝ' => 'ꞝ',
|
1118 |
+
'Ꞟ' => 'ꞟ',
|
1119 |
+
'Ꞡ' => 'ꞡ',
|
1120 |
+
'Ꞣ' => 'ꞣ',
|
1121 |
+
'Ꞥ' => 'ꞥ',
|
1122 |
+
'Ꞧ' => 'ꞧ',
|
1123 |
+
'Ꞩ' => 'ꞩ',
|
1124 |
+
'Ɦ' => 'ɦ',
|
1125 |
+
'Ɜ' => 'ɜ',
|
1126 |
+
'Ɡ' => 'ɡ',
|
1127 |
+
'Ɬ' => 'ɬ',
|
1128 |
+
'Ɪ' => 'ɪ',
|
1129 |
+
'Ʞ' => 'ʞ',
|
1130 |
+
'Ʇ' => 'ʇ',
|
1131 |
+
'Ʝ' => 'ʝ',
|
1132 |
+
'Ꭓ' => 'ꭓ',
|
1133 |
+
'Ꞵ' => 'ꞵ',
|
1134 |
+
'Ꞷ' => 'ꞷ',
|
1135 |
+
'Ꞹ' => 'ꞹ',
|
1136 |
+
'Ꞻ' => 'ꞻ',
|
1137 |
+
'Ꞽ' => 'ꞽ',
|
1138 |
+
'Ꞿ' => 'ꞿ',
|
1139 |
+
'Ꟃ' => 'ꟃ',
|
1140 |
+
'Ꞔ' => 'ꞔ',
|
1141 |
+
'Ʂ' => 'ʂ',
|
1142 |
+
'Ᶎ' => 'ᶎ',
|
1143 |
+
'Ꟈ' => 'ꟈ',
|
1144 |
+
'Ꟊ' => 'ꟊ',
|
1145 |
+
'Ꟶ' => 'ꟶ',
|
1146 |
+
'A' => 'a',
|
1147 |
+
'B' => 'b',
|
1148 |
+
'C' => 'c',
|
1149 |
+
'D' => 'd',
|
1150 |
+
'E' => 'e',
|
1151 |
+
'F' => 'f',
|
1152 |
+
'G' => 'g',
|
1153 |
+
'H' => 'h',
|
1154 |
+
'I' => 'i',
|
1155 |
+
'J' => 'j',
|
1156 |
+
'K' => 'k',
|
1157 |
+
'L' => 'l',
|
1158 |
+
'M' => 'm',
|
1159 |
+
'N' => 'n',
|
1160 |
+
'O' => 'o',
|
1161 |
+
'P' => 'p',
|
1162 |
+
'Q' => 'q',
|
1163 |
+
'R' => 'r',
|
1164 |
+
'S' => 's',
|
1165 |
+
'T' => 't',
|
1166 |
+
'U' => 'u',
|
1167 |
+
'V' => 'v',
|
1168 |
+
'W' => 'w',
|
1169 |
+
'X' => 'x',
|
1170 |
+
'Y' => 'y',
|
1171 |
+
'Z' => 'z',
|
1172 |
+
'𐐀' => '𐐨',
|
1173 |
+
'𐐁' => '𐐩',
|
1174 |
+
'𐐂' => '𐐪',
|
1175 |
+
'𐐃' => '𐐫',
|
1176 |
+
'𐐄' => '𐐬',
|
1177 |
+
'𐐅' => '𐐭',
|
1178 |
+
'𐐆' => '𐐮',
|
1179 |
+
'𐐇' => '𐐯',
|
1180 |
+
'𐐈' => '𐐰',
|
1181 |
+
'𐐉' => '𐐱',
|
1182 |
+
'𐐊' => '𐐲',
|
1183 |
+
'𐐋' => '𐐳',
|
1184 |
+
'𐐌' => '𐐴',
|
1185 |
+
'𐐍' => '𐐵',
|
1186 |
+
'𐐎' => '𐐶',
|
1187 |
+
'𐐏' => '𐐷',
|
1188 |
+
'𐐐' => '𐐸',
|
1189 |
+
'𐐑' => '𐐹',
|
1190 |
+
'𐐒' => '𐐺',
|
1191 |
+
'𐐓' => '𐐻',
|
1192 |
+
'𐐔' => '𐐼',
|
1193 |
+
'𐐕' => '𐐽',
|
1194 |
+
'𐐖' => '𐐾',
|
1195 |
+
'𐐗' => '𐐿',
|
1196 |
+
'𐐘' => '𐑀',
|
1197 |
+
'𐐙' => '𐑁',
|
1198 |
+
'𐐚' => '𐑂',
|
1199 |
+
'𐐛' => '𐑃',
|
1200 |
+
'𐐜' => '𐑄',
|
1201 |
+
'𐐝' => '𐑅',
|
1202 |
+
'𐐞' => '𐑆',
|
1203 |
+
'𐐟' => '𐑇',
|
1204 |
+
'𐐠' => '𐑈',
|
1205 |
+
'𐐡' => '𐑉',
|
1206 |
+
'𐐢' => '𐑊',
|
1207 |
+
'𐐣' => '𐑋',
|
1208 |
+
'𐐤' => '𐑌',
|
1209 |
+
'𐐥' => '𐑍',
|
1210 |
+
'𐐦' => '𐑎',
|
1211 |
+
'𐐧' => '𐑏',
|
1212 |
+
'𐒰' => '𐓘',
|
1213 |
+
'𐒱' => '𐓙',
|
1214 |
+
'𐒲' => '𐓚',
|
1215 |
+
'𐒳' => '𐓛',
|
1216 |
+
'𐒴' => '𐓜',
|
1217 |
+
'𐒵' => '𐓝',
|
1218 |
+
'𐒶' => '𐓞',
|
1219 |
+
'𐒷' => '𐓟',
|
1220 |
+
'𐒸' => '𐓠',
|
1221 |
+
'𐒹' => '𐓡',
|
1222 |
+
'𐒺' => '𐓢',
|
1223 |
+
'𐒻' => '𐓣',
|
1224 |
+
'𐒼' => '𐓤',
|
1225 |
+
'𐒽' => '𐓥',
|
1226 |
+
'𐒾' => '𐓦',
|
1227 |
+
'𐒿' => '𐓧',
|
1228 |
+
'𐓀' => '𐓨',
|
1229 |
+
'𐓁' => '𐓩',
|
1230 |
+
'𐓂' => '𐓪',
|
1231 |
+
'𐓃' => '𐓫',
|
1232 |
+
'𐓄' => '𐓬',
|
1233 |
+
'𐓅' => '𐓭',
|
1234 |
+
'𐓆' => '𐓮',
|
1235 |
+
'𐓇' => '𐓯',
|
1236 |
+
'𐓈' => '𐓰',
|
1237 |
+
'𐓉' => '𐓱',
|
1238 |
+
'𐓊' => '𐓲',
|
1239 |
+
'𐓋' => '𐓳',
|
1240 |
+
'𐓌' => '𐓴',
|
1241 |
+
'𐓍' => '𐓵',
|
1242 |
+
'𐓎' => '𐓶',
|
1243 |
+
'𐓏' => '𐓷',
|
1244 |
+
'𐓐' => '𐓸',
|
1245 |
+
'𐓑' => '𐓹',
|
1246 |
+
'𐓒' => '𐓺',
|
1247 |
+
'𐓓' => '𐓻',
|
1248 |
+
'𐲀' => '𐳀',
|
1249 |
+
'𐲁' => '𐳁',
|
1250 |
+
'𐲂' => '𐳂',
|
1251 |
+
'𐲃' => '𐳃',
|
1252 |
+
'𐲄' => '𐳄',
|
1253 |
+
'𐲅' => '𐳅',
|
1254 |
+
'𐲆' => '𐳆',
|
1255 |
+
'𐲇' => '𐳇',
|
1256 |
+
'𐲈' => '𐳈',
|
1257 |
+
'𐲉' => '𐳉',
|
1258 |
+
'𐲊' => '𐳊',
|
1259 |
+
'𐲋' => '𐳋',
|
1260 |
+
'𐲌' => '𐳌',
|
1261 |
+
'𐲍' => '𐳍',
|
1262 |
+
'𐲎' => '𐳎',
|
1263 |
+
'𐲏' => '𐳏',
|
1264 |
+
'𐲐' => '𐳐',
|
1265 |
+
'𐲑' => '𐳑',
|
1266 |
+
'𐲒' => '𐳒',
|
1267 |
+
'𐲓' => '𐳓',
|
1268 |
+
'𐲔' => '𐳔',
|
1269 |
+
'𐲕' => '𐳕',
|
1270 |
+
'𐲖' => '𐳖',
|
1271 |
+
'𐲗' => '𐳗',
|
1272 |
+
'𐲘' => '𐳘',
|
1273 |
+
'𐲙' => '𐳙',
|
1274 |
+
'𐲚' => '𐳚',
|
1275 |
+
'𐲛' => '𐳛',
|
1276 |
+
'𐲜' => '𐳜',
|
1277 |
+
'𐲝' => '𐳝',
|
1278 |
+
'𐲞' => '𐳞',
|
1279 |
+
'𐲟' => '𐳟',
|
1280 |
+
'𐲠' => '𐳠',
|
1281 |
+
'𐲡' => '𐳡',
|
1282 |
+
'𐲢' => '𐳢',
|
1283 |
+
'𐲣' => '𐳣',
|
1284 |
+
'𐲤' => '𐳤',
|
1285 |
+
'𐲥' => '𐳥',
|
1286 |
+
'𐲦' => '𐳦',
|
1287 |
+
'𐲧' => '𐳧',
|
1288 |
+
'𐲨' => '𐳨',
|
1289 |
+
'𐲩' => '𐳩',
|
1290 |
+
'𐲪' => '𐳪',
|
1291 |
+
'𐲫' => '𐳫',
|
1292 |
+
'𐲬' => '𐳬',
|
1293 |
+
'𐲭' => '𐳭',
|
1294 |
+
'𐲮' => '𐳮',
|
1295 |
+
'𐲯' => '𐳯',
|
1296 |
+
'𐲰' => '𐳰',
|
1297 |
+
'𐲱' => '𐳱',
|
1298 |
+
'𐲲' => '𐳲',
|
1299 |
+
'𑢠' => '𑣀',
|
1300 |
+
'𑢡' => '𑣁',
|
1301 |
+
'𑢢' => '𑣂',
|
1302 |
+
'𑢣' => '𑣃',
|
1303 |
+
'𑢤' => '𑣄',
|
1304 |
+
'𑢥' => '𑣅',
|
1305 |
+
'𑢦' => '𑣆',
|
1306 |
+
'𑢧' => '𑣇',
|
1307 |
+
'𑢨' => '𑣈',
|
1308 |
+
'𑢩' => '𑣉',
|
1309 |
+
'𑢪' => '𑣊',
|
1310 |
+
'𑢫' => '𑣋',
|
1311 |
+
'𑢬' => '𑣌',
|
1312 |
+
'𑢭' => '𑣍',
|
1313 |
+
'𑢮' => '𑣎',
|
1314 |
+
'𑢯' => '𑣏',
|
1315 |
+
'𑢰' => '𑣐',
|
1316 |
+
'𑢱' => '𑣑',
|
1317 |
+
'𑢲' => '𑣒',
|
1318 |
+
'𑢳' => '𑣓',
|
1319 |
+
'𑢴' => '𑣔',
|
1320 |
+
'𑢵' => '𑣕',
|
1321 |
+
'𑢶' => '𑣖',
|
1322 |
+
'𑢷' => '𑣗',
|
1323 |
+
'𑢸' => '𑣘',
|
1324 |
+
'𑢹' => '𑣙',
|
1325 |
+
'𑢺' => '𑣚',
|
1326 |
+
'𑢻' => '𑣛',
|
1327 |
+
'𑢼' => '𑣜',
|
1328 |
+
'𑢽' => '𑣝',
|
1329 |
+
'𑢾' => '𑣞',
|
1330 |
+
'𑢿' => '𑣟',
|
1331 |
+
'𖹀' => '𖹠',
|
1332 |
+
'𖹁' => '𖹡',
|
1333 |
+
'𖹂' => '𖹢',
|
1334 |
+
'𖹃' => '𖹣',
|
1335 |
+
'𖹄' => '𖹤',
|
1336 |
+
'𖹅' => '𖹥',
|
1337 |
+
'𖹆' => '𖹦',
|
1338 |
+
'𖹇' => '𖹧',
|
1339 |
+
'𖹈' => '𖹨',
|
1340 |
+
'𖹉' => '𖹩',
|
1341 |
+
'𖹊' => '𖹪',
|
1342 |
+
'𖹋' => '𖹫',
|
1343 |
+
'𖹌' => '𖹬',
|
1344 |
+
'𖹍' => '𖹭',
|
1345 |
+
'𖹎' => '𖹮',
|
1346 |
+
'𖹏' => '𖹯',
|
1347 |
+
'𖹐' => '𖹰',
|
1348 |
+
'𖹑' => '𖹱',
|
1349 |
+
'𖹒' => '𖹲',
|
1350 |
+
'𖹓' => '𖹳',
|
1351 |
+
'𖹔' => '𖹴',
|
1352 |
+
'𖹕' => '𖹵',
|
1353 |
+
'𖹖' => '𖹶',
|
1354 |
+
'𖹗' => '𖹷',
|
1355 |
+
'𖹘' => '𖹸',
|
1356 |
+
'𖹙' => '𖹹',
|
1357 |
+
'𖹚' => '𖹺',
|
1358 |
+
'𖹛' => '𖹻',
|
1359 |
+
'𖹜' => '𖹼',
|
1360 |
+
'𖹝' => '𖹽',
|
1361 |
+
'𖹞' => '𖹾',
|
1362 |
+
'𖹟' => '𖹿',
|
1363 |
+
'𞤀' => '𞤢',
|
1364 |
+
'𞤁' => '𞤣',
|
1365 |
+
'𞤂' => '𞤤',
|
1366 |
+
'𞤃' => '𞤥',
|
1367 |
+
'𞤄' => '𞤦',
|
1368 |
+
'𞤅' => '𞤧',
|
1369 |
+
'𞤆' => '𞤨',
|
1370 |
+
'𞤇' => '𞤩',
|
1371 |
+
'𞤈' => '𞤪',
|
1372 |
+
'𞤉' => '𞤫',
|
1373 |
+
'𞤊' => '𞤬',
|
1374 |
+
'𞤋' => '𞤭',
|
1375 |
+
'𞤌' => '𞤮',
|
1376 |
+
'𞤍' => '𞤯',
|
1377 |
+
'𞤎' => '𞤰',
|
1378 |
+
'𞤏' => '𞤱',
|
1379 |
+
'𞤐' => '𞤲',
|
1380 |
+
'𞤑' => '𞤳',
|
1381 |
+
'𞤒' => '𞤴',
|
1382 |
+
'𞤓' => '𞤵',
|
1383 |
+
'𞤔' => '𞤶',
|
1384 |
+
'𞤕' => '𞤷',
|
1385 |
+
'𞤖' => '𞤸',
|
1386 |
+
'𞤗' => '𞤹',
|
1387 |
+
'𞤘' => '𞤺',
|
1388 |
+
'𞤙' => '𞤻',
|
1389 |
+
'𞤚' => '𞤼',
|
1390 |
+
'𞤛' => '𞤽',
|
1391 |
+
'𞤜' => '𞤾',
|
1392 |
+
'𞤝' => '𞤿',
|
1393 |
+
'𞤞' => '𞥀',
|
1394 |
+
'𞤟' => '𞥁',
|
1395 |
+
'𞤠' => '𞥂',
|
1396 |
+
'𞤡' => '𞥃',
|
1397 |
+
);
|
vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
|
4 |
-
|
5 |
-
return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
|
4 |
+
|
5 |
+
return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
|
vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
CHANGED
@@ -1,1414 +1,1414 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
return array (
|
4 |
-
'a' => 'A',
|
5 |
-
'b' => 'B',
|
6 |
-
'c' => 'C',
|
7 |
-
'd' => 'D',
|
8 |
-
'e' => 'E',
|
9 |
-
'f' => 'F',
|
10 |
-
'g' => 'G',
|
11 |
-
'h' => 'H',
|
12 |
-
'i' => 'I',
|
13 |
-
'j' => 'J',
|
14 |
-
'k' => 'K',
|
15 |
-
'l' => 'L',
|
16 |
-
'm' => 'M',
|
17 |
-
'n' => 'N',
|
18 |
-
'o' => 'O',
|
19 |
-
'p' => 'P',
|
20 |
-
'q' => 'Q',
|
21 |
-
'r' => 'R',
|
22 |
-
's' => 'S',
|
23 |
-
't' => 'T',
|
24 |
-
'u' => 'U',
|
25 |
-
'v' => 'V',
|
26 |
-
'w' => 'W',
|
27 |
-
'x' => 'X',
|
28 |
-
'y' => 'Y',
|
29 |
-
'z' => 'Z',
|
30 |
-
'µ' => 'Μ',
|
31 |
-
'à' => 'À',
|
32 |
-
'á' => 'Á',
|
33 |
-
'â' => 'Â',
|
34 |
-
'ã' => 'Ã',
|
35 |
-
'ä' => 'Ä',
|
36 |
-
'å' => 'Å',
|
37 |
-
'æ' => 'Æ',
|
38 |
-
'ç' => 'Ç',
|
39 |
-
'è' => 'È',
|
40 |
-
'é' => 'É',
|
41 |
-
'ê' => 'Ê',
|
42 |
-
'ë' => 'Ë',
|
43 |
-
'ì' => 'Ì',
|
44 |
-
'í' => 'Í',
|
45 |
-
'î' => 'Î',
|
46 |
-
'ï' => 'Ï',
|
47 |
-
'ð' => 'Ð',
|
48 |
-
'ñ' => 'Ñ',
|
49 |
-
'ò' => 'Ò',
|
50 |
-
'ó' => 'Ó',
|
51 |
-
'ô' => 'Ô',
|
52 |
-
'õ' => 'Õ',
|
53 |
-
'ö' => 'Ö',
|
54 |
-
'ø' => 'Ø',
|
55 |
-
'ù' => 'Ù',
|
56 |
-
'ú' => 'Ú',
|
57 |
-
'û' => 'Û',
|
58 |
-
'ü' => 'Ü',
|
59 |
-
'ý' => 'Ý',
|
60 |
-
'þ' => 'Þ',
|
61 |
-
'ÿ' => 'Ÿ',
|
62 |
-
'ā' => 'Ā',
|
63 |
-
'ă' => 'Ă',
|
64 |
-
'ą' => 'Ą',
|
65 |
-
'ć' => 'Ć',
|
66 |
-
'ĉ' => 'Ĉ',
|
67 |
-
'ċ' => 'Ċ',
|
68 |
-
'č' => 'Č',
|
69 |
-
'ď' => 'Ď',
|
70 |
-
'đ' => 'Đ',
|
71 |
-
'ē' => 'Ē',
|
72 |
-
'ĕ' => 'Ĕ',
|
73 |
-
'ė' => 'Ė',
|
74 |
-
'ę' => 'Ę',
|
75 |
-
'ě' => 'Ě',
|
76 |
-
'ĝ' => 'Ĝ',
|
77 |
-
'ğ' => 'Ğ',
|
78 |
-
'ġ' => 'Ġ',
|
79 |
-
'ģ' => 'Ģ',
|
80 |
-
'ĥ' => 'Ĥ',
|
81 |
-
'ħ' => 'Ħ',
|
82 |
-
'ĩ' => 'Ĩ',
|
83 |
-
'ī' => 'Ī',
|
84 |
-
'ĭ' => 'Ĭ',
|
85 |
-
'į' => 'Į',
|
86 |
-
'ı' => 'I',
|
87 |
-
'ij' => 'IJ',
|
88 |
-
'ĵ' => 'Ĵ',
|
89 |
-
'ķ' => 'Ķ',
|
90 |
-
'ĺ' => 'Ĺ',
|
91 |
-
'ļ' => 'Ļ',
|
92 |
-
'ľ' => 'Ľ',
|
93 |
-
'ŀ' => 'Ŀ',
|
94 |
-
'ł' => 'Ł',
|
95 |
-
'ń' => 'Ń',
|
96 |
-
'ņ' => 'Ņ',
|
97 |
-
'ň' => 'Ň',
|
98 |
-
'ŋ' => 'Ŋ',
|
99 |
-
'ō' => 'Ō',
|
100 |
-
'ŏ' => 'Ŏ',
|
101 |
-
'ő' => 'Ő',
|
102 |
-
'œ' => 'Œ',
|
103 |
-
'ŕ' => 'Ŕ',
|
104 |
-
'ŗ' => 'Ŗ',
|
105 |
-
'ř' => 'Ř',
|
106 |
-
'ś' => 'Ś',
|
107 |
-
'ŝ' => 'Ŝ',
|
108 |
-
'ş' => 'Ş',
|
109 |
-
'š' => 'Š',
|
110 |
-
'ţ' => 'Ţ',
|
111 |
-
'ť' => 'Ť',
|
112 |
-
'ŧ' => 'Ŧ',
|
113 |
-
'ũ' => 'Ũ',
|
114 |
-
'ū' => 'Ū',
|
115 |
-
'ŭ' => 'Ŭ',
|
116 |
-
'ů' => 'Ů',
|
117 |
-
'ű' => 'Ű',
|
118 |
-
'ų' => 'Ų',
|
119 |
-
'ŵ' => 'Ŵ',
|
120 |
-
'ŷ' => 'Ŷ',
|
121 |
-
'ź' => 'Ź',
|
122 |
-
'ż' => 'Ż',
|
123 |
-
'ž' => 'Ž',
|
124 |
-
'ſ' => 'S',
|
125 |
-
'ƀ' => 'Ƀ',
|
126 |
-
'ƃ' => 'Ƃ',
|
127 |
-
'ƅ' => 'Ƅ',
|
128 |
-
'ƈ' => 'Ƈ',
|
129 |
-
'ƌ' => 'Ƌ',
|
130 |
-
'ƒ' => 'Ƒ',
|
131 |
-
'ƕ' => 'Ƕ',
|
132 |
-
'ƙ' => 'Ƙ',
|
133 |
-
'ƚ' => 'Ƚ',
|
134 |
-
'ƞ' => 'Ƞ',
|
135 |
-
'ơ' => 'Ơ',
|
136 |
-
'ƣ' => 'Ƣ',
|
137 |
-
'ƥ' => 'Ƥ',
|
138 |
-
'ƨ' => 'Ƨ',
|
139 |
-
'ƭ' => 'Ƭ',
|
140 |
-
'ư' => 'Ư',
|
141 |
-
'ƴ' => 'Ƴ',
|
142 |
-
'ƶ' => 'Ƶ',
|
143 |
-
'ƹ' => 'Ƹ',
|
144 |
-
'ƽ' => 'Ƽ',
|
145 |
-
'ƿ' => 'Ƿ',
|
146 |
-
'Dž' => 'DŽ',
|
147 |
-
'dž' => 'DŽ',
|
148 |
-
'Lj' => 'LJ',
|
149 |
-
'lj' => 'LJ',
|
150 |
-
'Nj' => 'NJ',
|
151 |
-
'nj' => 'NJ',
|
152 |
-
'ǎ' => 'Ǎ',
|
153 |
-
'ǐ' => 'Ǐ',
|
154 |
-
'ǒ' => 'Ǒ',
|
155 |
-
'ǔ' => 'Ǔ',
|
156 |
-
'ǖ' => 'Ǖ',
|
157 |
-
'ǘ' => 'Ǘ',
|
158 |
-
'ǚ' => 'Ǚ',
|
159 |
-
'ǜ' => 'Ǜ',
|
160 |
-
'ǝ' => 'Ǝ',
|
161 |
-
'ǟ' => 'Ǟ',
|
162 |
-
'ǡ' => 'Ǡ',
|
163 |
-
'ǣ' => 'Ǣ',
|
164 |
-
'ǥ' => 'Ǥ',
|
165 |
-
'ǧ' => 'Ǧ',
|
166 |
-
'ǩ' => 'Ǩ',
|
167 |
-
'ǫ' => 'Ǫ',
|
168 |
-
'ǭ' => 'Ǭ',
|
169 |
-
'ǯ' => 'Ǯ',
|
170 |
-
'Dz' => 'DZ',
|
171 |
-
'dz' => 'DZ',
|
172 |
-
'ǵ' => 'Ǵ',
|
173 |
-
'ǹ' => 'Ǹ',
|
174 |
-
'ǻ' => 'Ǻ',
|
175 |
-
'ǽ' => 'Ǽ',
|
176 |
-
'ǿ' => 'Ǿ',
|
177 |
-
'ȁ' => 'Ȁ',
|
178 |
-
'ȃ' => 'Ȃ',
|
179 |
-
'ȅ' => 'Ȅ',
|
180 |
-
'ȇ' => 'Ȇ',
|
181 |
-
'ȉ' => 'Ȉ',
|
182 |
-
'ȋ' => 'Ȋ',
|
183 |
-
'ȍ' => 'Ȍ',
|
184 |
-
'ȏ' => 'Ȏ',
|
185 |
-
'ȑ' => 'Ȑ',
|
186 |
-
'ȓ' => 'Ȓ',
|
187 |
-
'ȕ' => 'Ȕ',
|
188 |
-
'ȗ' => 'Ȗ',
|
189 |
-
'ș' => 'Ș',
|
190 |
-
'ț' => 'Ț',
|
191 |
-
'ȝ' => 'Ȝ',
|
192 |
-
'ȟ' => 'Ȟ',
|
193 |
-
'ȣ' => 'Ȣ',
|
194 |
-
'ȥ' => 'Ȥ',
|
195 |
-
'ȧ' => 'Ȧ',
|
196 |
-
'ȩ' => 'Ȩ',
|
197 |
-
'ȫ' => 'Ȫ',
|
198 |
-
'ȭ' => 'Ȭ',
|
199 |
-
'ȯ' => 'Ȯ',
|
200 |
-
'ȱ' => 'Ȱ',
|
201 |
-
'ȳ' => 'Ȳ',
|
202 |
-
'ȼ' => 'Ȼ',
|
203 |
-
'ȿ' => 'Ȿ',
|
204 |
-
'ɀ' => 'Ɀ',
|
205 |
-
'ɂ' => 'Ɂ',
|
206 |
-
'ɇ' => 'Ɇ',
|
207 |
-
'ɉ' => 'Ɉ',
|
208 |
-
'ɋ' => 'Ɋ',
|
209 |
-
'ɍ' => 'Ɍ',
|
210 |
-
'ɏ' => 'Ɏ',
|
211 |
-
'ɐ' => 'Ɐ',
|
212 |
-
'ɑ' => 'Ɑ',
|
213 |
-
'ɒ' => 'Ɒ',
|
214 |
-
'ɓ' => 'Ɓ',
|
215 |
-
'ɔ' => 'Ɔ',
|
216 |
-
'ɖ' => 'Ɖ',
|
217 |
-
'ɗ' => 'Ɗ',
|
218 |
-
'ə' => 'Ə',
|
219 |
-
'ɛ' => 'Ɛ',
|
220 |
-
'ɜ' => 'Ɜ',
|
221 |
-
'ɠ' => 'Ɠ',
|
222 |
-
'ɡ' => 'Ɡ',
|
223 |
-
'ɣ' => 'Ɣ',
|
224 |
-
'ɥ' => 'Ɥ',
|
225 |
-
'ɦ' => 'Ɦ',
|
226 |
-
'ɨ' => 'Ɨ',
|
227 |
-
'ɩ' => 'Ɩ',
|
228 |
-
'ɪ' => 'Ɪ',
|
229 |
-
'ɫ' => 'Ɫ',
|
230 |
-
'ɬ' => 'Ɬ',
|
231 |
-
'ɯ' => 'Ɯ',
|
232 |
-
'ɱ' => 'Ɱ',
|
233 |
-
'ɲ' => 'Ɲ',
|
234 |
-
'ɵ' => 'Ɵ',
|
235 |
-
'ɽ' => 'Ɽ',
|
236 |
-
'ʀ' => 'Ʀ',
|
237 |
-
'ʂ' => 'Ʂ',
|
238 |
-
'ʃ' => 'Ʃ',
|
239 |
-
'ʇ' => 'Ʇ',
|
240 |
-
'ʈ' => 'Ʈ',
|
241 |
-
'ʉ' => 'Ʉ',
|
242 |
-
'ʊ' => 'Ʊ',
|
243 |
-
'ʋ' => 'Ʋ',
|
244 |
-
'ʌ' => 'Ʌ',
|
245 |
-
'ʒ' => 'Ʒ',
|
246 |
-
'ʝ' => 'Ʝ',
|
247 |
-
'ʞ' => 'Ʞ',
|
248 |
-
'ͅ' => 'Ι',
|
249 |
-
'ͱ' => 'Ͱ',
|
250 |
-
'ͳ' => 'Ͳ',
|
251 |
-
'ͷ' => 'Ͷ',
|
252 |
-
'ͻ' => 'Ͻ',
|
253 |
-
'ͼ' => 'Ͼ',
|
254 |
-
'ͽ' => 'Ͽ',
|
255 |
-
'ά' => 'Ά',
|
256 |
-
'έ' => 'Έ',
|
257 |
-
'ή' => 'Ή',
|
258 |
-
'ί' => 'Ί',
|
259 |
-
'α' => 'Α',
|
260 |
-
'β' => 'Β',
|
261 |
-
'γ' => 'Γ',
|
262 |
-
'δ' => 'Δ',
|
263 |
-
'ε' => 'Ε',
|
264 |
-
'ζ' => 'Ζ',
|
265 |
-
'η' => 'Η',
|
266 |
-
'θ' => 'Θ',
|
267 |
-
'ι' => 'Ι',
|
268 |
-
'κ' => 'Κ',
|
269 |
-
'λ' => 'Λ',
|
270 |
-
'μ' => 'Μ',
|
271 |
-
'ν' => 'Ν',
|
272 |
-
'ξ' => 'Ξ',
|
273 |
-
'ο' => 'Ο',
|
274 |
-
'π' => 'Π',
|
275 |
-
'ρ' => 'Ρ',
|
276 |
-
'ς' => 'Σ',
|
277 |
-
'σ' => 'Σ',
|
278 |
-
'τ' => 'Τ',
|
279 |
-
'υ' => 'Υ',
|
280 |
-
'φ' => 'Φ',
|
281 |
-
'χ' => 'Χ',
|
282 |
-
'ψ' => 'Ψ',
|
283 |
-
'ω' => 'Ω',
|
284 |
-
'ϊ' => 'Ϊ',
|
285 |
-
'ϋ' => 'Ϋ',
|
286 |
-
'ό' => 'Ό',
|
287 |
-
'ύ' => 'Ύ',
|
288 |
-
'ώ' => 'Ώ',
|
289 |
-
'ϐ' => 'Β',
|
290 |
-
'ϑ' => 'Θ',
|
291 |
-
'ϕ' => 'Φ',
|
292 |
-
'ϖ' => 'Π',
|
293 |
-
'ϗ' => 'Ϗ',
|
294 |
-
'ϙ' => 'Ϙ',
|
295 |
-
'ϛ' => 'Ϛ',
|
296 |
-
'ϝ' => 'Ϝ',
|
297 |
-
'ϟ' => 'Ϟ',
|
298 |
-
'ϡ' => 'Ϡ',
|
299 |
-
'ϣ' => 'Ϣ',
|
300 |
-
'ϥ' => 'Ϥ',
|
301 |
-
'ϧ' => 'Ϧ',
|
302 |
-
'ϩ' => 'Ϩ',
|
303 |
-
'ϫ' => 'Ϫ',
|
304 |
-
'ϭ' => 'Ϭ',
|
305 |
-
'ϯ' => 'Ϯ',
|
306 |
-
'ϰ' => 'Κ',
|
307 |
-
'ϱ' => 'Ρ',
|
308 |
-
'ϲ' => 'Ϲ',
|
309 |
-
'ϳ' => 'Ϳ',
|
310 |
-
'ϵ' => 'Ε',
|
311 |
-
'ϸ' => 'Ϸ',
|
312 |
-
'ϻ' => 'Ϻ',
|
313 |
-
'а' => 'А',
|
314 |
-
'б' => 'Б',
|
315 |
-
'в' => 'В',
|
316 |
-
'г' => 'Г',
|
317 |
-
'д' => 'Д',
|
318 |
-
'е' => 'Е',
|
319 |
-
'ж' => 'Ж',
|
320 |
-
'з' => 'З',
|
321 |
-
'и' => 'И',
|
322 |
-
'й' => 'Й',
|
323 |
-
'к' => 'К',
|
324 |
-
'л' => 'Л',
|
325 |
-
'м' => 'М',
|
326 |
-
'н' => 'Н',
|
327 |
-
'о' => 'О',
|
328 |
-
'п' => 'П',
|
329 |
-
'р' => 'Р',
|
330 |
-
'с' => 'С',
|
331 |
-
'т' => 'Т',
|
332 |
-
'у' => 'У',
|
333 |
-
'ф' => 'Ф',
|
334 |
-
'х' => 'Х',
|
335 |
-
'ц' => 'Ц',
|
336 |
-
'ч' => 'Ч',
|
337 |
-
'ш' => 'Ш',
|
338 |
-
'щ' => 'Щ',
|
339 |
-
'ъ' => 'Ъ',
|
340 |
-
'ы' => 'Ы',
|
341 |
-
'ь' => 'Ь',
|
342 |
-
'э' => 'Э',
|
343 |
-
'ю' => 'Ю',
|
344 |
-
'я' => 'Я',
|
345 |
-
'ѐ' => 'Ѐ',
|
346 |
-
'ё' => 'Ё',
|
347 |
-
'ђ' => 'Ђ',
|
348 |
-
'ѓ' => 'Ѓ',
|
349 |
-
'є' => 'Є',
|
350 |
-
'ѕ' => 'Ѕ',
|
351 |
-
'і' => 'І',
|
352 |
-
'ї' => 'Ї',
|
353 |
-
'ј' => 'Ј',
|
354 |
-
'љ' => 'Љ',
|
355 |
-
'њ' => 'Њ',
|
356 |
-
'ћ' => 'Ћ',
|
357 |
-
'ќ' => 'Ќ',
|
358 |
-
'ѝ' => 'Ѝ',
|
359 |
-
'ў' => 'Ў',
|
360 |
-
'џ' => 'Џ',
|
361 |
-
'ѡ' => 'Ѡ',
|
362 |
-
'ѣ' => 'Ѣ',
|
363 |
-
'ѥ' => 'Ѥ',
|
364 |
-
'ѧ' => 'Ѧ',
|
365 |
-
'ѩ' => 'Ѩ',
|
366 |
-
'ѫ' => 'Ѫ',
|
367 |
-
'ѭ' => 'Ѭ',
|
368 |
-
'ѯ' => 'Ѯ',
|
369 |
-
'ѱ' => 'Ѱ',
|
370 |
-
'ѳ' => 'Ѳ',
|
371 |
-
'ѵ' => 'Ѵ',
|
372 |
-
'ѷ' => 'Ѷ',
|
373 |
-
'ѹ' => 'Ѹ',
|
374 |
-
'ѻ' => 'Ѻ',
|
375 |
-
'ѽ' => 'Ѽ',
|
376 |
-
'ѿ' => 'Ѿ',
|
377 |
-
'ҁ' => 'Ҁ',
|
378 |
-
'ҋ' => 'Ҋ',
|
379 |
-
'ҍ' => 'Ҍ',
|
380 |
-
'ҏ' => 'Ҏ',
|
381 |
-
'ґ' => 'Ґ',
|
382 |
-
'ғ' => 'Ғ',
|
383 |
-
'ҕ' => 'Ҕ',
|
384 |
-
'җ' => 'Җ',
|
385 |
-
'ҙ' => 'Ҙ',
|
386 |
-
'қ' => 'Қ',
|
387 |
-
'ҝ' => 'Ҝ',
|
388 |
-
'ҟ' => 'Ҟ',
|
389 |
-
'ҡ' => 'Ҡ',
|
390 |
-
'ң' => 'Ң',
|
391 |
-
'ҥ' => 'Ҥ',
|
392 |
-
'ҧ' => 'Ҧ',
|
393 |
-
'ҩ' => 'Ҩ',
|
394 |
-
'ҫ' => 'Ҫ',
|
395 |
-
'ҭ' => 'Ҭ',
|
396 |
-
'ү' => 'Ү',
|
397 |
-
'ұ' => 'Ұ',
|
398 |
-
'ҳ' => 'Ҳ',
|
399 |
-
'ҵ' => 'Ҵ',
|
400 |
-
'ҷ' => 'Ҷ',
|
401 |
-
'ҹ' => 'Ҹ',
|
402 |
-
'һ' => 'Һ',
|
403 |
-
'ҽ' => 'Ҽ',
|
404 |
-
'ҿ' => 'Ҿ',
|
405 |
-
'ӂ' => 'Ӂ',
|
406 |
-
'ӄ' => 'Ӄ',
|
407 |
-
'ӆ' => 'Ӆ',
|
408 |
-
'ӈ' => 'Ӈ',
|
409 |
-
'ӊ' => 'Ӊ',
|
410 |
-
'ӌ' => 'Ӌ',
|
411 |
-
'ӎ' => 'Ӎ',
|
412 |
-
'ӏ' => 'Ӏ',
|
413 |
-
'ӑ' => 'Ӑ',
|
414 |
-
'ӓ' => 'Ӓ',
|
415 |
-
'ӕ' => 'Ӕ',
|
416 |
-
'ӗ' => 'Ӗ',
|
417 |
-
'ә' => 'Ә',
|
418 |
-
'ӛ' => 'Ӛ',
|
419 |
-
'ӝ' => 'Ӝ',
|
420 |
-
'ӟ' => 'Ӟ',
|
421 |
-
'ӡ' => 'Ӡ',
|
422 |
-
'ӣ' => 'Ӣ',
|
423 |
-
'ӥ' => 'Ӥ',
|
424 |
-
'ӧ' => 'Ӧ',
|
425 |
-
'ө' => 'Ө',
|
426 |
-
'ӫ' => 'Ӫ',
|
427 |
-
'ӭ' => 'Ӭ',
|
428 |
-
'ӯ' => 'Ӯ',
|
429 |
-
'ӱ' => 'Ӱ',
|
430 |
-
'ӳ' => 'Ӳ',
|
431 |
-
'ӵ' => 'Ӵ',
|
432 |
-
'ӷ' => 'Ӷ',
|
433 |
-
'ӹ' => 'Ӹ',
|
434 |
-
'ӻ' => 'Ӻ',
|
435 |
-
'ӽ' => 'Ӽ',
|
436 |
-
'ӿ' => 'Ӿ',
|
437 |
-
'ԁ' => 'Ԁ',
|
438 |
-
'ԃ' => 'Ԃ',
|
439 |
-
'ԅ' => 'Ԅ',
|
440 |
-
'ԇ' => 'Ԇ',
|
441 |
-
'ԉ' => 'Ԉ',
|
442 |
-
'ԋ' => 'Ԋ',
|
443 |
-
'ԍ' => 'Ԍ',
|
444 |
-
'ԏ' => 'Ԏ',
|
445 |
-
'ԑ' => 'Ԑ',
|
446 |
-
'ԓ' => 'Ԓ',
|
447 |
-
'ԕ' => 'Ԕ',
|
448 |
-
'ԗ' => 'Ԗ',
|
449 |
-
'ԙ' => 'Ԙ',
|
450 |
-
'ԛ' => 'Ԛ',
|
451 |
-
'ԝ' => 'Ԝ',
|
452 |
-
'ԟ' => 'Ԟ',
|
453 |
-
'ԡ' => 'Ԡ',
|
454 |
-
'ԣ' => 'Ԣ',
|
455 |
-
'ԥ' => 'Ԥ',
|
456 |
-
'ԧ' => 'Ԧ',
|
457 |
-
'ԩ' => 'Ԩ',
|
458 |
-
'ԫ' => 'Ԫ',
|
459 |
-
'ԭ' => 'Ԭ',
|
460 |
-
'ԯ' => 'Ԯ',
|
461 |
-
'ա' => 'Ա',
|
462 |
-
'բ' => 'Բ',
|
463 |
-
'գ' => 'Գ',
|
464 |
-
'դ' => 'Դ',
|
465 |
-
'ե' => 'Ե',
|
466 |
-
'զ' => 'Զ',
|
467 |
-
'է' => 'Է',
|
468 |
-
'ը' => 'Ը',
|
469 |
-
'թ' => 'Թ',
|
470 |
-
'ժ' => 'Ժ',
|
471 |
-
'ի' => 'Ի',
|
472 |
-
'լ' => 'Լ',
|
473 |
-
'խ' => 'Խ',
|
474 |
-
'ծ' => 'Ծ',
|
475 |
-
'կ' => 'Կ',
|
476 |
-
'հ' => 'Հ',
|
477 |
-
'ձ' => 'Ձ',
|
478 |
-
'ղ' => 'Ղ',
|
479 |
-
'ճ' => 'Ճ',
|
480 |
-
'մ' => 'Մ',
|
481 |
-
'յ' => 'Յ',
|
482 |
-
'ն' => 'Ն',
|
483 |
-
'շ' => 'Շ',
|
484 |
-
'ո' => 'Ո',
|
485 |
-
'չ' => 'Չ',
|
486 |
-
'պ' => 'Պ',
|
487 |
-
'ջ' => 'Ջ',
|
488 |
-
'ռ' => 'Ռ',
|
489 |
-
'ս' => 'Ս',
|
490 |
-
'վ' => 'Վ',
|
491 |
-
'տ' => 'Տ',
|
492 |
-
'ր' => 'Ր',
|
493 |
-
'ց' => 'Ց',
|
494 |
-
'ւ' => 'Ւ',
|
495 |
-
'փ' => 'Փ',
|
496 |
-
'ք' => 'Ք',
|
497 |
-
'օ' => 'Օ',
|
498 |
-
'ֆ' => 'Ֆ',
|
499 |
-
'ა' => 'Ა',
|
500 |
-
'ბ' => 'Ბ',
|
501 |
-
'გ' => 'Გ',
|
502 |
-
'დ' => 'Დ',
|
503 |
-
'ე' => 'Ე',
|
504 |
-
'ვ' => 'Ვ',
|
505 |
-
'ზ' => 'Ზ',
|
506 |
-
'თ' => 'Თ',
|
507 |
-
'ი' => 'Ი',
|
508 |
-
'კ' => 'Კ',
|
509 |
-
'ლ' => 'Ლ',
|
510 |
-
'მ' => 'Მ',
|
511 |
-
'ნ' => 'Ნ',
|
512 |
-
'ო' => 'Ო',
|
513 |
-
'პ' => 'Პ',
|
514 |
-
'ჟ' => 'Ჟ',
|
515 |
-
'რ' => 'Რ',
|
516 |
-
'ს' => 'Ს',
|
517 |
-
'ტ' => 'Ტ',
|
518 |
-
'უ' => 'Უ',
|
519 |
-
'ფ' => 'Ფ',
|
520 |
-
'ქ' => 'Ქ',
|
521 |
-
'ღ' => 'Ღ',
|
522 |
-
'ყ' => 'Ყ',
|
523 |
-
'შ' => 'Შ',
|
524 |
-
'ჩ' => 'Ჩ',
|
525 |
-
'ც' => 'Ც',
|
526 |
-
'ძ' => 'Ძ',
|
527 |
-
'წ' => 'Წ',
|
528 |
-
'ჭ' => 'Ჭ',
|
529 |
-
'ხ' => 'Ხ',
|
530 |
-
'ჯ' => 'Ჯ',
|
531 |
-
'ჰ' => 'Ჰ',
|
532 |
-
'ჱ' => 'Ჱ',
|
533 |
-
'ჲ' => 'Ჲ',
|
534 |
-
'ჳ' => 'Ჳ',
|
535 |
-
'ჴ' => 'Ჴ',
|
536 |
-
'ჵ' => 'Ჵ',
|
537 |
-
'ჶ' => 'Ჶ',
|
538 |
-
'ჷ' => 'Ჷ',
|
539 |
-
'ჸ' => 'Ჸ',
|
540 |
-
'ჹ' => 'Ჹ',
|
541 |
-
'ჺ' => 'Ჺ',
|
542 |
-
'ჽ' => 'Ჽ',
|
543 |
-
'ჾ' => 'Ჾ',
|
544 |
-
'ჿ' => 'Ჿ',
|
545 |
-
'ᏸ' => 'Ᏸ',
|
546 |
-
'ᏹ' => 'Ᏹ',
|
547 |
-
'ᏺ' => 'Ᏺ',
|
548 |
-
'ᏻ' => 'Ᏻ',
|
549 |
-
'ᏼ' => 'Ᏼ',
|
550 |
-
'ᏽ' => 'Ᏽ',
|
551 |
-
'ᲀ' => 'В',
|
552 |
-
'ᲁ' => 'Д',
|
553 |
-
'ᲂ' => 'О',
|
554 |
-
'ᲃ' => 'С',
|
555 |
-
'ᲄ' => 'Т',
|
556 |
-
'ᲅ' => 'Т',
|
557 |
-
'ᲆ' => 'Ъ',
|
558 |
-
'ᲇ' => 'Ѣ',
|
559 |
-
'ᲈ' => 'Ꙋ',
|
560 |
-
'ᵹ' => 'Ᵹ',
|
561 |
-
'ᵽ' => 'Ᵽ',
|
562 |
-
'ᶎ' => 'Ᶎ',
|
563 |
-
'ḁ' => 'Ḁ',
|
564 |
-
'ḃ' => 'Ḃ',
|
565 |
-
'ḅ' => 'Ḅ',
|
566 |
-
'ḇ' => 'Ḇ',
|
567 |
-
'ḉ' => 'Ḉ',
|
568 |
-
'ḋ' => 'Ḋ',
|
569 |
-
'ḍ' => 'Ḍ',
|
570 |
-
'ḏ' => 'Ḏ',
|
571 |
-
'ḑ' => 'Ḑ',
|
572 |
-
'ḓ' => 'Ḓ',
|
573 |
-
'ḕ' => 'Ḕ',
|
574 |
-
'ḗ' => 'Ḗ',
|
575 |
-
'ḙ' => 'Ḙ',
|
576 |
-
'ḛ' => 'Ḛ',
|
577 |
-
'ḝ' => 'Ḝ',
|
578 |
-
'ḟ' => 'Ḟ',
|
579 |
-
'ḡ' => 'Ḡ',
|
580 |
-
'ḣ' => 'Ḣ',
|
581 |
-
'ḥ' => 'Ḥ',
|
582 |
-
'ḧ' => 'Ḧ',
|
583 |
-
'ḩ' => 'Ḩ',
|
584 |
-
'ḫ' => 'Ḫ',
|
585 |
-
'ḭ' => 'Ḭ',
|
586 |
-
'ḯ' => 'Ḯ',
|
587 |
-
'ḱ' => 'Ḱ',
|
588 |
-
'ḳ' => 'Ḳ',
|
589 |
-
'ḵ' => 'Ḵ',
|
590 |
-
'ḷ' => 'Ḷ',
|
591 |
-
'ḹ' => 'Ḹ',
|
592 |
-
'ḻ' => 'Ḻ',
|
593 |
-
'ḽ' => 'Ḽ',
|
594 |
-
'ḿ' => 'Ḿ',
|
595 |
-
'ṁ' => 'Ṁ',
|
596 |
-
'ṃ' => 'Ṃ',
|
597 |
-
'ṅ' => 'Ṅ',
|
598 |
-
'ṇ' => 'Ṇ',
|
599 |
-
'ṉ' => 'Ṉ',
|
600 |
-
'ṋ' => 'Ṋ',
|
601 |
-
'ṍ' => 'Ṍ',
|
602 |
-
'ṏ' => 'Ṏ',
|
603 |
-
'ṑ' => 'Ṑ',
|
604 |
-
'ṓ' => 'Ṓ',
|
605 |
-
'ṕ' => 'Ṕ',
|
606 |
-
'ṗ' => 'Ṗ',
|
607 |
-
'ṙ' => 'Ṙ',
|
608 |
-
'ṛ' => 'Ṛ',
|
609 |
-
'ṝ' => 'Ṝ',
|
610 |
-
'ṟ' => 'Ṟ',
|
611 |
-
'ṡ' => 'Ṡ',
|
612 |
-
'ṣ' => 'Ṣ',
|
613 |
-
'ṥ' => 'Ṥ',
|
614 |
-
'ṧ' => 'Ṧ',
|
615 |
-
'ṩ' => 'Ṩ',
|
616 |
-
'ṫ' => 'Ṫ',
|
617 |
-
'ṭ' => 'Ṭ',
|
618 |
-
'ṯ' => 'Ṯ',
|
619 |
-
'ṱ' => 'Ṱ',
|
620 |
-
'ṳ' => 'Ṳ',
|
621 |
-
'ṵ' => 'Ṵ',
|
622 |
-
'ṷ' => 'Ṷ',
|
623 |
-
'ṹ' => 'Ṹ',
|
624 |
-
'ṻ' => 'Ṻ',
|
625 |
-
'ṽ' => 'Ṽ',
|
626 |
-
'ṿ' => 'Ṿ',
|
627 |
-
'ẁ' => 'Ẁ',
|
628 |
-
'ẃ' => 'Ẃ',
|
629 |
-
'ẅ' => 'Ẅ',
|
630 |
-
'ẇ' => 'Ẇ',
|
631 |
-
'ẉ' => 'Ẉ',
|
632 |
-
'ẋ' => 'Ẋ',
|
633 |
-
'ẍ' => 'Ẍ',
|
634 |
-
'ẏ' => 'Ẏ',
|
635 |
-
'ẑ' => 'Ẑ',
|
636 |
-
'ẓ' => 'Ẓ',
|
637 |
-
'ẕ' => 'Ẕ',
|
638 |
-
'ẛ' => 'Ṡ',
|
639 |
-
'ạ' => 'Ạ',
|
640 |
-
'ả' => 'Ả',
|
641 |
-
'ấ' => 'Ấ',
|
642 |
-
'ầ' => 'Ầ',
|
643 |
-
'ẩ' => 'Ẩ',
|
644 |
-
'ẫ' => 'Ẫ',
|
645 |
-
'ậ' => 'Ậ',
|
646 |
-
'ắ' => 'Ắ',
|
647 |
-
'ằ' => 'Ằ',
|
648 |
-
'ẳ' => 'Ẳ',
|
649 |
-
'ẵ' => 'Ẵ',
|
650 |
-
'ặ' => 'Ặ',
|
651 |
-
'ẹ' => 'Ẹ',
|
652 |
-
'ẻ' => 'Ẻ',
|
653 |
-
'ẽ' => 'Ẽ',
|
654 |
-
'ế' => 'Ế',
|
655 |
-
'ề' => 'Ề',
|
656 |
-
'ể' => 'Ể',
|
657 |
-
'ễ' => 'Ễ',
|
658 |
-
'ệ' => 'Ệ',
|
659 |
-
'ỉ' => 'Ỉ',
|
660 |
-
'ị' => 'Ị',
|
661 |
-
'ọ' => 'Ọ',
|
662 |
-
'ỏ' => 'Ỏ',
|
663 |
-
'ố' => 'Ố',
|
664 |
-
'ồ' => 'Ồ',
|
665 |
-
'ổ' => 'Ổ',
|
666 |
-
'ỗ' => 'Ỗ',
|
667 |
-
'ộ' => 'Ộ',
|
668 |
-
'ớ' => 'Ớ',
|
669 |
-
'ờ' => 'Ờ',
|
670 |
-
'ở' => 'Ở',
|
671 |
-
'ỡ' => 'Ỡ',
|
672 |
-
'ợ' => 'Ợ',
|
673 |
-
'ụ' => 'Ụ',
|
674 |
-
'ủ' => 'Ủ',
|
675 |
-
'ứ' => 'Ứ',
|
676 |
-
'ừ' => 'Ừ',
|
677 |
-
'ử' => 'Ử',
|
678 |
-
'ữ' => 'Ữ',
|
679 |
-
'ự' => 'Ự',
|
680 |
-
'ỳ' => 'Ỳ',
|
681 |
-
'ỵ' => 'Ỵ',
|
682 |
-
'ỷ' => 'Ỷ',
|
683 |
-
'ỹ' => 'Ỹ',
|
684 |
-
'ỻ' => 'Ỻ',
|
685 |
-
'ỽ' => 'Ỽ',
|
686 |
-
'ỿ' => 'Ỿ',
|
687 |
-
'ἀ' => 'Ἀ',
|
688 |
-
'ἁ' => 'Ἁ',
|
689 |
-
'ἂ' => 'Ἂ',
|
690 |
-
'ἃ' => 'Ἃ',
|
691 |
-
'ἄ' => 'Ἄ',
|
692 |
-
'ἅ' => 'Ἅ',
|
693 |
-
'ἆ' => 'Ἆ',
|
694 |
-
'ἇ' => 'Ἇ',
|
695 |
-
'ἐ' => 'Ἐ',
|
696 |
-
'ἑ' => 'Ἑ',
|
697 |
-
'ἒ' => 'Ἒ',
|
698 |
-
'ἓ' => 'Ἓ',
|
699 |
-
'ἔ' => 'Ἔ',
|
700 |
-
'ἕ' => 'Ἕ',
|
701 |
-
'ἠ' => 'Ἠ',
|
702 |
-
'ἡ' => 'Ἡ',
|
703 |
-
'ἢ' => 'Ἢ',
|
704 |
-
'ἣ' => 'Ἣ',
|
705 |
-
'ἤ' => 'Ἤ',
|
706 |
-
'ἥ' => 'Ἥ',
|
707 |
-
'ἦ' => 'Ἦ',
|
708 |
-
'ἧ' => 'Ἧ',
|
709 |
-
'ἰ' => 'Ἰ',
|
710 |
-
'ἱ' => 'Ἱ',
|
711 |
-
'ἲ' => 'Ἲ',
|
712 |
-
'ἳ' => 'Ἳ',
|
713 |
-
'ἴ' => 'Ἴ',
|
714 |
-
'ἵ' => 'Ἵ',
|
715 |
-
'ἶ' => 'Ἶ',
|
716 |
-
'ἷ' => 'Ἷ',
|
717 |
-
'ὀ' => 'Ὀ',
|
718 |
-
'ὁ' => 'Ὁ',
|
719 |
-
'ὂ' => 'Ὂ',
|
720 |
-
'ὃ' => 'Ὃ',
|
721 |
-
'ὄ' => 'Ὄ',
|
722 |
-
'ὅ' => 'Ὅ',
|
723 |
-
'ὑ' => 'Ὑ',
|
724 |
-
'ὓ' => 'Ὓ',
|
725 |
-
'ὕ' => 'Ὕ',
|
726 |
-
'ὗ' => 'Ὗ',
|
727 |
-
'ὠ' => 'Ὠ',
|
728 |
-
'ὡ' => 'Ὡ',
|
729 |
-
'ὢ' => 'Ὢ',
|
730 |
-
'ὣ' => 'Ὣ',
|
731 |
-
'ὤ' => 'Ὤ',
|
732 |
-
'ὥ' => 'Ὥ',
|
733 |
-
'ὦ' => 'Ὦ',
|
734 |
-
'ὧ' => 'Ὧ',
|
735 |
-
'ὰ' => 'Ὰ',
|
736 |
-
'ά' => 'Ά',
|
737 |
-
'ὲ' => 'Ὲ',
|
738 |
-
'έ' => 'Έ',
|
739 |
-
'ὴ' => 'Ὴ',
|
740 |
-
'ή' => 'Ή',
|
741 |
-
'ὶ' => 'Ὶ',
|
742 |
-
'ί' => 'Ί',
|
743 |
-
'ὸ' => 'Ὸ',
|
744 |
-
'ό' => 'Ό',
|
745 |
-
'ὺ' => 'Ὺ',
|
746 |
-
'ύ' => 'Ύ',
|
747 |
-
'ὼ' => 'Ὼ',
|
748 |
-
'ώ' => 'Ώ',
|
749 |
-
'ᾀ' => 'ᾈ',
|
750 |
-
'ᾁ' => 'ᾉ',
|
751 |
-
'ᾂ' => 'ᾊ',
|
752 |
-
'ᾃ' => 'ᾋ',
|
753 |
-
'ᾄ' => 'ᾌ',
|
754 |
-
'ᾅ' => 'ᾍ',
|
755 |
-
'ᾆ' => 'ᾎ',
|
756 |
-
'ᾇ' => 'ᾏ',
|
757 |
-
'ᾐ' => 'ᾘ',
|
758 |
-
'ᾑ' => 'ᾙ',
|
759 |
-
'ᾒ' => 'ᾚ',
|
760 |
-
'ᾓ' => 'ᾛ',
|
761 |
-
'ᾔ' => 'ᾜ',
|
762 |
-
'ᾕ' => 'ᾝ',
|
763 |
-
'ᾖ' => 'ᾞ',
|
764 |
-
'ᾗ' => 'ᾟ',
|
765 |
-
'ᾠ' => 'ᾨ',
|
766 |
-
'ᾡ' => 'ᾩ',
|
767 |
-
'ᾢ' => 'ᾪ',
|
768 |
-
'ᾣ' => 'ᾫ',
|
769 |
-
'ᾤ' => 'ᾬ',
|
770 |
-
'ᾥ' => 'ᾭ',
|
771 |
-
'ᾦ' => 'ᾮ',
|
772 |
-
'ᾧ' => 'ᾯ',
|
773 |
-
'ᾰ' => 'Ᾰ',
|
774 |
-
'ᾱ' => 'Ᾱ',
|
775 |
-
'ᾳ' => 'ᾼ',
|
776 |
-
'ι' => 'Ι',
|
777 |
-
'ῃ' => 'ῌ',
|
778 |
-
'ῐ' => 'Ῐ',
|
779 |
-
'ῑ' => 'Ῑ',
|
780 |
-
'ῠ' => 'Ῠ',
|
781 |
-
'ῡ' => 'Ῡ',
|
782 |
-
'ῥ' => 'Ῥ',
|
783 |
-
'ῳ' => 'ῼ',
|
784 |
-
'ⅎ' => 'Ⅎ',
|
785 |
-
'ⅰ' => 'Ⅰ',
|
786 |
-
'ⅱ' => 'Ⅱ',
|
787 |
-
'ⅲ' => 'Ⅲ',
|
788 |
-
'ⅳ' => 'Ⅳ',
|
789 |
-
'ⅴ' => 'Ⅴ',
|
790 |
-
'ⅵ' => 'Ⅵ',
|
791 |
-
'ⅶ' => 'Ⅶ',
|
792 |
-
'ⅷ' => 'Ⅷ',
|
793 |
-
'ⅸ' => 'Ⅸ',
|
794 |
-
'ⅹ' => 'Ⅹ',
|
795 |
-
'ⅺ' => 'Ⅺ',
|
796 |
-
'ⅻ' => 'Ⅻ',
|
797 |
-
'ⅼ' => 'Ⅼ',
|
798 |
-
'ⅽ' => 'Ⅽ',
|
799 |
-
'ⅾ' => 'Ⅾ',
|
800 |
-
'ⅿ' => 'Ⅿ',
|
801 |
-
'ↄ' => 'Ↄ',
|
802 |
-
'ⓐ' => 'Ⓐ',
|
803 |
-
'ⓑ' => 'Ⓑ',
|
804 |
-
'ⓒ' => 'Ⓒ',
|
805 |
-
'ⓓ' => 'Ⓓ',
|
806 |
-
'ⓔ' => 'Ⓔ',
|
807 |
-
'ⓕ' => 'Ⓕ',
|
808 |
-
'ⓖ' => 'Ⓖ',
|
809 |
-
'ⓗ' => 'Ⓗ',
|
810 |
-
'ⓘ' => 'Ⓘ',
|
811 |
-
'ⓙ' => 'Ⓙ',
|
812 |
-
'ⓚ' => 'Ⓚ',
|
813 |
-
'ⓛ' => 'Ⓛ',
|
814 |
-
'ⓜ' => 'Ⓜ',
|
815 |
-
'ⓝ' => 'Ⓝ',
|
816 |
-
'ⓞ' => 'Ⓞ',
|
817 |
-
'ⓟ' => 'Ⓟ',
|
818 |
-
'ⓠ' => 'Ⓠ',
|
819 |
-
'ⓡ' => 'Ⓡ',
|
820 |
-
'ⓢ' => 'Ⓢ',
|
821 |
-
'ⓣ' => 'Ⓣ',
|
822 |
-
'ⓤ' => 'Ⓤ',
|
823 |
-
'ⓥ' => 'Ⓥ',
|
824 |
-
'ⓦ' => 'Ⓦ',
|
825 |
-
'ⓧ' => 'Ⓧ',
|
826 |
-
'ⓨ' => 'Ⓨ',
|
827 |
-
'ⓩ' => 'Ⓩ',
|
828 |
-
'ⰰ' => 'Ⰰ',
|
829 |
-
'ⰱ' => 'Ⰱ',
|
830 |
-
'ⰲ' => 'Ⰲ',
|
831 |
-
'ⰳ' => 'Ⰳ',
|
832 |
-
'ⰴ' => 'Ⰴ',
|
833 |
-
'ⰵ' => 'Ⰵ',
|
834 |
-
'ⰶ' => 'Ⰶ',
|
835 |
-
'ⰷ' => 'Ⰷ',
|
836 |
-
'ⰸ' => 'Ⰸ',
|
837 |
-
'ⰹ' => 'Ⰹ',
|
838 |
-
'ⰺ' => 'Ⰺ',
|
839 |
-
'ⰻ' => 'Ⰻ',
|
840 |
-
'ⰼ' => 'Ⰼ',
|
841 |
-
'ⰽ' => 'Ⰽ',
|
842 |
-
'ⰾ' => 'Ⰾ',
|
843 |
-
'ⰿ' => 'Ⰿ',
|
844 |
-
'ⱀ' => 'Ⱀ',
|
845 |
-
'ⱁ' => 'Ⱁ',
|
846 |
-
'ⱂ' => 'Ⱂ',
|
847 |
-
'ⱃ' => 'Ⱃ',
|
848 |
-
'ⱄ' => 'Ⱄ',
|
849 |
-
'ⱅ' => 'Ⱅ',
|
850 |
-
'ⱆ' => 'Ⱆ',
|
851 |
-
'ⱇ' => 'Ⱇ',
|
852 |
-
'ⱈ' => 'Ⱈ',
|
853 |
-
'ⱉ' => 'Ⱉ',
|
854 |
-
'ⱊ' => 'Ⱊ',
|
855 |
-
'ⱋ' => 'Ⱋ',
|
856 |
-
'ⱌ' => 'Ⱌ',
|
857 |
-
'ⱍ' => 'Ⱍ',
|
858 |
-
'ⱎ' => 'Ⱎ',
|
859 |
-
'ⱏ' => 'Ⱏ',
|
860 |
-
'ⱐ' => 'Ⱐ',
|
861 |
-
'ⱑ' => 'Ⱑ',
|
862 |
-
'ⱒ' => 'Ⱒ',
|
863 |
-
'ⱓ' => 'Ⱓ',
|
864 |
-
'ⱔ' => 'Ⱔ',
|
865 |
-
'ⱕ' => 'Ⱕ',
|
866 |
-
'ⱖ' => 'Ⱖ',
|
867 |
-
'ⱗ' => 'Ⱗ',
|
868 |
-
'ⱘ' => 'Ⱘ',
|
869 |
-
'ⱙ' => 'Ⱙ',
|
870 |
-
'ⱚ' => 'Ⱚ',
|
871 |
-
'ⱛ' => 'Ⱛ',
|
872 |
-
'ⱜ' => 'Ⱜ',
|
873 |
-
'ⱝ' => 'Ⱝ',
|
874 |
-
'ⱞ' => 'Ⱞ',
|
875 |
-
'ⱡ' => 'Ⱡ',
|
876 |
-
'ⱥ' => 'Ⱥ',
|
877 |
-
'ⱦ' => 'Ⱦ',
|
878 |
-
'ⱨ' => 'Ⱨ',
|
879 |
-
'ⱪ' => 'Ⱪ',
|
880 |
-
'ⱬ' => 'Ⱬ',
|
881 |
-
'ⱳ' => 'Ⱳ',
|
882 |
-
'ⱶ' => 'Ⱶ',
|
883 |
-
'ⲁ' => 'Ⲁ',
|
884 |
-
'ⲃ' => 'Ⲃ',
|
885 |
-
'ⲅ' => 'Ⲅ',
|
886 |
-
'ⲇ' => 'Ⲇ',
|
887 |
-
'ⲉ' => 'Ⲉ',
|
888 |
-
'ⲋ' => 'Ⲋ',
|
889 |
-
'ⲍ' => 'Ⲍ',
|
890 |
-
'ⲏ' => 'Ⲏ',
|
891 |
-
'ⲑ' => 'Ⲑ',
|
892 |
-
'ⲓ' => 'Ⲓ',
|
893 |
-
'ⲕ' => 'Ⲕ',
|
894 |
-
'ⲗ' => 'Ⲗ',
|
895 |
-
'ⲙ' => 'Ⲙ',
|
896 |
-
'ⲛ' => 'Ⲛ',
|
897 |
-
'ⲝ' => 'Ⲝ',
|
898 |
-
'ⲟ' => 'Ⲟ',
|
899 |
-
'ⲡ' => 'Ⲡ',
|
900 |
-
'ⲣ' => 'Ⲣ',
|
901 |
-
'ⲥ' => 'Ⲥ',
|
902 |
-
'ⲧ' => 'Ⲧ',
|
903 |
-
'ⲩ' => 'Ⲩ',
|
904 |
-
'ⲫ' => 'Ⲫ',
|
905 |
-
'ⲭ' => 'Ⲭ',
|
906 |
-
'ⲯ' => 'Ⲯ',
|
907 |
-
'ⲱ' => 'Ⲱ',
|
908 |
-
'ⲳ' => 'Ⲳ',
|
909 |
-
'ⲵ' => 'Ⲵ',
|
910 |
-
'ⲷ' => 'Ⲷ',
|
911 |
-
'ⲹ' => 'Ⲹ',
|
912 |
-
'ⲻ' => 'Ⲻ',
|
913 |
-
'ⲽ' => 'Ⲽ',
|
914 |
-
'ⲿ' => 'Ⲿ',
|
915 |
-
'ⳁ' => 'Ⳁ',
|
916 |
-
'ⳃ' => 'Ⳃ',
|
917 |
-
'ⳅ' => 'Ⳅ',
|
918 |
-
'ⳇ' => 'Ⳇ',
|
919 |
-
'ⳉ' => 'Ⳉ',
|
920 |
-
'ⳋ' => 'Ⳋ',
|
921 |
-
'ⳍ' => 'Ⳍ',
|
922 |
-
'ⳏ' => 'Ⳏ',
|
923 |
-
'ⳑ' => 'Ⳑ',
|
924 |
-
'ⳓ' => 'Ⳓ',
|
925 |
-
'ⳕ' => 'Ⳕ',
|
926 |
-
'ⳗ' => 'Ⳗ',
|
927 |
-
'ⳙ' => 'Ⳙ',
|
928 |
-
'ⳛ' => 'Ⳛ',
|
929 |
-
'ⳝ' => 'Ⳝ',
|
930 |
-
'ⳟ' => 'Ⳟ',
|
931 |
-
'ⳡ' => 'Ⳡ',
|
932 |
-
'ⳣ' => 'Ⳣ',
|
933 |
-
'ⳬ' => 'Ⳬ',
|
934 |
-
'ⳮ' => 'Ⳮ',
|
935 |
-
'ⳳ' => 'Ⳳ',
|
936 |
-
'ⴀ' => 'Ⴀ',
|
937 |
-
'ⴁ' => 'Ⴁ',
|
938 |
-
'ⴂ' => 'Ⴂ',
|
939 |
-
'ⴃ' => 'Ⴃ',
|
940 |
-
'ⴄ' => 'Ⴄ',
|
941 |
-
'ⴅ' => 'Ⴅ',
|
942 |
-
'ⴆ' => 'Ⴆ',
|
943 |
-
'ⴇ' => 'Ⴇ',
|
944 |
-
'ⴈ' => 'Ⴈ',
|
945 |
-
'ⴉ' => 'Ⴉ',
|
946 |
-
'ⴊ' => 'Ⴊ',
|
947 |
-
'ⴋ' => 'Ⴋ',
|
948 |
-
'ⴌ' => 'Ⴌ',
|
949 |
-
'ⴍ' => 'Ⴍ',
|
950 |
-
'ⴎ' => 'Ⴎ',
|
951 |
-
'ⴏ' => 'Ⴏ',
|
952 |
-
'ⴐ' => 'Ⴐ',
|
953 |
-
'ⴑ' => 'Ⴑ',
|
954 |
-
'ⴒ' => 'Ⴒ',
|
955 |
-
'ⴓ' => 'Ⴓ',
|
956 |
-
'ⴔ' => 'Ⴔ',
|
957 |
-
'ⴕ' => 'Ⴕ',
|
958 |
-
'ⴖ' => 'Ⴖ',
|
959 |
-
'ⴗ' => 'Ⴗ',
|
960 |
-
'ⴘ' => 'Ⴘ',
|
961 |
-
'ⴙ' => 'Ⴙ',
|
962 |
-
'ⴚ' => 'Ⴚ',
|
963 |
-
'ⴛ' => 'Ⴛ',
|
964 |
-
'ⴜ' => 'Ⴜ',
|
965 |
-
'ⴝ' => 'Ⴝ',
|
966 |
-
'ⴞ' => 'Ⴞ',
|
967 |
-
'ⴟ' => 'Ⴟ',
|
968 |
-
'ⴠ' => 'Ⴠ',
|
969 |
-
'ⴡ' => 'Ⴡ',
|
970 |
-
'ⴢ' => 'Ⴢ',
|
971 |
-
'ⴣ' => 'Ⴣ',
|
972 |
-
'ⴤ' => 'Ⴤ',
|
973 |
-
'ⴥ' => 'Ⴥ',
|
974 |
-
'ⴧ' => 'Ⴧ',
|
975 |
-
'ⴭ' => 'Ⴭ',
|
976 |
-
'ꙁ' => 'Ꙁ',
|
977 |
-
'ꙃ' => 'Ꙃ',
|
978 |
-
'ꙅ' => 'Ꙅ',
|
979 |
-
'ꙇ' => 'Ꙇ',
|
980 |
-
'ꙉ' => 'Ꙉ',
|
981 |
-
'ꙋ' => 'Ꙋ',
|
982 |
-
'ꙍ' => 'Ꙍ',
|
983 |
-
'ꙏ' => 'Ꙏ',
|
984 |
-
'ꙑ' => 'Ꙑ',
|
985 |
-
'ꙓ' => 'Ꙓ',
|
986 |
-
'ꙕ' => 'Ꙕ',
|
987 |
-
'ꙗ' => 'Ꙗ',
|
988 |
-
'ꙙ' => 'Ꙙ',
|
989 |
-
'ꙛ' => 'Ꙛ',
|
990 |
-
'ꙝ' => 'Ꙝ',
|
991 |
-
'ꙟ' => 'Ꙟ',
|
992 |
-
'ꙡ' => 'Ꙡ',
|
993 |
-
'ꙣ' => 'Ꙣ',
|
994 |
-
'ꙥ' => 'Ꙥ',
|
995 |
-
'ꙧ' => 'Ꙧ',
|
996 |
-
'ꙩ' => 'Ꙩ',
|
997 |
-
'ꙫ' => 'Ꙫ',
|
998 |
-
'ꙭ' => 'Ꙭ',
|
999 |
-
'ꚁ' => 'Ꚁ',
|
1000 |
-
'ꚃ' => 'Ꚃ',
|
1001 |
-
'ꚅ' => 'Ꚅ',
|
1002 |
-
'ꚇ' => 'Ꚇ',
|
1003 |
-
'ꚉ' => 'Ꚉ',
|
1004 |
-
'ꚋ' => 'Ꚋ',
|
1005 |
-
'ꚍ' => 'Ꚍ',
|
1006 |
-
'ꚏ' => 'Ꚏ',
|
1007 |
-
'ꚑ' => 'Ꚑ',
|
1008 |
-
'ꚓ' => 'Ꚓ',
|
1009 |
-
'ꚕ' => 'Ꚕ',
|
1010 |
-
'ꚗ' => 'Ꚗ',
|
1011 |
-
'ꚙ' => 'Ꚙ',
|
1012 |
-
'ꚛ' => 'Ꚛ',
|
1013 |
-
'ꜣ' => 'Ꜣ',
|
1014 |
-
'ꜥ' => 'Ꜥ',
|
1015 |
-
'ꜧ' => 'Ꜧ',
|
1016 |
-
'ꜩ' => 'Ꜩ',
|
1017 |
-
'ꜫ' => 'Ꜫ',
|
1018 |
-
'ꜭ' => 'Ꜭ',
|
1019 |
-
'ꜯ' => 'Ꜯ',
|
1020 |
-
'ꜳ' => 'Ꜳ',
|
1021 |
-
'ꜵ' => 'Ꜵ',
|
1022 |
-
'ꜷ' => 'Ꜷ',
|
1023 |
-
'ꜹ' => 'Ꜹ',
|
1024 |
-
'ꜻ' => 'Ꜻ',
|
1025 |
-
'ꜽ' => 'Ꜽ',
|
1026 |
-
'ꜿ' => 'Ꜿ',
|
1027 |
-
'ꝁ' => 'Ꝁ',
|
1028 |
-
'ꝃ' => 'Ꝃ',
|
1029 |
-
'ꝅ' => 'Ꝅ',
|
1030 |
-
'ꝇ' => 'Ꝇ',
|
1031 |
-
'ꝉ' => 'Ꝉ',
|
1032 |
-
'ꝋ' => 'Ꝋ',
|
1033 |
-
'ꝍ' => 'Ꝍ',
|
1034 |
-
'ꝏ' => 'Ꝏ',
|
1035 |
-
'ꝑ' => 'Ꝑ',
|
1036 |
-
'ꝓ' => 'Ꝓ',
|
1037 |
-
'ꝕ' => 'Ꝕ',
|
1038 |
-
'ꝗ' => 'Ꝗ',
|
1039 |
-
'ꝙ' => 'Ꝙ',
|
1040 |
-
'ꝛ' => 'Ꝛ',
|
1041 |
-
'ꝝ' => 'Ꝝ',
|
1042 |
-
'ꝟ' => 'Ꝟ',
|
1043 |
-
'ꝡ' => 'Ꝡ',
|
1044 |
-
'ꝣ' => 'Ꝣ',
|
1045 |
-
'ꝥ' => 'Ꝥ',
|
1046 |
-
'ꝧ' => 'Ꝧ',
|
1047 |
-
'ꝩ' => 'Ꝩ',
|
1048 |
-
'ꝫ' => 'Ꝫ',
|
1049 |
-
'ꝭ' => 'Ꝭ',
|
1050 |
-
'ꝯ' => 'Ꝯ',
|
1051 |
-
'ꝺ' => 'Ꝺ',
|
1052 |
-
'ꝼ' => 'Ꝼ',
|
1053 |
-
'ꝿ' => 'Ꝿ',
|
1054 |
-
'ꞁ' => 'Ꞁ',
|
1055 |
-
'ꞃ' => 'Ꞃ',
|
1056 |
-
'ꞅ' => 'Ꞅ',
|
1057 |
-
'ꞇ' => 'Ꞇ',
|
1058 |
-
'ꞌ' => 'Ꞌ',
|
1059 |
-
'ꞑ' => 'Ꞑ',
|
1060 |
-
'ꞓ' => 'Ꞓ',
|
1061 |
-
'ꞔ' => 'Ꞔ',
|
1062 |
-
'ꞗ' => 'Ꞗ',
|
1063 |
-
'ꞙ' => 'Ꞙ',
|
1064 |
-
'ꞛ' => 'Ꞛ',
|
1065 |
-
'ꞝ' => 'Ꞝ',
|
1066 |
-
'ꞟ' => 'Ꞟ',
|
1067 |
-
'ꞡ' => 'Ꞡ',
|
1068 |
-
'ꞣ' => 'Ꞣ',
|
1069 |
-
'ꞥ' => 'Ꞥ',
|
1070 |
-
'ꞧ' => 'Ꞧ',
|
1071 |
-
'ꞩ' => 'Ꞩ',
|
1072 |
-
'ꞵ' => 'Ꞵ',
|
1073 |
-
'ꞷ' => 'Ꞷ',
|
1074 |
-
'ꞹ' => 'Ꞹ',
|
1075 |
-
'ꞻ' => 'Ꞻ',
|
1076 |
-
'ꞽ' => 'Ꞽ',
|
1077 |
-
'ꞿ' => 'Ꞿ',
|
1078 |
-
'ꟃ' => 'Ꟃ',
|
1079 |
-
'ꟈ' => 'Ꟈ',
|
1080 |
-
'ꟊ' => 'Ꟊ',
|
1081 |
-
'ꟶ' => 'Ꟶ',
|
1082 |
-
'ꭓ' => 'Ꭓ',
|
1083 |
-
'ꭰ' => 'Ꭰ',
|
1084 |
-
'ꭱ' => 'Ꭱ',
|
1085 |
-
'ꭲ' => 'Ꭲ',
|
1086 |
-
'ꭳ' => 'Ꭳ',
|
1087 |
-
'ꭴ' => 'Ꭴ',
|
1088 |
-
'ꭵ' => 'Ꭵ',
|
1089 |
-
'ꭶ' => 'Ꭶ',
|
1090 |
-
'ꭷ' => 'Ꭷ',
|
1091 |
-
'ꭸ' => 'Ꭸ',
|
1092 |
-
'ꭹ' => 'Ꭹ',
|
1093 |
-
'ꭺ' => 'Ꭺ',
|
1094 |
-
'ꭻ' => 'Ꭻ',
|
1095 |
-
'ꭼ' => 'Ꭼ',
|
1096 |
-
'ꭽ' => 'Ꭽ',
|
1097 |
-
'ꭾ' => 'Ꭾ',
|
1098 |
-
'ꭿ' => 'Ꭿ',
|
1099 |
-
'ꮀ' => 'Ꮀ',
|
1100 |
-
'ꮁ' => 'Ꮁ',
|
1101 |
-
'ꮂ' => 'Ꮂ',
|
1102 |
-
'ꮃ' => 'Ꮃ',
|
1103 |
-
'ꮄ' => 'Ꮄ',
|
1104 |
-
'ꮅ' => 'Ꮅ',
|
1105 |
-
'ꮆ' => 'Ꮆ',
|
1106 |
-
'ꮇ' => 'Ꮇ',
|
1107 |
-
'ꮈ' => 'Ꮈ',
|
1108 |
-
'ꮉ' => 'Ꮉ',
|
1109 |
-
'ꮊ' => 'Ꮊ',
|
1110 |
-
'ꮋ' => 'Ꮋ',
|
1111 |
-
'ꮌ' => 'Ꮌ',
|
1112 |
-
'ꮍ' => 'Ꮍ',
|
1113 |
-
'ꮎ' => 'Ꮎ',
|
1114 |
-
'ꮏ' => 'Ꮏ',
|
1115 |
-
'ꮐ' => 'Ꮐ',
|
1116 |
-
'ꮑ' => 'Ꮑ',
|
1117 |
-
'ꮒ' => 'Ꮒ',
|
1118 |
-
'ꮓ' => 'Ꮓ',
|
1119 |
-
'ꮔ' => 'Ꮔ',
|
1120 |
-
'ꮕ' => 'Ꮕ',
|
1121 |
-
'ꮖ' => 'Ꮖ',
|
1122 |
-
'ꮗ' => 'Ꮗ',
|
1123 |
-
'ꮘ' => 'Ꮘ',
|
1124 |
-
'ꮙ' => 'Ꮙ',
|
1125 |
-
'ꮚ' => 'Ꮚ',
|
1126 |
-
'ꮛ' => 'Ꮛ',
|
1127 |
-
'ꮜ' => 'Ꮜ',
|
1128 |
-
'ꮝ' => 'Ꮝ',
|
1129 |
-
'ꮞ' => 'Ꮞ',
|
1130 |
-
'ꮟ' => 'Ꮟ',
|
1131 |
-
'ꮠ' => 'Ꮠ',
|
1132 |
-
'ꮡ' => 'Ꮡ',
|
1133 |
-
'ꮢ' => 'Ꮢ',
|
1134 |
-
'ꮣ' => 'Ꮣ',
|
1135 |
-
'ꮤ' => 'Ꮤ',
|
1136 |
-
'ꮥ' => 'Ꮥ',
|
1137 |
-
'ꮦ' => 'Ꮦ',
|
1138 |
-
'ꮧ' => 'Ꮧ',
|
1139 |
-
'ꮨ' => 'Ꮨ',
|
1140 |
-
'ꮩ' => 'Ꮩ',
|
1141 |
-
'ꮪ' => 'Ꮪ',
|
1142 |
-
'ꮫ' => 'Ꮫ',
|
1143 |
-
'ꮬ' => 'Ꮬ',
|
1144 |
-
'ꮭ' => 'Ꮭ',
|
1145 |
-
'ꮮ' => 'Ꮮ',
|
1146 |
-
'ꮯ' => 'Ꮯ',
|
1147 |
-
'ꮰ' => 'Ꮰ',
|
1148 |
-
'ꮱ' => 'Ꮱ',
|
1149 |
-
'ꮲ' => 'Ꮲ',
|
1150 |
-
'ꮳ' => 'Ꮳ',
|
1151 |
-
'ꮴ' => 'Ꮴ',
|
1152 |
-
'ꮵ' => 'Ꮵ',
|
1153 |
-
'ꮶ' => 'Ꮶ',
|
1154 |
-
'ꮷ' => 'Ꮷ',
|
1155 |
-
'ꮸ' => 'Ꮸ',
|
1156 |
-
'ꮹ' => 'Ꮹ',
|
1157 |
-
'ꮺ' => 'Ꮺ',
|
1158 |
-
'ꮻ' => 'Ꮻ',
|
1159 |
-
'ꮼ' => 'Ꮼ',
|
1160 |
-
'ꮽ' => 'Ꮽ',
|
1161 |
-
'ꮾ' => 'Ꮾ',
|
1162 |
-
'ꮿ' => 'Ꮿ',
|
1163 |
-
'a' => 'A',
|
1164 |
-
'b' => 'B',
|
1165 |
-
'c' => 'C',
|
1166 |
-
'd' => 'D',
|
1167 |
-
'e' => 'E',
|
1168 |
-
'f' => 'F',
|
1169 |
-
'g' => 'G',
|
1170 |
-
'h' => 'H',
|
1171 |
-
'i' => 'I',
|
1172 |
-
'j' => 'J',
|
1173 |
-
'k' => 'K',
|
1174 |
-
'l' => 'L',
|
1175 |
-
'm' => 'M',
|
1176 |
-
'n' => 'N',
|
1177 |
-
'o' => 'O',
|
1178 |
-
'p' => 'P',
|
1179 |
-
'q' => 'Q',
|
1180 |
-
'r' => 'R',
|
1181 |
-
's' => 'S',
|
1182 |
-
't' => 'T',
|
1183 |
-
'u' => 'U',
|
1184 |
-
'v' => 'V',
|
1185 |
-
'w' => 'W',
|
1186 |
-
'x' => 'X',
|
1187 |
-
'y' => 'Y',
|
1188 |
-
'z' => 'Z',
|
1189 |
-
'𐐨' => '𐐀',
|
1190 |
-
'𐐩' => '𐐁',
|
1191 |
-
'𐐪' => '𐐂',
|
1192 |
-
'𐐫' => '𐐃',
|
1193 |
-
'𐐬' => '𐐄',
|
1194 |
-
'𐐭' => '𐐅',
|
1195 |
-
'𐐮' => '𐐆',
|
1196 |
-
'𐐯' => '𐐇',
|
1197 |
-
'𐐰' => '𐐈',
|
1198 |
-
'𐐱' => '𐐉',
|
1199 |
-
'𐐲' => '𐐊',
|
1200 |
-
'𐐳' => '𐐋',
|
1201 |
-
'𐐴' => '𐐌',
|
1202 |
-
'𐐵' => '𐐍',
|
1203 |
-
'𐐶' => '𐐎',
|
1204 |
-
'𐐷' => '𐐏',
|
1205 |
-
'𐐸' => '𐐐',
|
1206 |
-
'𐐹' => '𐐑',
|
1207 |
-
'𐐺' => '𐐒',
|
1208 |
-
'𐐻' => '𐐓',
|
1209 |
-
'𐐼' => '𐐔',
|
1210 |
-
'𐐽' => '𐐕',
|
1211 |
-
'𐐾' => '𐐖',
|
1212 |
-
'𐐿' => '𐐗',
|
1213 |
-
'𐑀' => '𐐘',
|
1214 |
-
'𐑁' => '𐐙',
|
1215 |
-
'𐑂' => '𐐚',
|
1216 |
-
'𐑃' => '𐐛',
|
1217 |
-
'𐑄' => '𐐜',
|
1218 |
-
'𐑅' => '𐐝',
|
1219 |
-
'𐑆' => '𐐞',
|
1220 |
-
'𐑇' => '𐐟',
|
1221 |
-
'𐑈' => '𐐠',
|
1222 |
-
'𐑉' => '𐐡',
|
1223 |
-
'𐑊' => '𐐢',
|
1224 |
-
'𐑋' => '𐐣',
|
1225 |
-
'𐑌' => '𐐤',
|
1226 |
-
'𐑍' => '𐐥',
|
1227 |
-
'𐑎' => '𐐦',
|
1228 |
-
'𐑏' => '𐐧',
|
1229 |
-
'𐓘' => '𐒰',
|
1230 |
-
'𐓙' => '𐒱',
|
1231 |
-
'𐓚' => '𐒲',
|
1232 |
-
'𐓛' => '𐒳',
|
1233 |
-
'𐓜' => '𐒴',
|
1234 |
-
'𐓝' => '𐒵',
|
1235 |
-
'𐓞' => '𐒶',
|
1236 |
-
'𐓟' => '𐒷',
|
1237 |
-
'𐓠' => '𐒸',
|
1238 |
-
'𐓡' => '𐒹',
|
1239 |
-
'𐓢' => '𐒺',
|
1240 |
-
'𐓣' => '𐒻',
|
1241 |
-
'𐓤' => '𐒼',
|
1242 |
-
'𐓥' => '𐒽',
|
1243 |
-
'𐓦' => '𐒾',
|
1244 |
-
'𐓧' => '𐒿',
|
1245 |
-
'𐓨' => '𐓀',
|
1246 |
-
'𐓩' => '𐓁',
|
1247 |
-
'𐓪' => '𐓂',
|
1248 |
-
'𐓫' => '𐓃',
|
1249 |
-
'𐓬' => '𐓄',
|
1250 |
-
'𐓭' => '𐓅',
|
1251 |
-
'𐓮' => '𐓆',
|
1252 |
-
'𐓯' => '𐓇',
|
1253 |
-
'𐓰' => '𐓈',
|
1254 |
-
'𐓱' => '𐓉',
|
1255 |
-
'𐓲' => '𐓊',
|
1256 |
-
'𐓳' => '𐓋',
|
1257 |
-
'𐓴' => '𐓌',
|
1258 |
-
'𐓵' => '𐓍',
|
1259 |
-
'𐓶' => '𐓎',
|
1260 |
-
'𐓷' => '𐓏',
|
1261 |
-
'𐓸' => '𐓐',
|
1262 |
-
'𐓹' => '𐓑',
|
1263 |
-
'𐓺' => '𐓒',
|
1264 |
-
'𐓻' => '𐓓',
|
1265 |
-
'𐳀' => '𐲀',
|
1266 |
-
'𐳁' => '𐲁',
|
1267 |
-
'𐳂' => '𐲂',
|
1268 |
-
'𐳃' => '𐲃',
|
1269 |
-
'𐳄' => '𐲄',
|
1270 |
-
'𐳅' => '𐲅',
|
1271 |
-
'𐳆' => '𐲆',
|
1272 |
-
'𐳇' => '𐲇',
|
1273 |
-
'𐳈' => '𐲈',
|
1274 |
-
'𐳉' => '𐲉',
|
1275 |
-
'𐳊' => '𐲊',
|
1276 |
-
'𐳋' => '𐲋',
|
1277 |
-
'𐳌' => '𐲌',
|
1278 |
-
'𐳍' => '𐲍',
|
1279 |
-
'𐳎' => '𐲎',
|
1280 |
-
'𐳏' => '𐲏',
|
1281 |
-
'𐳐' => '𐲐',
|
1282 |
-
'𐳑' => '𐲑',
|
1283 |
-
'𐳒' => '𐲒',
|
1284 |
-
'𐳓' => '𐲓',
|
1285 |
-
'𐳔' => '𐲔',
|
1286 |
-
'𐳕' => '𐲕',
|
1287 |
-
'𐳖' => '𐲖',
|
1288 |
-
'𐳗' => '𐲗',
|
1289 |
-
'𐳘' => '𐲘',
|
1290 |
-
'𐳙' => '𐲙',
|
1291 |
-
'𐳚' => '𐲚',
|
1292 |
-
'𐳛' => '𐲛',
|
1293 |
-
'𐳜' => '𐲜',
|
1294 |
-
'𐳝' => '𐲝',
|
1295 |
-
'𐳞' => '𐲞',
|
1296 |
-
'𐳟' => '𐲟',
|
1297 |
-
'𐳠' => '𐲠',
|
1298 |
-
'𐳡' => '𐲡',
|
1299 |
-
'𐳢' => '𐲢',
|
1300 |
-
'𐳣' => '𐲣',
|
1301 |
-
'𐳤' => '𐲤',
|
1302 |
-
'𐳥' => '𐲥',
|
1303 |
-
'𐳦' => '𐲦',
|
1304 |
-
'𐳧' => '𐲧',
|
1305 |
-
'𐳨' => '𐲨',
|
1306 |
-
'𐳩' => '𐲩',
|
1307 |
-
'𐳪' => '𐲪',
|
1308 |
-
'𐳫' => '𐲫',
|
1309 |
-
'𐳬' => '𐲬',
|
1310 |
-
'𐳭' => '𐲭',
|
1311 |
-
'𐳮' => '𐲮',
|
1312 |
-
'𐳯' => '𐲯',
|
1313 |
-
'𐳰' => '𐲰',
|
1314 |
-
'𐳱' => '𐲱',
|
1315 |
-
'𐳲' => '𐲲',
|
1316 |
-
'𑣀' => '𑢠',
|
1317 |
-
'𑣁' => '𑢡',
|
1318 |
-
'𑣂' => '𑢢',
|
1319 |
-
'𑣃' => '𑢣',
|
1320 |
-
'𑣄' => '𑢤',
|
1321 |
-
'𑣅' => '𑢥',
|
1322 |
-
'𑣆' => '𑢦',
|
1323 |
-
'𑣇' => '𑢧',
|
1324 |
-
'𑣈' => '𑢨',
|
1325 |
-
'𑣉' => '𑢩',
|
1326 |
-
'𑣊' => '𑢪',
|
1327 |
-
'𑣋' => '𑢫',
|
1328 |
-
'𑣌' => '𑢬',
|
1329 |
-
'𑣍' => '𑢭',
|
1330 |
-
'𑣎' => '𑢮',
|
1331 |
-
'𑣏' => '𑢯',
|
1332 |
-
'𑣐' => '𑢰',
|
1333 |
-
'𑣑' => '𑢱',
|
1334 |
-
'𑣒' => '𑢲',
|
1335 |
-
'𑣓' => '𑢳',
|
1336 |
-
'𑣔' => '𑢴',
|
1337 |
-
'𑣕' => '𑢵',
|
1338 |
-
'𑣖' => '𑢶',
|
1339 |
-
'𑣗' => '𑢷',
|
1340 |
-
'𑣘' => '𑢸',
|
1341 |
-
'𑣙' => '𑢹',
|
1342 |
-
'𑣚' => '𑢺',
|
1343 |
-
'𑣛' => '𑢻',
|
1344 |
-
'𑣜' => '𑢼',
|
1345 |
-
'𑣝' => '𑢽',
|
1346 |
-
'𑣞' => '𑢾',
|
1347 |
-
'𑣟' => '𑢿',
|
1348 |
-
'𖹠' => '𖹀',
|
1349 |
-
'𖹡' => '𖹁',
|
1350 |
-
'𖹢' => '𖹂',
|
1351 |
-
'𖹣' => '𖹃',
|
1352 |
-
'𖹤' => '𖹄',
|
1353 |
-
'𖹥' => '𖹅',
|
1354 |
-
'𖹦' => '𖹆',
|
1355 |
-
'𖹧' => '𖹇',
|
1356 |
-
'𖹨' => '𖹈',
|
1357 |
-
'𖹩' => '𖹉',
|
1358 |
-
'𖹪' => '𖹊',
|
1359 |
-
'𖹫' => '𖹋',
|
1360 |
-
'𖹬' => '𖹌',
|
1361 |
-
'𖹭' => '𖹍',
|
1362 |
-
'𖹮' => '𖹎',
|
1363 |
-
'𖹯' => '𖹏',
|
1364 |
-
'𖹰' => '𖹐',
|
1365 |
-
'𖹱' => '𖹑',
|
1366 |
-
'𖹲' => '𖹒',
|
1367 |
-
'𖹳' => '𖹓',
|
1368 |
-
'𖹴' => '𖹔',
|
1369 |
-
'𖹵' => '𖹕',
|
1370 |
-
'𖹶' => '𖹖',
|
1371 |
-
'𖹷' => '𖹗',
|
1372 |
-
'𖹸' => '𖹘',
|
1373 |
-
'𖹹' => '𖹙',
|
1374 |
-
'𖹺' => '𖹚',
|
1375 |
-
'𖹻' => '𖹛',
|
1376 |
-
'𖹼' => '𖹜',
|
1377 |
-
'𖹽' => '𖹝',
|
1378 |
-
'𖹾' => '𖹞',
|
1379 |
-
'𖹿' => '𖹟',
|
1380 |
-
'𞤢' => '𞤀',
|
1381 |
-
'𞤣' => '𞤁',
|
1382 |
-
'𞤤' => '𞤂',
|
1383 |
-
'𞤥' => '𞤃',
|
1384 |
-
'𞤦' => '𞤄',
|
1385 |
-
'𞤧' => '𞤅',
|
1386 |
-
'𞤨' => '𞤆',
|
1387 |
-
'𞤩' => '𞤇',
|
1388 |
-
'𞤪' => '𞤈',
|
1389 |
-
'𞤫' => '𞤉',
|
1390 |
-
'𞤬' => '𞤊',
|
1391 |
-
'𞤭' => '𞤋',
|
1392 |
-
'𞤮' => '𞤌',
|
1393 |
-
'𞤯' => '𞤍',
|
1394 |
-
'𞤰' => '𞤎',
|
1395 |
-
'𞤱' => '𞤏',
|
1396 |
-
'𞤲' => '𞤐',
|
1397 |
-
'𞤳' => '𞤑',
|
1398 |
-
'𞤴' => '𞤒',
|
1399 |
-
'𞤵' => '𞤓',
|
1400 |
-
'𞤶' => '𞤔',
|
1401 |
-
'𞤷' => '𞤕',
|
1402 |
-
'𞤸' => '𞤖',
|
1403 |
-
'𞤹' => '𞤗',
|
1404 |
-
'𞤺' => '𞤘',
|
1405 |
-
'𞤻' => '𞤙',
|
1406 |
-
'𞤼' => '𞤚',
|
1407 |
-
'𞤽' => '𞤛',
|
1408 |
-
'𞤾' => '𞤜',
|
1409 |
-
'𞤿' => '𞤝',
|
1410 |
-
'𞥀' => '𞤞',
|
1411 |
-
'𞥁' => '𞤟',
|
1412 |
-
'𞥂' => '𞤠',
|
1413 |
-
'𞥃' => '𞤡',
|
1414 |
-
);
|
1 |
+
<?php
|
2 |
+
|
3 |
+
return array (
|
4 |
+
'a' => 'A',
|
5 |
+
'b' => 'B',
|
6 |
+
'c' => 'C',
|
7 |
+
'd' => 'D',
|
8 |
+
'e' => 'E',
|
9 |
+
'f' => 'F',
|
10 |
+
'g' => 'G',
|
11 |
+
'h' => 'H',
|
12 |
+
'i' => 'I',
|
13 |
+
'j' => 'J',
|
14 |
+
'k' => 'K',
|
15 |
+
'l' => 'L',
|
16 |
+
'm' => 'M',
|
17 |
+
'n' => 'N',
|
18 |
+
'o' => 'O',
|
19 |
+
'p' => 'P',
|
20 |
+
'q' => 'Q',
|
21 |
+
'r' => 'R',
|
22 |
+
's' => 'S',
|
23 |
+
't' => 'T',
|
24 |
+
'u' => 'U',
|
25 |
+
'v' => 'V',
|
26 |
+
'w' => 'W',
|
27 |
+
'x' => 'X',
|
28 |
+
'y' => 'Y',
|
29 |
+
'z' => 'Z',
|
30 |
+
'µ' => 'Μ',
|
31 |
+
'à' => 'À',
|
32 |
+
'á' => 'Á',
|
33 |
+
'â' => 'Â',
|
34 |
+
'ã' => 'Ã',
|
35 |
+
'ä' => 'Ä',
|
36 |
+
'å' => 'Å',
|
37 |
+
'æ' => 'Æ',
|
38 |
+
'ç' => 'Ç',
|
39 |
+
'è' => 'È',
|
40 |
+
'é' => 'É',
|
41 |
+
'ê' => 'Ê',
|
42 |
+
'ë' => 'Ë',
|
43 |
+
'ì' => 'Ì',
|
44 |
+
'í' => 'Í',
|
45 |
+
'î' => 'Î',
|
46 |
+
'ï' => 'Ï',
|
47 |
+
'ð' => 'Ð',
|
48 |
+
'ñ' => 'Ñ',
|
49 |
+
'ò' => 'Ò',
|
50 |
+
'ó' => 'Ó',
|
51 |
+
'ô' => 'Ô',
|
52 |
+
'õ' => 'Õ',
|
53 |
+
'ö' => 'Ö',
|
54 |
+
'ø' => 'Ø',
|
55 |
+
'ù' => 'Ù',
|
56 |
+
'ú' => 'Ú',
|
57 |
+
'û' => 'Û',
|
58 |
+
'ü' => 'Ü',
|
59 |
+
'ý' => 'Ý',
|
60 |
+
'þ' => 'Þ',
|
61 |
+
'ÿ' => 'Ÿ',
|
62 |
+
'ā' => 'Ā',
|
63 |
+
'ă' => 'Ă',
|
64 |
+
'ą' => 'Ą',
|
65 |
+
'ć' => 'Ć',
|
66 |
+
'ĉ' => 'Ĉ',
|
67 |
+
'ċ' => 'Ċ',
|
68 |
+
'č' => 'Č',
|
69 |
+
'ď' => 'Ď',
|
70 |
+
'đ' => 'Đ',
|
71 |
+
'ē' => 'Ē',
|
72 |
+
'ĕ' => 'Ĕ',
|
73 |
+
'ė' => 'Ė',
|
74 |
+
'ę' => 'Ę',
|
75 |
+
'ě' => 'Ě',
|
76 |
+
'ĝ' => 'Ĝ',
|
77 |
+
'ğ' => 'Ğ',
|
78 |
+
'ġ' => 'Ġ',
|
79 |
+
'ģ' => 'Ģ',
|
80 |
+
'ĥ' => 'Ĥ',
|
81 |
+
'ħ' => 'Ħ',
|
82 |
+
'ĩ' => 'Ĩ',
|
83 |
+
'ī' => 'Ī',
|
84 |
+
'ĭ' => 'Ĭ',
|
85 |
+
'į' => 'Į',
|
86 |
+
'ı' => 'I',
|
87 |
+
'ij' => 'IJ',
|
88 |
+
'ĵ' => 'Ĵ',
|
89 |
+
'ķ' => 'Ķ',
|
90 |
+
'ĺ' => 'Ĺ',
|
91 |
+
'ļ' => 'Ļ',
|
92 |
+
'ľ' => 'Ľ',
|
93 |
+
'ŀ' => 'Ŀ',
|
94 |
+
'ł' => 'Ł',
|
95 |
+
'ń' => 'Ń',
|
96 |
+
'ņ' => 'Ņ',
|
97 |
+
'ň' => 'Ň',
|
98 |
+
'ŋ' => 'Ŋ',
|
99 |
+
'ō' => 'Ō',
|
100 |
+
'ŏ' => 'Ŏ',
|
101 |
+
'ő' => 'Ő',
|
102 |
+
'œ' => 'Œ',
|
103 |
+
'ŕ' => 'Ŕ',
|
104 |
+
'ŗ' => 'Ŗ',
|
105 |
+
'ř' => 'Ř',
|
106 |
+
'ś' => 'Ś',
|
107 |
+
'ŝ' => 'Ŝ',
|
108 |
+
'ş' => 'Ş',
|
109 |
+
'š' => 'Š',
|
110 |
+
'ţ' => 'Ţ',
|
111 |
+
'ť' => 'Ť',
|
112 |
+
'ŧ' => 'Ŧ',
|
113 |
+
'ũ' => 'Ũ',
|
114 |
+
'ū' => 'Ū',
|
115 |
+
'ŭ' => 'Ŭ',
|
116 |
+
'ů' => 'Ů',
|
117 |
+
'ű' => 'Ű',
|
118 |
+
'ų' => 'Ų',
|
119 |
+
'ŵ' => 'Ŵ',
|
120 |
+
'ŷ' => 'Ŷ',
|
121 |
+
'ź' => 'Ź',
|
122 |
+
'ż' => 'Ż',
|
123 |
+
'ž' => 'Ž',
|
124 |
+
'ſ' => 'S',
|
125 |
+
'ƀ' => 'Ƀ',
|
126 |
+
'ƃ' => 'Ƃ',
|
127 |
+
'ƅ' => 'Ƅ',
|
128 |
+
'ƈ' => 'Ƈ',
|
129 |
+
'ƌ' => 'Ƌ',
|
130 |
+
'ƒ' => 'Ƒ',
|
131 |
+
'ƕ' => 'Ƕ',
|
132 |
+
'ƙ' => 'Ƙ',
|
133 |
+
'ƚ' => 'Ƚ',
|
134 |
+
'ƞ' => 'Ƞ',
|
135 |
+
'ơ' => 'Ơ',
|
136 |
+
'ƣ' => 'Ƣ',
|
137 |
+
'ƥ' => 'Ƥ',
|
138 |
+
'ƨ' => 'Ƨ',
|
139 |
+
'ƭ' => 'Ƭ',
|
140 |
+
'ư' => 'Ư',
|
141 |
+
'ƴ' => 'Ƴ',
|
142 |
+
'ƶ' => 'Ƶ',
|
143 |
+
'ƹ' => 'Ƹ',
|
144 |
+
'ƽ' => 'Ƽ',
|
145 |
+
'ƿ' => 'Ƿ',
|
146 |
+
'Dž' => 'DŽ',
|
147 |
+
'dž' => 'DŽ',
|
148 |
+
'Lj' => 'LJ',
|
149 |
+
'lj' => 'LJ',
|
150 |
+
'Nj' => 'NJ',
|
151 |
+
'nj' => 'NJ',
|
152 |
+
'ǎ' => 'Ǎ',
|
153 |
+
'ǐ' => 'Ǐ',
|
154 |
+
'ǒ' => 'Ǒ',
|
155 |
+
'ǔ' => 'Ǔ',
|
156 |
+
'ǖ' => 'Ǖ',
|
157 |
+
'ǘ' => 'Ǘ',
|
158 |
+
'ǚ' => 'Ǚ',
|
159 |
+
'ǜ' => 'Ǜ',
|
160 |
+
'ǝ' => 'Ǝ',
|
161 |
+
'ǟ' => 'Ǟ',
|
162 |
+
'ǡ' => 'Ǡ',
|
163 |
+
'ǣ' => 'Ǣ',
|
164 |
+
'ǥ' => 'Ǥ',
|
165 |
+
'ǧ' => 'Ǧ',
|
166 |
+
'ǩ' => 'Ǩ',
|
167 |
+
'ǫ' => 'Ǫ',
|
168 |
+
'ǭ' => 'Ǭ',
|
169 |
+
'ǯ' => 'Ǯ',
|
170 |
+
'Dz' => 'DZ',
|
171 |
+
'dz' => 'DZ',
|
172 |
+
'ǵ' => 'Ǵ',
|
173 |
+
'ǹ' => 'Ǹ',
|
174 |
+
'ǻ' => 'Ǻ',
|
175 |
+
'ǽ' => 'Ǽ',
|
176 |
+
'ǿ' => 'Ǿ',
|
177 |
+
'ȁ' => 'Ȁ',
|
178 |
+
'ȃ' => 'Ȃ',
|
179 |
+
'ȅ' => 'Ȅ',
|
180 |
+
'ȇ' => 'Ȇ',
|
181 |
+
'ȉ' => 'Ȉ',
|
182 |
+
'ȋ' => 'Ȋ',
|
183 |
+
'ȍ' => 'Ȍ',
|
184 |
+
'ȏ' => 'Ȏ',
|
185 |
+
'ȑ' => 'Ȑ',
|
186 |
+
'ȓ' => 'Ȓ',
|
187 |
+
'ȕ' => 'Ȕ',
|
188 |
+
'ȗ' => 'Ȗ',
|
189 |
+
'ș' => 'Ș',
|
190 |
+
'ț' => 'Ț',
|
191 |
+
'ȝ' => 'Ȝ',
|
192 |
+
'ȟ' => 'Ȟ',
|
193 |
+
'ȣ' => 'Ȣ',
|
194 |
+
'ȥ' => 'Ȥ',
|
195 |
+
'ȧ' => 'Ȧ',
|
196 |
+
'ȩ' => 'Ȩ',
|
197 |
+
'ȫ' => 'Ȫ',
|
198 |
+
'ȭ' => 'Ȭ',
|
199 |
+
'ȯ' => 'Ȯ',
|
200 |
+
'ȱ' => 'Ȱ',
|
201 |
+
'ȳ' => 'Ȳ',
|
202 |
+
'ȼ' => 'Ȼ',
|
203 |
+
'ȿ' => 'Ȿ',
|
204 |
+
'ɀ' => 'Ɀ',
|
205 |
+
'ɂ' => 'Ɂ',
|
206 |
+
'ɇ' => 'Ɇ',
|
207 |
+
'ɉ' => 'Ɉ',
|
208 |
+
'ɋ' => 'Ɋ',
|
209 |
+
'ɍ' => 'Ɍ',
|
210 |
+
'ɏ' => 'Ɏ',
|
211 |
+
'ɐ' => 'Ɐ',
|
212 |
+
'ɑ' => 'Ɑ',
|
213 |
+
'ɒ' => 'Ɒ',
|
214 |
+
'ɓ' => 'Ɓ',
|
215 |
+
'ɔ' => 'Ɔ',
|
216 |
+
'ɖ' => 'Ɖ',
|
217 |
+
'ɗ' => 'Ɗ',
|
218 |
+
'ə' => 'Ə',
|
219 |
+
'ɛ' => 'Ɛ',
|
220 |
+
'ɜ' => 'Ɜ',
|
221 |
+
'ɠ' => 'Ɠ',
|
222 |
+
'ɡ' => 'Ɡ',
|
223 |
+
'ɣ' => 'Ɣ',
|
224 |
+
'ɥ' => 'Ɥ',
|
225 |
+
'ɦ' => 'Ɦ',
|
226 |
+
'ɨ' => 'Ɨ',
|
227 |
+
'ɩ' => 'Ɩ',
|
228 |
+
'ɪ' => 'Ɪ',
|
229 |
+
'ɫ' => 'Ɫ',
|
230 |
+
'ɬ' => 'Ɬ',
|
231 |
+
'ɯ' => 'Ɯ',
|
232 |
+
'ɱ' => 'Ɱ',
|
233 |
+
'ɲ' => 'Ɲ',
|
234 |
+
'ɵ' => 'Ɵ',
|
235 |
+
'ɽ' => 'Ɽ',
|
236 |
+
'ʀ' => 'Ʀ',
|
237 |
+
'ʂ' => 'Ʂ',
|
238 |
+
'ʃ' => 'Ʃ',
|
239 |
+
'ʇ' => 'Ʇ',
|
240 |
+
'ʈ' => 'Ʈ',
|
241 |
+
'ʉ' => 'Ʉ',
|
242 |
+
'ʊ' => 'Ʊ',
|
243 |
+
'ʋ' => 'Ʋ',
|
244 |
+
'ʌ' => 'Ʌ',
|
245 |
+
'ʒ' => 'Ʒ',
|
246 |
+
'ʝ' => 'Ʝ',
|
247 |
+
'ʞ' => 'Ʞ',
|
248 |
+
'ͅ' => 'Ι',
|
249 |
+
'ͱ' => 'Ͱ',
|
250 |
+
'ͳ' => 'Ͳ',
|
251 |
+
'ͷ' => 'Ͷ',
|
252 |
+
'ͻ' => 'Ͻ',
|
253 |
+
'ͼ' => 'Ͼ',
|
254 |
+
'ͽ' => 'Ͽ',
|
255 |
+
'ά' => 'Ά',
|
256 |
+
'έ' => 'Έ',
|
257 |
+
'ή' => 'Ή',
|
258 |
+
'ί' => 'Ί',
|
259 |
+
'α' => 'Α',
|
260 |
+
'β' => 'Β',
|
261 |
+
'γ' => 'Γ',
|
262 |
+
'δ' => 'Δ',
|
263 |
+
'ε' => 'Ε',
|
264 |
+
'ζ' => 'Ζ',
|
265 |
+
'η' => 'Η',
|
266 |
+
'θ' => 'Θ',
|
267 |
+
'ι' => 'Ι',
|
268 |
+
'κ' => 'Κ',
|
269 |
+
'λ' => 'Λ',
|
270 |
+
'μ' => 'Μ',
|
271 |
+
'ν' => 'Ν',
|
272 |
+
'ξ' => 'Ξ',
|
273 |
+
'ο' => 'Ο',
|
274 |
+
'π' => 'Π',
|
275 |
+
'ρ' => 'Ρ',
|
276 |
+
'ς' => 'Σ',
|
277 |
+
'σ' => 'Σ',
|
278 |
+
'τ' => 'Τ',
|
279 |
+
'υ' => 'Υ',
|
280 |
+
'φ' => 'Φ',
|
281 |
+
'χ' => 'Χ',
|
282 |
+
'ψ' => 'Ψ',
|
283 |
+
'ω' => 'Ω',
|
284 |
+
'ϊ' => 'Ϊ',
|
285 |
+
'ϋ' => 'Ϋ',
|
286 |
+
'ό' => 'Ό',
|
287 |
+
'ύ' => 'Ύ',
|
288 |
+
'ώ' => 'Ώ',
|
289 |
+
'ϐ' => 'Β',
|
290 |
+
'ϑ' => 'Θ',
|
291 |
+
'ϕ' => 'Φ',
|
292 |
+
'ϖ' => 'Π',
|
293 |
+
'ϗ' => 'Ϗ',
|
294 |
+
'ϙ' => 'Ϙ',
|
295 |
+
'ϛ' => 'Ϛ',
|
296 |
+
'ϝ' => 'Ϝ',
|
297 |
+
'ϟ' => 'Ϟ',
|
298 |
+
'ϡ' => 'Ϡ',
|
299 |
+
'ϣ' => 'Ϣ',
|
300 |
+
'ϥ' => 'Ϥ',
|
301 |
+
'ϧ' => 'Ϧ',
|
302 |
+
'ϩ' => 'Ϩ',
|
303 |
+
'ϫ' => 'Ϫ',
|
304 |
+
'ϭ' => 'Ϭ',
|
305 |
+
'ϯ' => 'Ϯ',
|
306 |
+
'ϰ' => 'Κ',
|
307 |
+
'ϱ' => 'Ρ',
|
308 |
+
'ϲ' => 'Ϲ',
|
309 |
+
'ϳ' => 'Ϳ',
|
310 |
+
'ϵ' => 'Ε',
|
311 |
+
'ϸ' => 'Ϸ',
|
312 |
+
'ϻ' => 'Ϻ',
|
313 |
+
'а' => 'А',
|
314 |
+
'б' => 'Б',
|
315 |
+
'в' => 'В',
|
316 |
+
'г' => 'Г',
|
317 |
+
'д' => 'Д',
|
318 |
+
'е' => 'Е',
|
319 |
+
'ж' => 'Ж',
|
320 |
+
'з' => 'З',
|
321 |
+
'и' => 'И',
|
322 |
+
'й' => 'Й',
|
323 |
+
'к' => 'К',
|
324 |
+
'л' => 'Л',
|
325 |
+
'м' => 'М',
|
326 |
+
'н' => 'Н',
|
327 |
+
'о' => 'О',
|
328 |
+
'п' => 'П',
|
329 |
+
'р' => 'Р',
|
330 |
+
'с' => 'С',
|
331 |
+
'т' => 'Т',
|
332 |
+
'у' => 'У',
|
333 |
+
'ф' => 'Ф',
|
334 |
+
'х' => 'Х',
|
335 |
+
'ц' => 'Ц',
|
336 |
+
'ч' => 'Ч',
|
337 |
+
'ш' => 'Ш',
|
338 |
+
'щ' => 'Щ',
|
339 |
+
'ъ' => 'Ъ',
|
340 |
+
'ы' => 'Ы',
|
341 |
+
'ь' => 'Ь',
|
342 |
+
'э' => 'Э',
|
343 |
+
'ю' => 'Ю',
|
344 |
+
'я' => 'Я',
|
345 |
+
'ѐ' => 'Ѐ',
|
346 |
+
'ё' => 'Ё',
|
347 |
+
'ђ' => 'Ђ',
|
348 |
+
'ѓ' => 'Ѓ',
|
349 |
+
'є' => 'Є',
|
350 |
+
'ѕ' => 'Ѕ',
|
351 |
+
'і' => 'І',
|
352 |
+
'ї' => 'Ї',
|
353 |
+
'ј' => 'Ј',
|
354 |
+
'љ' => 'Љ',
|
355 |
+
'њ' => 'Њ',
|
356 |
+
'ћ' => 'Ћ',
|
357 |
+
'ќ' => 'Ќ',
|
358 |
+
'ѝ' => 'Ѝ',
|
359 |
+
'ў' => 'Ў',
|
360 |
+
'џ' => 'Џ',
|
361 |
+
'ѡ' => 'Ѡ',
|
362 |
+
'ѣ' => 'Ѣ',
|
363 |
+
'ѥ' => 'Ѥ',
|
364 |
+
'ѧ' => 'Ѧ',
|
365 |
+
'ѩ' => 'Ѩ',
|
366 |
+
'ѫ' => 'Ѫ',
|
367 |
+
'ѭ' => 'Ѭ',
|
368 |
+
'ѯ' => 'Ѯ',
|
369 |
+
'ѱ' => 'Ѱ',
|
370 |
+
'ѳ' => 'Ѳ',
|
371 |
+
'ѵ' => 'Ѵ',
|
372 |
+
'ѷ' => 'Ѷ',
|
373 |
+
'ѹ' => 'Ѹ',
|
374 |
+
'ѻ' => 'Ѻ',
|
375 |
+
'ѽ' => 'Ѽ',
|
376 |
+
'ѿ' => 'Ѿ',
|
377 |
+
'ҁ' => 'Ҁ',
|
378 |
+
'ҋ' => 'Ҋ',
|
379 |
+
'ҍ' => 'Ҍ',
|
380 |
+
'ҏ' => 'Ҏ',
|
381 |
+
'ґ' => 'Ґ',
|
382 |
+
'ғ' => 'Ғ',
|
383 |
+
'ҕ' => 'Ҕ',
|
384 |
+
'җ' => 'Җ',
|
385 |
+
'ҙ' => 'Ҙ',
|
386 |
+
'қ' => 'Қ',
|
387 |
+
'ҝ' => 'Ҝ',
|
388 |
+
'ҟ' => 'Ҟ',
|
389 |
+
'ҡ' => 'Ҡ',
|
390 |
+
'ң' => 'Ң',
|
391 |
+
'ҥ' => 'Ҥ',
|
392 |
+
'ҧ' => 'Ҧ',
|
393 |
+
'ҩ' => 'Ҩ',
|
394 |
+
'ҫ' => 'Ҫ',
|
395 |
+
'ҭ' => 'Ҭ',
|
396 |
+
'ү' => 'Ү',
|
397 |
+
'ұ' => 'Ұ',
|
398 |
+
'ҳ' => 'Ҳ',
|
399 |
+
'ҵ' => 'Ҵ',
|
400 |
+
'ҷ' => 'Ҷ',
|
401 |
+
'ҹ' => 'Ҹ',
|
402 |
+
'һ' => 'Һ',
|
403 |
+
'ҽ' => 'Ҽ',
|
404 |
+
'ҿ' => 'Ҿ',
|
405 |
+
'ӂ' => 'Ӂ',
|
406 |
+
'ӄ' => 'Ӄ',
|
407 |
+
'ӆ' => 'Ӆ',
|
408 |
+
'ӈ' => 'Ӈ',
|
409 |
+
'ӊ' => 'Ӊ',
|
410 |
+
'ӌ' => 'Ӌ',
|
411 |
+
'ӎ' => 'Ӎ',
|
412 |
+
'ӏ' => 'Ӏ',
|
413 |
+
'ӑ' => 'Ӑ',
|
414 |
+
'ӓ' => 'Ӓ',
|
415 |
+
'ӕ' => 'Ӕ',
|
416 |
+
'ӗ' => 'Ӗ',
|
417 |
+
'ә' => 'Ә',
|
418 |
+
'ӛ' => 'Ӛ',
|
419 |
+
'ӝ' => 'Ӝ',
|
420 |
+
'ӟ' => 'Ӟ',
|
421 |
+
'ӡ' => 'Ӡ',
|
422 |
+
'ӣ' => 'Ӣ',
|
423 |
+
'ӥ' => 'Ӥ',
|
424 |
+
'ӧ' => 'Ӧ',
|
425 |
+
'ө' => 'Ө',
|
426 |
+
'ӫ' => 'Ӫ',
|
427 |
+
'ӭ' => 'Ӭ',
|
428 |
+
'ӯ' => 'Ӯ',
|
429 |
+
'ӱ' => 'Ӱ',
|
430 |
+
'ӳ' => 'Ӳ',
|
431 |
+
'ӵ' => 'Ӵ',
|
432 |
+
'ӷ' => 'Ӷ',
|
433 |
+
'ӹ' => 'Ӹ',
|
434 |
+
'ӻ' => 'Ӻ',
|
435 |
+
'ӽ' => 'Ӽ',
|
436 |
+
'ӿ' => 'Ӿ',
|
437 |
+
'ԁ' => 'Ԁ',
|
438 |
+
'ԃ' => 'Ԃ',
|
439 |
+
'ԅ' => 'Ԅ',
|
440 |
+
'ԇ' => 'Ԇ',
|
441 |
+
'ԉ' => 'Ԉ',
|
442 |
+
'ԋ' => 'Ԋ',
|
443 |
+
'ԍ' => 'Ԍ',
|
444 |
+
'ԏ' => 'Ԏ',
|
445 |
+
'ԑ' => 'Ԑ',
|
446 |
+
'ԓ' => 'Ԓ',
|
447 |
+
'ԕ' => 'Ԕ',
|
448 |
+
'ԗ' => 'Ԗ',
|
449 |
+
'ԙ' => 'Ԙ',
|
450 |
+
'ԛ' => 'Ԛ',
|
451 |
+
'ԝ' => 'Ԝ',
|
452 |
+
'ԟ' => 'Ԟ',
|
453 |
+
'ԡ' => 'Ԡ',
|
454 |
+
'ԣ' => 'Ԣ',
|
455 |
+
'ԥ' => 'Ԥ',
|
456 |
+
'ԧ' => 'Ԧ',
|
457 |
+
'ԩ' => 'Ԩ',
|
458 |
+
'ԫ' => 'Ԫ',
|
459 |
+
'ԭ' => 'Ԭ',
|
460 |
+
'ԯ' => 'Ԯ',
|
461 |
+
'ա' => 'Ա',
|
462 |
+
'բ' => 'Բ',
|
463 |
+
'գ' => 'Գ',
|
464 |
+
'դ' => 'Դ',
|
465 |
+
'ե' => 'Ե',
|
466 |
+
'զ' => 'Զ',
|
467 |
+
'է' => 'Է',
|
468 |
+
'ը' => 'Ը',
|
469 |
+
'թ' => 'Թ',
|
470 |
+
'ժ' => 'Ժ',
|
471 |
+
'ի' => 'Ի',
|
472 |
+
'լ' => 'Լ',
|
473 |
+
'խ' => 'Խ',
|
474 |
+
'ծ' => 'Ծ',
|
475 |
+
'կ' => 'Կ',
|
476 |
+
'հ' => 'Հ',
|
477 |
+
'ձ' => 'Ձ',
|
478 |
+
'ղ' => 'Ղ',
|
479 |
+
'ճ' => 'Ճ',
|
480 |
+
'մ' => 'Մ',
|
481 |
+
'յ' => 'Յ',
|
482 |
+
'ն' => 'Ն',
|
483 |
+
'շ' => 'Շ',
|
484 |
+
'ո' => 'Ո',
|
485 |
+
'չ' => 'Չ',
|
486 |
+
'պ' => 'Պ',
|
487 |
+
'ջ' => 'Ջ',
|
488 |
+
'ռ' => 'Ռ',
|
489 |
+
'ս' => 'Ս',
|
490 |
+
'վ' => 'Վ',
|
491 |
+
'տ' => 'Տ',
|
492 |
+
'ր' => 'Ր',
|
493 |
+
'ց' => 'Ց',
|
494 |
+
'ւ' => 'Ւ',
|
495 |
+
'փ' => 'Փ',
|
496 |
+
'ք' => 'Ք',
|
497 |
+
'օ' => 'Օ',
|
498 |
+
'ֆ' => 'Ֆ',
|
499 |
+
'ა' => 'Ა',
|
500 |
+
'ბ' => 'Ბ',
|
501 |
+
'გ' => 'Გ',
|
502 |
+
'დ' => 'Დ',
|
503 |
+
'ე' => 'Ე',
|
504 |
+
'ვ' => 'Ვ',
|
505 |
+
'ზ' => 'Ზ',
|
506 |
+
'თ' => 'Თ',
|
507 |
+
'ი' => 'Ი',
|
508 |
+
'კ' => 'Კ',
|
509 |
+
'ლ' => 'Ლ',
|
510 |
+
'მ' => 'Მ',
|
511 |
+
'ნ' => 'Ნ',
|
512 |
+
'ო' => 'Ო',
|
513 |
+
'პ' => 'Პ',
|
514 |
+
'ჟ' => 'Ჟ',
|
515 |
+
'რ' => 'Რ',
|
516 |
+
'ს' => 'Ს',
|
517 |
+
'ტ' => 'Ტ',
|
518 |
+
'უ' => 'Უ',
|
519 |
+
'ფ' => 'Ფ',
|
520 |
+
'ქ' => 'Ქ',
|
521 |
+
'ღ' => 'Ღ',
|
522 |
+
'ყ' => 'Ყ',
|
523 |
+
'შ' => 'Შ',
|
524 |
+
'ჩ' => 'Ჩ',
|
525 |
+
'ც' => 'Ც',
|
526 |
+
'ძ' => 'Ძ',
|
527 |
+
'წ' => 'Წ',
|
528 |
+
'ჭ' => 'Ჭ',
|
529 |
+
'ხ' => 'Ხ',
|
530 |
+
'ჯ' => 'Ჯ',
|
531 |
+
'ჰ' => 'Ჰ',
|
532 |
+
'ჱ' => 'Ჱ',
|
533 |
+
'ჲ' => 'Ჲ',
|
534 |
+
'ჳ' => 'Ჳ',
|
535 |
+
'ჴ' => 'Ჴ',
|
536 |
+
'ჵ' => 'Ჵ',
|
537 |
+
'ჶ' => 'Ჶ',
|
538 |
+
'ჷ' => 'Ჷ',
|
539 |
+
'ჸ' => 'Ჸ',
|
540 |
+
'ჹ' => 'Ჹ',
|
541 |
+
'ჺ' => 'Ჺ',
|
542 |
+
'ჽ' => 'Ჽ',
|
543 |
+
'ჾ' => 'Ჾ',
|
544 |
+
'ჿ' => 'Ჿ',
|
545 |
+
'ᏸ' => 'Ᏸ',
|
546 |
+
'ᏹ' => 'Ᏹ',
|
547 |
+
'ᏺ' => 'Ᏺ',
|
548 |
+
'ᏻ' => 'Ᏻ',
|
549 |
+
'ᏼ' => 'Ᏼ',
|
550 |
+
'ᏽ' => 'Ᏽ',
|
551 |
+
'ᲀ' => 'В',
|
552 |
+
'ᲁ' => 'Д',
|
553 |
+
'ᲂ' => 'О',
|
554 |
+
'ᲃ' => 'С',
|
555 |
+
'ᲄ' => 'Т',
|
556 |
+
'ᲅ' => 'Т',
|
557 |
+
'ᲆ' => 'Ъ',
|
558 |
+
'ᲇ' => 'Ѣ',
|
559 |
+
'ᲈ' => 'Ꙋ',
|
560 |
+
'ᵹ' => 'Ᵹ',
|
561 |
+
'ᵽ' => 'Ᵽ',
|
562 |
+
'ᶎ' => 'Ᶎ',
|
563 |
+
'ḁ' => 'Ḁ',
|
564 |
+
'ḃ' => 'Ḃ',
|
565 |
+
'ḅ' => 'Ḅ',
|
566 |
+
'ḇ' => 'Ḇ',
|
567 |
+
'ḉ' => 'Ḉ',
|
568 |
+
'ḋ' => 'Ḋ',
|
569 |
+
'ḍ' => 'Ḍ',
|
570 |
+
'ḏ' => 'Ḏ',
|
571 |
+
'ḑ' => 'Ḑ',
|
572 |
+
'ḓ' => 'Ḓ',
|
573 |
+
'ḕ' => 'Ḕ',
|
574 |
+
'ḗ' => 'Ḗ',
|
575 |
+
'ḙ' => 'Ḙ',
|
576 |
+
'ḛ' => 'Ḛ',
|
577 |
+
'ḝ' => 'Ḝ',
|
578 |
+
'ḟ' => 'Ḟ',
|
579 |
+
'ḡ' => 'Ḡ',
|
580 |
+
'ḣ' => 'Ḣ',
|
581 |
+
'ḥ' => 'Ḥ',
|
582 |
+
'ḧ' => 'Ḧ',
|
583 |
+
'ḩ' => 'Ḩ',
|
584 |
+
'ḫ' => 'Ḫ',
|
585 |
+
'ḭ' => 'Ḭ',
|
586 |
+
'ḯ' => 'Ḯ',
|
587 |
+
'ḱ' => 'Ḱ',
|
588 |
+
'ḳ' => 'Ḳ',
|
589 |
+
'ḵ' => 'Ḵ',
|
590 |
+
'ḷ' => 'Ḷ',
|
591 |
+
'ḹ' => 'Ḹ',
|
592 |
+
'ḻ' => 'Ḻ',
|
593 |
+
'ḽ' => 'Ḽ',
|
594 |
+
'ḿ' => 'Ḿ',
|
595 |
+
'ṁ' => 'Ṁ',
|
596 |
+
'ṃ' => 'Ṃ',
|
597 |
+
'ṅ' => 'Ṅ',
|
598 |
+
'ṇ' => 'Ṇ',
|
599 |
+
'ṉ' => 'Ṉ',
|
600 |
+
'ṋ' => 'Ṋ',
|
601 |
+
'ṍ' => 'Ṍ',
|
602 |
+
'ṏ' => 'Ṏ',
|
603 |
+
'ṑ' => 'Ṑ',
|
604 |
+
'ṓ' => 'Ṓ',
|
605 |
+
'ṕ' => 'Ṕ',
|
606 |
+
'ṗ' => 'Ṗ',
|
607 |
+
'ṙ' => 'Ṙ',
|
608 |
+
'ṛ' => 'Ṛ',
|
609 |
+
'ṝ' => 'Ṝ',
|
610 |
+
'ṟ' => 'Ṟ',
|
611 |
+
'ṡ' => 'Ṡ',
|
612 |
+
'ṣ' => 'Ṣ',
|
613 |
+
'ṥ' => 'Ṥ',
|
614 |
+
'ṧ' => 'Ṧ',
|
615 |
+
'ṩ' => 'Ṩ',
|
616 |
+
'ṫ' => 'Ṫ',
|
617 |
+
'ṭ' => 'Ṭ',
|
618 |
+
'ṯ' => 'Ṯ',
|
619 |
+
'ṱ' => 'Ṱ',
|
620 |
+
'ṳ' => 'Ṳ',
|
621 |
+
'ṵ' => 'Ṵ',
|
622 |
+
'ṷ' => 'Ṷ',
|
623 |
+
'ṹ' => 'Ṹ',
|
624 |
+
'ṻ' => 'Ṻ',
|
625 |
+
'ṽ' => 'Ṽ',
|
626 |
+
'ṿ' => 'Ṿ',
|
627 |
+
'ẁ' => 'Ẁ',
|
628 |
+
'ẃ' => 'Ẃ',
|
629 |
+
'ẅ' => 'Ẅ',
|
630 |
+
'ẇ' => 'Ẇ',
|
631 |
+
'ẉ' => 'Ẉ',
|
632 |
+
'ẋ' => 'Ẋ',
|
633 |
+
'ẍ' => 'Ẍ',
|
634 |
+
'ẏ' => 'Ẏ',
|
635 |
+
'ẑ' => 'Ẑ',
|
636 |
+
'ẓ' => 'Ẓ',
|
637 |
+
'ẕ' => 'Ẕ',
|
638 |
+
'ẛ' => 'Ṡ',
|
639 |
+
'ạ' => 'Ạ',
|
640 |
+
'ả' => 'Ả',
|
641 |
+
'ấ' => 'Ấ',
|
642 |
+
'ầ' => 'Ầ',
|
643 |
+
'ẩ' => 'Ẩ',
|
644 |
+
'ẫ' => 'Ẫ',
|
645 |
+
'ậ' => 'Ậ',
|
646 |
+
'ắ' => 'Ắ',
|
647 |
+
'ằ' => 'Ằ',
|
648 |
+
'ẳ' => 'Ẳ',
|
649 |
+
'ẵ' => 'Ẵ',
|
650 |
+
'ặ' => 'Ặ',
|
651 |
+
'ẹ' => 'Ẹ',
|
652 |
+
'ẻ' => 'Ẻ',
|
653 |
+
'ẽ' => 'Ẽ',
|
654 |
+
'ế' => 'Ế',
|
655 |
+
'ề' => 'Ề',
|
656 |
+
'ể' => 'Ể',
|
657 |
+
'ễ' => 'Ễ',
|
658 |
+
'ệ' => 'Ệ',
|
659 |
+
'ỉ' => 'Ỉ',
|
660 |
+
'ị' => 'Ị',
|
661 |
+
'ọ' => 'Ọ',
|
662 |
+
'ỏ' => 'Ỏ',
|
663 |
+
'ố' => 'Ố',
|
664 |
+
'ồ' => 'Ồ',
|
665 |
+
'ổ' => 'Ổ',
|
666 |
+
'ỗ' => 'Ỗ',
|
667 |
+
'ộ' => 'Ộ',
|
668 |
+
'ớ' => 'Ớ',
|
669 |
+
'ờ' => 'Ờ',
|
670 |
+
'ở' => 'Ở',
|
671 |
+
'ỡ' => 'Ỡ',
|
672 |
+
'ợ' => 'Ợ',
|
673 |
+
'ụ' => 'Ụ',
|
674 |
+
'ủ' => 'Ủ',
|
675 |
+
'ứ' => 'Ứ',
|
676 |
+
'ừ' => 'Ừ',
|
677 |
+
'ử' => 'Ử',
|
678 |
+
'ữ' => 'Ữ',
|
679 |
+
'ự' => 'Ự',
|
680 |
+
'ỳ' => 'Ỳ',
|
681 |
+
'ỵ' => 'Ỵ',
|
682 |
+
'ỷ' => 'Ỷ',
|
683 |
+
'ỹ' => 'Ỹ',
|
684 |
+
'ỻ' => 'Ỻ',
|
685 |
+
'ỽ' => 'Ỽ',
|
686 |
+
'ỿ' => 'Ỿ',
|
687 |
+
'ἀ' => 'Ἀ',
|
688 |
+
'ἁ' => 'Ἁ',
|
689 |
+
'ἂ' => 'Ἂ',
|
690 |
+
'ἃ' => 'Ἃ',
|
691 |
+
'ἄ' => 'Ἄ',
|
692 |
+
'ἅ' => 'Ἅ',
|
693 |
+
'ἆ' => 'Ἆ',
|
694 |
+
'ἇ' => 'Ἇ',
|
695 |
+
'ἐ' => 'Ἐ',
|
696 |
+
'ἑ' => 'Ἑ',
|
697 |
+
'ἒ' => 'Ἒ',
|
698 |
+
'ἓ' => 'Ἓ',
|
699 |
+
'ἔ' => 'Ἔ',
|
700 |
+
'ἕ' => 'Ἕ',
|
701 |
+
'ἠ' => 'Ἠ',
|
702 |
+
'ἡ' => 'Ἡ',
|
703 |
+
'ἢ' => 'Ἢ',
|
704 |
+
'ἣ' => 'Ἣ',
|
705 |
+
'ἤ' => 'Ἤ',
|
706 |
+
'ἥ' => 'Ἥ',
|
707 |
+
'ἦ' => 'Ἦ',
|
708 |
+
'ἧ' => 'Ἧ',
|
709 |
+
'ἰ' => 'Ἰ',
|
710 |
+
'ἱ' => 'Ἱ',
|
711 |
+
'ἲ' => 'Ἲ',
|
712 |
+
'ἳ' => 'Ἳ',
|
713 |
+
'ἴ' => 'Ἴ',
|
714 |
+
'ἵ' => 'Ἵ',
|
715 |
+
'ἶ' => 'Ἶ',
|
716 |
+
'ἷ' => 'Ἷ',
|
717 |
+
'ὀ' => 'Ὀ',
|
718 |
+
'ὁ' => 'Ὁ',
|
719 |
+
'ὂ' => 'Ὂ',
|
720 |
+
'ὃ' => 'Ὃ',
|
721 |
+
'ὄ' => 'Ὄ',
|
722 |
+
'ὅ' => 'Ὅ',
|
723 |
+
'ὑ' => 'Ὑ',
|
724 |
+
'ὓ' => 'Ὓ',
|
725 |
+
'ὕ' => 'Ὕ',
|
726 |
+
'ὗ' => 'Ὗ',
|
727 |
+
'ὠ' => 'Ὠ',
|
728 |
+
'ὡ' => 'Ὡ',
|
729 |
+
'ὢ' => 'Ὢ',
|
730 |
+
'ὣ' => 'Ὣ',
|
731 |
+
'ὤ' => 'Ὤ',
|
732 |
+
'ὥ' => 'Ὥ',
|
733 |
+
'ὦ' => 'Ὦ',
|
734 |
+
'ὧ' => 'Ὧ',
|
735 |
+
'ὰ' => 'Ὰ',
|
736 |
+
'ά' => 'Ά',
|
737 |
+
'ὲ' => 'Ὲ',
|
738 |
+
'έ' => 'Έ',
|
739 |
+
'ὴ' => 'Ὴ',
|
740 |
+
'ή' => 'Ή',
|
741 |
+
'ὶ' => 'Ὶ',
|
742 |
+
'ί' => 'Ί',
|
743 |
+
'ὸ' => 'Ὸ',
|
744 |
+
'ό' => 'Ό',
|
745 |
+
'ὺ' => 'Ὺ',
|
746 |
+
'ύ' => 'Ύ',
|
747 |
+
'ὼ' => 'Ὼ',
|
748 |
+
'ώ' => 'Ώ',
|
749 |
+
'ᾀ' => 'ᾈ',
|
750 |
+
'ᾁ' => 'ᾉ',
|
751 |
+
'ᾂ' => 'ᾊ',
|
752 |
+
'ᾃ' => 'ᾋ',
|
753 |
+
'ᾄ' => 'ᾌ',
|
754 |
+
'ᾅ' => 'ᾍ',
|
755 |
+
'ᾆ' => 'ᾎ',
|
756 |
+
'ᾇ' => 'ᾏ',
|
757 |
+
'ᾐ' => 'ᾘ',
|
758 |
+
'ᾑ' => 'ᾙ',
|
759 |
+
'ᾒ' => 'ᾚ',
|
760 |
+
'ᾓ' => 'ᾛ',
|
761 |
+
'ᾔ' => 'ᾜ',
|
762 |
+
'ᾕ' => 'ᾝ',
|
763 |
+
'ᾖ' => 'ᾞ',
|
764 |
+
'ᾗ' => 'ᾟ',
|
765 |
+
'ᾠ' => 'ᾨ',
|
766 |
+
'ᾡ' => 'ᾩ',
|
767 |
+
'ᾢ' => 'ᾪ',
|
768 |
+
'ᾣ' => 'ᾫ',
|
769 |
+
'ᾤ' => 'ᾬ',
|
770 |
+
'ᾥ' => 'ᾭ',
|
771 |
+
'ᾦ' => 'ᾮ',
|
772 |
+
'ᾧ' => 'ᾯ',
|
773 |
+
'ᾰ' => 'Ᾰ',
|
774 |
+
'ᾱ' => 'Ᾱ',
|
775 |
+
'ᾳ' => 'ᾼ',
|
776 |
+
'ι' => 'Ι',
|
777 |
+
'ῃ' => 'ῌ',
|
778 |
+
'ῐ' => 'Ῐ',
|
779 |
+
'ῑ' => 'Ῑ',
|
780 |
+
'ῠ' => 'Ῠ',
|
781 |
+
'ῡ' => 'Ῡ',
|
782 |
+
'ῥ' => 'Ῥ',
|
783 |
+
'ῳ' => 'ῼ',
|
784 |
+
'ⅎ' => 'Ⅎ',
|
785 |
+
'ⅰ' => 'Ⅰ',
|
786 |
+
'ⅱ' => 'Ⅱ',
|
787 |
+
'ⅲ' => 'Ⅲ',
|
788 |
+
'ⅳ' => 'Ⅳ',
|
789 |
+
'ⅴ' => 'Ⅴ',
|
790 |
+
'ⅵ' => 'Ⅵ',
|
791 |
+
'ⅶ' => 'Ⅶ',
|
792 |
+
'ⅷ' => 'Ⅷ',
|
793 |
+
'ⅸ' => 'Ⅸ',
|
794 |
+
'ⅹ' => 'Ⅹ',
|
795 |
+
'ⅺ' => 'Ⅺ',
|
796 |
+
'ⅻ' => 'Ⅻ',
|
797 |
+
'ⅼ' => 'Ⅼ',
|
798 |
+
'ⅽ' => 'Ⅽ',
|
799 |
+
'ⅾ' => 'Ⅾ',
|
800 |
+
'ⅿ' => 'Ⅿ',
|
801 |
+
'ↄ' => 'Ↄ',
|
802 |
+
'ⓐ' => 'Ⓐ',
|
803 |
+
'ⓑ' => 'Ⓑ',
|
804 |
+
'ⓒ' => 'Ⓒ',
|
805 |
+
'ⓓ' => 'Ⓓ',
|
806 |
+
'ⓔ' => 'Ⓔ',
|
807 |
+
'ⓕ' => 'Ⓕ',
|
808 |
+
'ⓖ' => 'Ⓖ',
|
809 |
+
'ⓗ' => 'Ⓗ',
|
810 |
+
'ⓘ' => 'Ⓘ',
|
811 |
+
'ⓙ' => 'Ⓙ',
|
812 |
+
'ⓚ' => 'Ⓚ',
|
813 |
+
'ⓛ' => 'Ⓛ',
|
814 |
+
'ⓜ' => 'Ⓜ',
|
815 |
+
'ⓝ' => 'Ⓝ',
|
816 |
+
'ⓞ' => 'Ⓞ',
|
817 |
+
'ⓟ' => 'Ⓟ',
|
818 |
+
'ⓠ' => 'Ⓠ',
|
819 |
+
'ⓡ' => 'Ⓡ',
|
820 |
+
'ⓢ' => 'Ⓢ',
|
821 |
+
'ⓣ' => 'Ⓣ',
|
822 |
+
'ⓤ' => 'Ⓤ',
|
823 |
+
'ⓥ' => 'Ⓥ',
|
824 |
+
'ⓦ' => 'Ⓦ',
|
825 |
+
'ⓧ' => 'Ⓧ',
|
826 |
+
'ⓨ' => 'Ⓨ',
|
827 |
+
'ⓩ' => 'Ⓩ',
|
828 |
+
'ⰰ' => 'Ⰰ',
|
829 |
+
'ⰱ' => 'Ⰱ',
|
830 |
+
'ⰲ' => 'Ⰲ',
|
831 |
+
'ⰳ' => 'Ⰳ',
|
832 |
+
'ⰴ' => 'Ⰴ',
|
833 |
+
'ⰵ' => 'Ⰵ',
|
834 |
+
'ⰶ' => 'Ⰶ',
|
835 |
+
'ⰷ' => 'Ⰷ',
|
836 |
+
'ⰸ' => 'Ⰸ',
|
837 |
+
'ⰹ' => 'Ⰹ',
|
838 |
+
'ⰺ' => 'Ⰺ',
|
839 |
+
'ⰻ' => 'Ⰻ',
|
840 |
+
'ⰼ' => 'Ⰼ',
|
841 |
+
'ⰽ' => 'Ⰽ',
|
842 |
+
'ⰾ' => 'Ⰾ',
|
843 |
+
'ⰿ' => 'Ⰿ',
|
844 |
+
'ⱀ' => 'Ⱀ',
|
845 |
+
'ⱁ' => 'Ⱁ',
|
846 |
+
'ⱂ' => 'Ⱂ',
|
847 |
+
'ⱃ' => 'Ⱃ',
|
848 |
+
'ⱄ' => 'Ⱄ',
|
849 |
+
'ⱅ' => 'Ⱅ',
|
850 |
+
'ⱆ' => 'Ⱆ',
|
851 |
+
'ⱇ' => 'Ⱇ',
|
852 |
+
'ⱈ' => 'Ⱈ',
|
853 |
+
'ⱉ' => 'Ⱉ',
|
854 |
+
'ⱊ' => 'Ⱊ',
|
855 |
+
'ⱋ' => 'Ⱋ',
|
856 |
+
'ⱌ' => 'Ⱌ',
|
857 |
+
'ⱍ' => 'Ⱍ',
|
858 |
+
'ⱎ' => 'Ⱎ',
|
859 |
+
'ⱏ' => 'Ⱏ',
|
860 |
+
'ⱐ' => 'Ⱐ',
|
861 |
+
'ⱑ' => 'Ⱑ',
|
862 |
+
'ⱒ' => 'Ⱒ',
|
863 |
+
'ⱓ' => 'Ⱓ',
|
864 |
+
'ⱔ' => 'Ⱔ',
|
865 |
+
'ⱕ' => 'Ⱕ',
|
866 |
+
'ⱖ' => 'Ⱖ',
|
867 |
+
'ⱗ' => 'Ⱗ',
|
868 |
+
'ⱘ' => 'Ⱘ',
|
869 |
+
'ⱙ' => 'Ⱙ',
|
870 |
+
'ⱚ' => 'Ⱚ',
|
871 |
+
'ⱛ' => 'Ⱛ',
|
872 |
+
'ⱜ' => 'Ⱜ',
|
873 |
+
'ⱝ' => 'Ⱝ',
|
874 |
+
'ⱞ' => 'Ⱞ',
|
875 |
+
'ⱡ' => 'Ⱡ',
|
876 |
+
'ⱥ' => 'Ⱥ',
|
877 |
+
'ⱦ' => 'Ⱦ',
|
878 |
+
'ⱨ' => 'Ⱨ',
|
879 |
+
'ⱪ' => 'Ⱪ',
|
880 |
+
'ⱬ' => 'Ⱬ',
|
881 |
+
'ⱳ' => 'Ⱳ',
|
882 |
+
'ⱶ' => 'Ⱶ',
|
883 |
+
'ⲁ' => 'Ⲁ',
|
884 |
+
'ⲃ' => 'Ⲃ',
|
885 |
+
'ⲅ' => 'Ⲅ',
|
886 |
+
'ⲇ' => 'Ⲇ',
|
887 |
+
'ⲉ' => 'Ⲉ',
|
888 |
+
'ⲋ' => 'Ⲋ',
|
889 |
+
'ⲍ' => 'Ⲍ',
|
890 |
+
'ⲏ' => 'Ⲏ',
|
891 |
+
'ⲑ' => 'Ⲑ',
|
892 |
+
'ⲓ' => 'Ⲓ',
|
893 |
+
'ⲕ' => 'Ⲕ',
|
894 |
+
'ⲗ' => 'Ⲗ',
|
895 |
+
'ⲙ' => 'Ⲙ',
|
896 |
+
'ⲛ' => 'Ⲛ',
|
897 |
+
'ⲝ' => 'Ⲝ',
|
898 |
+
'ⲟ' => 'Ⲟ',
|
899 |
+
'ⲡ' => 'Ⲡ',
|
900 |
+
'ⲣ' => 'Ⲣ',
|
901 |
+
'ⲥ' => 'Ⲥ',
|
902 |
+
'ⲧ' => 'Ⲧ',
|
903 |
+
'ⲩ' => 'Ⲩ',
|
904 |
+
'ⲫ' => 'Ⲫ',
|
905 |
+
'ⲭ' => 'Ⲭ',
|
906 |
+
'ⲯ' => 'Ⲯ',
|
907 |
+
'ⲱ' => 'Ⲱ',
|
908 |
+
'ⲳ' => 'Ⲳ',
|
909 |
+
'ⲵ' => 'Ⲵ',
|
910 |
+
'ⲷ' => 'Ⲷ',
|
911 |
+
'ⲹ' => 'Ⲹ',
|
912 |
+
'ⲻ' => 'Ⲻ',
|
913 |
+
'ⲽ' => 'Ⲽ',
|
914 |
+
'ⲿ' => 'Ⲿ',
|
915 |
+
'ⳁ' => 'Ⳁ',
|
916 |
+
'ⳃ' => 'Ⳃ',
|
917 |
+
'ⳅ' => 'Ⳅ',
|
918 |
+
'ⳇ' => 'Ⳇ',
|
919 |
+
'ⳉ' => 'Ⳉ',
|
920 |
+
'ⳋ' => 'Ⳋ',
|
921 |
+
'ⳍ' => 'Ⳍ',
|
922 |
+
'ⳏ' => 'Ⳏ',
|
923 |
+
'ⳑ' => 'Ⳑ',
|
924 |
+
'ⳓ' => 'Ⳓ',
|
925 |
+
'ⳕ' => 'Ⳕ',
|
926 |
+
'ⳗ' => 'Ⳗ',
|
927 |
+
'ⳙ' => 'Ⳙ',
|
928 |
+
'ⳛ' => 'Ⳛ',
|
929 |
+
'ⳝ' => 'Ⳝ',
|
930 |
+
'ⳟ' => 'Ⳟ',
|
931 |
+
'ⳡ' => 'Ⳡ',
|
932 |
+
'ⳣ' => 'Ⳣ',
|
933 |
+
'ⳬ' => 'Ⳬ',
|
934 |
+
'ⳮ' => 'Ⳮ',
|
935 |
+
'ⳳ' => 'Ⳳ',
|
936 |
+
'ⴀ' => 'Ⴀ',
|
937 |
+
'ⴁ' => 'Ⴁ',
|
938 |
+
'ⴂ' => 'Ⴂ',
|
939 |
+
'ⴃ' => 'Ⴃ',
|
940 |
+
'ⴄ' => 'Ⴄ',
|
941 |
+
'ⴅ' => 'Ⴅ',
|
942 |
+
'ⴆ' => 'Ⴆ',
|
943 |
+
'ⴇ' => 'Ⴇ',
|
944 |
+
'ⴈ' => 'Ⴈ',
|
945 |
+
'ⴉ' => 'Ⴉ',
|
946 |
+
'ⴊ' => 'Ⴊ',
|
947 |
+
'ⴋ' => 'Ⴋ',
|
948 |
+
'ⴌ' => 'Ⴌ',
|
949 |
+
'ⴍ' => 'Ⴍ',
|
950 |
+
'ⴎ' => 'Ⴎ',
|
951 |
+
'ⴏ' => 'Ⴏ',
|
952 |
+
'ⴐ' => 'Ⴐ',
|
953 |
+
'ⴑ' => 'Ⴑ',
|
954 |
+
'ⴒ' => 'Ⴒ',
|
955 |
+
'ⴓ' => 'Ⴓ',
|
956 |
+
'ⴔ' => 'Ⴔ',
|
957 |
+
'ⴕ' => 'Ⴕ',
|
958 |
+
'ⴖ' => 'Ⴖ',
|
959 |
+
'ⴗ' => 'Ⴗ',
|
960 |
+
'ⴘ' => 'Ⴘ',
|
961 |
+
'ⴙ' => 'Ⴙ',
|
962 |
+
'ⴚ' => 'Ⴚ',
|
963 |
+
'ⴛ' => 'Ⴛ',
|
964 |
+
'ⴜ' => 'Ⴜ',
|
965 |
+
'ⴝ' => 'Ⴝ',
|
966 |
+
'ⴞ' => 'Ⴞ',
|
967 |
+
'ⴟ' => 'Ⴟ',
|
968 |
+
'ⴠ' => 'Ⴠ',
|
969 |
+
'ⴡ' => 'Ⴡ',
|
970 |
+
'ⴢ' => 'Ⴢ',
|
971 |
+
'ⴣ' => 'Ⴣ',
|
972 |
+
'ⴤ' => 'Ⴤ',
|
973 |
+
'ⴥ' => 'Ⴥ',
|
974 |
+
'ⴧ' => 'Ⴧ',
|
975 |
+
'ⴭ' => 'Ⴭ',
|
976 |
+
'ꙁ' => 'Ꙁ',
|
977 |
+
'ꙃ' => 'Ꙃ',
|
978 |
+
'ꙅ' => 'Ꙅ',
|
979 |
+
'ꙇ' => 'Ꙇ',
|
980 |
+
'ꙉ' => 'Ꙉ',
|
981 |
+
'ꙋ' => 'Ꙋ',
|
982 |
+
'ꙍ' => 'Ꙍ',
|
983 |
+
'ꙏ' => 'Ꙏ',
|
984 |
+
'ꙑ' => 'Ꙑ',
|
985 |
+
'ꙓ' => 'Ꙓ',
|
986 |
+
'ꙕ' => 'Ꙕ',
|
987 |
+
'ꙗ' => 'Ꙗ',
|
988 |
+
'ꙙ' => 'Ꙙ',
|
989 |
+
'ꙛ' => 'Ꙛ',
|
990 |
+
'ꙝ' => 'Ꙝ',
|
991 |
+
'ꙟ' => 'Ꙟ',
|
992 |
+
'ꙡ' => 'Ꙡ',
|
993 |
+
'ꙣ' => 'Ꙣ',
|
994 |
+
'ꙥ' => 'Ꙥ',
|
995 |
+
'ꙧ' => 'Ꙧ',
|
996 |
+
'ꙩ' => 'Ꙩ',
|
997 |
+
'ꙫ' => 'Ꙫ',
|
998 |
+
'ꙭ' => 'Ꙭ',
|
999 |
+
'ꚁ' => 'Ꚁ',
|
1000 |
+
'ꚃ' => 'Ꚃ',
|
1001 |
+
'ꚅ' => 'Ꚅ',
|
1002 |
+
'ꚇ' => 'Ꚇ',
|
1003 |
+
'ꚉ' => 'Ꚉ',
|
1004 |
+
'ꚋ' => 'Ꚋ',
|
1005 |
+
'ꚍ' => 'Ꚍ',
|
1006 |
+
'ꚏ' => 'Ꚏ',
|
1007 |
+
'ꚑ' => 'Ꚑ',
|
1008 |
+
'ꚓ' => 'Ꚓ',
|
1009 |
+
'ꚕ' => 'Ꚕ',
|
1010 |
+
'ꚗ' => 'Ꚗ',
|
1011 |
+
'ꚙ' => 'Ꚙ',
|
1012 |
+
'ꚛ' => 'Ꚛ',
|
1013 |
+
'ꜣ' => 'Ꜣ',
|
1014 |
+
'ꜥ' => 'Ꜥ',
|
1015 |
+
'ꜧ' => 'Ꜧ',
|
1016 |
+
'ꜩ' => 'Ꜩ',
|
1017 |
+
'ꜫ' => 'Ꜫ',
|
1018 |
+
'ꜭ' => 'Ꜭ',
|
1019 |
+
'ꜯ' => 'Ꜯ',
|
1020 |
+
'ꜳ' => 'Ꜳ',
|
1021 |
+
'ꜵ' => 'Ꜵ',
|
1022 |
+
'ꜷ' => 'Ꜷ',
|
1023 |
+
'ꜹ' => 'Ꜹ',
|
1024 |
+
'ꜻ' => 'Ꜻ',
|
1025 |
+
'ꜽ' => 'Ꜽ',
|
1026 |
+
'ꜿ' => 'Ꜿ',
|
1027 |
+
'ꝁ' => 'Ꝁ',
|
1028 |
+
'ꝃ' => 'Ꝃ',
|
1029 |
+
'ꝅ' => 'Ꝅ',
|
1030 |
+
'ꝇ' => 'Ꝇ',
|
1031 |
+
'ꝉ' => 'Ꝉ',
|
1032 |
+
'ꝋ' => 'Ꝋ',
|
1033 |
+
'ꝍ' => 'Ꝍ',
|
1034 |
+
'ꝏ' => 'Ꝏ',
|
1035 |
+
'ꝑ' => 'Ꝑ',
|
1036 |
+
'ꝓ' => 'Ꝓ',
|
1037 |
+
'ꝕ' => 'Ꝕ',
|
1038 |
+
'ꝗ' => 'Ꝗ',
|
1039 |
+
'ꝙ' => 'Ꝙ',
|
1040 |
+
'ꝛ' => 'Ꝛ',
|
1041 |
+
'ꝝ' => 'Ꝝ',
|
1042 |
+
'ꝟ' => 'Ꝟ',
|
1043 |
+
'ꝡ' => 'Ꝡ',
|
1044 |
+
'ꝣ' => 'Ꝣ',
|
1045 |
+
'ꝥ' => 'Ꝥ',
|
1046 |
+
'ꝧ' => 'Ꝧ',
|
1047 |
+
'ꝩ' => 'Ꝩ',
|
1048 |
+
'ꝫ' => 'Ꝫ',
|
1049 |
+
'ꝭ' => 'Ꝭ',
|
1050 |
+
'ꝯ' => 'Ꝯ',
|
1051 |
+
'ꝺ' => 'Ꝺ',
|
1052 |
+
'ꝼ' => 'Ꝼ',
|
1053 |
+
'ꝿ' => 'Ꝿ',
|
1054 |
+
'ꞁ' => 'Ꞁ',
|
1055 |
+
'ꞃ' => 'Ꞃ',
|
1056 |
+
'ꞅ' => 'Ꞅ',
|
1057 |
+
'ꞇ' => 'Ꞇ',
|
1058 |
+
'ꞌ' => 'Ꞌ',
|
1059 |
+
'ꞑ' => 'Ꞑ',
|
1060 |
+
'ꞓ' => 'Ꞓ',
|
1061 |
+
'ꞔ' => 'Ꞔ',
|
1062 |
+
'ꞗ' => 'Ꞗ',
|
1063 |
+
'ꞙ' => 'Ꞙ',
|
1064 |
+
'ꞛ' => 'Ꞛ',
|
1065 |
+
'ꞝ' => 'Ꞝ',
|
1066 |
+
'ꞟ' => 'Ꞟ',
|
1067 |
+
'ꞡ' => 'Ꞡ',
|
1068 |
+
'ꞣ' => 'Ꞣ',
|
1069 |
+
'ꞥ' => 'Ꞥ',
|
1070 |
+
'ꞧ' => 'Ꞧ',
|
1071 |
+
'ꞩ' => 'Ꞩ',
|
1072 |
+
'ꞵ' => 'Ꞵ',
|
1073 |
+
'ꞷ' => 'Ꞷ',
|
1074 |
+
'ꞹ' => 'Ꞹ',
|
1075 |
+
'ꞻ' => 'Ꞻ',
|
1076 |
+
'ꞽ' => 'Ꞽ',
|
1077 |
+
'ꞿ' => 'Ꞿ',
|
1078 |
+
'ꟃ' => 'Ꟃ',
|
1079 |
+
'ꟈ' => 'Ꟈ',
|
1080 |
+
'ꟊ' => 'Ꟊ',
|
1081 |
+
'ꟶ' => 'Ꟶ',
|
1082 |
+
'ꭓ' => 'Ꭓ',
|
1083 |
+
'ꭰ' => 'Ꭰ',
|
1084 |
+
'ꭱ' => 'Ꭱ',
|
1085 |
+
'ꭲ' => 'Ꭲ',
|
1086 |
+
'ꭳ' => 'Ꭳ',
|
1087 |
+
'ꭴ' => 'Ꭴ',
|
1088 |
+
'ꭵ' => 'Ꭵ',
|
1089 |
+
'ꭶ' => 'Ꭶ',
|
1090 |
+
'ꭷ' => 'Ꭷ',
|
1091 |
+
'ꭸ' => 'Ꭸ',
|
1092 |
+
'ꭹ' => 'Ꭹ',
|
1093 |
+
'ꭺ' => 'Ꭺ',
|
1094 |
+
'ꭻ' => 'Ꭻ',
|
1095 |
+
'ꭼ' => 'Ꭼ',
|
1096 |
+
'ꭽ' => 'Ꭽ',
|
1097 |
+
'ꭾ' => 'Ꭾ',
|
1098 |
+
'ꭿ' => 'Ꭿ',
|
1099 |
+
'ꮀ' => 'Ꮀ',
|
1100 |
+
'ꮁ' => 'Ꮁ',
|
1101 |
+
'ꮂ' => 'Ꮂ',
|
1102 |
+
'ꮃ' => 'Ꮃ',
|
1103 |
+
'ꮄ' => 'Ꮄ',
|
1104 |
+
'ꮅ' => 'Ꮅ',
|
1105 |
+
'ꮆ' => 'Ꮆ',
|
1106 |
+
'ꮇ' => 'Ꮇ',
|
1107 |
+
'ꮈ' => 'Ꮈ',
|
1108 |
+
'ꮉ' => 'Ꮉ',
|
1109 |
+
'ꮊ' => 'Ꮊ',
|
1110 |
+
'ꮋ' => 'Ꮋ',
|
1111 |
+
'ꮌ' => 'Ꮌ',
|
1112 |
+
'ꮍ' => 'Ꮍ',
|
1113 |
+
'ꮎ' => 'Ꮎ',
|
1114 |
+
'ꮏ' => 'Ꮏ',
|
1115 |
+
'ꮐ' => 'Ꮐ',
|
1116 |
+
'ꮑ' => 'Ꮑ',
|
1117 |
+
'ꮒ' => 'Ꮒ',
|
1118 |
+
'ꮓ' => 'Ꮓ',
|
1119 |
+
'ꮔ' => 'Ꮔ',
|
1120 |
+
'ꮕ' => 'Ꮕ',
|
1121 |
+
'ꮖ' => 'Ꮖ',
|
1122 |
+
'ꮗ' => 'Ꮗ',
|
1123 |
+
'ꮘ' => 'Ꮘ',
|
1124 |
+
'ꮙ' => 'Ꮙ',
|
1125 |
+
'ꮚ' => 'Ꮚ',
|
1126 |
+
'ꮛ' => 'Ꮛ',
|
1127 |
+
'ꮜ' => 'Ꮜ',
|
1128 |
+
'ꮝ' => 'Ꮝ',
|
1129 |
+
'ꮞ' => 'Ꮞ',
|
1130 |
+
'ꮟ' => 'Ꮟ',
|
1131 |
+
'ꮠ' => 'Ꮠ',
|
1132 |
+
'ꮡ' => 'Ꮡ',
|
1133 |
+
'ꮢ' => 'Ꮢ',
|
1134 |
+
'ꮣ' => 'Ꮣ',
|
1135 |
+
'ꮤ' => 'Ꮤ',
|
1136 |
+
'ꮥ' => 'Ꮥ',
|
1137 |
+
'ꮦ' => 'Ꮦ',
|
1138 |
+
'ꮧ' => 'Ꮧ',
|
1139 |
+
'ꮨ' => 'Ꮨ',
|
1140 |
+
'ꮩ' => 'Ꮩ',
|
1141 |
+
'ꮪ' => 'Ꮪ',
|
1142 |
+
'ꮫ' => 'Ꮫ',
|
1143 |
+
'ꮬ' => 'Ꮬ',
|
1144 |
+
'ꮭ' => 'Ꮭ',
|
1145 |
+
'ꮮ' => 'Ꮮ',
|
1146 |
+
'ꮯ' => 'Ꮯ',
|
1147 |
+
'ꮰ' => 'Ꮰ',
|
1148 |
+
'ꮱ' => 'Ꮱ',
|
1149 |
+
'ꮲ' => 'Ꮲ',
|
1150 |
+
'ꮳ' => 'Ꮳ',
|
1151 |
+
'ꮴ' => 'Ꮴ',
|
1152 |
+
'ꮵ' => 'Ꮵ',
|
1153 |
+
'ꮶ' => 'Ꮶ',
|
1154 |
+
'ꮷ' => 'Ꮷ',
|
1155 |
+
'ꮸ' => 'Ꮸ',
|
1156 |
+
'ꮹ' => 'Ꮹ',
|
1157 |
+
'ꮺ' => 'Ꮺ',
|
1158 |
+
'ꮻ' => 'Ꮻ',
|
1159 |
+
'ꮼ' => 'Ꮼ',
|
1160 |
+
'ꮽ' => 'Ꮽ',
|
1161 |
+
'ꮾ' => 'Ꮾ',
|
1162 |
+
'ꮿ' => 'Ꮿ',
|
1163 |
+
'a' => 'A',
|
1164 |
+
'b' => 'B',
|
1165 |
+
'c' => 'C',
|
1166 |
+
'd' => 'D',
|
1167 |
+
'e' => 'E',
|
1168 |
+
'f' => 'F',
|
1169 |
+
'g' => 'G',
|
1170 |
+
'h' => 'H',
|
1171 |
+
'i' => 'I',
|
1172 |
+
'j' => 'J',
|
1173 |
+
'k' => 'K',
|
1174 |
+
'l' => 'L',
|
1175 |
+
'm' => 'M',
|
1176 |
+
'n' => 'N',
|
1177 |
+
'o' => 'O',
|
1178 |
+
'p' => 'P',
|
1179 |
+
'q' => 'Q',
|
1180 |
+
'r' => 'R',
|
1181 |
+
's' => 'S',
|
1182 |
+
't' => 'T',
|
1183 |
+
'u' => 'U',
|
1184 |
+
'v' => 'V',
|
1185 |
+
'w' => 'W',
|
1186 |
+
'x' => 'X',
|
1187 |
+
'y' => 'Y',
|
1188 |
+
'z' => 'Z',
|
1189 |
+
'𐐨' => '𐐀',
|
1190 |
+
'𐐩' => '𐐁',
|
1191 |
+
'𐐪' => '𐐂',
|
1192 |
+
'𐐫' => '𐐃',
|
1193 |
+
'𐐬' => '𐐄',
|
1194 |
+
'𐐭' => '𐐅',
|
1195 |
+
'𐐮' => '𐐆',
|
1196 |
+
'𐐯' => '𐐇',
|
1197 |
+
'𐐰' => '𐐈',
|
1198 |
+
'𐐱' => '𐐉',
|
1199 |
+
'𐐲' => '𐐊',
|
1200 |
+
'𐐳' => '𐐋',
|
1201 |
+
'𐐴' => '𐐌',
|
1202 |
+
'𐐵' => '𐐍',
|
1203 |
+
'𐐶' => '𐐎',
|
1204 |
+
'𐐷' => '𐐏',
|
1205 |
+
'𐐸' => '𐐐',
|
1206 |
+
'𐐹' => '𐐑',
|
1207 |
+
'𐐺' => '𐐒',
|
1208 |
+
'𐐻' => '𐐓',
|
1209 |
+
'𐐼' => '𐐔',
|
1210 |
+
'𐐽' => '𐐕',
|
1211 |
+
'𐐾' => '𐐖',
|
1212 |
+
'𐐿' => '𐐗',
|
1213 |
+
'𐑀' => '𐐘',
|
1214 |
+
'𐑁' => '𐐙',
|
1215 |
+
'𐑂' => '𐐚',
|
1216 |
+
'𐑃' => '𐐛',
|
1217 |
+
'𐑄' => '𐐜',
|
1218 |
+
'𐑅' => '𐐝',
|
1219 |
+
'𐑆' => '𐐞',
|
1220 |
+
'𐑇' => '𐐟',
|
1221 |
+
'𐑈' => '𐐠',
|
1222 |
+
'𐑉' => '𐐡',
|
1223 |
+
'𐑊' => '𐐢',
|
1224 |
+
'𐑋' => '𐐣',
|
1225 |
+
'𐑌' => '𐐤',
|
1226 |
+
'𐑍' => '𐐥',
|
1227 |
+
'𐑎' => '𐐦',
|
1228 |
+
'𐑏' => '𐐧',
|
1229 |
+
'𐓘' => '𐒰',
|
1230 |
+
'𐓙' => '𐒱',
|
1231 |
+
'𐓚' => '𐒲',
|
1232 |
+
'𐓛' => '𐒳',
|
1233 |
+
'𐓜' => '𐒴',
|
1234 |
+
'𐓝' => '𐒵',
|
1235 |
+
'𐓞' => '𐒶',
|
1236 |
+
'𐓟' => '𐒷',
|
1237 |
+
'𐓠' => '𐒸',
|
1238 |
+
'𐓡' => '𐒹',
|
1239 |
+
'𐓢' => '𐒺',
|
1240 |
+
'𐓣' => '𐒻',
|
1241 |
+
'𐓤' => '𐒼',
|
1242 |
+
'𐓥' => '𐒽',
|
1243 |
+
'𐓦' => '𐒾',
|
1244 |
+
'𐓧' => '𐒿',
|
1245 |
+
'𐓨' => '𐓀',
|
1246 |
+
'𐓩' => '𐓁',
|
1247 |
+
'𐓪' => '𐓂',
|
1248 |
+
'𐓫' => '𐓃',
|
1249 |
+
'𐓬' => '𐓄',
|
1250 |
+
'𐓭' => '𐓅',
|
1251 |
+
'𐓮' => '𐓆',
|
1252 |
+
'𐓯' => '𐓇',
|
1253 |
+
'𐓰' => '𐓈',
|
1254 |
+
'𐓱' => '𐓉',
|
1255 |
+
'𐓲' => '𐓊',
|
1256 |
+
'𐓳' => '𐓋',
|
1257 |
+
'𐓴' => '𐓌',
|
1258 |
+
'𐓵' => '𐓍',
|
1259 |
+
'𐓶' => '𐓎',
|
1260 |
+
'𐓷' => '𐓏',
|
1261 |
+
'𐓸' => '𐓐',
|
1262 |
+
'𐓹' => '𐓑',
|
1263 |
+
'𐓺' => '𐓒',
|
1264 |
+
'𐓻' => '𐓓',
|
1265 |
+
'𐳀' => '𐲀',
|
1266 |
+
'𐳁' => '𐲁',
|
1267 |
+
'𐳂' => '𐲂',
|
1268 |
+
'𐳃' => '𐲃',
|
1269 |
+
'𐳄' => '𐲄',
|
1270 |
+
'𐳅' => '𐲅',
|
1271 |
+
'𐳆' => '𐲆',
|
1272 |
+
'𐳇' => '𐲇',
|
1273 |
+
'𐳈' => '𐲈',
|
1274 |
+
'𐳉' => '𐲉',
|
1275 |
+
'𐳊' => '𐲊',
|
1276 |
+
'𐳋' => '𐲋',
|
1277 |
+
'𐳌' => '𐲌',
|
1278 |
+
'𐳍' => '𐲍',
|
1279 |
+
'𐳎' => '𐲎',
|
1280 |
+
'𐳏' => '𐲏',
|
1281 |
+
'𐳐' => '𐲐',
|
1282 |
+
'𐳑' => '𐲑',
|
1283 |
+
'𐳒' => '𐲒',
|
1284 |
+
'𐳓' => '𐲓',
|
1285 |
+
'𐳔' => '𐲔',
|
1286 |
+
'𐳕' => '𐲕',
|
1287 |
+
'𐳖' => '𐲖',
|
1288 |
+
'𐳗' => '𐲗',
|
1289 |
+
'𐳘' => '𐲘',
|
1290 |
+
'𐳙' => '𐲙',
|
1291 |
+
'𐳚' => '𐲚',
|
1292 |
+
'𐳛' => '𐲛',
|
1293 |
+
'𐳜' => '𐲜',
|
1294 |
+
'𐳝' => '𐲝',
|
1295 |
+
'𐳞' => '𐲞',
|
1296 |
+
'𐳟' => '𐲟',
|
1297 |
+
'𐳠' => '𐲠',
|
1298 |
+
'𐳡' => '𐲡',
|
1299 |
+
'𐳢' => '𐲢',
|
1300 |
+
'𐳣' => '𐲣',
|
1301 |
+
'𐳤' => '𐲤',
|
1302 |
+
'𐳥' => '𐲥',
|
1303 |
+
'𐳦' => '𐲦',
|
1304 |
+
'𐳧' => '𐲧',
|
1305 |
+
'𐳨' => '𐲨',
|
1306 |
+
'𐳩' => '𐲩',
|
1307 |
+
'𐳪' => '𐲪',
|
1308 |
+
'𐳫' => '𐲫',
|
1309 |
+
'𐳬' => '𐲬',
|
1310 |
+
'𐳭' => '𐲭',
|
1311 |
+
'𐳮' => '𐲮',
|
1312 |
+
'𐳯' => '𐲯',
|
1313 |
+
'𐳰' => '𐲰',
|
1314 |
+
'𐳱' => '𐲱',
|
1315 |
+
'𐳲' => '𐲲',
|
1316 |
+
'𑣀' => '𑢠',
|
1317 |
+
'𑣁' => '𑢡',
|
1318 |
+
'𑣂' => '𑢢',
|
1319 |
+
'𑣃' => '𑢣',
|
1320 |
+
'𑣄' => '𑢤',
|
1321 |
+
'𑣅' => '𑢥',
|
1322 |
+
'𑣆' => '𑢦',
|
1323 |
+
'𑣇' => '𑢧',
|
1324 |
+
'𑣈' => '𑢨',
|
1325 |
+
'𑣉' => '𑢩',
|
1326 |
+
'𑣊' => '𑢪',
|
1327 |
+
'𑣋' => '𑢫',
|
1328 |
+
'𑣌' => '𑢬',
|
1329 |
+
'𑣍' => '𑢭',
|
1330 |
+
'𑣎' => '𑢮',
|
1331 |
+
'𑣏' => '𑢯',
|
1332 |
+
'𑣐' => '𑢰',
|
1333 |
+
'𑣑' => '𑢱',
|
1334 |
+
'𑣒' => '𑢲',
|
1335 |
+
'𑣓' => '𑢳',
|
1336 |
+
'𑣔' => '𑢴',
|
1337 |
+
'𑣕' => '𑢵',
|
1338 |
+
'𑣖' => '𑢶',
|
1339 |
+
'𑣗' => '𑢷',
|
1340 |
+
'𑣘' => '𑢸',
|
1341 |
+
'𑣙' => '𑢹',
|
1342 |
+
'𑣚' => '𑢺',
|
1343 |
+
'𑣛' => '𑢻',
|
1344 |
+
'𑣜' => '𑢼',
|
1345 |
+
'𑣝' => '𑢽',
|
1346 |
+
'𑣞' => '𑢾',
|
1347 |
+
'𑣟' => '𑢿',
|
1348 |
+
'𖹠' => '𖹀',
|
1349 |
+
'𖹡' => '𖹁',
|
1350 |
+
'𖹢' => '𖹂',
|
1351 |
+
'𖹣' => '𖹃',
|
1352 |
+
'𖹤' => '𖹄',
|
1353 |
+
'𖹥' => '𖹅',
|
1354 |
+
'𖹦' => '𖹆',
|
1355 |
+
'𖹧' => '𖹇',
|
1356 |
+
'𖹨' => '𖹈',
|
1357 |
+
'𖹩' => '𖹉',
|
1358 |
+
'𖹪' => '𖹊',
|
1359 |
+
'𖹫' => '𖹋',
|
1360 |
+
'𖹬' => '𖹌',
|
1361 |
+
'𖹭' => '𖹍',
|
1362 |
+
'𖹮' => '𖹎',
|
1363 |
+
'𖹯' => '𖹏',
|
1364 |
+
'𖹰' => '𖹐',
|
1365 |
+
'𖹱' => '𖹑',
|
1366 |
+
'𖹲' => '𖹒',
|
1367 |
+
'𖹳' => '𖹓',
|
1368 |
+
'𖹴' => '𖹔',
|
1369 |
+
'𖹵' => '𖹕',
|
1370 |
+
'𖹶' => '𖹖',
|
1371 |
+
'𖹷' => '𖹗',
|
1372 |
+
'𖹸' => '𖹘',
|
1373 |
+
'𖹹' => '𖹙',
|
1374 |
+
'𖹺' => '𖹚',
|
1375 |
+
'𖹻' => '𖹛',
|
1376 |
+
'𖹼' => '𖹜',
|
1377 |
+
'𖹽' => '𖹝',
|
1378 |
+
'𖹾' => '𖹞',
|
1379 |
+
'𖹿' => '𖹟',
|
1380 |
+
'𞤢' => '𞤀',
|
1381 |
+
'𞤣' => '𞤁',
|
1382 |
+
'𞤤' => '𞤂',
|
1383 |
+
'𞤥' => '𞤃',
|
1384 |
+
'𞤦' => '𞤄',
|
1385 |
+
'𞤧' => '𞤅',
|
1386 |
+
'𞤨' => '𞤆',
|
1387 |
+
'𞤩' => '𞤇',
|
1388 |
+
'𞤪' => '𞤈',
|
1389 |
+
'𞤫' => '𞤉',
|
1390 |
+
'𞤬' => '𞤊',
|
1391 |
+
'𞤭' => '𞤋',
|
1392 |
+
'𞤮' => '𞤌',
|
1393 |
+
'𞤯' => '𞤍',
|
1394 |
+
'𞤰' => '𞤎',
|
1395 |
+
'𞤱' => '𞤏',
|
1396 |
+
'𞤲' => '𞤐',
|
1397 |
+
'𞤳' => '𞤑',
|
1398 |
+
'𞤴' => '𞤒',
|
1399 |
+
'𞤵' => '𞤓',
|
1400 |
+
'𞤶' => '𞤔',
|
1401 |
+
'𞤷' => '𞤕',
|
1402 |
+
'𞤸' => '𞤖',
|
1403 |
+
'𞤹' => '𞤗',
|
1404 |
+
'𞤺' => '𞤘',
|
1405 |
+
'𞤻' => '𞤙',
|
1406 |
+
'𞤼' => '𞤚',
|
1407 |
+
'𞤽' => '𞤛',
|
1408 |
+
'𞤾' => '𞤜',
|
1409 |
+
'𞤿' => '𞤝',
|
1410 |
+
'𞥀' => '𞤞',
|
1411 |
+
'𞥁' => '𞤟',
|
1412 |
+
'𞥂' => '𞤠',
|
1413 |
+
'𞥃' => '𞤡',
|
1414 |
+
);
|
vendor/symfony/polyfill-mbstring/bootstrap.php
CHANGED
@@ -1,147 +1,147 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
use Symfony\Polyfill\Mbstring as p;
|
13 |
-
|
14 |
-
if (!function_exists('mb_convert_encoding')) {
|
15 |
-
function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
|
16 |
-
}
|
17 |
-
if (!function_exists('mb_decode_mimeheader')) {
|
18 |
-
function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
|
19 |
-
}
|
20 |
-
if (!function_exists('mb_encode_mimeheader')) {
|
21 |
-
function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
|
22 |
-
}
|
23 |
-
if (!function_exists('mb_decode_numericentity')) {
|
24 |
-
function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
|
25 |
-
}
|
26 |
-
if (!function_exists('mb_encode_numericentity')) {
|
27 |
-
function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
|
28 |
-
}
|
29 |
-
if (!function_exists('mb_convert_case')) {
|
30 |
-
function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
|
31 |
-
}
|
32 |
-
if (!function_exists('mb_internal_encoding')) {
|
33 |
-
function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
|
34 |
-
}
|
35 |
-
if (!function_exists('mb_language')) {
|
36 |
-
function mb_language($language = null) { return p\Mbstring::mb_language($language); }
|
37 |
-
}
|
38 |
-
if (!function_exists('mb_list_encodings')) {
|
39 |
-
function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
|
40 |
-
}
|
41 |
-
if (!function_exists('mb_encoding_aliases')) {
|
42 |
-
function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
|
43 |
-
}
|
44 |
-
if (!function_exists('mb_check_encoding')) {
|
45 |
-
function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
|
46 |
-
}
|
47 |
-
if (!function_exists('mb_detect_encoding')) {
|
48 |
-
function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
|
49 |
-
}
|
50 |
-
if (!function_exists('mb_detect_order')) {
|
51 |
-
function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
|
52 |
-
}
|
53 |
-
if (!function_exists('mb_parse_str')) {
|
54 |
-
function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
|
55 |
-
}
|
56 |
-
if (!function_exists('mb_strlen')) {
|
57 |
-
function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
|
58 |
-
}
|
59 |
-
if (!function_exists('mb_strpos')) {
|
60 |
-
function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
|
61 |
-
}
|
62 |
-
if (!function_exists('mb_strtolower')) {
|
63 |
-
function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
|
64 |
-
}
|
65 |
-
if (!function_exists('mb_strtoupper')) {
|
66 |
-
function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
|
67 |
-
}
|
68 |
-
if (!function_exists('mb_substitute_character')) {
|
69 |
-
function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
|
70 |
-
}
|
71 |
-
if (!function_exists('mb_substr')) {
|
72 |
-
function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
|
73 |
-
}
|
74 |
-
if (!function_exists('mb_stripos')) {
|
75 |
-
function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
|
76 |
-
}
|
77 |
-
if (!function_exists('mb_stristr')) {
|
78 |
-
function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
|
79 |
-
}
|
80 |
-
if (!function_exists('mb_strrchr')) {
|
81 |
-
function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
|
82 |
-
}
|
83 |
-
if (!function_exists('mb_strrichr')) {
|
84 |
-
function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
|
85 |
-
}
|
86 |
-
if (!function_exists('mb_strripos')) {
|
87 |
-
function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
|
88 |
-
}
|
89 |
-
if (!function_exists('mb_strrpos')) {
|
90 |
-
function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
|
91 |
-
}
|
92 |
-
if (!function_exists('mb_strstr')) {
|
93 |
-
function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
|
94 |
-
}
|
95 |
-
if (!function_exists('mb_get_info')) {
|
96 |
-
function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
|
97 |
-
}
|
98 |
-
if (!function_exists('mb_http_output')) {
|
99 |
-
function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
|
100 |
-
}
|
101 |
-
if (!function_exists('mb_strwidth')) {
|
102 |
-
function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
|
103 |
-
}
|
104 |
-
if (!function_exists('mb_substr_count')) {
|
105 |
-
function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
|
106 |
-
}
|
107 |
-
if (!function_exists('mb_output_handler')) {
|
108 |
-
function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
|
109 |
-
}
|
110 |
-
if (!function_exists('mb_http_input')) {
|
111 |
-
function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
|
112 |
-
}
|
113 |
-
|
114 |
-
if (!function_exists('mb_convert_variables')) {
|
115 |
-
if (PHP_VERSION_ID >= 80000) {
|
116 |
-
function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
|
117 |
-
} else {
|
118 |
-
function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
|
119 |
-
}
|
120 |
-
}
|
121 |
-
|
122 |
-
if (!function_exists('mb_ord')) {
|
123 |
-
function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
|
124 |
-
}
|
125 |
-
if (!function_exists('mb_chr')) {
|
126 |
-
function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
|
127 |
-
}
|
128 |
-
if (!function_exists('mb_scrub')) {
|
129 |
-
function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
|
130 |
-
}
|
131 |
-
if (!function_exists('mb_str_split')) {
|
132 |
-
function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
|
133 |
-
}
|
134 |
-
|
135 |
-
if (extension_loaded('mbstring')) {
|
136 |
-
return;
|
137 |
-
}
|
138 |
-
|
139 |
-
if (!defined('MB_CASE_UPPER')) {
|
140 |
-
define('MB_CASE_UPPER', 0);
|
141 |
-
}
|
142 |
-
if (!defined('MB_CASE_LOWER')) {
|
143 |
-
define('MB_CASE_LOWER', 1);
|
144 |
-
}
|
145 |
-
if (!defined('MB_CASE_TITLE')) {
|
146 |
-
define('MB_CASE_TITLE', 2);
|
147 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Symfony package.
|
5 |
+
*
|
6 |
+
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
use Symfony\Polyfill\Mbstring as p;
|
13 |
+
|
14 |
+
if (!function_exists('mb_convert_encoding')) {
|
15 |
+
function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
|
16 |
+
}
|
17 |
+
if (!function_exists('mb_decode_mimeheader')) {
|
18 |
+
function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
|
19 |
+
}
|
20 |
+
if (!function_exists('mb_encode_mimeheader')) {
|
21 |
+
function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
|
22 |
+
}
|
23 |
+
if (!function_exists('mb_decode_numericentity')) {
|
24 |
+
function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
|
25 |
+
}
|
26 |
+
if (!function_exists('mb_encode_numericentity')) {
|
27 |
+
function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
|
28 |
+
}
|
29 |
+
if (!function_exists('mb_convert_case')) {
|
30 |
+
function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
|
31 |
+
}
|
32 |
+
if (!function_exists('mb_internal_encoding')) {
|
33 |
+
function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
|
34 |
+
}
|
35 |
+
if (!function_exists('mb_language')) {
|
36 |
+
function mb_language($language = null) { return p\Mbstring::mb_language($language); }
|
37 |
+
}
|
38 |
+
if (!function_exists('mb_list_encodings')) {
|
39 |
+
function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
|
40 |
+
}
|
41 |
+
if (!function_exists('mb_encoding_aliases')) {
|
42 |
+
function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
|
43 |
+
}
|
44 |
+
if (!function_exists('mb_check_encoding')) {
|
45 |
+
function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
|
46 |
+
}
|
47 |
+
if (!function_exists('mb_detect_encoding')) {
|
48 |
+
function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
|
49 |
+
}
|
50 |
+
if (!function_exists('mb_detect_order')) {
|
51 |
+
function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
|
52 |
+
}
|
53 |
+
if (!function_exists('mb_parse_str')) {
|
54 |
+
function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
|
55 |
+
}
|
56 |
+
if (!function_exists('mb_strlen')) {
|
57 |
+
function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
|
58 |
+
}
|
59 |
+
if (!function_exists('mb_strpos')) {
|
60 |
+
function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
|
61 |
+
}
|
62 |
+
if (!function_exists('mb_strtolower')) {
|
63 |
+
function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
|
64 |
+
}
|
65 |
+
if (!function_exists('mb_strtoupper')) {
|
66 |
+
function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
|
67 |
+
}
|
68 |
+
if (!function_exists('mb_substitute_character')) {
|
69 |
+
function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
|
70 |
+
}
|
71 |
+
if (!function_exists('mb_substr')) {
|
72 |
+
function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
|
73 |
+
}
|
74 |
+
if (!function_exists('mb_stripos')) {
|
75 |
+
function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
|
76 |
+
}
|
77 |
+
if (!function_exists('mb_stristr')) {
|
78 |
+
function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
|
79 |
+
}
|
80 |
+
if (!function_exists('mb_strrchr')) {
|
81 |
+
function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
|
82 |
+
}
|
83 |
+
if (!function_exists('mb_strrichr')) {
|
84 |
+
function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
|
85 |
+
}
|
86 |
+
if (!function_exists('mb_strripos')) {
|
87 |
+
function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
|
88 |
+
}
|
89 |
+
if (!function_exists('mb_strrpos')) {
|
90 |
+
function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
|
91 |
+
}
|
92 |
+
if (!function_exists('mb_strstr')) {
|
93 |
+
function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
|
94 |
+
}
|
95 |
+
if (!function_exists('mb_get_info')) {
|
96 |
+
function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
|
97 |
+
}
|
98 |
+
if (!function_exists('mb_http_output')) {
|
99 |
+
function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
|
100 |
+
}
|
101 |
+
if (!function_exists('mb_strwidth')) {
|
102 |
+
function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
|
103 |
+
}
|
104 |
+
if (!function_exists('mb_substr_count')) {
|
105 |
+
function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
|
106 |
+
}
|
107 |
+
if (!function_exists('mb_output_handler')) {
|
108 |
+
function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
|
109 |
+
}
|
110 |
+
if (!function_exists('mb_http_input')) {
|
111 |
+
function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
|
112 |
+
}
|
113 |
+
|
114 |
+
if (!function_exists('mb_convert_variables')) {
|
115 |
+
if (PHP_VERSION_ID >= 80000) {
|
116 |
+
function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
|
117 |
+
} else {
|
118 |
+
function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
if (!function_exists('mb_ord')) {
|
123 |
+
function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
|
124 |
+
}
|
125 |
+
if (!function_exists('mb_chr')) {
|
126 |
+
function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
|
127 |
+
}
|
128 |
+
if (!function_exists('mb_scrub')) {
|
129 |
+
function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
|
130 |
+
}
|
131 |
+
if (!function_exists('mb_str_split')) {
|
132 |
+
function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
|
133 |
+
}
|
134 |
+
|
135 |
+
if (extension_loaded('mbstring')) {
|
136 |
+
return;
|
137 |
+
}
|
138 |
+
|
139 |
+
if (!defined('MB_CASE_UPPER')) {
|
140 |
+
define('MB_CASE_UPPER', 0);
|
141 |
+
}
|
142 |
+
if (!defined('MB_CASE_LOWER')) {
|
143 |
+
define('MB_CASE_LOWER', 1);
|
144 |
+
}
|
145 |
+
if (!defined('MB_CASE_TITLE')) {
|
146 |
+
define('MB_CASE_TITLE', 2);
|
147 |
+
}
|
vendor/symfony/polyfill-mbstring/composer.json
CHANGED
@@ -1,38 +1,38 @@
|
|
1 |
-
{
|
2 |
-
"name": "symfony/polyfill-mbstring",
|
3 |
-
"type": "library",
|
4 |
-
"description": "Symfony polyfill for the Mbstring extension",
|
5 |
-
"keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
|
6 |
-
"homepage": "https://symfony.com",
|
7 |
-
"license": "MIT",
|
8 |
-
"authors": [
|
9 |
-
{
|
10 |
-
"name": "Nicolas Grekas",
|
11 |
-
"email": "p@tchwork.com"
|
12 |
-
},
|
13 |
-
{
|
14 |
-
"name": "Symfony Community",
|
15 |
-
"homepage": "https://symfony.com/contributors"
|
16 |
-
}
|
17 |
-
],
|
18 |
-
"require": {
|
19 |
-
"php": ">=7.1"
|
20 |
-
},
|
21 |
-
"autoload": {
|
22 |
-
"psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
|
23 |
-
"files": [ "bootstrap.php" ]
|
24 |
-
},
|
25 |
-
"suggest": {
|
26 |
-
"ext-mbstring": "For best performance"
|
27 |
-
},
|
28 |
-
"minimum-stability": "dev",
|
29 |
-
"extra": {
|
30 |
-
"branch-alias": {
|
31 |
-
"dev-main": "1.20-dev"
|
32 |
-
},
|
33 |
-
"thanks": {
|
34 |
-
"name": "symfony/polyfill",
|
35 |
-
"url": "https://github.com/symfony/polyfill"
|
36 |
-
}
|
37 |
-
}
|
38 |
-
}
|
1 |
+
{
|
2 |
+
"name": "symfony/polyfill-mbstring",
|
3 |
+
"type": "library",
|
4 |
+
"description": "Symfony polyfill for the Mbstring extension",
|
5 |
+
"keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
|
6 |
+
"homepage": "https://symfony.com",
|
7 |
+
"license": "MIT",
|
8 |
+
"authors": [
|
9 |
+
{
|
10 |
+
"name": "Nicolas Grekas",
|
11 |
+
"email": "p@tchwork.com"
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"name": "Symfony Community",
|
15 |
+
"homepage": "https://symfony.com/contributors"
|
16 |
+
}
|
17 |
+
],
|
18 |
+
"require": {
|
19 |
+
"php": ">=7.1"
|
20 |
+
},
|
21 |
+
"autoload": {
|
22 |
+
"psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
|
23 |
+
"files": [ "bootstrap.php" ]
|
24 |
+
},
|
25 |
+
"suggest": {
|
26 |
+
"ext-mbstring": "For best performance"
|
27 |
+
},
|
28 |
+
"minimum-stability": "dev",
|
29 |
+
"extra": {
|
30 |
+
"branch-alias": {
|
31 |
+
"dev-main": "1.20-dev"
|
32 |
+
},
|
33 |
+
"thanks": {
|
34 |
+
"name": "symfony/polyfill",
|
35 |
+
"url": "https://github.com/symfony/polyfill"
|
36 |
+
}
|
37 |
+
}
|
38 |
+
}
|
woocommerce-pdf-invoices-packingslips.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: WooCommerce PDF Invoices & Packing Slips
|
4 |
* Plugin URI: http://www.wpovernight.com
|
5 |
* Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
|
6 |
-
* Version: 2.10.
|
7 |
* Author: Ewout Fernhout
|
8 |
* Author URI: http://www.wpovernight.com
|
9 |
* License: GPLv2 or later
|
@@ -21,7 +21,7 @@ if ( !class_exists( 'WPO_WCPDF' ) ) :
|
|
21 |
|
22 |
class WPO_WCPDF {
|
23 |
|
24 |
-
public $version = '2.10.
|
25 |
public $plugin_basename;
|
26 |
public $legacy_mode;
|
27 |
public $legacy_textdomain;
|
@@ -265,7 +265,7 @@ class WPO_WCPDF {
|
|
265 |
*/
|
266 |
public function need_woocommerce() {
|
267 |
/* translators: <a> tags */
|
268 |
-
$error = sprintf(
|
269 |
|
270 |
$message = '<div class="error"><p>' . $error . '</p></div>';
|
271 |
|
@@ -290,7 +290,7 @@ class WPO_WCPDF {
|
|
290 |
}
|
291 |
$message .= '</div>';
|
292 |
|
293 |
-
echo $message;
|
294 |
}
|
295 |
|
296 |
/**
|
@@ -374,7 +374,7 @@ class WPO_WCPDF {
|
|
374 |
<p><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_hide_nginx_notice', 'true' ) ); ?>"><?php _e( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
375 |
</div>
|
376 |
<?php
|
377 |
-
echo ob_get_clean();
|
378 |
}
|
379 |
|
380 |
// protect PDF directory
|
@@ -418,7 +418,7 @@ class WPO_WCPDF {
|
|
418 |
<p><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_hide_mailpoet_notice', 'true' ) ); ?>"><?php _e( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
419 |
</div>
|
420 |
<?php
|
421 |
-
echo ob_get_clean();
|
422 |
}
|
423 |
}
|
424 |
|
3 |
* Plugin Name: WooCommerce PDF Invoices & Packing Slips
|
4 |
* Plugin URI: http://www.wpovernight.com
|
5 |
* Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
|
6 |
+
* Version: 2.10.5
|
7 |
* Author: Ewout Fernhout
|
8 |
* Author URI: http://www.wpovernight.com
|
9 |
* License: GPLv2 or later
|
21 |
|
22 |
class WPO_WCPDF {
|
23 |
|
24 |
+
public $version = '2.10.5';
|
25 |
public $plugin_basename;
|
26 |
public $legacy_mode;
|
27 |
public $legacy_textdomain;
|
265 |
*/
|
266 |
public function need_woocommerce() {
|
267 |
/* translators: <a> tags */
|
268 |
+
$error = sprintf( esc_html__( 'WooCommerce PDF Invoices & Packing Slips requires %1$sWooCommerce%2$s to be installed & activated!' , 'woocommerce-pdf-invoices-packing-slips' ), '<a href="http://wordpress.org/extend/plugins/woocommerce/">', '</a>' );
|
269 |
|
270 |
$message = '<div class="error"><p>' . $error . '</p></div>';
|
271 |
|
290 |
}
|
291 |
$message .= '</div>';
|
292 |
|
293 |
+
echo wp_kses_post( $message );
|
294 |
}
|
295 |
|
296 |
/**
|
374 |
<p><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_hide_nginx_notice', 'true' ) ); ?>"><?php _e( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
375 |
</div>
|
376 |
<?php
|
377 |
+
echo wp_kses_post( ob_get_clean() );
|
378 |
}
|
379 |
|
380 |
// protect PDF directory
|
418 |
<p><a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_hide_mailpoet_notice', 'true' ) ); ?>"><?php _e( 'Hide this message', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
|
419 |
</div>
|
420 |
<?php
|
421 |
+
echo wp_kses_post( ob_get_clean() );
|
422 |
}
|
423 |
}
|
424 |
|