Version Description
- Website link now goes directly to your dashboard
- Fixed compression issue for some fopen users.
Download this release
Release Info
Developer | TinyPNG |
Plugin | Compress JPEG & PNG images |
Version | 2.2.3 |
Comparing to | |
See all releases |
Code changes from version 2.2.2 to 2.2.3
- .travis.yml +6 -1
- bin/integration-tests +3 -3
- composer.json +2 -2
- composer.lock +124 -105
- phpcs.xml +3 -0
- readme.txt +6 -2
- src/class-tiny-compress-client.php +4 -4
- src/class-tiny-compress-fopen.php +7 -7
- src/class-tiny-compress.php +2 -2
- src/class-tiny-image-size.php +3 -1
- src/class-tiny-image.php +9 -4
- src/class-tiny-plugin.php +17 -8
- src/class-tiny-settings.php +17 -15
- src/config/{tiny-config.php → class-tiny-config.php} +0 -0
- src/js/admin.js +4 -4
- src/views/account-status-connected.php +5 -5
- src/views/account-status-create-advanced.php +3 -3
- src/views/bulk-optimization.php +25 -8
- src/views/compress-details.php +10 -7
- src/views/dashboard-widget.php +14 -3
- tiny-compress-images.php +2 -2
.travis.yml
CHANGED
@@ -6,9 +6,14 @@ php:
|
|
6 |
- 5.6
|
7 |
- 7.0
|
8 |
- 7.1
|
9 |
-
- hhvm
|
10 |
matrix:
|
11 |
include:
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
- dist: trusty
|
13 |
php: 7.0
|
14 |
env: WORDPRESS_VERSION=47 INTEGRATION_TESTS=true
|
6 |
- 5.6
|
7 |
- 7.0
|
8 |
- 7.1
|
|
|
9 |
matrix:
|
10 |
include:
|
11 |
+
- dist: trusty
|
12 |
+
php: hhvm
|
13 |
+
- dist: trusty
|
14 |
+
php: 7.0
|
15 |
+
env: WORDPRESS_VERSION=48 INTEGRATION_TESTS=true
|
16 |
+
script: bin/integration-tests
|
17 |
- dist: trusty
|
18 |
php: 7.0
|
19 |
env: WORDPRESS_VERSION=47 INTEGRATION_TESTS=true
|
bin/integration-tests
CHANGED
@@ -29,14 +29,14 @@ function wait_for_service_port {
|
|
29 |
}
|
30 |
|
31 |
function prepare_test_config {
|
32 |
-
mv src/config/tiny-config.php src/config/tiny-config.php.bak
|
33 |
mv src/vendor/tinify/Tinify/Client.php src/vendor/tinify/Tinify/Client.php.bak
|
34 |
-
cp test/fixtures/tiny-config.php src/config/tiny-config.php
|
35 |
cp test/fixtures/Client.php src/vendor/tinify/Tinify/Client.php
|
36 |
}
|
37 |
|
38 |
function restore_config {
|
39 |
-
mv src/config/tiny-config.php.bak src/config/tiny-config.php
|
40 |
mv src/vendor/tinify/Tinify/Client.php.bak src/vendor/tinify/Tinify/Client.php
|
41 |
}
|
42 |
|
29 |
}
|
30 |
|
31 |
function prepare_test_config {
|
32 |
+
mv src/config/class-tiny-config.php src/config/class-tiny-config.php.bak
|
33 |
mv src/vendor/tinify/Tinify/Client.php src/vendor/tinify/Tinify/Client.php.bak
|
34 |
+
cp test/fixtures/class-tiny-config.php src/config/class-tiny-config.php
|
35 |
cp test/fixtures/Client.php src/vendor/tinify/Tinify/Client.php
|
36 |
}
|
37 |
|
38 |
function restore_config {
|
39 |
+
mv src/config/class-tiny-config.php.bak src/config/class-tiny-config.php
|
40 |
mv src/vendor/tinify/Tinify/Client.php.bak src/vendor/tinify/Tinify/Client.php
|
41 |
}
|
42 |
|
composer.json
CHANGED
@@ -18,14 +18,14 @@
|
|
18 |
},
|
19 |
"require-dev": {
|
20 |
"phpunit/phpunit": "~4.6",
|
21 |
-
"facebook/webdriver": "
|
22 |
"mikey179/vfsStream": "~1.5",
|
23 |
"mockery/mockery": "~0.9",
|
24 |
"phpdocumentor/reflection-docblock": "~2.0",
|
25 |
"symfony/yaml": "~2.8",
|
26 |
"squizlabs/php_codesniffer": "~2.2",
|
27 |
"tinify/tinify": "dev-create-key",
|
28 |
-
"wp-coding-standards/wpcs": "0.
|
29 |
},
|
30 |
"scripts": {
|
31 |
"post-install-cmd": "bin/post-install",
|
18 |
},
|
19 |
"require-dev": {
|
20 |
"phpunit/phpunit": "~4.6",
|
21 |
+
"facebook/webdriver": "1.1.3",
|
22 |
"mikey179/vfsStream": "~1.5",
|
23 |
"mockery/mockery": "~0.9",
|
24 |
"phpdocumentor/reflection-docblock": "~2.0",
|
25 |
"symfony/yaml": "~2.8",
|
26 |
"squizlabs/php_codesniffer": "~2.2",
|
27 |
"tinify/tinify": "dev-create-key",
|
28 |
+
"wp-coding-standards/wpcs": "0.11"
|
29 |
},
|
30 |
"scripts": {
|
31 |
"post-install-cmd": "bin/post-install",
|
composer.lock
CHANGED
@@ -4,21 +4,20 @@
|
|
4 |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
"This file is @generated automatically"
|
6 |
],
|
7 |
-
"hash": "
|
8 |
-
"content-hash": "afada1647f228ed98b0ff2738fa60c18",
|
9 |
"packages": [
|
10 |
{
|
11 |
"name": "composer/installers",
|
12 |
-
"version": "v1.
|
13 |
"source": {
|
14 |
"type": "git",
|
15 |
"url": "https://github.com/composer/installers.git",
|
16 |
-
"reference": "
|
17 |
},
|
18 |
"dist": {
|
19 |
"type": "zip",
|
20 |
-
"url": "https://api.github.com/repos/composer/installers/zipball/
|
21 |
-
"reference": "
|
22 |
"shasum": ""
|
23 |
},
|
24 |
"require": {
|
@@ -60,11 +59,16 @@
|
|
60 |
"keywords": [
|
61 |
"Craft",
|
62 |
"Dolibarr",
|
|
|
63 |
"Hurad",
|
64 |
"ImageCMS",
|
|
|
65 |
"MODX Evo",
|
66 |
"Mautic",
|
|
|
67 |
"OXID",
|
|
|
|
|
68 |
"RadPHP",
|
69 |
"SMF",
|
70 |
"Thelia",
|
@@ -72,9 +76,11 @@
|
|
72 |
"agl",
|
73 |
"aimeos",
|
74 |
"annotatecms",
|
|
|
75 |
"bitrix",
|
76 |
"cakephp",
|
77 |
"chef",
|
|
|
78 |
"codeigniter",
|
79 |
"concrete5",
|
80 |
"croogo",
|
@@ -85,9 +91,11 @@
|
|
85 |
"fuelphp",
|
86 |
"grav",
|
87 |
"installer",
|
|
|
88 |
"joomla",
|
89 |
"kohana",
|
90 |
"laravel",
|
|
|
91 |
"lithium",
|
92 |
"magento",
|
93 |
"mako",
|
@@ -98,16 +106,19 @@
|
|
98 |
"piwik",
|
99 |
"ppi",
|
100 |
"puppet",
|
|
|
101 |
"roundcube",
|
102 |
"shopware",
|
103 |
"silverstripe",
|
|
|
104 |
"symfony",
|
105 |
"typo3",
|
106 |
"wordpress",
|
|
|
107 |
"zend",
|
108 |
"zikula"
|
109 |
],
|
110 |
-
"time": "
|
111 |
}
|
112 |
],
|
113 |
"packages-dev": [
|
@@ -163,20 +174,20 @@
|
|
163 |
"constructor",
|
164 |
"instantiate"
|
165 |
],
|
166 |
-
"time": "2015-06-
|
167 |
},
|
168 |
{
|
169 |
"name": "facebook/webdriver",
|
170 |
-
"version": "1.1.
|
171 |
"source": {
|
172 |
"type": "git",
|
173 |
"url": "https://github.com/facebook/php-webdriver.git",
|
174 |
-
"reference": "
|
175 |
},
|
176 |
"dist": {
|
177 |
"type": "zip",
|
178 |
-
"url": "https://api.github.com/repos/facebook/php-webdriver/zipball/
|
179 |
-
"reference": "
|
180 |
"shasum": ""
|
181 |
},
|
182 |
"require": {
|
@@ -184,7 +195,9 @@
|
|
184 |
"php": ">=5.3.19"
|
185 |
},
|
186 |
"require-dev": {
|
187 |
-
"
|
|
|
|
|
188 |
},
|
189 |
"suggest": {
|
190 |
"phpdocumentor/phpdocumentor": "2.*"
|
@@ -207,7 +220,7 @@
|
|
207 |
"selenium",
|
208 |
"webdriver"
|
209 |
],
|
210 |
-
"time": "2016-
|
211 |
},
|
212 |
{
|
213 |
"name": "hamcrest/hamcrest-php",
|
@@ -252,7 +265,7 @@
|
|
252 |
"keywords": [
|
253 |
"test"
|
254 |
],
|
255 |
-
"time": "2015-05-
|
256 |
},
|
257 |
{
|
258 |
"name": "mikey179/vfsStream",
|
@@ -298,20 +311,20 @@
|
|
298 |
],
|
299 |
"description": "Virtual file system to mock the real file system in unit tests.",
|
300 |
"homepage": "http://vfs.bovigo.org/",
|
301 |
-
"time": "2016-07-
|
302 |
},
|
303 |
{
|
304 |
"name": "mockery/mockery",
|
305 |
-
"version": "0.9.
|
306 |
"source": {
|
307 |
"type": "git",
|
308 |
-
"url": "https://github.com/
|
309 |
-
"reference": "
|
310 |
},
|
311 |
"dist": {
|
312 |
"type": "zip",
|
313 |
-
"url": "https://api.github.com/repos/
|
314 |
-
"reference": "
|
315 |
"shasum": ""
|
316 |
},
|
317 |
"require": {
|
@@ -363,20 +376,20 @@
|
|
363 |
"test double",
|
364 |
"testing"
|
365 |
],
|
366 |
-
"time": "
|
367 |
},
|
368 |
{
|
369 |
"name": "phpdocumentor/reflection-docblock",
|
370 |
-
"version": "2.0.
|
371 |
"source": {
|
372 |
"type": "git",
|
373 |
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
374 |
-
"reference": "
|
375 |
},
|
376 |
"dist": {
|
377 |
"type": "zip",
|
378 |
-
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/
|
379 |
-
"reference": "
|
380 |
"shasum": ""
|
381 |
},
|
382 |
"require": {
|
@@ -412,31 +425,32 @@
|
|
412 |
"email": "mike.vanriel@naenius.com"
|
413 |
}
|
414 |
],
|
415 |
-
"time": "
|
416 |
},
|
417 |
{
|
418 |
"name": "phpspec/prophecy",
|
419 |
-
"version": "v1.
|
420 |
"source": {
|
421 |
"type": "git",
|
422 |
"url": "https://github.com/phpspec/prophecy.git",
|
423 |
-
"reference": "
|
424 |
},
|
425 |
"dist": {
|
426 |
"type": "zip",
|
427 |
-
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/
|
428 |
-
"reference": "
|
429 |
"shasum": ""
|
430 |
},
|
431 |
"require": {
|
432 |
"doctrine/instantiator": "^1.0.2",
|
433 |
"php": "^5.3|^7.0",
|
434 |
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
|
435 |
-
"sebastian/comparator": "^1.1",
|
436 |
-
"sebastian/recursion-context": "^1.0"
|
437 |
},
|
438 |
"require-dev": {
|
439 |
-
"phpspec/phpspec": "^2.
|
|
|
440 |
},
|
441 |
"type": "library",
|
442 |
"extra": {
|
@@ -474,7 +488,7 @@
|
|
474 |
"spy",
|
475 |
"stub"
|
476 |
],
|
477 |
-
"time": "
|
478 |
},
|
479 |
{
|
480 |
"name": "phpunit/php-code-coverage",
|
@@ -536,20 +550,20 @@
|
|
536 |
"testing",
|
537 |
"xunit"
|
538 |
],
|
539 |
-
"time": "2015-10-
|
540 |
},
|
541 |
{
|
542 |
"name": "phpunit/php-file-iterator",
|
543 |
-
"version": "1.4.
|
544 |
"source": {
|
545 |
"type": "git",
|
546 |
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
547 |
-
"reference": "
|
548 |
},
|
549 |
"dist": {
|
550 |
"type": "zip",
|
551 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/
|
552 |
-
"reference": "
|
553 |
"shasum": ""
|
554 |
},
|
555 |
"require": {
|
@@ -583,7 +597,7 @@
|
|
583 |
"filesystem",
|
584 |
"iterator"
|
585 |
],
|
586 |
-
"time": "
|
587 |
},
|
588 |
{
|
589 |
"name": "phpunit/php-text-template",
|
@@ -624,29 +638,34 @@
|
|
624 |
"keywords": [
|
625 |
"template"
|
626 |
],
|
627 |
-
"time": "2015-06-
|
628 |
},
|
629 |
{
|
630 |
"name": "phpunit/php-timer",
|
631 |
-
"version": "1.0.
|
632 |
"source": {
|
633 |
"type": "git",
|
634 |
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
635 |
-
"reference": "
|
636 |
},
|
637 |
"dist": {
|
638 |
"type": "zip",
|
639 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/
|
640 |
-
"reference": "
|
641 |
"shasum": ""
|
642 |
},
|
643 |
"require": {
|
644 |
-
"php": "
|
645 |
},
|
646 |
"require-dev": {
|
647 |
-
"phpunit/phpunit": "
|
648 |
},
|
649 |
"type": "library",
|
|
|
|
|
|
|
|
|
|
|
650 |
"autoload": {
|
651 |
"classmap": [
|
652 |
"src/"
|
@@ -668,20 +687,20 @@
|
|
668 |
"keywords": [
|
669 |
"timer"
|
670 |
],
|
671 |
-
"time": "
|
672 |
},
|
673 |
{
|
674 |
"name": "phpunit/php-token-stream",
|
675 |
-
"version": "1.4.
|
676 |
"source": {
|
677 |
"type": "git",
|
678 |
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
679 |
-
"reference": "
|
680 |
},
|
681 |
"dist": {
|
682 |
"type": "zip",
|
683 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/
|
684 |
-
"reference": "
|
685 |
"shasum": ""
|
686 |
},
|
687 |
"require": {
|
@@ -717,20 +736,20 @@
|
|
717 |
"keywords": [
|
718 |
"tokenizer"
|
719 |
],
|
720 |
-
"time": "
|
721 |
},
|
722 |
{
|
723 |
"name": "phpunit/phpunit",
|
724 |
-
"version": "4.8.
|
725 |
"source": {
|
726 |
"type": "git",
|
727 |
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
728 |
-
"reference": "
|
729 |
},
|
730 |
"dist": {
|
731 |
"type": "zip",
|
732 |
-
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/
|
733 |
-
"reference": "
|
734 |
"shasum": ""
|
735 |
},
|
736 |
"require": {
|
@@ -746,7 +765,7 @@
|
|
746 |
"phpunit/php-text-template": "~1.2",
|
747 |
"phpunit/php-timer": "^1.0.6",
|
748 |
"phpunit/phpunit-mock-objects": "~2.3",
|
749 |
-
"sebastian/comparator": "~1.
|
750 |
"sebastian/diff": "~1.2",
|
751 |
"sebastian/environment": "~1.3",
|
752 |
"sebastian/exporter": "~1.2",
|
@@ -789,7 +808,7 @@
|
|
789 |
"testing",
|
790 |
"xunit"
|
791 |
],
|
792 |
-
"time": "
|
793 |
},
|
794 |
{
|
795 |
"name": "phpunit/phpunit-mock-objects",
|
@@ -845,26 +864,26 @@
|
|
845 |
"mock",
|
846 |
"xunit"
|
847 |
],
|
848 |
-
"time": "2015-10-
|
849 |
},
|
850 |
{
|
851 |
"name": "sebastian/comparator",
|
852 |
-
"version": "1.2.
|
853 |
"source": {
|
854 |
"type": "git",
|
855 |
"url": "https://github.com/sebastianbergmann/comparator.git",
|
856 |
-
"reference": "
|
857 |
},
|
858 |
"dist": {
|
859 |
"type": "zip",
|
860 |
-
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/
|
861 |
-
"reference": "
|
862 |
"shasum": ""
|
863 |
},
|
864 |
"require": {
|
865 |
"php": ">=5.3.3",
|
866 |
"sebastian/diff": "~1.2",
|
867 |
-
"sebastian/exporter": "~1.2"
|
868 |
},
|
869 |
"require-dev": {
|
870 |
"phpunit/phpunit": "~4.4"
|
@@ -909,27 +928,27 @@
|
|
909 |
"compare",
|
910 |
"equality"
|
911 |
],
|
912 |
-
"time": "
|
913 |
},
|
914 |
{
|
915 |
"name": "sebastian/diff",
|
916 |
-
"version": "1.4.
|
917 |
"source": {
|
918 |
"type": "git",
|
919 |
"url": "https://github.com/sebastianbergmann/diff.git",
|
920 |
-
"reference": "
|
921 |
},
|
922 |
"dist": {
|
923 |
"type": "zip",
|
924 |
-
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/
|
925 |
-
"reference": "
|
926 |
"shasum": ""
|
927 |
},
|
928 |
"require": {
|
929 |
-
"php": "
|
930 |
},
|
931 |
"require-dev": {
|
932 |
-
"phpunit/phpunit": "
|
933 |
},
|
934 |
"type": "library",
|
935 |
"extra": {
|
@@ -961,27 +980,27 @@
|
|
961 |
"keywords": [
|
962 |
"diff"
|
963 |
],
|
964 |
-
"time": "
|
965 |
},
|
966 |
{
|
967 |
"name": "sebastian/environment",
|
968 |
-
"version": "1.3.
|
969 |
"source": {
|
970 |
"type": "git",
|
971 |
"url": "https://github.com/sebastianbergmann/environment.git",
|
972 |
-
"reference": "
|
973 |
},
|
974 |
"dist": {
|
975 |
"type": "zip",
|
976 |
-
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/
|
977 |
-
"reference": "
|
978 |
"shasum": ""
|
979 |
},
|
980 |
"require": {
|
981 |
-
"php": "
|
982 |
},
|
983 |
"require-dev": {
|
984 |
-
"phpunit/phpunit": "
|
985 |
},
|
986 |
"type": "library",
|
987 |
"extra": {
|
@@ -1011,7 +1030,7 @@
|
|
1011 |
"environment",
|
1012 |
"hhvm"
|
1013 |
],
|
1014 |
-
"time": "2016-
|
1015 |
},
|
1016 |
{
|
1017 |
"name": "sebastian/exporter",
|
@@ -1078,7 +1097,7 @@
|
|
1078 |
"export",
|
1079 |
"exporter"
|
1080 |
],
|
1081 |
-
"time": "2016-06-
|
1082 |
},
|
1083 |
{
|
1084 |
"name": "sebastian/global-state",
|
@@ -1129,20 +1148,20 @@
|
|
1129 |
"keywords": [
|
1130 |
"global state"
|
1131 |
],
|
1132 |
-
"time": "2015-10-
|
1133 |
},
|
1134 |
{
|
1135 |
"name": "sebastian/recursion-context",
|
1136 |
-
"version": "1.0.
|
1137 |
"source": {
|
1138 |
"type": "git",
|
1139 |
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
1140 |
-
"reference": "
|
1141 |
},
|
1142 |
"dist": {
|
1143 |
"type": "zip",
|
1144 |
-
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/
|
1145 |
-
"reference": "
|
1146 |
"shasum": ""
|
1147 |
},
|
1148 |
"require": {
|
@@ -1182,7 +1201,7 @@
|
|
1182 |
],
|
1183 |
"description": "Provides functionality to recursively process PHP variables",
|
1184 |
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
1185 |
-
"time": "
|
1186 |
},
|
1187 |
{
|
1188 |
"name": "sebastian/version",
|
@@ -1217,20 +1236,20 @@
|
|
1217 |
],
|
1218 |
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
1219 |
"homepage": "https://github.com/sebastianbergmann/version",
|
1220 |
-
"time": "2015-06-
|
1221 |
},
|
1222 |
{
|
1223 |
"name": "squizlabs/php_codesniffer",
|
1224 |
-
"version": "2.
|
1225 |
"source": {
|
1226 |
"type": "git",
|
1227 |
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
1228 |
-
"reference": "
|
1229 |
},
|
1230 |
"dist": {
|
1231 |
"type": "zip",
|
1232 |
-
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/
|
1233 |
-
"reference": "
|
1234 |
"shasum": ""
|
1235 |
},
|
1236 |
"require": {
|
@@ -1295,20 +1314,20 @@
|
|
1295 |
"phpcs",
|
1296 |
"standards"
|
1297 |
],
|
1298 |
-
"time": "
|
1299 |
},
|
1300 |
{
|
1301 |
"name": "symfony/yaml",
|
1302 |
-
"version": "v2.8.
|
1303 |
"source": {
|
1304 |
"type": "git",
|
1305 |
"url": "https://github.com/symfony/yaml.git",
|
1306 |
-
"reference": "
|
1307 |
},
|
1308 |
"dist": {
|
1309 |
"type": "zip",
|
1310 |
-
"url": "https://api.github.com/repos/symfony/yaml/zipball/
|
1311 |
-
"reference": "
|
1312 |
"shasum": ""
|
1313 |
},
|
1314 |
"require": {
|
@@ -1344,7 +1363,7 @@
|
|
1344 |
],
|
1345 |
"description": "Symfony Yaml Component",
|
1346 |
"homepage": "https://symfony.com",
|
1347 |
-
"time": "
|
1348 |
},
|
1349 |
{
|
1350 |
"name": "tinify/tinify",
|
@@ -1408,20 +1427,20 @@
|
|
1408 |
},
|
1409 |
{
|
1410 |
"name": "wp-coding-standards/wpcs",
|
1411 |
-
"version": "0.
|
1412 |
"source": {
|
1413 |
"type": "git",
|
1414 |
"url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
|
1415 |
-
"reference": "
|
1416 |
},
|
1417 |
"dist": {
|
1418 |
"type": "zip",
|
1419 |
-
"url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/
|
1420 |
-
"reference": "
|
1421 |
"shasum": ""
|
1422 |
},
|
1423 |
"require": {
|
1424 |
-
"squizlabs/php_codesniffer": "
|
1425 |
},
|
1426 |
"type": "library",
|
1427 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -1440,7 +1459,7 @@
|
|
1440 |
"standards",
|
1441 |
"wordpress"
|
1442 |
],
|
1443 |
-
"time": "
|
1444 |
}
|
1445 |
],
|
1446 |
"aliases": [],
|
4 |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
"This file is @generated automatically"
|
6 |
],
|
7 |
+
"content-hash": "d386c26fb644b06ad651ce9af498f57a",
|
|
|
8 |
"packages": [
|
9 |
{
|
10 |
"name": "composer/installers",
|
11 |
+
"version": "v1.3.0",
|
12 |
"source": {
|
13 |
"type": "git",
|
14 |
"url": "https://github.com/composer/installers.git",
|
15 |
+
"reference": "79ad876c7498c0bbfe7eed065b8651c93bfd6045"
|
16 |
},
|
17 |
"dist": {
|
18 |
"type": "zip",
|
19 |
+
"url": "https://api.github.com/repos/composer/installers/zipball/79ad876c7498c0bbfe7eed065b8651c93bfd6045",
|
20 |
+
"reference": "79ad876c7498c0bbfe7eed065b8651c93bfd6045",
|
21 |
"shasum": ""
|
22 |
},
|
23 |
"require": {
|
59 |
"keywords": [
|
60 |
"Craft",
|
61 |
"Dolibarr",
|
62 |
+
"Eliasis",
|
63 |
"Hurad",
|
64 |
"ImageCMS",
|
65 |
+
"Kanboard",
|
66 |
"MODX Evo",
|
67 |
"Mautic",
|
68 |
+
"Maya",
|
69 |
"OXID",
|
70 |
+
"Plentymarkets",
|
71 |
+
"Porto",
|
72 |
"RadPHP",
|
73 |
"SMF",
|
74 |
"Thelia",
|
76 |
"agl",
|
77 |
"aimeos",
|
78 |
"annotatecms",
|
79 |
+
"attogram",
|
80 |
"bitrix",
|
81 |
"cakephp",
|
82 |
"chef",
|
83 |
+
"cockpit",
|
84 |
"codeigniter",
|
85 |
"concrete5",
|
86 |
"croogo",
|
91 |
"fuelphp",
|
92 |
"grav",
|
93 |
"installer",
|
94 |
+
"itop",
|
95 |
"joomla",
|
96 |
"kohana",
|
97 |
"laravel",
|
98 |
+
"lavalite",
|
99 |
"lithium",
|
100 |
"magento",
|
101 |
"mako",
|
106 |
"piwik",
|
107 |
"ppi",
|
108 |
"puppet",
|
109 |
+
"reindex",
|
110 |
"roundcube",
|
111 |
"shopware",
|
112 |
"silverstripe",
|
113 |
+
"sydes",
|
114 |
"symfony",
|
115 |
"typo3",
|
116 |
"wordpress",
|
117 |
+
"yawik",
|
118 |
"zend",
|
119 |
"zikula"
|
120 |
],
|
121 |
+
"time": "2017-04-24T06:37:16+00:00"
|
122 |
}
|
123 |
],
|
124 |
"packages-dev": [
|
174 |
"constructor",
|
175 |
"instantiate"
|
176 |
],
|
177 |
+
"time": "2015-06-14T21:17:01+00:00"
|
178 |
},
|
179 |
{
|
180 |
"name": "facebook/webdriver",
|
181 |
+
"version": "1.1.3",
|
182 |
"source": {
|
183 |
"type": "git",
|
184 |
"url": "https://github.com/facebook/php-webdriver.git",
|
185 |
+
"reference": "b7186fb1bcfda956d237f59face250d06ef47253"
|
186 |
},
|
187 |
"dist": {
|
188 |
"type": "zip",
|
189 |
+
"url": "https://api.github.com/repos/facebook/php-webdriver/zipball/b7186fb1bcfda956d237f59face250d06ef47253",
|
190 |
+
"reference": "b7186fb1bcfda956d237f59face250d06ef47253",
|
191 |
"shasum": ""
|
192 |
},
|
193 |
"require": {
|
195 |
"php": ">=5.3.19"
|
196 |
},
|
197 |
"require-dev": {
|
198 |
+
"friendsofphp/php-cs-fixer": "^1.11",
|
199 |
+
"phpunit/phpunit": "4.6.* || ~5.0",
|
200 |
+
"squizlabs/php_codesniffer": "^2.6"
|
201 |
},
|
202 |
"suggest": {
|
203 |
"phpdocumentor/phpdocumentor": "2.*"
|
220 |
"selenium",
|
221 |
"webdriver"
|
222 |
],
|
223 |
+
"time": "2016-08-10T00:44:08+00:00"
|
224 |
},
|
225 |
{
|
226 |
"name": "hamcrest/hamcrest-php",
|
265 |
"keywords": [
|
266 |
"test"
|
267 |
],
|
268 |
+
"time": "2015-05-11T14:41:42+00:00"
|
269 |
},
|
270 |
{
|
271 |
"name": "mikey179/vfsStream",
|
311 |
],
|
312 |
"description": "Virtual file system to mock the real file system in unit tests.",
|
313 |
"homepage": "http://vfs.bovigo.org/",
|
314 |
+
"time": "2016-07-18T14:02:57+00:00"
|
315 |
},
|
316 |
{
|
317 |
"name": "mockery/mockery",
|
318 |
+
"version": "0.9.9",
|
319 |
"source": {
|
320 |
"type": "git",
|
321 |
+
"url": "https://github.com/mockery/mockery.git",
|
322 |
+
"reference": "6fdb61243844dc924071d3404bb23994ea0b6856"
|
323 |
},
|
324 |
"dist": {
|
325 |
"type": "zip",
|
326 |
+
"url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856",
|
327 |
+
"reference": "6fdb61243844dc924071d3404bb23994ea0b6856",
|
328 |
"shasum": ""
|
329 |
},
|
330 |
"require": {
|
376 |
"test double",
|
377 |
"testing"
|
378 |
],
|
379 |
+
"time": "2017-02-28T12:52:32+00:00"
|
380 |
},
|
381 |
{
|
382 |
"name": "phpdocumentor/reflection-docblock",
|
383 |
+
"version": "2.0.5",
|
384 |
"source": {
|
385 |
"type": "git",
|
386 |
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
387 |
+
"reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b"
|
388 |
},
|
389 |
"dist": {
|
390 |
"type": "zip",
|
391 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
|
392 |
+
"reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
|
393 |
"shasum": ""
|
394 |
},
|
395 |
"require": {
|
425 |
"email": "mike.vanriel@naenius.com"
|
426 |
}
|
427 |
],
|
428 |
+
"time": "2016-01-25T08:17:30+00:00"
|
429 |
},
|
430 |
{
|
431 |
"name": "phpspec/prophecy",
|
432 |
+
"version": "v1.7.0",
|
433 |
"source": {
|
434 |
"type": "git",
|
435 |
"url": "https://github.com/phpspec/prophecy.git",
|
436 |
+
"reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
|
437 |
},
|
438 |
"dist": {
|
439 |
"type": "zip",
|
440 |
+
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
|
441 |
+
"reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
|
442 |
"shasum": ""
|
443 |
},
|
444 |
"require": {
|
445 |
"doctrine/instantiator": "^1.0.2",
|
446 |
"php": "^5.3|^7.0",
|
447 |
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
|
448 |
+
"sebastian/comparator": "^1.1|^2.0",
|
449 |
+
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
|
450 |
},
|
451 |
"require-dev": {
|
452 |
+
"phpspec/phpspec": "^2.5|^3.2",
|
453 |
+
"phpunit/phpunit": "^4.8 || ^5.6.5"
|
454 |
},
|
455 |
"type": "library",
|
456 |
"extra": {
|
488 |
"spy",
|
489 |
"stub"
|
490 |
],
|
491 |
+
"time": "2017-03-02T20:05:34+00:00"
|
492 |
},
|
493 |
{
|
494 |
"name": "phpunit/php-code-coverage",
|
550 |
"testing",
|
551 |
"xunit"
|
552 |
],
|
553 |
+
"time": "2015-10-06T15:47:00+00:00"
|
554 |
},
|
555 |
{
|
556 |
"name": "phpunit/php-file-iterator",
|
557 |
+
"version": "1.4.2",
|
558 |
"source": {
|
559 |
"type": "git",
|
560 |
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
561 |
+
"reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
|
562 |
},
|
563 |
"dist": {
|
564 |
"type": "zip",
|
565 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
|
566 |
+
"reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
|
567 |
"shasum": ""
|
568 |
},
|
569 |
"require": {
|
597 |
"filesystem",
|
598 |
"iterator"
|
599 |
],
|
600 |
+
"time": "2016-10-03T07:40:28+00:00"
|
601 |
},
|
602 |
{
|
603 |
"name": "phpunit/php-text-template",
|
638 |
"keywords": [
|
639 |
"template"
|
640 |
],
|
641 |
+
"time": "2015-06-21T13:50:34+00:00"
|
642 |
},
|
643 |
{
|
644 |
"name": "phpunit/php-timer",
|
645 |
+
"version": "1.0.9",
|
646 |
"source": {
|
647 |
"type": "git",
|
648 |
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
649 |
+
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
|
650 |
},
|
651 |
"dist": {
|
652 |
"type": "zip",
|
653 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
|
654 |
+
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
|
655 |
"shasum": ""
|
656 |
},
|
657 |
"require": {
|
658 |
+
"php": "^5.3.3 || ^7.0"
|
659 |
},
|
660 |
"require-dev": {
|
661 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
|
662 |
},
|
663 |
"type": "library",
|
664 |
+
"extra": {
|
665 |
+
"branch-alias": {
|
666 |
+
"dev-master": "1.0-dev"
|
667 |
+
}
|
668 |
+
},
|
669 |
"autoload": {
|
670 |
"classmap": [
|
671 |
"src/"
|
687 |
"keywords": [
|
688 |
"timer"
|
689 |
],
|
690 |
+
"time": "2017-02-26T11:10:40+00:00"
|
691 |
},
|
692 |
{
|
693 |
"name": "phpunit/php-token-stream",
|
694 |
+
"version": "1.4.11",
|
695 |
"source": {
|
696 |
"type": "git",
|
697 |
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
698 |
+
"reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
|
699 |
},
|
700 |
"dist": {
|
701 |
"type": "zip",
|
702 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
|
703 |
+
"reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
|
704 |
"shasum": ""
|
705 |
},
|
706 |
"require": {
|
736 |
"keywords": [
|
737 |
"tokenizer"
|
738 |
],
|
739 |
+
"time": "2017-02-27T10:12:30+00:00"
|
740 |
},
|
741 |
{
|
742 |
"name": "phpunit/phpunit",
|
743 |
+
"version": "4.8.35",
|
744 |
"source": {
|
745 |
"type": "git",
|
746 |
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
747 |
+
"reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87"
|
748 |
},
|
749 |
"dist": {
|
750 |
"type": "zip",
|
751 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/791b1a67c25af50e230f841ee7a9c6eba507dc87",
|
752 |
+
"reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87",
|
753 |
"shasum": ""
|
754 |
},
|
755 |
"require": {
|
765 |
"phpunit/php-text-template": "~1.2",
|
766 |
"phpunit/php-timer": "^1.0.6",
|
767 |
"phpunit/phpunit-mock-objects": "~2.3",
|
768 |
+
"sebastian/comparator": "~1.2.2",
|
769 |
"sebastian/diff": "~1.2",
|
770 |
"sebastian/environment": "~1.3",
|
771 |
"sebastian/exporter": "~1.2",
|
808 |
"testing",
|
809 |
"xunit"
|
810 |
],
|
811 |
+
"time": "2017-02-06T05:18:07+00:00"
|
812 |
},
|
813 |
{
|
814 |
"name": "phpunit/phpunit-mock-objects",
|
864 |
"mock",
|
865 |
"xunit"
|
866 |
],
|
867 |
+
"time": "2015-10-02T06:51:40+00:00"
|
868 |
},
|
869 |
{
|
870 |
"name": "sebastian/comparator",
|
871 |
+
"version": "1.2.4",
|
872 |
"source": {
|
873 |
"type": "git",
|
874 |
"url": "https://github.com/sebastianbergmann/comparator.git",
|
875 |
+
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
|
876 |
},
|
877 |
"dist": {
|
878 |
"type": "zip",
|
879 |
+
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
|
880 |
+
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
|
881 |
"shasum": ""
|
882 |
},
|
883 |
"require": {
|
884 |
"php": ">=5.3.3",
|
885 |
"sebastian/diff": "~1.2",
|
886 |
+
"sebastian/exporter": "~1.2 || ~2.0"
|
887 |
},
|
888 |
"require-dev": {
|
889 |
"phpunit/phpunit": "~4.4"
|
928 |
"compare",
|
929 |
"equality"
|
930 |
],
|
931 |
+
"time": "2017-01-29T09:50:25+00:00"
|
932 |
},
|
933 |
{
|
934 |
"name": "sebastian/diff",
|
935 |
+
"version": "1.4.3",
|
936 |
"source": {
|
937 |
"type": "git",
|
938 |
"url": "https://github.com/sebastianbergmann/diff.git",
|
939 |
+
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
|
940 |
},
|
941 |
"dist": {
|
942 |
"type": "zip",
|
943 |
+
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
|
944 |
+
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
|
945 |
"shasum": ""
|
946 |
},
|
947 |
"require": {
|
948 |
+
"php": "^5.3.3 || ^7.0"
|
949 |
},
|
950 |
"require-dev": {
|
951 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
|
952 |
},
|
953 |
"type": "library",
|
954 |
"extra": {
|
980 |
"keywords": [
|
981 |
"diff"
|
982 |
],
|
983 |
+
"time": "2017-05-22T07:24:03+00:00"
|
984 |
},
|
985 |
{
|
986 |
"name": "sebastian/environment",
|
987 |
+
"version": "1.3.8",
|
988 |
"source": {
|
989 |
"type": "git",
|
990 |
"url": "https://github.com/sebastianbergmann/environment.git",
|
991 |
+
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
|
992 |
},
|
993 |
"dist": {
|
994 |
"type": "zip",
|
995 |
+
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
|
996 |
+
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
|
997 |
"shasum": ""
|
998 |
},
|
999 |
"require": {
|
1000 |
+
"php": "^5.3.3 || ^7.0"
|
1001 |
},
|
1002 |
"require-dev": {
|
1003 |
+
"phpunit/phpunit": "^4.8 || ^5.0"
|
1004 |
},
|
1005 |
"type": "library",
|
1006 |
"extra": {
|
1030 |
"environment",
|
1031 |
"hhvm"
|
1032 |
],
|
1033 |
+
"time": "2016-08-18T05:49:44+00:00"
|
1034 |
},
|
1035 |
{
|
1036 |
"name": "sebastian/exporter",
|
1097 |
"export",
|
1098 |
"exporter"
|
1099 |
],
|
1100 |
+
"time": "2016-06-17T09:04:28+00:00"
|
1101 |
},
|
1102 |
{
|
1103 |
"name": "sebastian/global-state",
|
1148 |
"keywords": [
|
1149 |
"global state"
|
1150 |
],
|
1151 |
+
"time": "2015-10-12T03:26:01+00:00"
|
1152 |
},
|
1153 |
{
|
1154 |
"name": "sebastian/recursion-context",
|
1155 |
+
"version": "1.0.5",
|
1156 |
"source": {
|
1157 |
"type": "git",
|
1158 |
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
1159 |
+
"reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
|
1160 |
},
|
1161 |
"dist": {
|
1162 |
"type": "zip",
|
1163 |
+
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
|
1164 |
+
"reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
|
1165 |
"shasum": ""
|
1166 |
},
|
1167 |
"require": {
|
1201 |
],
|
1202 |
"description": "Provides functionality to recursively process PHP variables",
|
1203 |
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
1204 |
+
"time": "2016-10-03T07:41:43+00:00"
|
1205 |
},
|
1206 |
{
|
1207 |
"name": "sebastian/version",
|
1236 |
],
|
1237 |
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
1238 |
"homepage": "https://github.com/sebastianbergmann/version",
|
1239 |
+
"time": "2015-06-21T13:59:46+00:00"
|
1240 |
},
|
1241 |
{
|
1242 |
"name": "squizlabs/php_codesniffer",
|
1243 |
+
"version": "2.9.1",
|
1244 |
"source": {
|
1245 |
"type": "git",
|
1246 |
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
1247 |
+
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
|
1248 |
},
|
1249 |
"dist": {
|
1250 |
"type": "zip",
|
1251 |
+
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
|
1252 |
+
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
|
1253 |
"shasum": ""
|
1254 |
},
|
1255 |
"require": {
|
1314 |
"phpcs",
|
1315 |
"standards"
|
1316 |
],
|
1317 |
+
"time": "2017-05-22T02:43:20+00:00"
|
1318 |
},
|
1319 |
{
|
1320 |
"name": "symfony/yaml",
|
1321 |
+
"version": "v2.8.22",
|
1322 |
"source": {
|
1323 |
"type": "git",
|
1324 |
"url": "https://github.com/symfony/yaml.git",
|
1325 |
+
"reference": "4c29dec8d489c4e37cf87ccd7166cd0b0e6a45c5"
|
1326 |
},
|
1327 |
"dist": {
|
1328 |
"type": "zip",
|
1329 |
+
"url": "https://api.github.com/repos/symfony/yaml/zipball/4c29dec8d489c4e37cf87ccd7166cd0b0e6a45c5",
|
1330 |
+
"reference": "4c29dec8d489c4e37cf87ccd7166cd0b0e6a45c5",
|
1331 |
"shasum": ""
|
1332 |
},
|
1333 |
"require": {
|
1363 |
],
|
1364 |
"description": "Symfony Yaml Component",
|
1365 |
"homepage": "https://symfony.com",
|
1366 |
+
"time": "2017-06-01T20:52:29+00:00"
|
1367 |
},
|
1368 |
{
|
1369 |
"name": "tinify/tinify",
|
1427 |
},
|
1428 |
{
|
1429 |
"name": "wp-coding-standards/wpcs",
|
1430 |
+
"version": "0.11.0",
|
1431 |
"source": {
|
1432 |
"type": "git",
|
1433 |
"url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
|
1434 |
+
"reference": "407e4b85f547a5251185f89ceae6599917343388"
|
1435 |
},
|
1436 |
"dist": {
|
1437 |
"type": "zip",
|
1438 |
+
"url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/407e4b85f547a5251185f89ceae6599917343388",
|
1439 |
+
"reference": "407e4b85f547a5251185f89ceae6599917343388",
|
1440 |
"shasum": ""
|
1441 |
},
|
1442 |
"require": {
|
1443 |
+
"squizlabs/php_codesniffer": "^2.8.1"
|
1444 |
},
|
1445 |
"type": "library",
|
1446 |
"notification-url": "https://packagist.org/downloads/",
|
1459 |
"standards",
|
1460 |
"wordpress"
|
1461 |
],
|
1462 |
+
"time": "2017-03-20T23:17:58+00:00"
|
1463 |
}
|
1464 |
],
|
1465 |
"aliases": [],
|
phpcs.xml
CHANGED
@@ -10,6 +10,9 @@
|
|
10 |
</properties>
|
11 |
<exclude-pattern>src/views</exclude-pattern>
|
12 |
</rule>
|
|
|
|
|
|
|
13 |
|
14 |
<file>tiny-compress-images.php</file>
|
15 |
<file>src</file>
|
10 |
</properties>
|
11 |
<exclude-pattern>src/views</exclude-pattern>
|
12 |
</rule>
|
13 |
+
<rule ref="WordPress.WP.I18n.UnorderedPlaceholders">
|
14 |
+
<severity>0</severity>
|
15 |
+
</rule>
|
16 |
|
17 |
<file>tiny-compress-images.php</file>
|
18 |
<file>src</file>
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: TinyPNG
|
|
3 |
Donate link: https://tinypng.com/
|
4 |
Tags: optimize, compress, shrink, resize, faster, fit, scale, improve, images, tinypng, tinyjpg, jpeg, jpg, png, lossy, jpegmini, crunch, minify, smush, save, bandwidth, website, speed, performance, panda, wordpress app
|
5 |
Requires at least: 3.0.6
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag: 2.2.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -110,6 +110,10 @@ A: Everything will keep on working, but newly uploaded images will not be optimi
|
|
110 |
A: Yes! After installing the plugin, go to *Media > Bulk Optimization*, and click on the start button to optimize all unoptimized images in your media library.
|
111 |
|
112 |
== Changelog ==
|
|
|
|
|
|
|
|
|
113 |
= 2.2.2 =
|
114 |
* Improved robustness in case an unexpected network error occurs.
|
115 |
* Fixed false positive warning with Sucuri scanner.
|
3 |
Donate link: https://tinypng.com/
|
4 |
Tags: optimize, compress, shrink, resize, faster, fit, scale, improve, images, tinypng, tinyjpg, jpeg, jpg, png, lossy, jpegmini, crunch, minify, smush, save, bandwidth, website, speed, performance, panda, wordpress app
|
5 |
Requires at least: 3.0.6
|
6 |
+
Tested up to: 4.8
|
7 |
+
Stable tag: 2.2.3
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
110 |
A: Yes! After installing the plugin, go to *Media > Bulk Optimization*, and click on the start button to optimize all unoptimized images in your media library.
|
111 |
|
112 |
== Changelog ==
|
113 |
+
= 2.2.3 =
|
114 |
+
* Website link now goes directly to your dashboard
|
115 |
+
* Fixed compression issue for some fopen users.
|
116 |
+
|
117 |
= 2.2.2 =
|
118 |
* Improved robustness in case an unexpected network error occurs.
|
119 |
* Fixed false positive warning with Sucuri scanner.
|
src/class-tiny-compress-client.php
CHANGED
@@ -66,7 +66,7 @@ class Tiny_Compress_Client extends Tiny_Compress {
|
|
66 |
\Tinify\Tinify::getClient()->request( 'post', '/shrink' );
|
67 |
return true;
|
68 |
|
69 |
-
} catch (\Tinify\Exception $err) {
|
70 |
$this->last_error_code = $err->status;
|
71 |
|
72 |
if ( 429 == $err->status || 400 == $err->status ) {
|
@@ -115,7 +115,7 @@ class Tiny_Compress_Client extends Tiny_Compress {
|
|
115 |
$buffer = $result->toBuffer();
|
116 |
return array( $buffer, $meta );
|
117 |
|
118 |
-
} catch (\Tinify\Exception $err) {
|
119 |
$this->last_error_code = $err->status;
|
120 |
|
121 |
throw new Tiny_Exception(
|
@@ -123,7 +123,7 @@ class Tiny_Compress_Client extends Tiny_Compress {
|
|
123 |
get_class( $err ),
|
124 |
$err->status
|
125 |
);
|
126 |
-
}
|
127 |
}
|
128 |
|
129 |
public function create_key( $email, $options ) {
|
@@ -134,7 +134,7 @@ class Tiny_Compress_Client extends Tiny_Compress {
|
|
134 |
);
|
135 |
|
136 |
\Tinify\createKey( $email, $options );
|
137 |
-
} catch (\Tinify\Exception $err) {
|
138 |
$this->last_error_code = $err->status;
|
139 |
|
140 |
throw new Tiny_Exception(
|
66 |
\Tinify\Tinify::getClient()->request( 'post', '/shrink' );
|
67 |
return true;
|
68 |
|
69 |
+
} catch ( \Tinify\Exception $err ) {
|
70 |
$this->last_error_code = $err->status;
|
71 |
|
72 |
if ( 429 == $err->status || 400 == $err->status ) {
|
115 |
$buffer = $result->toBuffer();
|
116 |
return array( $buffer, $meta );
|
117 |
|
118 |
+
} catch ( \Tinify\Exception $err ) {
|
119 |
$this->last_error_code = $err->status;
|
120 |
|
121 |
throw new Tiny_Exception(
|
123 |
get_class( $err ),
|
124 |
$err->status
|
125 |
);
|
126 |
+
}// End try().
|
127 |
}
|
128 |
|
129 |
public function create_key( $email, $options ) {
|
134 |
);
|
135 |
|
136 |
\Tinify\createKey( $email, $options );
|
137 |
+
} catch ( \Tinify\Exception $err ) {
|
138 |
$this->last_error_code = $err->status;
|
139 |
|
140 |
throw new Tiny_Exception(
|
src/class-tiny-compress-fopen.php
CHANGED
@@ -24,7 +24,7 @@ class Tiny_Compress_Fopen extends Tiny_Compress {
|
|
24 |
private $api_key;
|
25 |
|
26 |
protected static function identifier() {
|
27 |
-
parent::identifier() . ' fopen';
|
28 |
}
|
29 |
|
30 |
protected function __construct( $api_key, $after_compress_callback ) {
|
@@ -193,15 +193,14 @@ class Tiny_Compress_Fopen extends Tiny_Compress {
|
|
193 |
return $res;
|
194 |
}
|
195 |
|
196 |
-
private function request_options( $method, $body = null, $
|
197 |
return array(
|
198 |
'http' => array(
|
199 |
'method' => $method,
|
200 |
-
'header' => array(
|
201 |
-
'Content-type: ' . $content_type,
|
202 |
'Authorization: Basic ' . base64_encode( 'api:' . $this->api_key ),
|
203 |
'User-Agent: ' . self::identifier(),
|
204 |
-
|
205 |
'content' => $body,
|
206 |
'follow_location' => 0,
|
207 |
'max_redirects' => 1, // Necessary for PHP 5.2
|
@@ -226,9 +225,10 @@ class Tiny_Compress_Fopen extends Tiny_Compress {
|
|
226 |
}
|
227 |
|
228 |
if ( $resize_opts || $preserve_opts ) {
|
229 |
-
|
|
|
230 |
} else {
|
231 |
-
return $this->request_options( 'GET'
|
232 |
}
|
233 |
}
|
234 |
|
24 |
private $api_key;
|
25 |
|
26 |
protected static function identifier() {
|
27 |
+
return parent::identifier() . ' fopen';
|
28 |
}
|
29 |
|
30 |
protected function __construct( $api_key, $after_compress_callback ) {
|
193 |
return $res;
|
194 |
}
|
195 |
|
196 |
+
private function request_options( $method, $body = null, $headers = array() ) {
|
197 |
return array(
|
198 |
'http' => array(
|
199 |
'method' => $method,
|
200 |
+
'header' => array_merge( $headers, array(
|
|
|
201 |
'Authorization: Basic ' . base64_encode( 'api:' . $this->api_key ),
|
202 |
'User-Agent: ' . self::identifier(),
|
203 |
+
) ),
|
204 |
'content' => $body,
|
205 |
'follow_location' => 0,
|
206 |
'max_redirects' => 1, // Necessary for PHP 5.2
|
225 |
}
|
226 |
|
227 |
if ( $resize_opts || $preserve_opts ) {
|
228 |
+
$headers = array( 'Content-Type: application/json' );
|
229 |
+
return $this->request_options( 'GET', json_encode( $body ), $headers );
|
230 |
} else {
|
231 |
+
return $this->request_options( 'GET' );
|
232 |
}
|
233 |
}
|
234 |
|
src/class-tiny-compress.php
CHANGED
@@ -70,7 +70,7 @@ abstract class Tiny_Compress {
|
|
70 |
|
71 |
try {
|
72 |
$result = $this->validate();
|
73 |
-
} catch (Tiny_Exception $err) {
|
74 |
if ( $err->get_status() == 401 ) {
|
75 |
$message = 'The key that you have entered is not valid';
|
76 |
} else {
|
@@ -109,7 +109,7 @@ abstract class Tiny_Compress {
|
|
109 |
$resize_opts,
|
110 |
$preserve_opts
|
111 |
);
|
112 |
-
} catch (Tiny_Exception $err) {
|
113 |
$this->call_after_compress_callback();
|
114 |
throw $err;
|
115 |
}
|
70 |
|
71 |
try {
|
72 |
$result = $this->validate();
|
73 |
+
} catch ( Tiny_Exception $err ) {
|
74 |
if ( $err->get_status() == 401 ) {
|
75 |
$message = 'The key that you have entered is not valid';
|
76 |
} else {
|
109 |
$resize_opts,
|
110 |
$preserve_opts
|
111 |
);
|
112 |
+
} catch ( Tiny_Exception $err ) {
|
113 |
$this->call_after_compress_callback();
|
114 |
throw $err;
|
115 |
}
|
src/class-tiny-image-size.php
CHANGED
@@ -43,7 +43,9 @@ class Tiny_Image_Size {
|
|
43 |
}
|
44 |
|
45 |
public function add_tiny_meta_start() {
|
46 |
-
$this->meta = array(
|
|
|
|
|
47 |
}
|
48 |
|
49 |
public function add_tiny_meta( $response ) {
|
43 |
}
|
44 |
|
45 |
public function add_tiny_meta_start() {
|
46 |
+
$this->meta = array(
|
47 |
+
'start' => time(),
|
48 |
+
);
|
49 |
}
|
50 |
|
51 |
public function add_tiny_meta( $response ) {
|
src/class-tiny-image.php
CHANGED
@@ -170,7 +170,7 @@ class Tiny_Image {
|
|
170 |
$response = $compressor->compress_file( $size->filename, $resize, $preserve );
|
171 |
$size->add_tiny_meta( $response );
|
172 |
$success++;
|
173 |
-
} catch (Tiny_Exception $e) {
|
174 |
$size->add_tiny_meta_error( $e );
|
175 |
$failed++;
|
176 |
}
|
@@ -178,7 +178,10 @@ class Tiny_Image {
|
|
178 |
$this->update_tiny_post_meta();
|
179 |
}
|
180 |
}
|
181 |
-
return array(
|
|
|
|
|
|
|
182 |
}
|
183 |
|
184 |
public function compress_retina( $size_name, $path ) {
|
@@ -200,7 +203,7 @@ class Tiny_Image {
|
|
200 |
try {
|
201 |
$response = $compressor->compress_file( $path, false, $preserve );
|
202 |
$size->add_tiny_meta( $response );
|
203 |
-
} catch (Tiny_Exception $e) {
|
204 |
$size->add_tiny_meta_error( $e );
|
205 |
}
|
206 |
$this->update_tiny_post_meta();
|
@@ -240,7 +243,9 @@ class Tiny_Image {
|
|
240 |
|
241 |
public function get_image_sizes() {
|
242 |
$original = isset( $this->sizes[ self::ORIGINAL ] )
|
243 |
-
? array(
|
|
|
|
|
244 |
: array();
|
245 |
$compressed = array();
|
246 |
$uncompressed = array();
|
170 |
$response = $compressor->compress_file( $size->filename, $resize, $preserve );
|
171 |
$size->add_tiny_meta( $response );
|
172 |
$success++;
|
173 |
+
} catch ( Tiny_Exception $e ) {
|
174 |
$size->add_tiny_meta_error( $e );
|
175 |
$failed++;
|
176 |
}
|
178 |
$this->update_tiny_post_meta();
|
179 |
}
|
180 |
}
|
181 |
+
return array(
|
182 |
+
'success' => $success,
|
183 |
+
'failed' => $failed,
|
184 |
+
);
|
185 |
}
|
186 |
|
187 |
public function compress_retina( $size_name, $path ) {
|
203 |
try {
|
204 |
$response = $compressor->compress_file( $path, false, $preserve );
|
205 |
$size->add_tiny_meta( $response );
|
206 |
+
} catch ( Tiny_Exception $e ) {
|
207 |
$size->add_tiny_meta_error( $e );
|
208 |
}
|
209 |
$this->update_tiny_post_meta();
|
243 |
|
244 |
public function get_image_sizes() {
|
245 |
$original = isset( $this->sizes[ self::ORIGINAL ] )
|
246 |
+
? array(
|
247 |
+
self::ORIGINAL => $this->sizes[ self::ORIGINAL ],
|
248 |
+
)
|
249 |
: array();
|
250 |
$compressed = array();
|
251 |
$uncompressed = array();
|
src/class-tiny-plugin.php
CHANGED
@@ -18,7 +18,7 @@
|
|
18 |
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
19 |
*/
|
20 |
class Tiny_Plugin extends Tiny_WP_Base {
|
21 |
-
const VERSION = '2.2.
|
22 |
const MEDIA_COLUMN = self::NAME;
|
23 |
const DATETIME_FORMAT = 'Y-m-d G:i:s';
|
24 |
|
@@ -296,7 +296,9 @@ class Tiny_Plugin extends Tiny_WP_Base {
|
|
296 |
"You don't have permission to upload files.",
|
297 |
'tiny-compress-images'
|
298 |
);
|
299 |
-
echo json_encode( array(
|
|
|
|
|
300 |
exit();
|
301 |
}
|
302 |
if ( empty( $_POST['id'] ) ) {
|
@@ -304,7 +306,9 @@ class Tiny_Plugin extends Tiny_WP_Base {
|
|
304 |
'Not a valid media file.',
|
305 |
'tiny-compress-images'
|
306 |
);
|
307 |
-
echo json_encode( array(
|
|
|
|
|
308 |
exit();
|
309 |
}
|
310 |
$id = intval( $_POST['id'] );
|
@@ -314,7 +318,9 @@ class Tiny_Plugin extends Tiny_WP_Base {
|
|
314 |
'Could not find metadata of media file.',
|
315 |
'tiny-compress-images'
|
316 |
);
|
317 |
-
echo json_encode( array(
|
|
|
|
|
318 |
exit;
|
319 |
}
|
320 |
|
@@ -517,9 +523,12 @@ class Tiny_Plugin extends Tiny_WP_Base {
|
|
517 |
|
518 |
global $wpdb;
|
519 |
return $wpdb->get_results(
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
|
|
|
|
|
|
524 |
}
|
525 |
}
|
18 |
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
19 |
*/
|
20 |
class Tiny_Plugin extends Tiny_WP_Base {
|
21 |
+
const VERSION = '2.2.3';
|
22 |
const MEDIA_COLUMN = self::NAME;
|
23 |
const DATETIME_FORMAT = 'Y-m-d G:i:s';
|
24 |
|
296 |
"You don't have permission to upload files.",
|
297 |
'tiny-compress-images'
|
298 |
);
|
299 |
+
echo json_encode( array(
|
300 |
+
'error' => $message,
|
301 |
+
) );
|
302 |
exit();
|
303 |
}
|
304 |
if ( empty( $_POST['id'] ) ) {
|
306 |
'Not a valid media file.',
|
307 |
'tiny-compress-images'
|
308 |
);
|
309 |
+
echo json_encode( array(
|
310 |
+
'error' => $message,
|
311 |
+
) );
|
312 |
exit();
|
313 |
}
|
314 |
$id = intval( $_POST['id'] );
|
318 |
'Could not find metadata of media file.',
|
319 |
'tiny-compress-images'
|
320 |
);
|
321 |
+
echo json_encode( array(
|
322 |
+
'error' => $message,
|
323 |
+
) );
|
324 |
exit;
|
325 |
}
|
326 |
|
523 |
|
524 |
global $wpdb;
|
525 |
return $wpdb->get_results(
|
526 |
+
$wpdb->prepare(
|
527 |
+
"SELECT ID, post_title FROM $wpdb->posts
|
528 |
+
WHERE post_type = 'attachment' %s
|
529 |
+
AND (post_mime_type = 'image/jpeg' OR post_mime_type = 'image/png')
|
530 |
+
ORDER BY ID DESC",
|
531 |
+
$condition),
|
532 |
+
ARRAY_A);
|
533 |
}
|
534 |
}
|
src/class-tiny-settings.php
CHANGED
@@ -44,7 +44,7 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
44 |
public function xmlrpc_init() {
|
45 |
try {
|
46 |
$this->init_compressor();
|
47 |
-
} catch (Tiny_Exception $e) {
|
48 |
}
|
49 |
}
|
50 |
|
@@ -87,14 +87,14 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
87 |
);
|
88 |
$this->notices->show( 'deprecated', $message, 'notice-warning', false );
|
89 |
}
|
90 |
-
}
|
91 |
|
92 |
try {
|
93 |
$this->init_compressor();
|
94 |
-
} catch (Tiny_Exception $e) {
|
95 |
$this->notices->show(
|
96 |
'compressor_exception',
|
97 |
-
|
98 |
'error', false
|
99 |
);
|
100 |
}
|
@@ -395,7 +395,7 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
395 |
$height = '?';
|
396 |
}
|
397 |
|
398 |
-
$label =
|
399 |
. ' - ' . $width . 'x' . $height;
|
400 |
}
|
401 |
echo '<p>';
|
@@ -424,12 +424,15 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
424 |
$free_images_per_month = floor(
|
425 |
Tiny_Config::MONTHLY_FREE_COMPRESSIONS / $active_sizes_count
|
426 |
);
|
|
|
|
|
|
|
|
|
|
|
427 |
printf( wp_kses( __(
|
428 |
-
'With these settings you can compress '
|
429 |
-
. '<strong>at least %s images</strong>'
|
430 |
-
. ' for free each month.',
|
431 |
'tiny-compress-images'
|
432 |
-
),
|
433 |
|
434 |
if ( self::wr2x_active() ) {
|
435 |
echo '</p>';
|
@@ -520,7 +523,7 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
520 |
$id = sprintf( self::get_prefixed_name( 'preserve_data_%s' ), $name );
|
521 |
$field = sprintf( self::get_prefixed_name( 'preserve_data[%s]' ), $name );
|
522 |
$checked = ( $this->get_preserve_enabled( $name ) ? ' checked="checked"' : '' );
|
523 |
-
$label =
|
524 |
echo '<input type="checkbox" id="' . $id . '" name="' . $field .
|
525 |
'" value="on" ' . $checked . '/>';
|
526 |
echo '<label for="' . $id . '">' . $label . '</label>';
|
@@ -543,7 +546,8 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
543 |
}
|
544 |
|
545 |
public function after_compress_callback( $compressor ) {
|
546 |
-
|
|
|
547 |
$field = self::get_prefixed_name( 'status' );
|
548 |
update_option( $field, $count );
|
549 |
}
|
@@ -660,7 +664,7 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
660 |
'ok' => true,
|
661 |
'message' => null,
|
662 |
);
|
663 |
-
} catch (Tiny_Exception $err) {
|
664 |
list( $message ) = explode( ' (HTTP', $err->getMessage(), 2 );
|
665 |
$status = (object) array(
|
666 |
'ok' => false,
|
@@ -672,9 +676,8 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
672 |
'ok' => false,
|
673 |
'message' => 'This feature is not available on your platform',
|
674 |
);
|
675 |
-
}
|
676 |
|
677 |
-
$status->message = __( $status->message, 'tiny-compress-images' );
|
678 |
echo json_encode( $status );
|
679 |
exit();
|
680 |
}
|
@@ -694,7 +697,6 @@ class Tiny_Settings extends Tiny_WP_Base {
|
|
694 |
update_option( self::get_prefixed_name( 'api_key_pending' ), false );
|
695 |
update_option( self::get_prefixed_name( 'api_key' ), $key );
|
696 |
}
|
697 |
-
$status->message = __( $status->message, 'tiny-compress-images' );
|
698 |
echo json_encode( $status );
|
699 |
exit();
|
700 |
}
|
44 |
public function xmlrpc_init() {
|
45 |
try {
|
46 |
$this->init_compressor();
|
47 |
+
} catch ( Tiny_Exception $e ) {
|
48 |
}
|
49 |
}
|
50 |
|
87 |
);
|
88 |
$this->notices->show( 'deprecated', $message, 'notice-warning', false );
|
89 |
}
|
90 |
+
}// End if().
|
91 |
|
92 |
try {
|
93 |
$this->init_compressor();
|
94 |
+
} catch ( Tiny_Exception $e ) {
|
95 |
$this->notices->show(
|
96 |
'compressor_exception',
|
97 |
+
esc_html( $e->getMessage(), 'tiny-compress-images' ),
|
98 |
'error', false
|
99 |
);
|
100 |
}
|
395 |
$height = '?';
|
396 |
}
|
397 |
|
398 |
+
$label = esc_html( ucfirst( str_replace( '_', ' ', $size ) ) )
|
399 |
. ' - ' . $width . 'x' . $height;
|
400 |
}
|
401 |
echo '<p>';
|
424 |
$free_images_per_month = floor(
|
425 |
Tiny_Config::MONTHLY_FREE_COMPRESSIONS / $active_sizes_count
|
426 |
);
|
427 |
+
|
428 |
+
$strong = array(
|
429 |
+
'strong' => array(),
|
430 |
+
);
|
431 |
+
|
432 |
printf( wp_kses( __(
|
433 |
+
'With these settings you can compress <strong>at least %1$s images</strong> %2$s',
|
|
|
|
|
434 |
'tiny-compress-images'
|
435 |
+
), $strong ), $free_images_per_month, 'for free each month.' );
|
436 |
|
437 |
if ( self::wr2x_active() ) {
|
438 |
echo '</p>';
|
523 |
$id = sprintf( self::get_prefixed_name( 'preserve_data_%s' ), $name );
|
524 |
$field = sprintf( self::get_prefixed_name( 'preserve_data[%s]' ), $name );
|
525 |
$checked = ( $this->get_preserve_enabled( $name ) ? ' checked="checked"' : '' );
|
526 |
+
$label = esc_html( $description, 'tiny-compress-images' );
|
527 |
echo '<input type="checkbox" id="' . $id . '" name="' . $field .
|
528 |
'" value="on" ' . $checked . '/>';
|
529 |
echo '<label for="' . $id . '">' . $label . '</label>';
|
546 |
}
|
547 |
|
548 |
public function after_compress_callback( $compressor ) {
|
549 |
+
$count = $compressor->get_compression_count();
|
550 |
+
if ( ! is_null( $count ) ) {
|
551 |
$field = self::get_prefixed_name( 'status' );
|
552 |
update_option( $field, $count );
|
553 |
}
|
664 |
'ok' => true,
|
665 |
'message' => null,
|
666 |
);
|
667 |
+
} catch ( Tiny_Exception $err ) {
|
668 |
list( $message ) = explode( ' (HTTP', $err->getMessage(), 2 );
|
669 |
$status = (object) array(
|
670 |
'ok' => false,
|
676 |
'ok' => false,
|
677 |
'message' => 'This feature is not available on your platform',
|
678 |
);
|
679 |
+
}// End if().
|
680 |
|
|
|
681 |
echo json_encode( $status );
|
682 |
exit();
|
683 |
}
|
697 |
update_option( self::get_prefixed_name( 'api_key_pending' ), false );
|
698 |
update_option( self::get_prefixed_name( 'api_key' ), $key );
|
699 |
}
|
|
|
700 |
echo json_encode( $status );
|
701 |
exit();
|
702 |
}
|
src/config/{tiny-config.php → class-tiny-config.php}
RENAMED
File without changes
|
src/js/admin.js
CHANGED
@@ -57,7 +57,7 @@
|
|
57 |
if (status.ok) {
|
58 |
var target = jQuery('#tiny-account-status')
|
59 |
if (target.length) {
|
60 |
-
jQuery.get(ajaxurl + '?action=tiny_account_status', function(data) {
|
61 |
jQuery(event.target).attr({disabled: false}).removeClass('loading')
|
62 |
target.replaceWith(data)
|
63 |
})
|
@@ -200,7 +200,7 @@
|
|
200 |
|
201 |
var target = jQuery('#tiny-account-status[data-state=pending]')
|
202 |
if (target.length) {
|
203 |
-
jQuery.get(ajaxurl + '?action=tiny_account_status', function(data) {
|
204 |
target.replaceWith(data)
|
205 |
})
|
206 |
}
|
@@ -214,7 +214,7 @@
|
|
214 |
totalSelectedSizes--;
|
215 |
}
|
216 |
|
217 |
-
var image_count_url = ajaxurl + '?action=tiny_image_sizes_notice&image_sizes_selected=' + totalSelectedSizes
|
218 |
if (propOf('#tinypng_resize_original_enabled', 'checked') && propOf('#tinypng_sizes_0', 'checked')) {
|
219 |
image_count_url += '&resize_original=true'
|
220 |
}
|
@@ -233,4 +233,4 @@
|
|
233 |
jQuery(function() {
|
234 |
jQuery('.tiny-notice.is-dismissible button').unbind('click').click(dismissNotice)
|
235 |
})
|
236 |
-
}).call()
|
57 |
if (status.ok) {
|
58 |
var target = jQuery('#tiny-account-status')
|
59 |
if (target.length) {
|
60 |
+
jQuery.get(ajaxurl + (ajaxurl.indexOf( '?' ) > 0 ? '&' : '?') + 'action=tiny_account_status', function(data) {
|
61 |
jQuery(event.target).attr({disabled: false}).removeClass('loading')
|
62 |
target.replaceWith(data)
|
63 |
})
|
200 |
|
201 |
var target = jQuery('#tiny-account-status[data-state=pending]')
|
202 |
if (target.length) {
|
203 |
+
jQuery.get(ajaxurl + (ajaxurl.indexOf( '?' ) > 0 ? '&' : '?') + 'action=tiny_account_status', function(data) {
|
204 |
target.replaceWith(data)
|
205 |
})
|
206 |
}
|
214 |
totalSelectedSizes--;
|
215 |
}
|
216 |
|
217 |
+
var image_count_url = ajaxurl + (ajaxurl.indexOf( '?' ) > 0 ? '&' : '?') + 'action=tiny_image_sizes_notice&image_sizes_selected=' + totalSelectedSizes
|
218 |
if (propOf('#tinypng_resize_original_enabled', 'checked') && propOf('#tinypng_sizes_0', 'checked')) {
|
219 |
image_count_url += '&resize_original=true'
|
220 |
}
|
233 |
jQuery(function() {
|
234 |
jQuery('.tiny-notice.is-dismissible button').unbind('click').click(dismissNotice)
|
235 |
})
|
236 |
+
}).call()
|
src/views/account-status-connected.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<p class="status"><?php
|
4 |
if ( $status->ok ) {
|
5 |
if ( isset( $status->message ) ) {
|
6 |
-
echo
|
7 |
} else {
|
8 |
echo esc_html__( 'Your account is connected', 'tiny-compress-images' );
|
9 |
}
|
@@ -35,7 +35,7 @@
|
|
35 |
} else {
|
36 |
if ( isset( $status->message ) ) {
|
37 |
echo esc_html__( 'Error', 'tiny-compress-images' ) . ': ';
|
38 |
-
echo
|
39 |
} else {
|
40 |
esc_html__(
|
41 |
'API status could not be checked, enable cURL for more information',
|
@@ -61,11 +61,11 @@
|
|
61 |
<div class="update" style="display: none">
|
62 |
<h4><?php echo esc_html__( 'Change your API key', 'tiny-compress-images' ); ?></h4>
|
63 |
<p class="introduction"><?php
|
64 |
-
$link = sprintf( '<a href="https://tinypng.com/developers" target="_blank">%s</a>',
|
65 |
-
esc_html__( '
|
66 |
);
|
67 |
printf( esc_html__(
|
68 |
-
'Enter your API key. If you have lost your key, go to
|
69 |
'tiny-compress-images'
|
70 |
), $link );
|
71 |
?></p>
|
3 |
<p class="status"><?php
|
4 |
if ( $status->ok ) {
|
5 |
if ( isset( $status->message ) ) {
|
6 |
+
echo esc_html( $status->message, 'tiny-compress-images' );
|
7 |
} else {
|
8 |
echo esc_html__( 'Your account is connected', 'tiny-compress-images' );
|
9 |
}
|
35 |
} else {
|
36 |
if ( isset( $status->message ) ) {
|
37 |
echo esc_html__( 'Error', 'tiny-compress-images' ) . ': ';
|
38 |
+
echo esc_html( $status->message, 'tiny-compress-images' );
|
39 |
} else {
|
40 |
esc_html__(
|
41 |
'API status could not be checked, enable cURL for more information',
|
61 |
<div class="update" style="display: none">
|
62 |
<h4><?php echo esc_html__( 'Change your API key', 'tiny-compress-images' ); ?></h4>
|
63 |
<p class="introduction"><?php
|
64 |
+
$link = sprintf( '<a href="https://tinypng.com/dashboard/developers" target="_blank">%s</a>',
|
65 |
+
esc_html__( 'API dashboard', 'tiny-compress-images' )
|
66 |
);
|
67 |
printf( esc_html__(
|
68 |
+
'Enter your API key. If you have lost your key, go to your %s to retrieve it.',
|
69 |
'tiny-compress-images'
|
70 |
), $link );
|
71 |
?></p>
|
src/views/account-status-create-advanced.php
CHANGED
@@ -36,11 +36,11 @@ $email = trim( $user->user_email );
|
|
36 |
?></h4>
|
37 |
|
38 |
<p class="introduction"><?php
|
39 |
-
$link = sprintf( '<a href="https://tinypng.com/developers" target="_blank">%s</a>',
|
40 |
-
esc_html__( '
|
41 |
);
|
42 |
printf( esc_html__(
|
43 |
-
'Enter your API key. Go to
|
44 |
'tiny-compress-images'
|
45 |
), $link );
|
46 |
?></p>
|
36 |
?></h4>
|
37 |
|
38 |
<p class="introduction"><?php
|
39 |
+
$link = sprintf( '<a href="https://tinypng.com/dashboard/developers" target="_blank">%s</a>',
|
40 |
+
esc_html__( 'API dashboard', 'tiny-compress-images' )
|
41 |
);
|
42 |
printf( esc_html__(
|
43 |
+
'Enter your API key. Go to your %s to retrieve it.',
|
44 |
'tiny-compress-images'
|
45 |
), $link );
|
46 |
?></p>
|
src/views/bulk-optimization.php
CHANGED
@@ -78,7 +78,9 @@ div.tiny-bulk-optimization div.dashboard div.optimize div.progressbar div.progre
|
|
78 |
<tr>
|
79 |
<td class="item">
|
80 |
<h3>
|
81 |
-
<?php echo wp_kses( __( 'Uploaded <br> images', 'tiny-compress-images' ), array(
|
|
|
|
|
82 |
</h3>
|
83 |
<span id="uploaded-images">
|
84 |
<?php echo $stats['uploaded-images']; ?>
|
@@ -86,7 +88,9 @@ div.tiny-bulk-optimization div.dashboard div.optimize div.progressbar div.progre
|
|
86 |
</td>
|
87 |
<td class="item">
|
88 |
<h3>
|
89 |
-
<?php echo wp_kses( __( 'Uncompressed image sizes', 'tiny-compress-images' ), array(
|
|
|
|
|
90 |
</h3>
|
91 |
<span id="optimizable-image-sizes">
|
92 |
<?php echo $stats['available-unoptimised-sizes'] ?>
|
@@ -114,7 +118,7 @@ div.tiny-bulk-optimization div.dashboard div.optimize div.progressbar div.progre
|
|
114 |
if ( '0' == $name ) {
|
115 |
echo '<li>- ' . esc_html__( 'Original image', 'tiny-compress-images' ) . '</li>';
|
116 |
} else {
|
117 |
-
echo '<li>- ' .
|
118 |
}
|
119 |
}
|
120 |
echo '</ul>';
|
@@ -123,16 +127,24 @@ div.tiny-bulk-optimization div.dashboard div.optimize div.progressbar div.progre
|
|
123 |
</p>
|
124 |
<p>
|
125 |
<?php if ( sizeof( $active_tinify_sizes ) > 0 ) { ?>
|
126 |
-
<?php printf( wp_kses( _n( 'For each uploaded image <strong>%d size</strong> is compressed.', 'For each uploaded image <strong>%d sizes</strong> are compressed.', count( $active_tinify_sizes ), 'tiny-compress-images' ), array(
|
|
|
|
|
127 |
<?php } ?>
|
128 |
-
<?php printf( wp_kses( __( 'You can change these settings %s.', 'tiny-compress-images' ), array(
|
|
|
|
|
|
|
|
|
129 |
</p>
|
130 |
</div>
|
131 |
</div>
|
132 |
</td>
|
133 |
<td class="item costs">
|
134 |
<h3>
|
135 |
-
<?php echo wp_kses( __( 'Estimated <br> cost', 'tiny-compress-images' ), array(
|
|
|
|
|
136 |
</h3>
|
137 |
<span id="estimated-cost">$ <?php echo number_format( $estimated_costs, 2 ) ?></span>
|
138 |
<div class="cost-currency">USD</div>
|
@@ -141,8 +153,13 @@ div.tiny-bulk-optimization div.dashboard div.optimize div.progressbar div.progre
|
|
141 |
<span class="dashicons dashicons-info"></span>
|
142 |
<div class="tip">
|
143 |
<p><?php
|
144 |
-
printf( wp_kses( __( 'If you wish to compress more than <strong>%d %s</strong> a month and you are still on a free account %s.', 'tiny-compress-images' ),
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
146 |
?></p>
|
147 |
</div>
|
148 |
</div>
|
78 |
<tr>
|
79 |
<td class="item">
|
80 |
<h3>
|
81 |
+
<?php echo wp_kses( __( 'Uploaded <br> images', 'tiny-compress-images' ), array(
|
82 |
+
'br' => array(),
|
83 |
+
) ) ?>
|
84 |
</h3>
|
85 |
<span id="uploaded-images">
|
86 |
<?php echo $stats['uploaded-images']; ?>
|
88 |
</td>
|
89 |
<td class="item">
|
90 |
<h3>
|
91 |
+
<?php echo wp_kses( __( 'Uncompressed image sizes', 'tiny-compress-images' ), array(
|
92 |
+
'br' => array(),
|
93 |
+
) ) ?>
|
94 |
</h3>
|
95 |
<span id="optimizable-image-sizes">
|
96 |
<?php echo $stats['available-unoptimised-sizes'] ?>
|
118 |
if ( '0' == $name ) {
|
119 |
echo '<li>- ' . esc_html__( 'Original image', 'tiny-compress-images' ) . '</li>';
|
120 |
} else {
|
121 |
+
echo '<li>- ' . esc_html( ucfirst( $name ) ) . '</li>';
|
122 |
}
|
123 |
}
|
124 |
echo '</ul>';
|
127 |
</p>
|
128 |
<p>
|
129 |
<?php if ( sizeof( $active_tinify_sizes ) > 0 ) { ?>
|
130 |
+
<?php printf( wp_kses( _n( 'For each uploaded image <strong>%d size</strong> is compressed.', 'For each uploaded image <strong>%d sizes</strong> are compressed.', count( $active_tinify_sizes ), 'tiny-compress-images' ), array(
|
131 |
+
'strong' => array(),
|
132 |
+
) ), count( $active_tinify_sizes ) ) ?>
|
133 |
<?php } ?>
|
134 |
+
<?php printf( wp_kses( __( 'You can change these settings %s.', 'tiny-compress-images' ), array(
|
135 |
+
'a' => array(
|
136 |
+
'href' => array(),
|
137 |
+
),
|
138 |
+
) ), '<a href=' . admin_url( 'options-media.php#tiny-compress-images' ) . '>' . __( 'here', 'tiny-compress-images' ) . '</a>' )?>
|
139 |
</p>
|
140 |
</div>
|
141 |
</div>
|
142 |
</td>
|
143 |
<td class="item costs">
|
144 |
<h3>
|
145 |
+
<?php echo wp_kses( __( 'Estimated <br> cost', 'tiny-compress-images' ), array(
|
146 |
+
'br' => array(),
|
147 |
+
) ) ?>
|
148 |
</h3>
|
149 |
<span id="estimated-cost">$ <?php echo number_format( $estimated_costs, 2 ) ?></span>
|
150 |
<div class="cost-currency">USD</div>
|
153 |
<span class="dashicons dashicons-info"></span>
|
154 |
<div class="tip">
|
155 |
<p><?php
|
156 |
+
printf( wp_kses( __( 'If you wish to compress more than <strong>%1$d %2$s</strong> a month and you are still on a free account %3$s.', 'tiny-compress-images' ),
|
157 |
+
array(
|
158 |
+
'strong' => array(),
|
159 |
+
'a' => array(
|
160 |
+
'href' => array(),
|
161 |
+
),
|
162 |
+
) ), Tiny_Config::MONTHLY_FREE_COMPRESSIONS, esc_html__( 'image sizes', 'tiny-compress-images' ), '<a href="https://tinypng.com/dashboard/developers">' . esc_html__( ' upgrade here', 'tiny-compress-images' ) . '</a>' );
|
163 |
?></p>
|
164 |
</div>
|
165 |
</div>
|
src/views/compress-details.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
$available_sizes = array_keys( $this->settings->get_sizes() );
|
4 |
-
$active_sizes = $this->settings->get_sizes()
|
|
|
5 |
$active_tinify_sizes = $this->settings->get_active_tinify_sizes();
|
6 |
$error = $tiny_image->get_latest_error();
|
7 |
$total = $tiny_image->get_count( array( 'modified', 'missing', 'has_been_compressed', 'compressed' ) );
|
@@ -31,7 +32,9 @@ ksort( $size_exists );
|
|
31 |
<span class="icon spinner hidden"></span>
|
32 |
<?php if ( $total['has_been_compressed'] > 0 || (0 == $total['has_been_compressed'] && 0 == $available_unoptimized_sizes) ) { ?>
|
33 |
<span class="message">
|
34 |
-
<?php printf( wp_kses( _n( '<strong>%d</strong> size compressed', '<strong>%d</strong> sizes compressed', $total['has_been_compressed'], 'tiny-compress-images' ), array(
|
|
|
|
|
35 |
</span>
|
36 |
<br/>
|
37 |
<?php } ?>
|
@@ -49,7 +52,7 @@ ksort( $size_exists );
|
|
49 |
<?php } ?>
|
50 |
<?php if ( $error ) { ?>
|
51 |
<span class="message error_message">
|
52 |
-
<?php echo esc_html__( 'Latest error', 'tiny-compress-images' ) . ': ' .
|
53 |
</span>
|
54 |
<br/>
|
55 |
<?php } ?>
|
@@ -87,7 +90,7 @@ ksort( $size_exists );
|
|
87 |
<tr class="<?php echo ( 0 == $i % 2 ) ? 'even' : 'odd' ?>">
|
88 |
<?php
|
89 |
echo '<td>';
|
90 |
-
echo ( Tiny_Image::is_original( $size_name ) ? esc_html__( 'Original', 'tiny-compress-images' ) :
|
91 |
echo ' ';
|
92 |
if ( ! array_key_exists( $size_name, $active_sizes ) && ! Tiny_Image::is_retina( $size_name ) ) {
|
93 |
echo '<em>' . esc_html__( '(not in use)', 'tiny-compress-images' ) . '</em>';
|
@@ -104,7 +107,7 @@ ksort( $size_exists );
|
|
104 |
|
105 |
if ( $size->is_duplicate() ) {
|
106 |
echo '<td>-</td>';
|
107 |
-
printf( '<td colspan=2><em>' . esc_html__( 'Same file as "%s"', 'tiny-compress-images' ) . '</em></td>',
|
108 |
} elseif ( $size->has_been_compressed() ) {
|
109 |
echo '<td>' . size_format( $size->meta['input']['size'], 1 ) . '</td>';
|
110 |
echo '<td>' . size_format( $size->meta['output']['size'], 1 ) . '</td>';
|
@@ -128,7 +131,7 @@ ksort( $size_exists );
|
|
128 |
?>
|
129 |
</tr><?php
|
130 |
$i++;
|
131 |
-
}
|
132 |
if ( $image_statistics['image_sizes_optimized'] > 0 ) { ?>
|
133 |
<tfoot>
|
134 |
<tr>
|
@@ -145,7 +148,7 @@ ksort( $size_exists );
|
|
145 |
<strong>
|
146 |
<?php
|
147 |
if ( $size_before - $size_after ) {
|
148 |
-
printf( esc_html__( 'Total savings
|
149 |
( 1 - $size_after / floatval( $size_before ) ) * 100,
|
150 |
size_format( $size_before - $size_after, 1 )
|
151 |
);
|
1 |
<?php
|
2 |
|
3 |
$available_sizes = array_keys( $this->settings->get_sizes() );
|
4 |
+
$active_sizes = $this->settings->get_sizes();
|
5 |
+
;
|
6 |
$active_tinify_sizes = $this->settings->get_active_tinify_sizes();
|
7 |
$error = $tiny_image->get_latest_error();
|
8 |
$total = $tiny_image->get_count( array( 'modified', 'missing', 'has_been_compressed', 'compressed' ) );
|
32 |
<span class="icon spinner hidden"></span>
|
33 |
<?php if ( $total['has_been_compressed'] > 0 || (0 == $total['has_been_compressed'] && 0 == $available_unoptimized_sizes) ) { ?>
|
34 |
<span class="message">
|
35 |
+
<?php printf( wp_kses( _n( '<strong>%d</strong> size compressed', '<strong>%d</strong> sizes compressed', $total['has_been_compressed'], 'tiny-compress-images' ), array(
|
36 |
+
'strong' => array(),
|
37 |
+
) ), $total['has_been_compressed'] ) ?>
|
38 |
</span>
|
39 |
<br/>
|
40 |
<?php } ?>
|
52 |
<?php } ?>
|
53 |
<?php if ( $error ) { ?>
|
54 |
<span class="message error_message">
|
55 |
+
<?php echo esc_html__( 'Latest error', 'tiny-compress-images' ) . ': ' . esc_html( $error, 'tiny-compress-images' ) ?>
|
56 |
</span>
|
57 |
<br/>
|
58 |
<?php } ?>
|
90 |
<tr class="<?php echo ( 0 == $i % 2 ) ? 'even' : 'odd' ?>">
|
91 |
<?php
|
92 |
echo '<td>';
|
93 |
+
echo ( Tiny_Image::is_original( $size_name ) ? esc_html__( 'Original', 'tiny-compress-images' ) : esc_html( ucfirst( rtrim( $size_name, '_wr2x' ) ) ) );
|
94 |
echo ' ';
|
95 |
if ( ! array_key_exists( $size_name, $active_sizes ) && ! Tiny_Image::is_retina( $size_name ) ) {
|
96 |
echo '<em>' . esc_html__( '(not in use)', 'tiny-compress-images' ) . '</em>';
|
107 |
|
108 |
if ( $size->is_duplicate() ) {
|
109 |
echo '<td>-</td>';
|
110 |
+
printf( '<td colspan=2><em>' . esc_html__( 'Same file as "%s"', 'tiny-compress-images' ) . '</em></td>', esc_html( ucfirst( $size->duplicate_of_size() ) ) );
|
111 |
} elseif ( $size->has_been_compressed() ) {
|
112 |
echo '<td>' . size_format( $size->meta['input']['size'], 1 ) . '</td>';
|
113 |
echo '<td>' . size_format( $size->meta['output']['size'], 1 ) . '</td>';
|
131 |
?>
|
132 |
</tr><?php
|
133 |
$i++;
|
134 |
+
}// End foreach().
|
135 |
if ( $image_statistics['image_sizes_optimized'] > 0 ) { ?>
|
136 |
<tfoot>
|
137 |
<tr>
|
148 |
<strong>
|
149 |
<?php
|
150 |
if ( $size_before - $size_after ) {
|
151 |
+
printf( esc_html__( 'Total savings %1$.0f%% (%2$s)', 'tiny-compress-images' ),
|
152 |
( 1 - $size_after / floatval( $size_before ) ) * 100,
|
153 |
size_format( $size_before - $size_after, 1 )
|
154 |
);
|
src/views/dashboard-widget.php
CHANGED
@@ -26,18 +26,29 @@ div#optimization-chart {
|
|
26 |
<div class="media-library-optimized" id="widget-not-optimized">
|
27 |
<p>
|
28 |
<?php printf( esc_html__( 'Hi %s, you haven’t compressed any images in your media library.', 'tiny-compress-images' ), $this->friendly_user_name() ) ?>
|
29 |
-
<?php printf( wp_kses( __( 'If you like you can to optimize your whole library in one go with the %s page.', 'tiny-compress-images' ), array(
|
|
|
|
|
|
|
|
|
30 |
</p>
|
31 |
</div>
|
32 |
<div class="media-library-optimized" id="widget-full-optimized">
|
33 |
<p><?php printf( esc_html__( '%s, this is great! Your entire library is optimized!', 'tiny-compress-images' ), $this->friendly_user_name() ) ?></p>
|
34 |
-
<p id="ie8-compressed"><?php printf( wp_kses( __( 'You have <strong>saved %s</strong> of your media library size.', 'tiny-compress-images' ), array(
|
|
|
|
|
|
|
35 |
</div>
|
36 |
<div class="media-library-optimized" id="widget-half-optimized">
|
37 |
<p>
|
38 |
<?php printf( esc_html__( '%s, you are doing good.', 'tiny-compress-images' ), $this->friendly_user_name() ) ?>
|
39 |
<?php printf( esc_html__( 'With your current settings you can still optimize %1$s image sizes from your %2$s uploaded JPEG and PNG images.', 'tiny-compress-images' ), '<span id="unoptimised-sizes"></span>', '<span id="uploaded-images"></span>' ) ?>
|
40 |
-
<?php printf( wp_kses( __( 'Start the %s to optimize the remainder of your library.', 'tiny-compress-images' ), array(
|
|
|
|
|
|
|
|
|
41 |
</p>
|
42 |
</div>
|
43 |
|
26 |
<div class="media-library-optimized" id="widget-not-optimized">
|
27 |
<p>
|
28 |
<?php printf( esc_html__( 'Hi %s, you haven’t compressed any images in your media library.', 'tiny-compress-images' ), $this->friendly_user_name() ) ?>
|
29 |
+
<?php printf( wp_kses( __( 'If you like you can to optimize your whole library in one go with the %s page.', 'tiny-compress-images' ), array(
|
30 |
+
'a' => array(
|
31 |
+
'href' => array(),
|
32 |
+
),
|
33 |
+
) ), $link )?>
|
34 |
</p>
|
35 |
</div>
|
36 |
<div class="media-library-optimized" id="widget-full-optimized">
|
37 |
<p><?php printf( esc_html__( '%s, this is great! Your entire library is optimized!', 'tiny-compress-images' ), $this->friendly_user_name() ) ?></p>
|
38 |
+
<p id="ie8-compressed"><?php printf( wp_kses( __( 'You have <strong>saved %s</strong> of your media library size.', 'tiny-compress-images' ), array(
|
39 |
+
'span' => array(),
|
40 |
+
'strong' => array(),
|
41 |
+
) ), '<span></span>%' )?></p>
|
42 |
</div>
|
43 |
<div class="media-library-optimized" id="widget-half-optimized">
|
44 |
<p>
|
45 |
<?php printf( esc_html__( '%s, you are doing good.', 'tiny-compress-images' ), $this->friendly_user_name() ) ?>
|
46 |
<?php printf( esc_html__( 'With your current settings you can still optimize %1$s image sizes from your %2$s uploaded JPEG and PNG images.', 'tiny-compress-images' ), '<span id="unoptimised-sizes"></span>', '<span id="uploaded-images"></span>' ) ?>
|
47 |
+
<?php printf( wp_kses( __( 'Start the %s to optimize the remainder of your library.', 'tiny-compress-images' ), array(
|
48 |
+
'a' => array(
|
49 |
+
'href' => array(),
|
50 |
+
),
|
51 |
+
) ), $link )?>
|
52 |
</p>
|
53 |
</div>
|
54 |
|
tiny-compress-images.php
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
/**
|
3 |
* Plugin Name: Compress JPEG & PNG images
|
4 |
* Description: Speed up your website. Optimize your JPEG and PNG images automatically with TinyPNG.
|
5 |
-
* Version: 2.2.
|
6 |
* Author: TinyPNG
|
7 |
* Author URI: https://tinypng.com
|
8 |
* Text Domain: tiny-compress-images
|
9 |
* License: GPLv2 or later
|
10 |
*/
|
11 |
|
12 |
-
require dirname( __FILE__ ) . '/src/config/tiny-config.php';
|
13 |
require dirname( __FILE__ ) . '/src/class-tiny-php.php';
|
14 |
require dirname( __FILE__ ) . '/src/class-tiny-wp-base.php';
|
15 |
require dirname( __FILE__ ) . '/src/class-tiny-exception.php';
|
2 |
/**
|
3 |
* Plugin Name: Compress JPEG & PNG images
|
4 |
* Description: Speed up your website. Optimize your JPEG and PNG images automatically with TinyPNG.
|
5 |
+
* Version: 2.2.3
|
6 |
* Author: TinyPNG
|
7 |
* Author URI: https://tinypng.com
|
8 |
* Text Domain: tiny-compress-images
|
9 |
* License: GPLv2 or later
|
10 |
*/
|
11 |
|
12 |
+
require dirname( __FILE__ ) . '/src/config/class-tiny-config.php';
|
13 |
require dirname( __FILE__ ) . '/src/class-tiny-php.php';
|
14 |
require dirname( __FILE__ ) . '/src/class-tiny-wp-base.php';
|
15 |
require dirname( __FILE__ ) . '/src/class-tiny-exception.php';
|