Compress JPEG & PNG images - Version 2.2.3

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 Icon 128x128 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 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": "~1.1",
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.9"
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": "af416bb38474d9d4325289fd79e9fcc0",
8
- "content-hash": "afada1647f228ed98b0ff2738fa60c18",
9
  "packages": [
10
  {
11
  "name": "composer/installers",
12
- "version": "v1.1.0",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/composer/installers.git",
16
- "reference": "a3595c5272a6f247228abb20076ed27321e4aae9"
17
  },
18
  "dist": {
19
  "type": "zip",
20
- "url": "https://api.github.com/repos/composer/installers/zipball/a3595c5272a6f247228abb20076ed27321e4aae9",
21
- "reference": "a3595c5272a6f247228abb20076ed27321e4aae9",
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": "2016-07-05 06:18:20"
111
  }
112
  ],
113
  "packages-dev": [
@@ -163,20 +174,20 @@
163
  "constructor",
164
  "instantiate"
165
  ],
166
- "time": "2015-06-14 21:17:01"
167
  },
168
  {
169
  "name": "facebook/webdriver",
170
- "version": "1.1.2",
171
  "source": {
172
  "type": "git",
173
  "url": "https://github.com/facebook/php-webdriver.git",
174
- "reference": "0b889d7de7461439f8a3bbcca46e0f696cb27986"
175
  },
176
  "dist": {
177
  "type": "zip",
178
- "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/0b889d7de7461439f8a3bbcca46e0f696cb27986",
179
- "reference": "0b889d7de7461439f8a3bbcca46e0f696cb27986",
180
  "shasum": ""
181
  },
182
  "require": {
@@ -184,7 +195,9 @@
184
  "php": ">=5.3.19"
185
  },
186
  "require-dev": {
187
- "phpunit/phpunit": "4.6.*"
 
 
188
  },
189
  "suggest": {
190
  "phpdocumentor/phpdocumentor": "2.*"
@@ -207,7 +220,7 @@
207
  "selenium",
208
  "webdriver"
209
  ],
210
- "time": "2016-06-04 00:02:34"
211
  },
212
  {
213
  "name": "hamcrest/hamcrest-php",
@@ -252,7 +265,7 @@
252
  "keywords": [
253
  "test"
254
  ],
255
- "time": "2015-05-11 14:41:42"
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-18 14:02:57"
302
  },
303
  {
304
  "name": "mockery/mockery",
305
- "version": "0.9.5",
306
  "source": {
307
  "type": "git",
308
- "url": "https://github.com/padraic/mockery.git",
309
- "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2"
310
  },
311
  "dist": {
312
  "type": "zip",
313
- "url": "https://api.github.com/repos/padraic/mockery/zipball/4db079511a283e5aba1b3c2fb19037c645e70fc2",
314
- "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2",
315
  "shasum": ""
316
  },
317
  "require": {
@@ -363,20 +376,20 @@
363
  "test double",
364
  "testing"
365
  ],
366
- "time": "2016-05-22 21:52:33"
367
  },
368
  {
369
  "name": "phpdocumentor/reflection-docblock",
370
- "version": "2.0.4",
371
  "source": {
372
  "type": "git",
373
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
374
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
375
  },
376
  "dist": {
377
  "type": "zip",
378
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
379
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
380
  "shasum": ""
381
  },
382
  "require": {
@@ -412,31 +425,32 @@
412
  "email": "mike.vanriel@naenius.com"
413
  }
414
  ],
415
- "time": "2015-02-03 12:10:50"
416
  },
417
  {
418
  "name": "phpspec/prophecy",
419
- "version": "v1.6.1",
420
  "source": {
421
  "type": "git",
422
  "url": "https://github.com/phpspec/prophecy.git",
423
- "reference": "58a8137754bc24b25740d4281399a4a3596058e0"
424
  },
425
  "dist": {
426
  "type": "zip",
427
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0",
428
- "reference": "58a8137754bc24b25740d4281399a4a3596058e0",
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.0"
 
440
  },
441
  "type": "library",
442
  "extra": {
@@ -474,7 +488,7 @@
474
  "spy",
475
  "stub"
476
  ],
477
- "time": "2016-06-07 08:13:47"
478
  },
479
  {
480
  "name": "phpunit/php-code-coverage",
@@ -536,20 +550,20 @@
536
  "testing",
537
  "xunit"
538
  ],
539
- "time": "2015-10-06 15:47:00"
540
  },
541
  {
542
  "name": "phpunit/php-file-iterator",
543
- "version": "1.4.1",
544
  "source": {
545
  "type": "git",
546
  "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
547
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
548
  },
549
  "dist": {
550
  "type": "zip",
551
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
552
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
553
  "shasum": ""
554
  },
555
  "require": {
@@ -583,7 +597,7 @@
583
  "filesystem",
584
  "iterator"
585
  ],
586
- "time": "2015-06-21 13:08:43"
587
  },
588
  {
589
  "name": "phpunit/php-text-template",
@@ -624,29 +638,34 @@
624
  "keywords": [
625
  "template"
626
  ],
627
- "time": "2015-06-21 13:50:34"
628
  },
629
  {
630
  "name": "phpunit/php-timer",
631
- "version": "1.0.8",
632
  "source": {
633
  "type": "git",
634
  "url": "https://github.com/sebastianbergmann/php-timer.git",
635
- "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
636
  },
637
  "dist": {
638
  "type": "zip",
639
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
640
- "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
641
  "shasum": ""
642
  },
643
  "require": {
644
- "php": ">=5.3.3"
645
  },
646
  "require-dev": {
647
- "phpunit/phpunit": "~4|~5"
648
  },
649
  "type": "library",
 
 
 
 
 
650
  "autoload": {
651
  "classmap": [
652
  "src/"
@@ -668,20 +687,20 @@
668
  "keywords": [
669
  "timer"
670
  ],
671
- "time": "2016-05-12 18:03:57"
672
  },
673
  {
674
  "name": "phpunit/php-token-stream",
675
- "version": "1.4.8",
676
  "source": {
677
  "type": "git",
678
  "url": "https://github.com/sebastianbergmann/php-token-stream.git",
679
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
680
  },
681
  "dist": {
682
  "type": "zip",
683
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
684
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
685
  "shasum": ""
686
  },
687
  "require": {
@@ -717,20 +736,20 @@
717
  "keywords": [
718
  "tokenizer"
719
  ],
720
- "time": "2015-09-15 10:49:45"
721
  },
722
  {
723
  "name": "phpunit/phpunit",
724
- "version": "4.8.27",
725
  "source": {
726
  "type": "git",
727
  "url": "https://github.com/sebastianbergmann/phpunit.git",
728
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
729
  },
730
  "dist": {
731
  "type": "zip",
732
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
733
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
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.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": "2016-07-21 06:48:14"
793
  },
794
  {
795
  "name": "phpunit/phpunit-mock-objects",
@@ -845,26 +864,26 @@
845
  "mock",
846
  "xunit"
847
  ],
848
- "time": "2015-10-02 06:51:40"
849
  },
850
  {
851
  "name": "sebastian/comparator",
852
- "version": "1.2.0",
853
  "source": {
854
  "type": "git",
855
  "url": "https://github.com/sebastianbergmann/comparator.git",
856
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
857
  },
858
  "dist": {
859
  "type": "zip",
860
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
861
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
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": "2015-07-26 15:48:44"
913
  },
914
  {
915
  "name": "sebastian/diff",
916
- "version": "1.4.1",
917
  "source": {
918
  "type": "git",
919
  "url": "https://github.com/sebastianbergmann/diff.git",
920
- "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
921
  },
922
  "dist": {
923
  "type": "zip",
924
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
925
- "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
926
  "shasum": ""
927
  },
928
  "require": {
929
- "php": ">=5.3.3"
930
  },
931
  "require-dev": {
932
- "phpunit/phpunit": "~4.8"
933
  },
934
  "type": "library",
935
  "extra": {
@@ -961,27 +980,27 @@
961
  "keywords": [
962
  "diff"
963
  ],
964
- "time": "2015-12-08 07:14:41"
965
  },
966
  {
967
  "name": "sebastian/environment",
968
- "version": "1.3.7",
969
  "source": {
970
  "type": "git",
971
  "url": "https://github.com/sebastianbergmann/environment.git",
972
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
973
  },
974
  "dist": {
975
  "type": "zip",
976
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
977
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
978
  "shasum": ""
979
  },
980
  "require": {
981
- "php": ">=5.3.3"
982
  },
983
  "require-dev": {
984
- "phpunit/phpunit": "~4.4"
985
  },
986
  "type": "library",
987
  "extra": {
@@ -1011,7 +1030,7 @@
1011
  "environment",
1012
  "hhvm"
1013
  ],
1014
- "time": "2016-05-17 03:18:57"
1015
  },
1016
  {
1017
  "name": "sebastian/exporter",
@@ -1078,7 +1097,7 @@
1078
  "export",
1079
  "exporter"
1080
  ],
1081
- "time": "2016-06-17 09:04:28"
1082
  },
1083
  {
1084
  "name": "sebastian/global-state",
@@ -1129,20 +1148,20 @@
1129
  "keywords": [
1130
  "global state"
1131
  ],
1132
- "time": "2015-10-12 03:26:01"
1133
  },
1134
  {
1135
  "name": "sebastian/recursion-context",
1136
- "version": "1.0.2",
1137
  "source": {
1138
  "type": "git",
1139
  "url": "https://github.com/sebastianbergmann/recursion-context.git",
1140
- "reference": "913401df809e99e4f47b27cdd781f4a258d58791"
1141
  },
1142
  "dist": {
1143
  "type": "zip",
1144
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
1145
- "reference": "913401df809e99e4f47b27cdd781f4a258d58791",
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": "2015-11-11 19:50:13"
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-21 13:59:46"
1221
  },
1222
  {
1223
  "name": "squizlabs/php_codesniffer",
1224
- "version": "2.6.2",
1225
  "source": {
1226
  "type": "git",
1227
  "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
1228
- "reference": "4edb770cb853def6e60c93abb088ad5ac2010c83"
1229
  },
1230
  "dist": {
1231
  "type": "zip",
1232
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/4edb770cb853def6e60c93abb088ad5ac2010c83",
1233
- "reference": "4edb770cb853def6e60c93abb088ad5ac2010c83",
1234
  "shasum": ""
1235
  },
1236
  "require": {
@@ -1295,20 +1314,20 @@
1295
  "phpcs",
1296
  "standards"
1297
  ],
1298
- "time": "2016-07-13 23:29:13"
1299
  },
1300
  {
1301
  "name": "symfony/yaml",
1302
- "version": "v2.8.9",
1303
  "source": {
1304
  "type": "git",
1305
  "url": "https://github.com/symfony/yaml.git",
1306
- "reference": "0ceab136f43ed9d3e97b3eea32a7855dc50c121d"
1307
  },
1308
  "dist": {
1309
  "type": "zip",
1310
- "url": "https://api.github.com/repos/symfony/yaml/zipball/0ceab136f43ed9d3e97b3eea32a7855dc50c121d",
1311
- "reference": "0ceab136f43ed9d3e97b3eea32a7855dc50c121d",
1312
  "shasum": ""
1313
  },
1314
  "require": {
@@ -1344,7 +1363,7 @@
1344
  ],
1345
  "description": "Symfony Yaml Component",
1346
  "homepage": "https://symfony.com",
1347
- "time": "2016-07-17 09:06:15"
1348
  },
1349
  {
1350
  "name": "tinify/tinify",
@@ -1408,20 +1427,20 @@
1408
  },
1409
  {
1410
  "name": "wp-coding-standards/wpcs",
1411
- "version": "0.9.0",
1412
  "source": {
1413
  "type": "git",
1414
  "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
1415
- "reference": "b415094aa5fd24da6eba2295323bcff840902dd3"
1416
  },
1417
  "dist": {
1418
  "type": "zip",
1419
- "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/b415094aa5fd24da6eba2295323bcff840902dd3",
1420
- "reference": "b415094aa5fd24da6eba2295323bcff840902dd3",
1421
  "shasum": ""
1422
  },
1423
  "require": {
1424
- "squizlabs/php_codesniffer": "~2.2"
1425
  },
1426
  "type": "library",
1427
  "notification-url": "https://packagist.org/downloads/",
@@ -1440,7 +1459,7 @@
1440
  "standards",
1441
  "wordpress"
1442
  ],
1443
- "time": "2016-02-01 16:14:59"
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
7
- Stable tag: 2.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, $content_type = 'image/png' ) {
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
- return $this->request_options( 'GET', json_encode( $body ), 'application/json' );
 
230
  } else {
231
- return $this->request_options( 'GET', null );
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( 'start' => time() );
 
 
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( 'success' => $success, 'failed' => $failed );
 
 
 
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( self::ORIGINAL => $this->sizes[ self::ORIGINAL ] )
 
 
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.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( 'error' => $message ) );
 
 
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( 'error' => $message ) );
 
 
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( 'error' => $message ) );
 
 
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
- "SELECT ID, post_title FROM $wpdb->posts
521
- WHERE post_type = 'attachment' $condition
522
- AND (post_mime_type = 'image/jpeg' OR post_mime_type = 'image/png')
523
- ORDER BY ID DESC", ARRAY_A);
 
 
 
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
- esc_html__( $e->getMessage(), 'tiny-compress-images' ),
98
  'error', false
99
  );
100
  }
@@ -395,7 +395,7 @@ class Tiny_Settings extends Tiny_WP_Base {
395
  $height = '?';
396
  }
397
 
398
- $label = esc_html__( ucfirst( str_replace( '_', ' ', $size ) ) )
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
- ), array( 'strong' => array() ) ), $free_images_per_month );
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 = esc_html__( $description, 'tiny-compress-images' );
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
- if ( ! is_null( $count = $compressor->get_compression_count() ) ) {
 
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 esc_html__( $status->message, 'tiny-compress-images' );
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 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,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__( 'TinyPNG developer section', 'tiny-compress-images' )
66
  );
67
  printf( esc_html__(
68
- 'Enter your API key. If you have lost your key, go to the %s to retrieve it.',
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__( 'TinyPNG developer section', 'tiny-compress-images' )
41
  );
42
  printf( esc_html__(
43
- 'Enter your API key. Go to the %s to retrieve it.',
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( 'br' => 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( 'br' => 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>- ' . esc_html__( ucfirst( $name ) ) . '</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( 'strong' => array() ) ), count( $active_tinify_sizes ) ) ?>
 
 
127
  <?php } ?>
128
- <?php printf( wp_kses( __( 'You can change these settings %s.', 'tiny-compress-images' ), array( 'a' => array( 'href' => array() ) ) ), '<a href=' . admin_url( 'options-media.php#tiny-compress-images' ) . '>' . __( 'here', 'tiny-compress-images' ) . '</a>' )?>
 
 
 
 
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( 'br' => 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
- array( 'strong' => array(), 'a' => array( 'href' => array() ) ) ), 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>' );
 
 
 
 
 
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( 'strong' => array() ) ), $total['has_been_compressed'] ) ?>
 
 
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' ) . ': ' . esc_html__( $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' ) : esc_html__( ucfirst( rtrim( $size_name, '_wr2x' ) ) ) );
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>', esc_html__( ucfirst( $size->duplicate_of_size() ) ) );
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 %.0f%% (%s)', 'tiny-compress-images' ),
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( 'a' => array( 'href' => array() ) ) ), $link )?>
 
 
 
 
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( 'span' => array(), 'strong' => array() ) ), '<span></span>%' )?></p>
 
 
 
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( 'a' => array( 'href' => array() ) ) ), $link )?>
 
 
 
 
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.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';