Lazy Load by WP Rocket - Version 2.0.4

Version Description

  • Enhancement: Add filter for iframe lazyload pattern exclusion
  • Enhancement: Auto-exclude soliloquy-image pattern from lazyload
  • Bugfix: Prevent issue when an image/iframe is duplicated on the same page
  • Bugfix: Prevent W3C validation error for the SVG placeholder
Download this release

Release Info

Developer wp_media
Plugin Icon 128x128 Lazy Load by WP Rocket
Version 2.0.4
Comparing to
See all releases

Code changes from version 2.0.3.2 to 2.0.4

Files changed (127) hide show
  1. composer.json +19 -13
  2. composer.lock +1795 -62
  3. readme.txt +14 -5
  4. rocket-lazy-load.php +6 -4
  5. src/Admin/AdminPage.php +9 -3
  6. src/Admin/ImagifyNotice.php +7 -1
  7. src/EventManagement/EventManager.php +10 -4
  8. src/EventManagement/EventManagerAwareSubscriberInterface.php +6 -0
  9. src/EventManagement/SubscriberInterface.php +6 -0
  10. src/Options/AbstractOptions.php +6 -0
  11. src/Options/OptionArray.php +6 -0
  12. src/Options/Options.php +10 -1
  13. src/Plugin.php +8 -2
  14. src/ServiceProvider/AdminServiceProvider.php +9 -3
  15. src/ServiceProvider/ImagifyNoticeServiceProvider.php +7 -1
  16. src/ServiceProvider/LazyloadServiceProvider.php +6 -0
  17. src/ServiceProvider/OptionServiceProvider.php +7 -1
  18. src/ServiceProvider/SubscribersServiceProvider.php +13 -7
  19. src/Subscriber/AdminPageSubscriber.php +7 -1
  20. src/Subscriber/ImagifyNoticeSubscriber.php +16 -8
  21. src/Subscriber/LazyloadSubscriber.php +24 -18
  22. src/Subscriber/ThirdParty/AMPSubscriber.php +7 -1
  23. src/rocket-lazyload-requirements-check.php +7 -1
  24. vendor/composer/autoload_psr4.php +1 -0
  25. vendor/composer/autoload_static.php +8 -0
  26. vendor/composer/installed.json +142 -14
  27. vendor/composer/installers/LICENSE +19 -0
  28. vendor/composer/installers/composer.json +105 -0
  29. vendor/composer/installers/src/Composer/Installers/AglInstaller.php +21 -0
  30. vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php +9 -0
  31. vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php +11 -0
  32. vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php +49 -0
  33. vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php +9 -0
  34. vendor/composer/installers/src/Composer/Installers/BaseInstaller.php +136 -0
  35. vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php +126 -0
  36. vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php +9 -0
  37. vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +82 -0
  38. vendor/composer/installers/src/Composer/Installers/ChefInstaller.php +11 -0
  39. vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php +9 -0
  40. vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php +10 -0
  41. vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php +34 -0
  42. vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php +11 -0
  43. vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php +13 -0
  44. vendor/composer/installers/src/Composer/Installers/CraftInstaller.php +35 -0
  45. vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php +21 -0
  46. vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php +10 -0
  47. vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php +50 -0
  48. vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php +16 -0
  49. vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php +16 -0
  50. vendor/composer/installers/src/Composer/Installers/ElggInstaller.php +9 -0
  51. vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php +12 -0
  52. vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php +29 -0
  53. vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php +10 -0
  54. vendor/composer/installers/src/Composer/Installers/FuelInstaller.php +11 -0
  55. vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php +9 -0
  56. vendor/composer/installers/src/Composer/Installers/GravInstaller.php +30 -0
  57. vendor/composer/installers/src/Composer/Installers/HuradInstaller.php +25 -0
  58. vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php +11 -0
  59. vendor/composer/installers/src/Composer/Installers/Installer.php +274 -0
  60. vendor/composer/installers/src/Composer/Installers/ItopInstaller.php +9 -0
  61. vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php +15 -0
  62. vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php +18 -0
  63. vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php +11 -0
  64. vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php +10 -0
  65. vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php +9 -0
  66. vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php +27 -0
  67. vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php +9 -0
  68. vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php +10 -0
  69. vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php +10 -0
  70. vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php +9 -0
  71. vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php +16 -0
  72. vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php +11 -0
  73. vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php +37 -0
  74. vendor/composer/installers/src/Composer/Installers/MakoInstaller.php +9 -0
  75. vendor/composer/installers/src/Composer/Installers/MauticInstaller.php +25 -0
  76. vendor/composer/installers/src/Composer/Installers/MayaInstaller.php +33 -0
  77. vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php +51 -0
  78. vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php +111 -0
  79. vendor/composer/installers/src/Composer/Installers/ModxInstaller.php +12 -0
  80. vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php +57 -0
  81. vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php +47 -0
  82. vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php +24 -0
  83. vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php +14 -0
  84. vendor/composer/installers/src/Composer/Installers/OxidInstaller.php +59 -0
  85. vendor/composer/installers/src/Composer/Installers/PPIInstaller.php +9 -0
  86. vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php +11 -0
  87. vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php +11 -0
  88. vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php +21 -0
  89. vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php +32 -0
  90. vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php +29 -0
  91. vendor/composer/installers/src/Composer/Installers/Plugin.php +17 -0
  92. vendor/composer/installers/src/Composer/Installers/PortoInstaller.php +9 -0
  93. vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php +10 -0
  94. vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php +11 -0
  95. vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php +63 -0
  96. vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php +24 -0
  97. vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php +10 -0
  98. vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php +10 -0
  99. vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php +22 -0
  100. vendor/composer/installers/src/Composer/Installers/SMFInstaller.php +10 -0
  101. vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php +60 -0
  102. vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php +35 -0
  103. vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php +25 -0
  104. vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php +49 -0
  105. vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php +26 -0
  106. vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php +16 -0
  107. vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php +38 -0
  108. vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php +12 -0
  109. vendor/composer/installers/src/Composer/Installers/TuskInstaller.php +14 -0
  110. vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php +9 -0
  111. vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php +10 -0
  112. vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php +49 -0
  113. vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php +10 -0
  114. vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php +9 -0
  115. vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php +12 -0
  116. vendor/composer/installers/src/Composer/Installers/YawikInstaller.php +32 -0
  117. vendor/composer/installers/src/Composer/Installers/ZendInstaller.php +11 -0
  118. vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php +10 -0
  119. vendor/composer/installers/src/bootstrap.php +13 -0
  120. vendor/wp-media/rocket-lazyload-common/composer.json +30 -4
  121. vendor/wp-media/rocket-lazyload-common/composer.lock +1861 -7
  122. vendor/wp-media/rocket-lazyload-common/phpcs.xml +18 -1
  123. vendor/wp-media/rocket-lazyload-common/src/Assets.php +76 -18
  124. vendor/wp-media/rocket-lazyload-common/src/Iframe.php +52 -26
  125. vendor/wp-media/rocket-lazyload-common/src/Image.php +121 -67
  126. views/admin-page.php +42 -22
  127. views/imagify-notice.php +9 -3
composer.json CHANGED
@@ -18,12 +18,6 @@
18
  "config": {
19
  "sort-packages": true
20
  },
21
- "repositories": [
22
- {
23
- "type": "vcs",
24
- "url": "https://github.com/wp-media/rocket-lazyload-common"
25
- }
26
- ],
27
  "support": {
28
  "issues": "https://github.com/wp-media/rocket-lazy-load/issues",
29
  "source": "https://github.com/wp-media/rocket-lazy-load"
@@ -33,15 +27,27 @@
33
  "RocketLazyLoadPlugin\\": "src/"
34
  }
35
  },
 
 
 
 
 
 
36
  "require": {
37
- "php": ">=5.4.0",
 
38
  "league/container": "^2.4",
39
- "wp-media/rocket-lazyload-common": "^2.0.0"
40
  },
41
  "require-dev": {
42
- "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4",
43
- "phpcompatibility/phpcompatibility-wp": "*",
44
- "squizlabs/php_codesniffer": "^3.2",
45
- "wp-coding-standards/wpcs": "^1.0.0"
46
- }
 
 
 
 
 
47
  }
18
  "config": {
19
  "sort-packages": true
20
  },
 
 
 
 
 
 
21
  "support": {
22
  "issues": "https://github.com/wp-media/rocket-lazy-load/issues",
23
  "source": "https://github.com/wp-media/rocket-lazy-load"
27
  "RocketLazyLoadPlugin\\": "src/"
28
  }
29
  },
30
+ "autoload-dev": {
31
+ "psr-4": {
32
+ "RocketLazyLoadPlugin\\Tests\\Unit\\": "tests/Unit",
33
+ "RocketLazyLoadPlugin\\Tests\\Integration\\": "tests/Integration"
34
+ }
35
+ },
36
  "require": {
37
+ "php": ">=5.6",
38
+ "composer/installers": "~1.0",
39
  "league/container": "^2.4",
40
+ "wp-media/rocket-lazyload-common": "^2.0"
41
  },
42
  "require-dev": {
43
+ "brain/monkey": "^2.0",
44
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
45
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
46
+ "phpunit/phpunit": "^5.7",
47
+ "wp-coding-standards/wpcs": "^2.0.0"
48
+ },
49
+ "scripts": {
50
+ "test-unit":"\"vendor/bin/phpunit\" --testsuite unit --colors=always",
51
+ "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist"
52
+ }
53
  }
composer.lock CHANGED
@@ -4,8 +4,128 @@
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": "7b8ffd2baafae72a52f8be8573399b8e",
8
  "packages": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  {
10
  "name": "container-interop/container-interop",
11
  "version": "1.2.0",
@@ -153,23 +273,32 @@
153
  },
154
  {
155
  "name": "wp-media/rocket-lazyload-common",
156
- "version": "v2.0",
157
  "source": {
158
  "type": "git",
159
  "url": "https://github.com/wp-media/rocket-lazyload-common.git",
160
- "reference": "0c834ce26ae8ed41f6f13eb284b5f4c06c18b499"
161
  },
162
  "dist": {
163
  "type": "zip",
164
- "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/0c834ce26ae8ed41f6f13eb284b5f4c06c18b499",
165
- "reference": "0c834ce26ae8ed41f6f13eb284b5f4c06c18b499",
166
  "shasum": ""
167
  },
168
  "require": {
169
- "php": ">=5.4"
170
  },
171
  "require-dev": {
172
- "squizlabs/php_codesniffer": "^3.2"
 
 
 
 
 
 
 
 
 
173
  },
174
  "type": "library",
175
  "autoload": {
@@ -177,8 +306,9 @@
177
  "RocketLazyload\\": "src"
178
  }
179
  },
 
180
  "license": [
181
- "GPLv3"
182
  ],
183
  "authors": [
184
  {
@@ -187,39 +317,138 @@
187
  }
188
  ],
189
  "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
190
- "support": {
191
- "source": "https://github.com/wp-media/rocket-lazyload-common/tree/v2.0",
192
- "issues": "https://github.com/wp-media/rocket-lazyload-common/issues"
193
- },
194
- "time": "2019-01-15T21:38:51+00:00"
195
  }
196
  ],
197
  "packages-dev": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  {
199
  "name": "dealerdirect/phpcodesniffer-composer-installer",
200
- "version": "v0.4.4",
201
  "source": {
202
  "type": "git",
203
  "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
204
- "reference": "2e41850d5f7797cbb1af7b030d245b3b24e63a08"
205
  },
206
  "dist": {
207
  "type": "zip",
208
- "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/2e41850d5f7797cbb1af7b030d245b3b24e63a08",
209
- "reference": "2e41850d5f7797cbb1af7b030d245b3b24e63a08",
210
  "shasum": ""
211
  },
212
  "require": {
213
  "composer-plugin-api": "^1.0",
214
  "php": "^5.3|^7",
215
- "squizlabs/php_codesniffer": "*"
216
  },
217
  "require-dev": {
218
  "composer/composer": "*",
219
- "wimg/php-compatibility": "^8.0"
220
- },
221
- "suggest": {
222
- "dealerdirect/qa-tools": "All the PHP QA tools you'll need"
223
  },
224
  "type": "composer-plugin",
225
  "extra": {
@@ -237,13 +466,13 @@
237
  "authors": [
238
  {
239
  "name": "Franck Nijhof",
240
- "email": "f.nijhof@dealerdirect.nl",
241
- "homepage": "http://workingatdealerdirect.eu",
242
- "role": "Developer"
243
  }
244
  ],
245
  "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
246
- "homepage": "http://workingatdealerdirect.eu",
247
  "keywords": [
248
  "PHPCodeSniffer",
249
  "PHP_CodeSniffer",
@@ -261,7 +490,222 @@
261
  "stylecheck",
262
  "tests"
263
  ],
264
- "time": "2017-12-06T16:27:17+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  },
266
  {
267
  "name": "phpcompatibility/php-compatibility",
@@ -422,76 +866,1365 @@
422
  "time": "2018-10-07T18:31:37+00:00"
423
  },
424
  {
425
- "name": "squizlabs/php_codesniffer",
426
- "version": "3.4.0",
427
  "source": {
428
  "type": "git",
429
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
430
- "reference": "379deb987e26c7cd103a7b387aea178baec96e48"
431
  },
432
  "dist": {
433
  "type": "zip",
434
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48",
435
- "reference": "379deb987e26c7cd103a7b387aea178baec96e48",
436
  "shasum": ""
437
  },
438
  "require": {
439
- "ext-simplexml": "*",
440
- "ext-tokenizer": "*",
441
- "ext-xmlwriter": "*",
442
- "php": ">=5.4.0"
443
  },
444
  "require-dev": {
445
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
446
  },
447
- "bin": [
448
- "bin/phpcs",
449
- "bin/phpcbf"
450
- ],
451
  "type": "library",
452
  "extra": {
453
  "branch-alias": {
454
- "dev-master": "3.x-dev"
 
 
 
 
 
 
 
455
  }
456
  },
457
  "notification-url": "https://packagist.org/downloads/",
458
  "license": [
459
- "BSD-3-Clause"
460
  ],
461
  "authors": [
462
  {
463
- "name": "Greg Sherwood",
464
- "role": "lead"
465
  }
466
  ],
467
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
468
- "homepage": "http://www.squizlabs.com/php-codesniffer",
469
  "keywords": [
470
- "phpcs",
471
- "standards"
 
 
 
472
  ],
473
- "time": "2018-12-19T23:57:18+00:00"
474
  },
475
  {
476
- "name": "wp-coding-standards/wpcs",
477
- "version": "1.2.1",
478
  "source": {
479
  "type": "git",
480
- "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
481
- "reference": "f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c"
482
  },
483
  "dist": {
484
  "type": "zip",
485
- "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c",
486
- "reference": "f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c",
487
  "shasum": ""
488
  },
489
  "require": {
490
- "php": ">=5.3",
491
- "squizlabs/php_codesniffer": "^2.9.0 || ^3.0.2"
 
 
492
  },
493
  "require-dev": {
494
- "phpcompatibility/php-compatibility": "^9.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  },
496
  "suggest": {
497
  "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
@@ -513,7 +2246,7 @@
513
  "standards",
514
  "wordpress"
515
  ],
516
- "time": "2018-12-18T09:43:51+00:00"
517
  }
518
  ],
519
  "aliases": [],
@@ -522,7 +2255,7 @@
522
  "prefer-stable": false,
523
  "prefer-lowest": false,
524
  "platform": {
525
- "php": ">=5.4.0"
526
  },
527
  "platform-dev": []
528
  }
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": "9db7cd490e083b535102328bf887817d",
8
  "packages": [
9
+ {
10
+ "name": "composer/installers",
11
+ "version": "v1.6.0",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/composer/installers.git",
15
+ "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b",
20
+ "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "composer-plugin-api": "^1.0"
25
+ },
26
+ "replace": {
27
+ "roundcube/plugin-installer": "*",
28
+ "shama/baton": "*"
29
+ },
30
+ "require-dev": {
31
+ "composer/composer": "1.0.*@dev",
32
+ "phpunit/phpunit": "^4.8.36"
33
+ },
34
+ "type": "composer-plugin",
35
+ "extra": {
36
+ "class": "Composer\\Installers\\Plugin",
37
+ "branch-alias": {
38
+ "dev-master": "1.0-dev"
39
+ }
40
+ },
41
+ "autoload": {
42
+ "psr-4": {
43
+ "Composer\\Installers\\": "src/Composer/Installers"
44
+ }
45
+ },
46
+ "notification-url": "https://packagist.org/downloads/",
47
+ "license": [
48
+ "MIT"
49
+ ],
50
+ "authors": [
51
+ {
52
+ "name": "Kyle Robinson Young",
53
+ "email": "kyle@dontkry.com",
54
+ "homepage": "https://github.com/shama"
55
+ }
56
+ ],
57
+ "description": "A multi-framework Composer library installer",
58
+ "homepage": "https://composer.github.io/installers/",
59
+ "keywords": [
60
+ "Craft",
61
+ "Dolibarr",
62
+ "Eliasis",
63
+ "Hurad",
64
+ "ImageCMS",
65
+ "Kanboard",
66
+ "Lan Management System",
67
+ "MODX Evo",
68
+ "Mautic",
69
+ "Maya",
70
+ "OXID",
71
+ "Plentymarkets",
72
+ "Porto",
73
+ "RadPHP",
74
+ "SMF",
75
+ "Thelia",
76
+ "WolfCMS",
77
+ "agl",
78
+ "aimeos",
79
+ "annotatecms",
80
+ "attogram",
81
+ "bitrix",
82
+ "cakephp",
83
+ "chef",
84
+ "cockpit",
85
+ "codeigniter",
86
+ "concrete5",
87
+ "croogo",
88
+ "dokuwiki",
89
+ "drupal",
90
+ "eZ Platform",
91
+ "elgg",
92
+ "expressionengine",
93
+ "fuelphp",
94
+ "grav",
95
+ "installer",
96
+ "itop",
97
+ "joomla",
98
+ "kohana",
99
+ "laravel",
100
+ "lavalite",
101
+ "lithium",
102
+ "magento",
103
+ "majima",
104
+ "mako",
105
+ "mediawiki",
106
+ "modulework",
107
+ "modx",
108
+ "moodle",
109
+ "osclass",
110
+ "phpbb",
111
+ "piwik",
112
+ "ppi",
113
+ "puppet",
114
+ "pxcms",
115
+ "reindex",
116
+ "roundcube",
117
+ "shopware",
118
+ "silverstripe",
119
+ "sydes",
120
+ "symfony",
121
+ "typo3",
122
+ "wordpress",
123
+ "yawik",
124
+ "zend",
125
+ "zikula"
126
+ ],
127
+ "time": "2018-08-27T06:10:37+00:00"
128
+ },
129
  {
130
  "name": "container-interop/container-interop",
131
  "version": "1.2.0",
273
  },
274
  {
275
  "name": "wp-media/rocket-lazyload-common",
276
+ "version": "v2.1.1",
277
  "source": {
278
  "type": "git",
279
  "url": "https://github.com/wp-media/rocket-lazyload-common.git",
280
+ "reference": "aa8282c2296b29410dfdd6a093df35c509595124"
281
  },
282
  "dist": {
283
  "type": "zip",
284
+ "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/aa8282c2296b29410dfdd6a093df35c509595124",
285
+ "reference": "aa8282c2296b29410dfdd6a093df35c509595124",
286
  "shasum": ""
287
  },
288
  "require": {
289
+ "php": ">=5.6"
290
  },
291
  "require-dev": {
292
+ "brain/monkey": "^2.0",
293
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
294
+ "doctrine/instantiator": "1.0.*",
295
+ "myclabs/deep-copy": "1.6.*",
296
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
297
+ "phpdocumentor/reflection-docblock": "^3.3",
298
+ "phpunit/php-token-stream": "^1.4",
299
+ "phpunit/phpunit": "^5.7",
300
+ "symfony/yaml": "2.8.*",
301
+ "wp-coding-standards/wpcs": "^2.0.0"
302
  },
303
  "type": "library",
304
  "autoload": {
306
  "RocketLazyload\\": "src"
307
  }
308
  },
309
+ "notification-url": "https://packagist.org/downloads/",
310
  "license": [
311
+ "GPL-3.0-or-later"
312
  ],
313
  "authors": [
314
  {
317
  }
318
  ],
319
  "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
320
+ "time": "2019-02-18T16:32:01+00:00"
 
 
 
 
321
  }
322
  ],
323
  "packages-dev": [
324
+ {
325
+ "name": "antecedent/patchwork",
326
+ "version": "2.1.8",
327
+ "source": {
328
+ "type": "git",
329
+ "url": "https://github.com/antecedent/patchwork.git",
330
+ "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7"
331
+ },
332
+ "dist": {
333
+ "type": "zip",
334
+ "url": "https://api.github.com/repos/antecedent/patchwork/zipball/3bb81ace3914c220aa273d1c0603d5e1b454c0d7",
335
+ "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7",
336
+ "shasum": ""
337
+ },
338
+ "require": {
339
+ "php": ">=5.4.0"
340
+ },
341
+ "type": "library",
342
+ "notification-url": "https://packagist.org/downloads/",
343
+ "license": [
344
+ "MIT"
345
+ ],
346
+ "authors": [
347
+ {
348
+ "name": "Ignas Rudaitis",
349
+ "email": "ignas.rudaitis@gmail.com"
350
+ }
351
+ ],
352
+ "description": "Method redefinition (monkey-patching) functionality for PHP.",
353
+ "homepage": "http://patchwork2.org/",
354
+ "keywords": [
355
+ "aop",
356
+ "aspect",
357
+ "interception",
358
+ "monkeypatching",
359
+ "redefinition",
360
+ "runkit",
361
+ "testing"
362
+ ],
363
+ "time": "2018-02-19T18:52:50+00:00"
364
+ },
365
+ {
366
+ "name": "brain/monkey",
367
+ "version": "2.2.0",
368
+ "source": {
369
+ "type": "git",
370
+ "url": "https://github.com/Brain-WP/BrainMonkey.git",
371
+ "reference": "ed9e0698bc1292f33698719da8ca1aa2e18acc51"
372
+ },
373
+ "dist": {
374
+ "type": "zip",
375
+ "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/ed9e0698bc1292f33698719da8ca1aa2e18acc51",
376
+ "reference": "ed9e0698bc1292f33698719da8ca1aa2e18acc51",
377
+ "shasum": ""
378
+ },
379
+ "require": {
380
+ "antecedent/patchwork": "^2.0",
381
+ "mockery/mockery": ">=0.9 <2",
382
+ "php": ">=5.6.0"
383
+ },
384
+ "require-dev": {
385
+ "phpunit/phpunit": "~5.7.9"
386
+ },
387
+ "type": "library",
388
+ "extra": {
389
+ "branch-alias": {
390
+ "dev-version/1": "1.x-dev",
391
+ "dev-master": "2.0.x-dev"
392
+ }
393
+ },
394
+ "autoload": {
395
+ "psr-4": {
396
+ "Brain\\Monkey\\": "src/"
397
+ },
398
+ "files": [
399
+ "inc/api.php"
400
+ ]
401
+ },
402
+ "notification-url": "https://packagist.org/downloads/",
403
+ "license": [
404
+ "MIT"
405
+ ],
406
+ "authors": [
407
+ {
408
+ "name": "Giuseppe Mazzapica",
409
+ "email": "giuseppe.mazzapica@gmail.com",
410
+ "homepage": "https://gmazzap.me",
411
+ "role": "Developer"
412
+ }
413
+ ],
414
+ "description": "Mocking utility for PHP functions and WordPress plugin API",
415
+ "keywords": [
416
+ "Monkey Patching",
417
+ "interception",
418
+ "mock",
419
+ "mock functions",
420
+ "mockery",
421
+ "patchwork",
422
+ "redefinition",
423
+ "runkit",
424
+ "test",
425
+ "testing"
426
+ ],
427
+ "time": "2017-12-01T16:32:09+00:00"
428
+ },
429
  {
430
  "name": "dealerdirect/phpcodesniffer-composer-installer",
431
+ "version": "v0.5.0",
432
  "source": {
433
  "type": "git",
434
  "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
435
+ "reference": "e749410375ff6fb7a040a68878c656c2e610b132"
436
  },
437
  "dist": {
438
  "type": "zip",
439
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e749410375ff6fb7a040a68878c656c2e610b132",
440
+ "reference": "e749410375ff6fb7a040a68878c656c2e610b132",
441
  "shasum": ""
442
  },
443
  "require": {
444
  "composer-plugin-api": "^1.0",
445
  "php": "^5.3|^7",
446
+ "squizlabs/php_codesniffer": "^2|^3"
447
  },
448
  "require-dev": {
449
  "composer/composer": "*",
450
+ "phpcompatibility/php-compatibility": "^9.0",
451
+ "sensiolabs/security-checker": "^4.1.0"
 
 
452
  },
453
  "type": "composer-plugin",
454
  "extra": {
466
  "authors": [
467
  {
468
  "name": "Franck Nijhof",
469
+ "email": "franck.nijhof@dealerdirect.com",
470
+ "homepage": "http://www.frenck.nl",
471
+ "role": "Developer / IT Manager"
472
  }
473
  ],
474
  "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
475
+ "homepage": "http://www.dealerdirect.com",
476
  "keywords": [
477
  "PHPCodeSniffer",
478
  "PHP_CodeSniffer",
490
  "stylecheck",
491
  "tests"
492
  ],
493
+ "time": "2018-10-26T13:21:45+00:00"
494
+ },
495
+ {
496
+ "name": "doctrine/instantiator",
497
+ "version": "1.1.0",
498
+ "source": {
499
+ "type": "git",
500
+ "url": "https://github.com/doctrine/instantiator.git",
501
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
502
+ },
503
+ "dist": {
504
+ "type": "zip",
505
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
506
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
507
+ "shasum": ""
508
+ },
509
+ "require": {
510
+ "php": "^7.1"
511
+ },
512
+ "require-dev": {
513
+ "athletic/athletic": "~0.1.8",
514
+ "ext-pdo": "*",
515
+ "ext-phar": "*",
516
+ "phpunit/phpunit": "^6.2.3",
517
+ "squizlabs/php_codesniffer": "^3.0.2"
518
+ },
519
+ "type": "library",
520
+ "extra": {
521
+ "branch-alias": {
522
+ "dev-master": "1.2.x-dev"
523
+ }
524
+ },
525
+ "autoload": {
526
+ "psr-4": {
527
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
528
+ }
529
+ },
530
+ "notification-url": "https://packagist.org/downloads/",
531
+ "license": [
532
+ "MIT"
533
+ ],
534
+ "authors": [
535
+ {
536
+ "name": "Marco Pivetta",
537
+ "email": "ocramius@gmail.com",
538
+ "homepage": "http://ocramius.github.com/"
539
+ }
540
+ ],
541
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
542
+ "homepage": "https://github.com/doctrine/instantiator",
543
+ "keywords": [
544
+ "constructor",
545
+ "instantiate"
546
+ ],
547
+ "time": "2017-07-22T11:58:36+00:00"
548
+ },
549
+ {
550
+ "name": "hamcrest/hamcrest-php",
551
+ "version": "v2.0.0",
552
+ "source": {
553
+ "type": "git",
554
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
555
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
556
+ },
557
+ "dist": {
558
+ "type": "zip",
559
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
560
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
561
+ "shasum": ""
562
+ },
563
+ "require": {
564
+ "php": "^5.3|^7.0"
565
+ },
566
+ "replace": {
567
+ "cordoval/hamcrest-php": "*",
568
+ "davedevelopment/hamcrest-php": "*",
569
+ "kodova/hamcrest-php": "*"
570
+ },
571
+ "require-dev": {
572
+ "phpunit/php-file-iterator": "1.3.3",
573
+ "phpunit/phpunit": "~4.0",
574
+ "satooshi/php-coveralls": "^1.0"
575
+ },
576
+ "type": "library",
577
+ "extra": {
578
+ "branch-alias": {
579
+ "dev-master": "2.0-dev"
580
+ }
581
+ },
582
+ "autoload": {
583
+ "classmap": [
584
+ "hamcrest"
585
+ ]
586
+ },
587
+ "notification-url": "https://packagist.org/downloads/",
588
+ "license": [
589
+ "BSD"
590
+ ],
591
+ "description": "This is the PHP port of Hamcrest Matchers",
592
+ "keywords": [
593
+ "test"
594
+ ],
595
+ "time": "2016-01-20T08:20:44+00:00"
596
+ },
597
+ {
598
+ "name": "mockery/mockery",
599
+ "version": "1.2.2",
600
+ "source": {
601
+ "type": "git",
602
+ "url": "https://github.com/mockery/mockery.git",
603
+ "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2"
604
+ },
605
+ "dist": {
606
+ "type": "zip",
607
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2",
608
+ "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2",
609
+ "shasum": ""
610
+ },
611
+ "require": {
612
+ "hamcrest/hamcrest-php": "~2.0",
613
+ "lib-pcre": ">=7.0",
614
+ "php": ">=5.6.0"
615
+ },
616
+ "require-dev": {
617
+ "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0"
618
+ },
619
+ "type": "library",
620
+ "extra": {
621
+ "branch-alias": {
622
+ "dev-master": "1.0.x-dev"
623
+ }
624
+ },
625
+ "autoload": {
626
+ "psr-0": {
627
+ "Mockery": "library/"
628
+ }
629
+ },
630
+ "notification-url": "https://packagist.org/downloads/",
631
+ "license": [
632
+ "BSD-3-Clause"
633
+ ],
634
+ "authors": [
635
+ {
636
+ "name": "Pádraic Brady",
637
+ "email": "padraic.brady@gmail.com",
638
+ "homepage": "http://blog.astrumfutura.com"
639
+ },
640
+ {
641
+ "name": "Dave Marshall",
642
+ "email": "dave.marshall@atstsolutions.co.uk",
643
+ "homepage": "http://davedevelopment.co.uk"
644
+ }
645
+ ],
646
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
647
+ "homepage": "https://github.com/mockery/mockery",
648
+ "keywords": [
649
+ "BDD",
650
+ "TDD",
651
+ "library",
652
+ "mock",
653
+ "mock objects",
654
+ "mockery",
655
+ "stub",
656
+ "test",
657
+ "test double",
658
+ "testing"
659
+ ],
660
+ "time": "2019-02-13T09:37:52+00:00"
661
+ },
662
+ {
663
+ "name": "myclabs/deep-copy",
664
+ "version": "1.8.1",
665
+ "source": {
666
+ "type": "git",
667
+ "url": "https://github.com/myclabs/DeepCopy.git",
668
+ "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
669
+ },
670
+ "dist": {
671
+ "type": "zip",
672
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
673
+ "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
674
+ "shasum": ""
675
+ },
676
+ "require": {
677
+ "php": "^7.1"
678
+ },
679
+ "replace": {
680
+ "myclabs/deep-copy": "self.version"
681
+ },
682
+ "require-dev": {
683
+ "doctrine/collections": "^1.0",
684
+ "doctrine/common": "^2.6",
685
+ "phpunit/phpunit": "^7.1"
686
+ },
687
+ "type": "library",
688
+ "autoload": {
689
+ "psr-4": {
690
+ "DeepCopy\\": "src/DeepCopy/"
691
+ },
692
+ "files": [
693
+ "src/DeepCopy/deep_copy.php"
694
+ ]
695
+ },
696
+ "notification-url": "https://packagist.org/downloads/",
697
+ "license": [
698
+ "MIT"
699
+ ],
700
+ "description": "Create deep copies (clones) of your objects",
701
+ "keywords": [
702
+ "clone",
703
+ "copy",
704
+ "duplicate",
705
+ "object",
706
+ "object graph"
707
+ ],
708
+ "time": "2018-06-11T23:09:50+00:00"
709
  },
710
  {
711
  "name": "phpcompatibility/php-compatibility",
866
  "time": "2018-10-07T18:31:37+00:00"
867
  },
868
  {
869
+ "name": "phpdocumentor/reflection-common",
870
+ "version": "1.0.1",
871
  "source": {
872
  "type": "git",
873
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
874
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
875
  },
876
  "dist": {
877
  "type": "zip",
878
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
879
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
880
  "shasum": ""
881
  },
882
  "require": {
883
+ "php": ">=5.5"
 
 
 
884
  },
885
  "require-dev": {
886
+ "phpunit/phpunit": "^4.6"
887
  },
 
 
 
 
888
  "type": "library",
889
  "extra": {
890
  "branch-alias": {
891
+ "dev-master": "1.0.x-dev"
892
+ }
893
+ },
894
+ "autoload": {
895
+ "psr-4": {
896
+ "phpDocumentor\\Reflection\\": [
897
+ "src"
898
+ ]
899
  }
900
  },
901
  "notification-url": "https://packagist.org/downloads/",
902
  "license": [
903
+ "MIT"
904
  ],
905
  "authors": [
906
  {
907
+ "name": "Jaap van Otterdijk",
908
+ "email": "opensource@ijaap.nl"
909
  }
910
  ],
911
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
912
+ "homepage": "http://www.phpdoc.org",
913
  "keywords": [
914
+ "FQSEN",
915
+ "phpDocumentor",
916
+ "phpdoc",
917
+ "reflection",
918
+ "static analysis"
919
  ],
920
+ "time": "2017-09-11T18:02:19+00:00"
921
  },
922
  {
923
+ "name": "phpdocumentor/reflection-docblock",
924
+ "version": "4.3.0",
925
  "source": {
926
  "type": "git",
927
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
928
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
929
  },
930
  "dist": {
931
  "type": "zip",
932
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
933
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
934
  "shasum": ""
935
  },
936
  "require": {
937
+ "php": "^7.0",
938
+ "phpdocumentor/reflection-common": "^1.0.0",
939
+ "phpdocumentor/type-resolver": "^0.4.0",
940
+ "webmozart/assert": "^1.0"
941
  },
942
  "require-dev": {
943
+ "doctrine/instantiator": "~1.0.5",
944
+ "mockery/mockery": "^1.0",
945
+ "phpunit/phpunit": "^6.4"
946
+ },
947
+ "type": "library",
948
+ "extra": {
949
+ "branch-alias": {
950
+ "dev-master": "4.x-dev"
951
+ }
952
+ },
953
+ "autoload": {
954
+ "psr-4": {
955
+ "phpDocumentor\\Reflection\\": [
956
+ "src/"
957
+ ]
958
+ }
959
+ },
960
+ "notification-url": "https://packagist.org/downloads/",
961
+ "license": [
962
+ "MIT"
963
+ ],
964
+ "authors": [
965
+ {
966
+ "name": "Mike van Riel",
967
+ "email": "me@mikevanriel.com"
968
+ }
969
+ ],
970
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
971
+ "time": "2017-11-30T07:14:17+00:00"
972
+ },
973
+ {
974
+ "name": "phpdocumentor/type-resolver",
975
+ "version": "0.4.0",
976
+ "source": {
977
+ "type": "git",
978
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
979
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
980
+ },
981
+ "dist": {
982
+ "type": "zip",
983
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
984
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
985
+ "shasum": ""
986
+ },
987
+ "require": {
988
+ "php": "^5.5 || ^7.0",
989
+ "phpdocumentor/reflection-common": "^1.0"
990
+ },
991
+ "require-dev": {
992
+ "mockery/mockery": "^0.9.4",
993
+ "phpunit/phpunit": "^5.2||^4.8.24"
994
+ },
995
+ "type": "library",
996
+ "extra": {
997
+ "branch-alias": {
998
+ "dev-master": "1.0.x-dev"
999
+ }
1000
+ },
1001
+ "autoload": {
1002
+ "psr-4": {
1003
+ "phpDocumentor\\Reflection\\": [
1004
+ "src/"
1005
+ ]
1006
+ }
1007
+ },
1008
+ "notification-url": "https://packagist.org/downloads/",
1009
+ "license": [
1010
+ "MIT"
1011
+ ],
1012
+ "authors": [
1013
+ {
1014
+ "name": "Mike van Riel",
1015
+ "email": "me@mikevanriel.com"
1016
+ }
1017
+ ],
1018
+ "time": "2017-07-14T14:27:02+00:00"
1019
+ },
1020
+ {
1021
+ "name": "phpspec/prophecy",
1022
+ "version": "1.8.0",
1023
+ "source": {
1024
+ "type": "git",
1025
+ "url": "https://github.com/phpspec/prophecy.git",
1026
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
1027
+ },
1028
+ "dist": {
1029
+ "type": "zip",
1030
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
1031
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
1032
+ "shasum": ""
1033
+ },
1034
+ "require": {
1035
+ "doctrine/instantiator": "^1.0.2",
1036
+ "php": "^5.3|^7.0",
1037
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
1038
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
1039
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
1040
+ },
1041
+ "require-dev": {
1042
+ "phpspec/phpspec": "^2.5|^3.2",
1043
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
1044
+ },
1045
+ "type": "library",
1046
+ "extra": {
1047
+ "branch-alias": {
1048
+ "dev-master": "1.8.x-dev"
1049
+ }
1050
+ },
1051
+ "autoload": {
1052
+ "psr-0": {
1053
+ "Prophecy\\": "src/"
1054
+ }
1055
+ },
1056
+ "notification-url": "https://packagist.org/downloads/",
1057
+ "license": [
1058
+ "MIT"
1059
+ ],
1060
+ "authors": [
1061
+ {
1062
+ "name": "Konstantin Kudryashov",
1063
+ "email": "ever.zet@gmail.com",
1064
+ "homepage": "http://everzet.com"
1065
+ },
1066
+ {
1067
+ "name": "Marcello Duarte",
1068
+ "email": "marcello.duarte@gmail.com"
1069
+ }
1070
+ ],
1071
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
1072
+ "homepage": "https://github.com/phpspec/prophecy",
1073
+ "keywords": [
1074
+ "Double",
1075
+ "Dummy",
1076
+ "fake",
1077
+ "mock",
1078
+ "spy",
1079
+ "stub"
1080
+ ],
1081
+ "time": "2018-08-05T17:53:17+00:00"
1082
+ },
1083
+ {
1084
+ "name": "phpunit/php-code-coverage",
1085
+ "version": "4.0.8",
1086
+ "source": {
1087
+ "type": "git",
1088
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1089
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
1090
+ },
1091
+ "dist": {
1092
+ "type": "zip",
1093
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
1094
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
1095
+ "shasum": ""
1096
+ },
1097
+ "require": {
1098
+ "ext-dom": "*",
1099
+ "ext-xmlwriter": "*",
1100
+ "php": "^5.6 || ^7.0",
1101
+ "phpunit/php-file-iterator": "^1.3",
1102
+ "phpunit/php-text-template": "^1.2",
1103
+ "phpunit/php-token-stream": "^1.4.2 || ^2.0",
1104
+ "sebastian/code-unit-reverse-lookup": "^1.0",
1105
+ "sebastian/environment": "^1.3.2 || ^2.0",
1106
+ "sebastian/version": "^1.0 || ^2.0"
1107
+ },
1108
+ "require-dev": {
1109
+ "ext-xdebug": "^2.1.4",
1110
+ "phpunit/phpunit": "^5.7"
1111
+ },
1112
+ "suggest": {
1113
+ "ext-xdebug": "^2.5.1"
1114
+ },
1115
+ "type": "library",
1116
+ "extra": {
1117
+ "branch-alias": {
1118
+ "dev-master": "4.0.x-dev"
1119
+ }
1120
+ },
1121
+ "autoload": {
1122
+ "classmap": [
1123
+ "src/"
1124
+ ]
1125
+ },
1126
+ "notification-url": "https://packagist.org/downloads/",
1127
+ "license": [
1128
+ "BSD-3-Clause"
1129
+ ],
1130
+ "authors": [
1131
+ {
1132
+ "name": "Sebastian Bergmann",
1133
+ "email": "sb@sebastian-bergmann.de",
1134
+ "role": "lead"
1135
+ }
1136
+ ],
1137
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1138
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1139
+ "keywords": [
1140
+ "coverage",
1141
+ "testing",
1142
+ "xunit"
1143
+ ],
1144
+ "time": "2017-04-02T07:44:40+00:00"
1145
+ },
1146
+ {
1147
+ "name": "phpunit/php-file-iterator",
1148
+ "version": "1.4.5",
1149
+ "source": {
1150
+ "type": "git",
1151
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1152
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
1153
+ },
1154
+ "dist": {
1155
+ "type": "zip",
1156
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
1157
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
1158
+ "shasum": ""
1159
+ },
1160
+ "require": {
1161
+ "php": ">=5.3.3"
1162
+ },
1163
+ "type": "library",
1164
+ "extra": {
1165
+ "branch-alias": {
1166
+ "dev-master": "1.4.x-dev"
1167
+ }
1168
+ },
1169
+ "autoload": {
1170
+ "classmap": [
1171
+ "src/"
1172
+ ]
1173
+ },
1174
+ "notification-url": "https://packagist.org/downloads/",
1175
+ "license": [
1176
+ "BSD-3-Clause"
1177
+ ],
1178
+ "authors": [
1179
+ {
1180
+ "name": "Sebastian Bergmann",
1181
+ "email": "sb@sebastian-bergmann.de",
1182
+ "role": "lead"
1183
+ }
1184
+ ],
1185
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1186
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1187
+ "keywords": [
1188
+ "filesystem",
1189
+ "iterator"
1190
+ ],
1191
+ "time": "2017-11-27T13:52:08+00:00"
1192
+ },
1193
+ {
1194
+ "name": "phpunit/php-text-template",
1195
+ "version": "1.2.1",
1196
+ "source": {
1197
+ "type": "git",
1198
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
1199
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1200
+ },
1201
+ "dist": {
1202
+ "type": "zip",
1203
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1204
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1205
+ "shasum": ""
1206
+ },
1207
+ "require": {
1208
+ "php": ">=5.3.3"
1209
+ },
1210
+ "type": "library",
1211
+ "autoload": {
1212
+ "classmap": [
1213
+ "src/"
1214
+ ]
1215
+ },
1216
+ "notification-url": "https://packagist.org/downloads/",
1217
+ "license": [
1218
+ "BSD-3-Clause"
1219
+ ],
1220
+ "authors": [
1221
+ {
1222
+ "name": "Sebastian Bergmann",
1223
+ "email": "sebastian@phpunit.de",
1224
+ "role": "lead"
1225
+ }
1226
+ ],
1227
+ "description": "Simple template engine.",
1228
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1229
+ "keywords": [
1230
+ "template"
1231
+ ],
1232
+ "time": "2015-06-21T13:50:34+00:00"
1233
+ },
1234
+ {
1235
+ "name": "phpunit/php-timer",
1236
+ "version": "1.0.9",
1237
+ "source": {
1238
+ "type": "git",
1239
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
1240
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
1241
+ },
1242
+ "dist": {
1243
+ "type": "zip",
1244
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1245
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1246
+ "shasum": ""
1247
+ },
1248
+ "require": {
1249
+ "php": "^5.3.3 || ^7.0"
1250
+ },
1251
+ "require-dev": {
1252
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1253
+ },
1254
+ "type": "library",
1255
+ "extra": {
1256
+ "branch-alias": {
1257
+ "dev-master": "1.0-dev"
1258
+ }
1259
+ },
1260
+ "autoload": {
1261
+ "classmap": [
1262
+ "src/"
1263
+ ]
1264
+ },
1265
+ "notification-url": "https://packagist.org/downloads/",
1266
+ "license": [
1267
+ "BSD-3-Clause"
1268
+ ],
1269
+ "authors": [
1270
+ {
1271
+ "name": "Sebastian Bergmann",
1272
+ "email": "sb@sebastian-bergmann.de",
1273
+ "role": "lead"
1274
+ }
1275
+ ],
1276
+ "description": "Utility class for timing",
1277
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
1278
+ "keywords": [
1279
+ "timer"
1280
+ ],
1281
+ "time": "2017-02-26T11:10:40+00:00"
1282
+ },
1283
+ {
1284
+ "name": "phpunit/php-token-stream",
1285
+ "version": "2.0.2",
1286
+ "source": {
1287
+ "type": "git",
1288
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1289
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
1290
+ },
1291
+ "dist": {
1292
+ "type": "zip",
1293
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
1294
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
1295
+ "shasum": ""
1296
+ },
1297
+ "require": {
1298
+ "ext-tokenizer": "*",
1299
+ "php": "^7.0"
1300
+ },
1301
+ "require-dev": {
1302
+ "phpunit/phpunit": "^6.2.4"
1303
+ },
1304
+ "type": "library",
1305
+ "extra": {
1306
+ "branch-alias": {
1307
+ "dev-master": "2.0-dev"
1308
+ }
1309
+ },
1310
+ "autoload": {
1311
+ "classmap": [
1312
+ "src/"
1313
+ ]
1314
+ },
1315
+ "notification-url": "https://packagist.org/downloads/",
1316
+ "license": [
1317
+ "BSD-3-Clause"
1318
+ ],
1319
+ "authors": [
1320
+ {
1321
+ "name": "Sebastian Bergmann",
1322
+ "email": "sebastian@phpunit.de"
1323
+ }
1324
+ ],
1325
+ "description": "Wrapper around PHP's tokenizer extension.",
1326
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1327
+ "keywords": [
1328
+ "tokenizer"
1329
+ ],
1330
+ "time": "2017-11-27T05:48:46+00:00"
1331
+ },
1332
+ {
1333
+ "name": "phpunit/phpunit",
1334
+ "version": "5.7.27",
1335
+ "source": {
1336
+ "type": "git",
1337
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1338
+ "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
1339
+ },
1340
+ "dist": {
1341
+ "type": "zip",
1342
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
1343
+ "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
1344
+ "shasum": ""
1345
+ },
1346
+ "require": {
1347
+ "ext-dom": "*",
1348
+ "ext-json": "*",
1349
+ "ext-libxml": "*",
1350
+ "ext-mbstring": "*",
1351
+ "ext-xml": "*",
1352
+ "myclabs/deep-copy": "~1.3",
1353
+ "php": "^5.6 || ^7.0",
1354
+ "phpspec/prophecy": "^1.6.2",
1355
+ "phpunit/php-code-coverage": "^4.0.4",
1356
+ "phpunit/php-file-iterator": "~1.4",
1357
+ "phpunit/php-text-template": "~1.2",
1358
+ "phpunit/php-timer": "^1.0.6",
1359
+ "phpunit/phpunit-mock-objects": "^3.2",
1360
+ "sebastian/comparator": "^1.2.4",
1361
+ "sebastian/diff": "^1.4.3",
1362
+ "sebastian/environment": "^1.3.4 || ^2.0",
1363
+ "sebastian/exporter": "~2.0",
1364
+ "sebastian/global-state": "^1.1",
1365
+ "sebastian/object-enumerator": "~2.0",
1366
+ "sebastian/resource-operations": "~1.0",
1367
+ "sebastian/version": "^1.0.6|^2.0.1",
1368
+ "symfony/yaml": "~2.1|~3.0|~4.0"
1369
+ },
1370
+ "conflict": {
1371
+ "phpdocumentor/reflection-docblock": "3.0.2"
1372
+ },
1373
+ "require-dev": {
1374
+ "ext-pdo": "*"
1375
+ },
1376
+ "suggest": {
1377
+ "ext-xdebug": "*",
1378
+ "phpunit/php-invoker": "~1.1"
1379
+ },
1380
+ "bin": [
1381
+ "phpunit"
1382
+ ],
1383
+ "type": "library",
1384
+ "extra": {
1385
+ "branch-alias": {
1386
+ "dev-master": "5.7.x-dev"
1387
+ }
1388
+ },
1389
+ "autoload": {
1390
+ "classmap": [
1391
+ "src/"
1392
+ ]
1393
+ },
1394
+ "notification-url": "https://packagist.org/downloads/",
1395
+ "license": [
1396
+ "BSD-3-Clause"
1397
+ ],
1398
+ "authors": [
1399
+ {
1400
+ "name": "Sebastian Bergmann",
1401
+ "email": "sebastian@phpunit.de",
1402
+ "role": "lead"
1403
+ }
1404
+ ],
1405
+ "description": "The PHP Unit Testing framework.",
1406
+ "homepage": "https://phpunit.de/",
1407
+ "keywords": [
1408
+ "phpunit",
1409
+ "testing",
1410
+ "xunit"
1411
+ ],
1412
+ "time": "2018-02-01T05:50:59+00:00"
1413
+ },
1414
+ {
1415
+ "name": "phpunit/phpunit-mock-objects",
1416
+ "version": "3.4.4",
1417
+ "source": {
1418
+ "type": "git",
1419
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1420
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
1421
+ },
1422
+ "dist": {
1423
+ "type": "zip",
1424
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
1425
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
1426
+ "shasum": ""
1427
+ },
1428
+ "require": {
1429
+ "doctrine/instantiator": "^1.0.2",
1430
+ "php": "^5.6 || ^7.0",
1431
+ "phpunit/php-text-template": "^1.2",
1432
+ "sebastian/exporter": "^1.2 || ^2.0"
1433
+ },
1434
+ "conflict": {
1435
+ "phpunit/phpunit": "<5.4.0"
1436
+ },
1437
+ "require-dev": {
1438
+ "phpunit/phpunit": "^5.4"
1439
+ },
1440
+ "suggest": {
1441
+ "ext-soap": "*"
1442
+ },
1443
+ "type": "library",
1444
+ "extra": {
1445
+ "branch-alias": {
1446
+ "dev-master": "3.2.x-dev"
1447
+ }
1448
+ },
1449
+ "autoload": {
1450
+ "classmap": [
1451
+ "src/"
1452
+ ]
1453
+ },
1454
+ "notification-url": "https://packagist.org/downloads/",
1455
+ "license": [
1456
+ "BSD-3-Clause"
1457
+ ],
1458
+ "authors": [
1459
+ {
1460
+ "name": "Sebastian Bergmann",
1461
+ "email": "sb@sebastian-bergmann.de",
1462
+ "role": "lead"
1463
+ }
1464
+ ],
1465
+ "description": "Mock Object library for PHPUnit",
1466
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1467
+ "keywords": [
1468
+ "mock",
1469
+ "xunit"
1470
+ ],
1471
+ "abandoned": true,
1472
+ "time": "2017-06-30T09:13:00+00:00"
1473
+ },
1474
+ {
1475
+ "name": "sebastian/code-unit-reverse-lookup",
1476
+ "version": "1.0.1",
1477
+ "source": {
1478
+ "type": "git",
1479
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1480
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1481
+ },
1482
+ "dist": {
1483
+ "type": "zip",
1484
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1485
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1486
+ "shasum": ""
1487
+ },
1488
+ "require": {
1489
+ "php": "^5.6 || ^7.0"
1490
+ },
1491
+ "require-dev": {
1492
+ "phpunit/phpunit": "^5.7 || ^6.0"
1493
+ },
1494
+ "type": "library",
1495
+ "extra": {
1496
+ "branch-alias": {
1497
+ "dev-master": "1.0.x-dev"
1498
+ }
1499
+ },
1500
+ "autoload": {
1501
+ "classmap": [
1502
+ "src/"
1503
+ ]
1504
+ },
1505
+ "notification-url": "https://packagist.org/downloads/",
1506
+ "license": [
1507
+ "BSD-3-Clause"
1508
+ ],
1509
+ "authors": [
1510
+ {
1511
+ "name": "Sebastian Bergmann",
1512
+ "email": "sebastian@phpunit.de"
1513
+ }
1514
+ ],
1515
+ "description": "Looks up which function or method a line of code belongs to",
1516
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1517
+ "time": "2017-03-04T06:30:41+00:00"
1518
+ },
1519
+ {
1520
+ "name": "sebastian/comparator",
1521
+ "version": "1.2.4",
1522
+ "source": {
1523
+ "type": "git",
1524
+ "url": "https://github.com/sebastianbergmann/comparator.git",
1525
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
1526
+ },
1527
+ "dist": {
1528
+ "type": "zip",
1529
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1530
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1531
+ "shasum": ""
1532
+ },
1533
+ "require": {
1534
+ "php": ">=5.3.3",
1535
+ "sebastian/diff": "~1.2",
1536
+ "sebastian/exporter": "~1.2 || ~2.0"
1537
+ },
1538
+ "require-dev": {
1539
+ "phpunit/phpunit": "~4.4"
1540
+ },
1541
+ "type": "library",
1542
+ "extra": {
1543
+ "branch-alias": {
1544
+ "dev-master": "1.2.x-dev"
1545
+ }
1546
+ },
1547
+ "autoload": {
1548
+ "classmap": [
1549
+ "src/"
1550
+ ]
1551
+ },
1552
+ "notification-url": "https://packagist.org/downloads/",
1553
+ "license": [
1554
+ "BSD-3-Clause"
1555
+ ],
1556
+ "authors": [
1557
+ {
1558
+ "name": "Jeff Welch",
1559
+ "email": "whatthejeff@gmail.com"
1560
+ },
1561
+ {
1562
+ "name": "Volker Dusch",
1563
+ "email": "github@wallbash.com"
1564
+ },
1565
+ {
1566
+ "name": "Bernhard Schussek",
1567
+ "email": "bschussek@2bepublished.at"
1568
+ },
1569
+ {
1570
+ "name": "Sebastian Bergmann",
1571
+ "email": "sebastian@phpunit.de"
1572
+ }
1573
+ ],
1574
+ "description": "Provides the functionality to compare PHP values for equality",
1575
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
1576
+ "keywords": [
1577
+ "comparator",
1578
+ "compare",
1579
+ "equality"
1580
+ ],
1581
+ "time": "2017-01-29T09:50:25+00:00"
1582
+ },
1583
+ {
1584
+ "name": "sebastian/diff",
1585
+ "version": "1.4.3",
1586
+ "source": {
1587
+ "type": "git",
1588
+ "url": "https://github.com/sebastianbergmann/diff.git",
1589
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
1590
+ },
1591
+ "dist": {
1592
+ "type": "zip",
1593
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1594
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1595
+ "shasum": ""
1596
+ },
1597
+ "require": {
1598
+ "php": "^5.3.3 || ^7.0"
1599
+ },
1600
+ "require-dev": {
1601
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1602
+ },
1603
+ "type": "library",
1604
+ "extra": {
1605
+ "branch-alias": {
1606
+ "dev-master": "1.4-dev"
1607
+ }
1608
+ },
1609
+ "autoload": {
1610
+ "classmap": [
1611
+ "src/"
1612
+ ]
1613
+ },
1614
+ "notification-url": "https://packagist.org/downloads/",
1615
+ "license": [
1616
+ "BSD-3-Clause"
1617
+ ],
1618
+ "authors": [
1619
+ {
1620
+ "name": "Kore Nordmann",
1621
+ "email": "mail@kore-nordmann.de"
1622
+ },
1623
+ {
1624
+ "name": "Sebastian Bergmann",
1625
+ "email": "sebastian@phpunit.de"
1626
+ }
1627
+ ],
1628
+ "description": "Diff implementation",
1629
+ "homepage": "https://github.com/sebastianbergmann/diff",
1630
+ "keywords": [
1631
+ "diff"
1632
+ ],
1633
+ "time": "2017-05-22T07:24:03+00:00"
1634
+ },
1635
+ {
1636
+ "name": "sebastian/environment",
1637
+ "version": "2.0.0",
1638
+ "source": {
1639
+ "type": "git",
1640
+ "url": "https://github.com/sebastianbergmann/environment.git",
1641
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
1642
+ },
1643
+ "dist": {
1644
+ "type": "zip",
1645
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1646
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1647
+ "shasum": ""
1648
+ },
1649
+ "require": {
1650
+ "php": "^5.6 || ^7.0"
1651
+ },
1652
+ "require-dev": {
1653
+ "phpunit/phpunit": "^5.0"
1654
+ },
1655
+ "type": "library",
1656
+ "extra": {
1657
+ "branch-alias": {
1658
+ "dev-master": "2.0.x-dev"
1659
+ }
1660
+ },
1661
+ "autoload": {
1662
+ "classmap": [
1663
+ "src/"
1664
+ ]
1665
+ },
1666
+ "notification-url": "https://packagist.org/downloads/",
1667
+ "license": [
1668
+ "BSD-3-Clause"
1669
+ ],
1670
+ "authors": [
1671
+ {
1672
+ "name": "Sebastian Bergmann",
1673
+ "email": "sebastian@phpunit.de"
1674
+ }
1675
+ ],
1676
+ "description": "Provides functionality to handle HHVM/PHP environments",
1677
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
1678
+ "keywords": [
1679
+ "Xdebug",
1680
+ "environment",
1681
+ "hhvm"
1682
+ ],
1683
+ "time": "2016-11-26T07:53:53+00:00"
1684
+ },
1685
+ {
1686
+ "name": "sebastian/exporter",
1687
+ "version": "2.0.0",
1688
+ "source": {
1689
+ "type": "git",
1690
+ "url": "https://github.com/sebastianbergmann/exporter.git",
1691
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
1692
+ },
1693
+ "dist": {
1694
+ "type": "zip",
1695
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1696
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1697
+ "shasum": ""
1698
+ },
1699
+ "require": {
1700
+ "php": ">=5.3.3",
1701
+ "sebastian/recursion-context": "~2.0"
1702
+ },
1703
+ "require-dev": {
1704
+ "ext-mbstring": "*",
1705
+ "phpunit/phpunit": "~4.4"
1706
+ },
1707
+ "type": "library",
1708
+ "extra": {
1709
+ "branch-alias": {
1710
+ "dev-master": "2.0.x-dev"
1711
+ }
1712
+ },
1713
+ "autoload": {
1714
+ "classmap": [
1715
+ "src/"
1716
+ ]
1717
+ },
1718
+ "notification-url": "https://packagist.org/downloads/",
1719
+ "license": [
1720
+ "BSD-3-Clause"
1721
+ ],
1722
+ "authors": [
1723
+ {
1724
+ "name": "Jeff Welch",
1725
+ "email": "whatthejeff@gmail.com"
1726
+ },
1727
+ {
1728
+ "name": "Volker Dusch",
1729
+ "email": "github@wallbash.com"
1730
+ },
1731
+ {
1732
+ "name": "Bernhard Schussek",
1733
+ "email": "bschussek@2bepublished.at"
1734
+ },
1735
+ {
1736
+ "name": "Sebastian Bergmann",
1737
+ "email": "sebastian@phpunit.de"
1738
+ },
1739
+ {
1740
+ "name": "Adam Harvey",
1741
+ "email": "aharvey@php.net"
1742
+ }
1743
+ ],
1744
+ "description": "Provides the functionality to export PHP variables for visualization",
1745
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
1746
+ "keywords": [
1747
+ "export",
1748
+ "exporter"
1749
+ ],
1750
+ "time": "2016-11-19T08:54:04+00:00"
1751
+ },
1752
+ {
1753
+ "name": "sebastian/global-state",
1754
+ "version": "1.1.1",
1755
+ "source": {
1756
+ "type": "git",
1757
+ "url": "https://github.com/sebastianbergmann/global-state.git",
1758
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
1759
+ },
1760
+ "dist": {
1761
+ "type": "zip",
1762
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
1763
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
1764
+ "shasum": ""
1765
+ },
1766
+ "require": {
1767
+ "php": ">=5.3.3"
1768
+ },
1769
+ "require-dev": {
1770
+ "phpunit/phpunit": "~4.2"
1771
+ },
1772
+ "suggest": {
1773
+ "ext-uopz": "*"
1774
+ },
1775
+ "type": "library",
1776
+ "extra": {
1777
+ "branch-alias": {
1778
+ "dev-master": "1.0-dev"
1779
+ }
1780
+ },
1781
+ "autoload": {
1782
+ "classmap": [
1783
+ "src/"
1784
+ ]
1785
+ },
1786
+ "notification-url": "https://packagist.org/downloads/",
1787
+ "license": [
1788
+ "BSD-3-Clause"
1789
+ ],
1790
+ "authors": [
1791
+ {
1792
+ "name": "Sebastian Bergmann",
1793
+ "email": "sebastian@phpunit.de"
1794
+ }
1795
+ ],
1796
+ "description": "Snapshotting of global state",
1797
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
1798
+ "keywords": [
1799
+ "global state"
1800
+ ],
1801
+ "time": "2015-10-12T03:26:01+00:00"
1802
+ },
1803
+ {
1804
+ "name": "sebastian/object-enumerator",
1805
+ "version": "2.0.1",
1806
+ "source": {
1807
+ "type": "git",
1808
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1809
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
1810
+ },
1811
+ "dist": {
1812
+ "type": "zip",
1813
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
1814
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
1815
+ "shasum": ""
1816
+ },
1817
+ "require": {
1818
+ "php": ">=5.6",
1819
+ "sebastian/recursion-context": "~2.0"
1820
+ },
1821
+ "require-dev": {
1822
+ "phpunit/phpunit": "~5"
1823
+ },
1824
+ "type": "library",
1825
+ "extra": {
1826
+ "branch-alias": {
1827
+ "dev-master": "2.0.x-dev"
1828
+ }
1829
+ },
1830
+ "autoload": {
1831
+ "classmap": [
1832
+ "src/"
1833
+ ]
1834
+ },
1835
+ "notification-url": "https://packagist.org/downloads/",
1836
+ "license": [
1837
+ "BSD-3-Clause"
1838
+ ],
1839
+ "authors": [
1840
+ {
1841
+ "name": "Sebastian Bergmann",
1842
+ "email": "sebastian@phpunit.de"
1843
+ }
1844
+ ],
1845
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1846
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1847
+ "time": "2017-02-18T15:18:39+00:00"
1848
+ },
1849
+ {
1850
+ "name": "sebastian/recursion-context",
1851
+ "version": "2.0.0",
1852
+ "source": {
1853
+ "type": "git",
1854
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
1855
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
1856
+ },
1857
+ "dist": {
1858
+ "type": "zip",
1859
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1860
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1861
+ "shasum": ""
1862
+ },
1863
+ "require": {
1864
+ "php": ">=5.3.3"
1865
+ },
1866
+ "require-dev": {
1867
+ "phpunit/phpunit": "~4.4"
1868
+ },
1869
+ "type": "library",
1870
+ "extra": {
1871
+ "branch-alias": {
1872
+ "dev-master": "2.0.x-dev"
1873
+ }
1874
+ },
1875
+ "autoload": {
1876
+ "classmap": [
1877
+ "src/"
1878
+ ]
1879
+ },
1880
+ "notification-url": "https://packagist.org/downloads/",
1881
+ "license": [
1882
+ "BSD-3-Clause"
1883
+ ],
1884
+ "authors": [
1885
+ {
1886
+ "name": "Jeff Welch",
1887
+ "email": "whatthejeff@gmail.com"
1888
+ },
1889
+ {
1890
+ "name": "Sebastian Bergmann",
1891
+ "email": "sebastian@phpunit.de"
1892
+ },
1893
+ {
1894
+ "name": "Adam Harvey",
1895
+ "email": "aharvey@php.net"
1896
+ }
1897
+ ],
1898
+ "description": "Provides functionality to recursively process PHP variables",
1899
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1900
+ "time": "2016-11-19T07:33:16+00:00"
1901
+ },
1902
+ {
1903
+ "name": "sebastian/resource-operations",
1904
+ "version": "1.0.0",
1905
+ "source": {
1906
+ "type": "git",
1907
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
1908
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1909
+ },
1910
+ "dist": {
1911
+ "type": "zip",
1912
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1913
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1914
+ "shasum": ""
1915
+ },
1916
+ "require": {
1917
+ "php": ">=5.6.0"
1918
+ },
1919
+ "type": "library",
1920
+ "extra": {
1921
+ "branch-alias": {
1922
+ "dev-master": "1.0.x-dev"
1923
+ }
1924
+ },
1925
+ "autoload": {
1926
+ "classmap": [
1927
+ "src/"
1928
+ ]
1929
+ },
1930
+ "notification-url": "https://packagist.org/downloads/",
1931
+ "license": [
1932
+ "BSD-3-Clause"
1933
+ ],
1934
+ "authors": [
1935
+ {
1936
+ "name": "Sebastian Bergmann",
1937
+ "email": "sebastian@phpunit.de"
1938
+ }
1939
+ ],
1940
+ "description": "Provides a list of PHP built-in functions that operate on resources",
1941
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1942
+ "time": "2015-07-28T20:34:47+00:00"
1943
+ },
1944
+ {
1945
+ "name": "sebastian/version",
1946
+ "version": "2.0.1",
1947
+ "source": {
1948
+ "type": "git",
1949
+ "url": "https://github.com/sebastianbergmann/version.git",
1950
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1951
+ },
1952
+ "dist": {
1953
+ "type": "zip",
1954
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1955
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1956
+ "shasum": ""
1957
+ },
1958
+ "require": {
1959
+ "php": ">=5.6"
1960
+ },
1961
+ "type": "library",
1962
+ "extra": {
1963
+ "branch-alias": {
1964
+ "dev-master": "2.0.x-dev"
1965
+ }
1966
+ },
1967
+ "autoload": {
1968
+ "classmap": [
1969
+ "src/"
1970
+ ]
1971
+ },
1972
+ "notification-url": "https://packagist.org/downloads/",
1973
+ "license": [
1974
+ "BSD-3-Clause"
1975
+ ],
1976
+ "authors": [
1977
+ {
1978
+ "name": "Sebastian Bergmann",
1979
+ "email": "sebastian@phpunit.de",
1980
+ "role": "lead"
1981
+ }
1982
+ ],
1983
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1984
+ "homepage": "https://github.com/sebastianbergmann/version",
1985
+ "time": "2016-10-03T07:35:21+00:00"
1986
+ },
1987
+ {
1988
+ "name": "squizlabs/php_codesniffer",
1989
+ "version": "3.4.0",
1990
+ "source": {
1991
+ "type": "git",
1992
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
1993
+ "reference": "379deb987e26c7cd103a7b387aea178baec96e48"
1994
+ },
1995
+ "dist": {
1996
+ "type": "zip",
1997
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48",
1998
+ "reference": "379deb987e26c7cd103a7b387aea178baec96e48",
1999
+ "shasum": ""
2000
+ },
2001
+ "require": {
2002
+ "ext-simplexml": "*",
2003
+ "ext-tokenizer": "*",
2004
+ "ext-xmlwriter": "*",
2005
+ "php": ">=5.4.0"
2006
+ },
2007
+ "require-dev": {
2008
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
2009
+ },
2010
+ "bin": [
2011
+ "bin/phpcs",
2012
+ "bin/phpcbf"
2013
+ ],
2014
+ "type": "library",
2015
+ "extra": {
2016
+ "branch-alias": {
2017
+ "dev-master": "3.x-dev"
2018
+ }
2019
+ },
2020
+ "notification-url": "https://packagist.org/downloads/",
2021
+ "license": [
2022
+ "BSD-3-Clause"
2023
+ ],
2024
+ "authors": [
2025
+ {
2026
+ "name": "Greg Sherwood",
2027
+ "role": "lead"
2028
+ }
2029
+ ],
2030
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
2031
+ "homepage": "http://www.squizlabs.com/php-codesniffer",
2032
+ "keywords": [
2033
+ "phpcs",
2034
+ "standards"
2035
+ ],
2036
+ "time": "2018-12-19T23:57:18+00:00"
2037
+ },
2038
+ {
2039
+ "name": "symfony/polyfill-ctype",
2040
+ "version": "v1.10.0",
2041
+ "source": {
2042
+ "type": "git",
2043
+ "url": "https://github.com/symfony/polyfill-ctype.git",
2044
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
2045
+ },
2046
+ "dist": {
2047
+ "type": "zip",
2048
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
2049
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
2050
+ "shasum": ""
2051
+ },
2052
+ "require": {
2053
+ "php": ">=5.3.3"
2054
+ },
2055
+ "suggest": {
2056
+ "ext-ctype": "For best performance"
2057
+ },
2058
+ "type": "library",
2059
+ "extra": {
2060
+ "branch-alias": {
2061
+ "dev-master": "1.9-dev"
2062
+ }
2063
+ },
2064
+ "autoload": {
2065
+ "psr-4": {
2066
+ "Symfony\\Polyfill\\Ctype\\": ""
2067
+ },
2068
+ "files": [
2069
+ "bootstrap.php"
2070
+ ]
2071
+ },
2072
+ "notification-url": "https://packagist.org/downloads/",
2073
+ "license": [
2074
+ "MIT"
2075
+ ],
2076
+ "authors": [
2077
+ {
2078
+ "name": "Symfony Community",
2079
+ "homepage": "https://symfony.com/contributors"
2080
+ },
2081
+ {
2082
+ "name": "Gert de Pagter",
2083
+ "email": "BackEndTea@gmail.com"
2084
+ }
2085
+ ],
2086
+ "description": "Symfony polyfill for ctype functions",
2087
+ "homepage": "https://symfony.com",
2088
+ "keywords": [
2089
+ "compatibility",
2090
+ "ctype",
2091
+ "polyfill",
2092
+ "portable"
2093
+ ],
2094
+ "time": "2018-08-06T14:22:27+00:00"
2095
+ },
2096
+ {
2097
+ "name": "symfony/yaml",
2098
+ "version": "v4.2.3",
2099
+ "source": {
2100
+ "type": "git",
2101
+ "url": "https://github.com/symfony/yaml.git",
2102
+ "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0"
2103
+ },
2104
+ "dist": {
2105
+ "type": "zip",
2106
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0",
2107
+ "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0",
2108
+ "shasum": ""
2109
+ },
2110
+ "require": {
2111
+ "php": "^7.1.3",
2112
+ "symfony/polyfill-ctype": "~1.8"
2113
+ },
2114
+ "conflict": {
2115
+ "symfony/console": "<3.4"
2116
+ },
2117
+ "require-dev": {
2118
+ "symfony/console": "~3.4|~4.0"
2119
+ },
2120
+ "suggest": {
2121
+ "symfony/console": "For validating YAML files using the lint command"
2122
+ },
2123
+ "type": "library",
2124
+ "extra": {
2125
+ "branch-alias": {
2126
+ "dev-master": "4.2-dev"
2127
+ }
2128
+ },
2129
+ "autoload": {
2130
+ "psr-4": {
2131
+ "Symfony\\Component\\Yaml\\": ""
2132
+ },
2133
+ "exclude-from-classmap": [
2134
+ "/Tests/"
2135
+ ]
2136
+ },
2137
+ "notification-url": "https://packagist.org/downloads/",
2138
+ "license": [
2139
+ "MIT"
2140
+ ],
2141
+ "authors": [
2142
+ {
2143
+ "name": "Fabien Potencier",
2144
+ "email": "fabien@symfony.com"
2145
+ },
2146
+ {
2147
+ "name": "Symfony Community",
2148
+ "homepage": "https://symfony.com/contributors"
2149
+ }
2150
+ ],
2151
+ "description": "Symfony Yaml Component",
2152
+ "homepage": "https://symfony.com",
2153
+ "time": "2019-01-16T20:35:37+00:00"
2154
+ },
2155
+ {
2156
+ "name": "webmozart/assert",
2157
+ "version": "1.4.0",
2158
+ "source": {
2159
+ "type": "git",
2160
+ "url": "https://github.com/webmozart/assert.git",
2161
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
2162
+ },
2163
+ "dist": {
2164
+ "type": "zip",
2165
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
2166
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
2167
+ "shasum": ""
2168
+ },
2169
+ "require": {
2170
+ "php": "^5.3.3 || ^7.0",
2171
+ "symfony/polyfill-ctype": "^1.8"
2172
+ },
2173
+ "require-dev": {
2174
+ "phpunit/phpunit": "^4.6",
2175
+ "sebastian/version": "^1.0.1"
2176
+ },
2177
+ "type": "library",
2178
+ "extra": {
2179
+ "branch-alias": {
2180
+ "dev-master": "1.3-dev"
2181
+ }
2182
+ },
2183
+ "autoload": {
2184
+ "psr-4": {
2185
+ "Webmozart\\Assert\\": "src/"
2186
+ }
2187
+ },
2188
+ "notification-url": "https://packagist.org/downloads/",
2189
+ "license": [
2190
+ "MIT"
2191
+ ],
2192
+ "authors": [
2193
+ {
2194
+ "name": "Bernhard Schussek",
2195
+ "email": "bschussek@gmail.com"
2196
+ }
2197
+ ],
2198
+ "description": "Assertions to validate method input/output with nice error messages.",
2199
+ "keywords": [
2200
+ "assert",
2201
+ "check",
2202
+ "validate"
2203
+ ],
2204
+ "time": "2018-12-25T11:19:39+00:00"
2205
+ },
2206
+ {
2207
+ "name": "wp-coding-standards/wpcs",
2208
+ "version": "2.0.0",
2209
+ "source": {
2210
+ "type": "git",
2211
+ "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
2212
+ "reference": "c9eaadaafefce36b3cb7e06eb15305b8c4cae9ce"
2213
+ },
2214
+ "dist": {
2215
+ "type": "zip",
2216
+ "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/c9eaadaafefce36b3cb7e06eb15305b8c4cae9ce",
2217
+ "reference": "c9eaadaafefce36b3cb7e06eb15305b8c4cae9ce",
2218
+ "shasum": ""
2219
+ },
2220
+ "require": {
2221
+ "php": ">=5.4",
2222
+ "squizlabs/php_codesniffer": "^3.3.1"
2223
+ },
2224
+ "require-dev": {
2225
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
2226
+ "phpcompatibility/php-compatibility": "^9.0",
2227
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
2228
  },
2229
  "suggest": {
2230
  "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
2246
  "standards",
2247
  "wordpress"
2248
  ],
2249
+ "time": "2019-01-16T10:13:16+00:00"
2250
  }
2251
  ],
2252
  "aliases": [],
2255
  "prefer-stable": false,
2256
  "prefer-lowest": false,
2257
  "platform": {
2258
+ "php": ">=5.6"
2259
  },
2260
  "platform-dev": []
2261
  }
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Lazy Load by WP Rocket ===
2
- Contributors: creativejuiz, tabrisrp, wp_media
3
  Tags: lazyload, lazy load, images, iframes, thumbnail, thumbnails, smiley, smilies, avatar, gravatar, youtube
4
  Requires at least: 4.7
5
  Tested up to: 5.0.2
6
  Requires PHP: 5.4
7
- Stable tag: 2.0.3.2
8
 
9
  Lazy Load your images and iframes, replace Youtube videos by a preview thumbnail.
10
 
@@ -18,11 +18,12 @@ You can also replace Youtube iframes by a preview thumbnail to further speed up
18
 
19
  = Dependencies =
20
 
21
- Lazyload script: https://github.com/verlok/lazyload
22
 
23
  = Related Plugins =
24
- * <a href="https://wordpress.org/plugins/imagify/">Imagify</a>: Best Image Optimizer to speed up your website with lighter images.
25
- * <a href="https://wp-rocket.me">WP Rocket</a>: Best caching plugin to speed-up your WordPress website.
 
26
 
27
  == Installation ==
28
 
@@ -52,6 +53,8 @@ Simply add a `data-no-lazy="1"` property in you `img` or `iframe` tag.
52
 
53
  You can also use the filters `rocket_lazyload_excluded_attributes` or `rocket_lazyload_excluded_src` to exclude specific patterns.
54
 
 
 
55
  = How can I change the threshold to trigger the load? =
56
 
57
  You can use the `rocket_lazyload_threshold` filter.
@@ -78,6 +81,12 @@ The element you want to apply lazyload on must have this specific markup:
78
  The element must have the class `rocket-lazyload-bg`, and a `data-bg` attribute, which value is the CSS url for the image.
79
 
80
  == Changelog ==
 
 
 
 
 
 
81
  = 2.0.3.2 =
82
  * Bugfix: Correctly ignore inline scripts with line breaks inside
83
 
1
  === Lazy Load by WP Rocket ===
2
+ Contributors: wp_rocket, wp_media
3
  Tags: lazyload, lazy load, images, iframes, thumbnail, thumbnails, smiley, smilies, avatar, gravatar, youtube
4
  Requires at least: 4.7
5
  Tested up to: 5.0.2
6
  Requires PHP: 5.4
7
+ Stable tag: 2.0.4
8
 
9
  Lazy Load your images and iframes, replace Youtube videos by a preview thumbnail.
10
 
18
 
19
  = Dependencies =
20
 
21
+ Lazyload script: [https://github.com/verlok/lazyload](https://github.com/verlok/lazyload)
22
 
23
  = Related Plugins =
24
+ * [Imagify](https://imagify.io/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=LazyLoadPlugin): Best Image Optimizer to speed up your website with lighter images.
25
+ * [WP Rocket](https://wp-rocket.me/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=LazyLoadPlugin): Best caching plugin to speed-up your WordPress website.
26
+ * [Heartbeat Control by WP Rocket](https://wordpress.org/plugins/heartbeat-control/): Heartbeat Control by WP Rocket: Best plugin to control the WordPress Heartbeat API and reduce CPU usage.
27
 
28
  == Installation ==
29
 
53
 
54
  You can also use the filters `rocket_lazyload_excluded_attributes` or `rocket_lazyload_excluded_src` to exclude specific patterns.
55
 
56
+ For iframes, the filter is `rocket_lazyload_iframe_excluded_patterns`.
57
+
58
  = How can I change the threshold to trigger the load? =
59
 
60
  You can use the `rocket_lazyload_threshold` filter.
81
  The element must have the class `rocket-lazyload-bg`, and a `data-bg` attribute, which value is the CSS url for the image.
82
 
83
  == Changelog ==
84
+ = 2.0.4 =
85
+ * Enhancement: Add filter for iframe lazyload pattern exclusion
86
+ * Enhancement: Auto-exclude soliloquy-image pattern from lazyload
87
+ * Bugfix: Prevent issue when an image/iframe is duplicated on the same page
88
+ * Bugfix: Prevent W3C validation error for the SVG placeholder
89
+
90
  = 2.0.3.2 =
91
  * Bugfix: Correctly ignore inline scripts with line breaks inside
92
 
rocket-lazy-load.php CHANGED
@@ -3,12 +3,14 @@
3
  * Plugin Name: Lazy Load by WP Rocket
4
  * Plugin URI: http://wordpress.org/plugins/rocket-lazy-load/
5
  * Description: The tiny Lazy Load script for WordPress without jQuery or others libraries.
6
- * Version: 2.0.3.2
7
- * Author: WP Media
8
  * Author URI: https://wp-rocket.me
9
  * Text Domain: rocket-lazy-load
10
  * Domain Path: /languages
11
  *
 
 
12
  * Copyright 2015-2019 WP Media
13
  *
14
  * This program is free software; you can redistribute it and/or modify
@@ -27,7 +29,7 @@
27
 
28
  defined('ABSPATH') || die('Cheatin\' uh?');
29
 
30
- define('ROCKET_LL_VERSION', '2.0.3.2');
31
  define('ROCKET_LL_WP_VERSION', '4.7');
32
  define('ROCKET_LL_PHP_VERSION', '5.4');
33
  define('ROCKET_LL_BASENAME', plugin_basename(__FILE__));
@@ -52,7 +54,7 @@ function rocket_lazyload_textdomain()
52
  $locale = get_locale();
53
 
54
  // This filter is documented in /wp-includes/l10n.php.
55
- $locale = apply_filters('plugin_locale', $locale, 'rocket-lazy-load'); // WPCS: prefix ok.
56
  load_textdomain('rocket-lazy-load', WP_LANG_DIR . '/plugins/rocket-lazy-load-' . $locale . '.mo');
57
 
58
  load_plugin_textdomain('rocket-lazy-load', false, dirname(plugin_basename(__FILE__)) . '/languages/');
3
  * Plugin Name: Lazy Load by WP Rocket
4
  * Plugin URI: http://wordpress.org/plugins/rocket-lazy-load/
5
  * Description: The tiny Lazy Load script for WordPress without jQuery or others libraries.
6
+ * Version: 2.0.4
7
+ * Author: WP Rocket
8
  * Author URI: https://wp-rocket.me
9
  * Text Domain: rocket-lazy-load
10
  * Domain Path: /languages
11
  *
12
+ * @package RocketLazyloadPlugin
13
+ *
14
  * Copyright 2015-2019 WP Media
15
  *
16
  * This program is free software; you can redistribute it and/or modify
29
 
30
  defined('ABSPATH') || die('Cheatin\' uh?');
31
 
32
+ define('ROCKET_LL_VERSION', '2.0.4');
33
  define('ROCKET_LL_WP_VERSION', '4.7');
34
  define('ROCKET_LL_PHP_VERSION', '5.4');
35
  define('ROCKET_LL_BASENAME', plugin_basename(__FILE__));
54
  $locale = get_locale();
55
 
56
  // This filter is documented in /wp-includes/l10n.php.
57
+ $locale = apply_filters('plugin_locale', $locale, 'rocket-lazy-load'); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound.
58
  load_textdomain('rocket-lazy-load', WP_LANG_DIR . '/plugins/rocket-lazy-load-' . $locale . '.mo');
59
 
60
  load_plugin_textdomain('rocket-lazy-load', false, dirname(plugin_basename(__FILE__)) . '/languages/');
src/Admin/AdminPage.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Admin;
3
 
4
  defined('ABSPATH') || die('Cheatin\' uh?');
@@ -60,9 +66,9 @@ class AdminPage
60
  * @since 2.0
61
  * @author Remy Perona
62
  *
63
- * @param Options $options Options instance.
64
  * @param OptionArray $option_array OptionArray instance.
65
- * @param string $template_path Template path.
66
  */
67
  public function __construct(Options $options, OptionArray $option_array, $template_path)
68
  {
@@ -161,7 +167,7 @@ class AdminPage
161
  {
162
  $template_path = $this->template_path . $template . '.php';
163
 
164
- if (!is_readable($template_path)) {
165
  return;
166
  }
167
 
1
  <?php
2
+ /**
3
+ * Admin Page Class
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Admin;
9
 
10
  defined('ABSPATH') || die('Cheatin\' uh?');
66
  * @since 2.0
67
  * @author Remy Perona
68
  *
69
+ * @param Options $options Options instance.
70
  * @param OptionArray $option_array OptionArray instance.
71
+ * @param string $template_path Template path.
72
  */
73
  public function __construct(Options $options, OptionArray $option_array, $template_path)
74
  {
167
  {
168
  $template_path = $this->template_path . $template . '.php';
169
 
170
+ if (! is_readable($template_path)) {
171
  return;
172
  }
173
 
src/Admin/ImagifyNotice.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Admin;
3
 
4
  /**
@@ -57,7 +63,7 @@ class ImagifyNotice
57
  {
58
  $template_path = $this->template_path . $template . '.php';
59
 
60
- if (!is_readable($template_path)) {
61
  return;
62
  }
63
 
1
  <?php
2
+ /**
3
+ * Imagify Notice Class
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Admin;
9
 
10
  /**
63
  {
64
  $template_path = $this->template_path . $template . '.php';
65
 
66
+ if (! is_readable($template_path)) {
67
  return;
68
  }
69
 
src/EventManagement/EventManager.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\EventManagement;
3
 
4
  defined('ABSPATH') || die('Cheatin\' uh?');
@@ -100,8 +106,8 @@ class EventManager
100
  * of the WordPress plugin API.
101
  *
102
  * @param SubscriberInterface $subscriber SubscriberInterface implementation.
103
- * @param string $hook_name Hook name.
104
- * @param mixed $parameters Parameters, can be a string, an array or a multidimensional array.
105
  */
106
  private function addSubscriberCallback(SubscriberInterface $subscriber, $hook_name, $parameters)
107
  {
@@ -121,8 +127,8 @@ class EventManager
121
  * of the WordPress plugin API.
122
  *
123
  * @param SubscriberInterface $subscriber SubscriberInterface implementation.
124
- * @param string $hook_name Hook name.
125
- * @param mixed $parameters Parameters, can be a string, an array or a multidimensional array.
126
  */
127
  private function removeSubscriberCallback(SubscriberInterface $subscriber, $hook_name, $parameters)
128
  {
1
  <?php
2
+ /**
3
+ * Event Manager to interact with the WP plugin API
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\EventManagement;
9
 
10
  defined('ABSPATH') || die('Cheatin\' uh?');
106
  * of the WordPress plugin API.
107
  *
108
  * @param SubscriberInterface $subscriber SubscriberInterface implementation.
109
+ * @param string $hook_name Hook name.
110
+ * @param mixed $parameters Parameters, can be a string, an array or a multidimensional array.
111
  */
112
  private function addSubscriberCallback(SubscriberInterface $subscriber, $hook_name, $parameters)
113
  {
127
  * of the WordPress plugin API.
128
  *
129
  * @param SubscriberInterface $subscriber SubscriberInterface implementation.
130
+ * @param string $hook_name Hook name.
131
+ * @param mixed $parameters Parameters, can be a string, an array or a multidimensional array.
132
  */
133
  private function removeSubscriberCallback(SubscriberInterface $subscriber, $hook_name, $parameters)
134
  {
src/EventManagement/EventManagerAwareSubscriberInterface.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\EventManagement;
3
 
4
  interface EventManagerAwareSubscriberInterface extends SubscriberInterface
1
  <?php
2
+ /**
3
+ * Interface for subscribers who need access to the event manager object
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\EventManagement;
9
 
10
  interface EventManagerAwareSubscriberInterface extends SubscriberInterface
src/EventManagement/SubscriberInterface.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\EventManagement;
3
 
4
  /**
1
  <?php
2
+ /**
3
+ * Interface for subscribers
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\EventManagement;
9
 
10
  /**
src/Options/AbstractOptions.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Options;
3
 
4
  /**
1
  <?php
2
+ /**
3
+ * Abstract class to interact with the WP options API
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Options;
9
 
10
  /**
src/Options/OptionArray.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Options;
3
 
4
  /**
1
  <?php
2
+ /**
3
+ * Manages the plugin options data
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Options;
9
 
10
  /**
src/Options/Options.php CHANGED
@@ -1,11 +1,20 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Options;
3
 
4
  defined('ABSPATH') || die('Cheatin\' uh?');
5
 
 
 
 
6
  class Options extends AbstractOptions
7
  {
8
- /**
9
  * The prefix used by Rocket Lazyload options.
10
  *
11
  * @since 2.0
1
  <?php
2
+ /**
3
+ * Options Class
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Options;
9
 
10
  defined('ABSPATH') || die('Cheatin\' uh?');
11
 
12
+ /**
13
+ * Interact with the WordPress Options API
14
+ */
15
  class Options extends AbstractOptions
16
  {
17
+ /**
18
  * The prefix used by Rocket Lazyload options.
19
  *
20
  * @since 2.0
src/Plugin.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin;
3
 
4
  use League\Container\Container;
@@ -50,7 +56,7 @@ class Plugin
50
  return;
51
  }
52
 
53
- $container = new Container;
54
 
55
  $container->add('template_path', ROCKET_LL_PATH . 'views/');
56
  $container->add('plugin_basename', ROCKET_LL_BASENAME);
@@ -68,7 +74,7 @@ class Plugin
68
  'RocketLazyLoadPlugin\ServiceProvider\AdminServiceProvider',
69
  'RocketLazyLoadPlugin\ServiceProvider\ImagifyNoticeServiceProvider',
70
  'RocketLazyLoadPlugin\ServiceProvider\LazyloadServiceProvider',
71
- 'RocketLazyLoadPlugin\ServiceProvider\SubscribersServiceProvider'
72
  ];
73
 
74
  foreach ($service_providers as $service) {
1
  <?php
2
+ /**
3
+ * Initialize and load the plugin
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin;
9
 
10
  use League\Container\Container;
56
  return;
57
  }
58
 
59
+ $container = new Container();
60
 
61
  $container->add('template_path', ROCKET_LL_PATH . 'views/');
62
  $container->add('plugin_basename', ROCKET_LL_BASENAME);
74
  'RocketLazyLoadPlugin\ServiceProvider\AdminServiceProvider',
75
  'RocketLazyLoadPlugin\ServiceProvider\ImagifyNoticeServiceProvider',
76
  'RocketLazyLoadPlugin\ServiceProvider\LazyloadServiceProvider',
77
+ 'RocketLazyLoadPlugin\ServiceProvider\SubscribersServiceProvider',
78
  ];
79
 
80
  foreach ($service_providers as $service) {
src/ServiceProvider/AdminServiceProvider.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\ServiceProvider;
3
 
4
  use League\Container\ServiceProvider\AbstractServiceProvider;
@@ -34,8 +40,8 @@ class AdminServiceProvider extends AbstractServiceProvider
34
  public function register()
35
  {
36
  $this->getContainer()->add('RocketLazyLoadPlugin\Admin\AdminPage')
37
- ->withArgument($this->getContainer()->get('options'))
38
- ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Options\OptionArray'))
39
- ->withArgument($this->getContainer()->get('template_path'));
40
  }
41
  }
1
  <?php
2
+ /**
3
+ * Service Provider for the admin page classes
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\ServiceProvider;
9
 
10
  use League\Container\ServiceProvider\AbstractServiceProvider;
40
  public function register()
41
  {
42
  $this->getContainer()->add('RocketLazyLoadPlugin\Admin\AdminPage')
43
+ ->withArgument($this->getContainer()->get('options'))
44
+ ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Options\OptionArray'))
45
+ ->withArgument($this->getContainer()->get('template_path'));
46
  }
47
  }
src/ServiceProvider/ImagifyNoticeServiceProvider.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\ServiceProvider;
3
 
4
  use League\Container\ServiceProvider\AbstractServiceProvider;
@@ -34,6 +40,6 @@ class ImagifyNoticeServiceProvider extends AbstractServiceProvider
34
  public function register()
35
  {
36
  $this->getContainer()->add('RocketLazyLoadPlugin\Admin\ImagifyNotice')
37
- ->withArgument($this->getContainer()->get('template_path'));
38
  }
39
  }
1
  <?php
2
+ /**
3
+ * Service Provider for the imagify notice class
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\ServiceProvider;
9
 
10
  use League\Container\ServiceProvider\AbstractServiceProvider;
40
  public function register()
41
  {
42
  $this->getContainer()->add('RocketLazyLoadPlugin\Admin\ImagifyNotice')
43
+ ->withArgument($this->getContainer()->get('template_path'));
44
  }
45
  }
src/ServiceProvider/LazyloadServiceProvider.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\ServiceProvider;
3
 
4
  use League\Container\ServiceProvider\AbstractServiceProvider;
1
  <?php
2
+ /**
3
+ * Service Provider for the lazyload library
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\ServiceProvider;
9
 
10
  use League\Container\ServiceProvider\AbstractServiceProvider;
src/ServiceProvider/OptionServiceProvider.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\ServiceProvider;
3
 
4
  use League\Container\ServiceProvider\AbstractServiceProvider;
@@ -34,6 +40,6 @@ class OptionServiceProvider extends AbstractServiceProvider
34
  public function register()
35
  {
36
  $this->getContainer()->add('RocketLazyLoadPlugin\Options\OptionArray')
37
- ->withArgument($this->getContainer()->get('options')->get('_options'));
38
  }
39
  }
1
  <?php
2
+ /**
3
+ * Service Provider for the plugin options
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\ServiceProvider;
9
 
10
  use League\Container\ServiceProvider\AbstractServiceProvider;
40
  public function register()
41
  {
42
  $this->getContainer()->add('RocketLazyLoadPlugin\Options\OptionArray')
43
+ ->withArgument($this->getContainer()->get('options')->get('_options'));
44
  }
45
  }
src/ServiceProvider/SubscribersServiceProvider.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\ServiceProvider;
3
 
4
  use League\Container\ServiceProvider\AbstractServiceProvider;
@@ -39,16 +45,16 @@ class SubscribersServiceProvider extends AbstractServiceProvider
39
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\ThirdParty\AMPSubscriber');
40
 
41
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\AdminPageSubscriber')
42
- ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Admin\AdminPage'))
43
- ->withArgument($this->getContainer()->get('plugin_basename'));
44
 
45
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\ImagifyNoticeSubscriber')
46
- ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Admin\ImagifyNotice'));
47
 
48
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\LazyloadSubscriber')
49
- ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Options\OptionArray'))
50
- ->withArgument($this->getContainer()->get('RocketLazyload\Assets'))
51
- ->withArgument($this->getContainer()->get('RocketLazyload\Image'))
52
- ->withArgument($this->getContainer()->get('RocketLazyload\Iframe'));
53
  }
54
  }
1
  <?php
2
+ /**
3
+ * Service Provider for the plugin subscribers
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\ServiceProvider;
9
 
10
  use League\Container\ServiceProvider\AbstractServiceProvider;
45
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\ThirdParty\AMPSubscriber');
46
 
47
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\AdminPageSubscriber')
48
+ ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Admin\AdminPage'))
49
+ ->withArgument($this->getContainer()->get('plugin_basename'));
50
 
51
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\ImagifyNoticeSubscriber')
52
+ ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Admin\ImagifyNotice'));
53
 
54
  $this->getContainer()->add('RocketLazyLoadPlugin\Subscriber\LazyloadSubscriber')
55
+ ->withArgument($this->getContainer()->get('RocketLazyLoadPlugin\Options\OptionArray'))
56
+ ->withArgument($this->getContainer()->get('RocketLazyload\Assets'))
57
+ ->withArgument($this->getContainer()->get('RocketLazyload\Image'))
58
+ ->withArgument($this->getContainer()->get('RocketLazyload\Iframe'));
59
  }
60
  }
src/Subscriber/AdminPageSubscriber.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Subscriber;
3
 
4
  defined('ABSPATH') || die('Cheatin\' uh?');
@@ -41,7 +47,7 @@ class AdminPageSubscriber implements SubscriberInterface
41
  * @author Remy Perona
42
  *
43
  * @param AdminPage $page AdminPage instance.
44
- * @param string $plugin_basename Plugin basename.
45
  */
46
  public function __construct(AdminPage $page, $plugin_basename)
47
  {
1
  <?php
2
+ /**
3
+ * Admin Page subscriber
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Subscriber;
9
 
10
  defined('ABSPATH') || die('Cheatin\' uh?');
47
  * @author Remy Perona
48
  *
49
  * @param AdminPage $page AdminPage instance.
50
+ * @param string $plugin_basename Plugin basename.
51
  */
52
  public function __construct(AdminPage $page, $plugin_basename)
53
  {
src/Subscriber/ImagifyNoticeSubscriber.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Subscriber;
3
 
4
  defined('ABSPATH') || die('Cheatin\' uh?');
@@ -62,7 +68,7 @@ class ImagifyNoticeSubscriber implements SubscriberInterface
62
  {
63
  $current_screen = get_current_screen();
64
 
65
- if ('admin_notices' === current_filter() && (isset($current_screen) && 'settings_page_rocket_lazyload' !== $current_screen->base)) {
66
  return;
67
  }
68
 
@@ -110,32 +116,34 @@ class ImagifyNoticeSubscriber implements SubscriberInterface
110
  return;
111
  }
112
 
113
- if (! wp_verify_nonce($_GET['_wpnonce'], $_GET['action'] . '_' . $_GET['box'])) {
114
  if (defined('DOING_AJAX')) {
115
- wp_send_json(array('error' => 1));
116
  } else {
117
  wp_nonce_ays('');
118
  }
119
  }
120
 
121
- if ('rocket_lazyload_imagify_notice' === $_GET['box']) {
 
 
122
  update_option('rocket_lazyload_dismiss_imagify_notice', 0);
123
  }
124
 
125
- $actual = get_user_meta(get_current_user_id(), 'rocket_lazyload_boxes', true);
126
- $actual = array_merge((array) $actual, array( $_GET['box'] ));
127
  $actual = array_filter($actual);
128
  $actual = array_unique($actual);
129
 
130
  update_user_meta(get_current_user_id(), 'rocket_lazyload_boxes', $actual);
131
- delete_transient($_GET['box']);
132
 
133
  if (empty($GLOBALS['pagenow']) || 'admin-post.php' !== $GLOBALS['pagenow']) {
134
  return;
135
  }
136
 
137
  if (defined('DOING_AJAX')) {
138
- wp_send_json(array('error' => 0));
139
  } else {
140
  wp_safe_redirect(esc_url_raw(wp_get_referer()));
141
  die();
1
  <?php
2
+ /**
3
+ * Imagify Notice subscriber
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Subscriber;
9
 
10
  defined('ABSPATH') || die('Cheatin\' uh?');
68
  {
69
  $current_screen = get_current_screen();
70
 
71
+ if ('admin_notices' === current_filter() && ( isset($current_screen) && 'settings_page_rocket_lazyload' !== $current_screen->base )) {
72
  return;
73
  }
74
 
116
  return;
117
  }
118
 
119
+ if (! wp_verify_nonce(sanitize_key($_GET['_wpnonce']), 'rocket_lazyload_ignore_rocket_lazyload_imagify_notice')) {
120
  if (defined('DOING_AJAX')) {
121
+ wp_send_json(['error' => 1]);
122
  } else {
123
  wp_nonce_ays('');
124
  }
125
  }
126
 
127
+ $box = sanitize_key(wp_unslash($_GET['box']));
128
+
129
+ if ('rocket_lazyload_imagify_notice' === $box) {
130
  update_option('rocket_lazyload_dismiss_imagify_notice', 0);
131
  }
132
 
133
+ $actual = (array) get_user_meta(get_current_user_id(), 'rocket_lazyload_boxes', true);
134
+ $actual = array_merge($actual, [ $box ]);
135
  $actual = array_filter($actual);
136
  $actual = array_unique($actual);
137
 
138
  update_user_meta(get_current_user_id(), 'rocket_lazyload_boxes', $actual);
139
+ delete_transient($box);
140
 
141
  if (empty($GLOBALS['pagenow']) || 'admin-post.php' !== $GLOBALS['pagenow']) {
142
  return;
143
  }
144
 
145
  if (defined('DOING_AJAX')) {
146
+ wp_send_json(['error' => 0]);
147
  } else {
148
  wp_safe_redirect(esc_url_raw(wp_get_referer()));
149
  die();
src/Subscriber/LazyloadSubscriber.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Subscriber;
3
 
4
  defined('ABSPATH') || die('Cheatin\' uh?');
@@ -64,9 +70,9 @@ class LazyloadSubscriber implements SubscriberInterface
64
  * @author Remy Perona
65
  *
66
  * @param OptionArray $option_array OptionArray instance.
67
- * @param Assets $assets Assets instance.
68
- * @param Image $image Image instance.
69
- * @param Iframe $iframe Iframe instance.
70
  */
71
  public function __construct(OptionArray $option_array, Assets $assets, Image $image, Iframe $iframe)
72
  {
@@ -82,17 +88,17 @@ class LazyloadSubscriber implements SubscriberInterface
82
  public function getSubscribedEvents()
83
  {
84
  return [
85
- 'wp_footer' => [
86
  [ 'insertLazyloadScript', ROCKET_LL_INT_MAX ],
87
  ['insertYoutubeThumbnailScript', ROCKET_LL_INT_MAX ],
88
  ],
89
- 'wp_enqueue_scripts' => [
90
  ['insertNoJSStyle', ROCKET_LL_INT_MAX - 1],
91
  ['insertYoutubeThumbnailStyle', ROCKET_LL_INT_MAX],
92
  ],
93
- 'template_redirect' => ['lazyload', ROCKET_LL_INT_MAX],
94
  'rocket_lazyload_html' => 'lazyloadResponsive',
95
- 'init' => 'lazyloadSmilies',
96
  ];
97
  }
98
 
@@ -125,15 +131,15 @@ class LazyloadSubscriber implements SubscriberInterface
125
  $threshold = apply_filters('rocket_lazyload_threshold', 300);
126
 
127
  $args = [
128
- 'base_url' => ROCKET_LL_FRONT_JS_URL,
129
- 'suffix' => defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min',
130
  'threshold' => $threshold,
131
- 'version' => '10.19',
132
- 'fallback' => '8.17',
133
  ];
134
 
135
  if ($this->option_array->get('images')) {
136
- $args['elements']['image'] = 'img[data-lazy-src]';
137
  $args['elements']['background_image'] = '.rocket-lazyload-bg';
138
  }
139
 
@@ -241,16 +247,16 @@ class LazyloadSubscriber implements SubscriberInterface
241
  */
242
  private function shouldLazyload()
243
  {
244
- if (is_admin() || is_feed() || is_preview() || (defined('REST_REQUEST') && REST_REQUEST) || (defined('DONOTLAZYLOAD') && DONOTLAZYLOAD)) {
245
  return false;
246
  }
247
 
248
- // Don't lazyload on Beaver Builder editor
249
  if (isset($_GET['fl_builder'])) {
250
  return false;
251
  }
252
 
253
- // Don't lazyload on Divi editor
254
  if (isset($_GET['et_fb'])) {
255
  return false;
256
  }
@@ -263,7 +269,7 @@ class LazyloadSubscriber implements SubscriberInterface
263
  *
264
  * @param bool $do_rocket_lazyload True to apply lazyload, false otherwise.
265
  */
266
- if (! apply_filters('do_rocket_lazyload', true)) { // WPCS: prefix ok.
267
  return false;
268
  }
269
 
@@ -293,7 +299,7 @@ class LazyloadSubscriber implements SubscriberInterface
293
  * @since 2.0
294
  * @author Remy Perona
295
  *
296
- * @param string $html HTML content
297
  * @return string
298
  */
299
  public function lazyloadBuffer($html)
@@ -366,7 +372,7 @@ class LazyloadSubscriber implements SubscriberInterface
366
  /**
367
  * Remove inline scripts from the HTML to parse
368
  *
369
- * @param string $html
370
  * @return string
371
  */
372
  private function ignoreScripts($html)
1
  <?php
2
+ /**
3
+ * Lazyload subscriber
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Subscriber;
9
 
10
  defined('ABSPATH') || die('Cheatin\' uh?');
70
  * @author Remy Perona
71
  *
72
  * @param OptionArray $option_array OptionArray instance.
73
+ * @param Assets $assets Assets instance.
74
+ * @param Image $image Image instance.
75
+ * @param Iframe $iframe Iframe instance.
76
  */
77
  public function __construct(OptionArray $option_array, Assets $assets, Image $image, Iframe $iframe)
78
  {
88
  public function getSubscribedEvents()
89
  {
90
  return [
91
+ 'wp_footer' => [
92
  [ 'insertLazyloadScript', ROCKET_LL_INT_MAX ],
93
  ['insertYoutubeThumbnailScript', ROCKET_LL_INT_MAX ],
94
  ],
95
+ 'wp_enqueue_scripts' => [
96
  ['insertNoJSStyle', ROCKET_LL_INT_MAX - 1],
97
  ['insertYoutubeThumbnailStyle', ROCKET_LL_INT_MAX],
98
  ],
99
+ 'template_redirect' => ['lazyload', ROCKET_LL_INT_MAX],
100
  'rocket_lazyload_html' => 'lazyloadResponsive',
101
+ 'init' => 'lazyloadSmilies',
102
  ];
103
  }
104
 
131
  $threshold = apply_filters('rocket_lazyload_threshold', 300);
132
 
133
  $args = [
134
+ 'base_url' => ROCKET_LL_FRONT_JS_URL,
135
+ 'suffix' => defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min',
136
  'threshold' => $threshold,
137
+ 'version' => '10.19',
138
+ 'fallback' => '8.17',
139
  ];
140
 
141
  if ($this->option_array->get('images')) {
142
+ $args['elements']['image'] = 'img[data-lazy-src]';
143
  $args['elements']['background_image'] = '.rocket-lazyload-bg';
144
  }
145
 
247
  */
248
  private function shouldLazyload()
249
  {
250
+ if (is_admin() || is_feed() || is_preview() || ( defined('REST_REQUEST') && REST_REQUEST ) || ( defined('DONOTLAZYLOAD') && DONOTLAZYLOAD )) {
251
  return false;
252
  }
253
 
254
+ // Don't lazyload on Beaver Builder editor.
255
  if (isset($_GET['fl_builder'])) {
256
  return false;
257
  }
258
 
259
+ // Don't lazyload on Divi editor.
260
  if (isset($_GET['et_fb'])) {
261
  return false;
262
  }
269
  *
270
  * @param bool $do_rocket_lazyload True to apply lazyload, false otherwise.
271
  */
272
+ if (! apply_filters('do_rocket_lazyload', true)) {
273
  return false;
274
  }
275
 
299
  * @since 2.0
300
  * @author Remy Perona
301
  *
302
+ * @param string $html HTML content.
303
  * @return string
304
  */
305
  public function lazyloadBuffer($html)
372
  /**
373
  * Remove inline scripts from the HTML to parse
374
  *
375
+ * @param string $html HTML content.
376
  * @return string
377
  */
378
  private function ignoreScripts($html)
src/Subscriber/ThirdParty/AMPSubscriber.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyLoadPlugin\Subscriber\ThirdParty;
3
 
4
  use RocketLazyLoadPlugin\EventManagement\EventManager;
@@ -20,7 +26,7 @@ class AMPSubscriber implements EventManagerAwareSubscriberInterface
20
  public function getSubscribedEvents()
21
  {
22
  return [
23
- 'wp' => 'disableIfAMP'
24
  ];
25
  }
26
 
1
  <?php
2
+ /**
3
+ * AMP plugin compatibility subscrber
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyLoadPlugin\Subscriber\ThirdParty;
9
 
10
  use RocketLazyLoadPlugin\EventManagement\EventManager;
26
  public function getSubscribedEvents()
27
  {
28
  return [
29
+ 'wp' => 'disableIfAMP',
30
  ];
31
  }
32
 
src/rocket-lazyload-requirements-check.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  defined('ABSPATH') || die('Cheatin&#8217; uh?');
3
 
4
  /**
@@ -54,7 +60,7 @@ class Rocket_Lazyload_Requirements_Check
54
  public function __construct($args)
55
  {
56
  foreach (array('plugin_name', 'plugin_version', 'wp_version', 'php_version') as $setting) {
57
- if (isset($args[ $setting])) {
58
  $this->$setting = $args[ $setting ];
59
  }
60
  }
1
  <?php
2
+ /**
3
+ * Check if current requirements are met
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  defined('ABSPATH') || die('Cheatin&#8217; uh?');
9
 
10
  /**
60
  public function __construct($args)
61
  {
62
  foreach (array('plugin_name', 'plugin_version', 'wp_version', 'php_version') as $setting) {
63
+ if (isset($args[ $setting ])) {
64
  $this->$setting = $args[ $setting ];
65
  }
66
  }
vendor/composer/autoload_psr4.php CHANGED
@@ -11,4 +11,5 @@ return array(
11
  'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
12
  'League\\Container\\' => array($vendorDir . '/league/container/src'),
13
  'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
 
14
  );
11
  'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
12
  'League\\Container\\' => array($vendorDir . '/league/container/src'),
13
  'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
14
+ 'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
15
  );
vendor/composer/autoload_static.php CHANGED
@@ -24,6 +24,10 @@ class ComposerStaticInit8cab473e8d87c25ebc69a5ad0b41d433
24
  array (
25
  'Interop\\Container\\' => 18,
26
  ),
 
 
 
 
27
  );
28
 
29
  public static $prefixDirsPsr4 = array (
@@ -47,6 +51,10 @@ class ComposerStaticInit8cab473e8d87c25ebc69a5ad0b41d433
47
  array (
48
  0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
49
  ),
 
 
 
 
50
  );
51
 
52
  public static function getInitializer(ClassLoader $loader)
24
  array (
25
  'Interop\\Container\\' => 18,
26
  ),
27
+ 'C' =>
28
+ array (
29
+ 'Composer\\Installers\\' => 20,
30
+ ),
31
  );
32
 
33
  public static $prefixDirsPsr4 = array (
51
  array (
52
  0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
53
  ),
54
+ 'Composer\\Installers\\' =>
55
+ array (
56
+ 0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
57
+ ),
58
  );
59
 
60
  public static function getInitializer(ClassLoader $loader)
vendor/composer/installed.json CHANGED
@@ -150,28 +150,159 @@
150
  "service"
151
  ]
152
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  {
154
  "name": "wp-media/rocket-lazyload-common",
155
- "version": "v2.0",
156
- "version_normalized": "2.0.0.0",
157
  "source": {
158
  "type": "git",
159
  "url": "https://github.com/wp-media/rocket-lazyload-common.git",
160
- "reference": "0c834ce26ae8ed41f6f13eb284b5f4c06c18b499"
161
  },
162
  "dist": {
163
  "type": "zip",
164
- "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/0c834ce26ae8ed41f6f13eb284b5f4c06c18b499",
165
- "reference": "0c834ce26ae8ed41f6f13eb284b5f4c06c18b499",
166
  "shasum": ""
167
  },
168
  "require": {
169
- "php": ">=5.4"
170
  },
171
  "require-dev": {
172
- "squizlabs/php_codesniffer": "^3.2"
 
 
 
 
 
 
 
 
 
173
  },
174
- "time": "2019-01-15T21:38:51+00:00",
175
  "type": "library",
176
  "installation-source": "dist",
177
  "autoload": {
@@ -179,8 +310,9 @@
179
  "RocketLazyload\\": "src"
180
  }
181
  },
 
182
  "license": [
183
- "GPLv3"
184
  ],
185
  "authors": [
186
  {
@@ -188,10 +320,6 @@
188
  "email": "contact@wp-media.me"
189
  }
190
  ],
191
- "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
192
- "support": {
193
- "source": "https://github.com/wp-media/rocket-lazyload-common/tree/v2.0",
194
- "issues": "https://github.com/wp-media/rocket-lazyload-common/issues"
195
- }
196
  }
197
  ]
150
  "service"
151
  ]
152
  },
153
+ {
154
+ "name": "composer/installers",
155
+ "version": "v1.6.0",
156
+ "version_normalized": "1.6.0.0",
157
+ "source": {
158
+ "type": "git",
159
+ "url": "https://github.com/composer/installers.git",
160
+ "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b"
161
+ },
162
+ "dist": {
163
+ "type": "zip",
164
+ "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b",
165
+ "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b",
166
+ "shasum": ""
167
+ },
168
+ "require": {
169
+ "composer-plugin-api": "^1.0"
170
+ },
171
+ "replace": {
172
+ "roundcube/plugin-installer": "*",
173
+ "shama/baton": "*"
174
+ },
175
+ "require-dev": {
176
+ "composer/composer": "1.0.*@dev",
177
+ "phpunit/phpunit": "^4.8.36"
178
+ },
179
+ "time": "2018-08-27T06:10:37+00:00",
180
+ "type": "composer-plugin",
181
+ "extra": {
182
+ "class": "Composer\\Installers\\Plugin",
183
+ "branch-alias": {
184
+ "dev-master": "1.0-dev"
185
+ }
186
+ },
187
+ "installation-source": "dist",
188
+ "autoload": {
189
+ "psr-4": {
190
+ "Composer\\Installers\\": "src/Composer/Installers"
191
+ }
192
+ },
193
+ "notification-url": "https://packagist.org/downloads/",
194
+ "license": [
195
+ "MIT"
196
+ ],
197
+ "authors": [
198
+ {
199
+ "name": "Kyle Robinson Young",
200
+ "email": "kyle@dontkry.com",
201
+ "homepage": "https://github.com/shama"
202
+ }
203
+ ],
204
+ "description": "A multi-framework Composer library installer",
205
+ "homepage": "https://composer.github.io/installers/",
206
+ "keywords": [
207
+ "Craft",
208
+ "Dolibarr",
209
+ "Eliasis",
210
+ "Hurad",
211
+ "ImageCMS",
212
+ "Kanboard",
213
+ "Lan Management System",
214
+ "MODX Evo",
215
+ "Mautic",
216
+ "Maya",
217
+ "OXID",
218
+ "Plentymarkets",
219
+ "Porto",
220
+ "RadPHP",
221
+ "SMF",
222
+ "Thelia",
223
+ "WolfCMS",
224
+ "agl",
225
+ "aimeos",
226
+ "annotatecms",
227
+ "attogram",
228
+ "bitrix",
229
+ "cakephp",
230
+ "chef",
231
+ "cockpit",
232
+ "codeigniter",
233
+ "concrete5",
234
+ "croogo",
235
+ "dokuwiki",
236
+ "drupal",
237
+ "eZ Platform",
238
+ "elgg",
239
+ "expressionengine",
240
+ "fuelphp",
241
+ "grav",
242
+ "installer",
243
+ "itop",
244
+ "joomla",
245
+ "kohana",
246
+ "laravel",
247
+ "lavalite",
248
+ "lithium",
249
+ "magento",
250
+ "majima",
251
+ "mako",
252
+ "mediawiki",
253
+ "modulework",
254
+ "modx",
255
+ "moodle",
256
+ "osclass",
257
+ "phpbb",
258
+ "piwik",
259
+ "ppi",
260
+ "puppet",
261
+ "pxcms",
262
+ "reindex",
263
+ "roundcube",
264
+ "shopware",
265
+ "silverstripe",
266
+ "sydes",
267
+ "symfony",
268
+ "typo3",
269
+ "wordpress",
270
+ "yawik",
271
+ "zend",
272
+ "zikula"
273
+ ]
274
+ },
275
  {
276
  "name": "wp-media/rocket-lazyload-common",
277
+ "version": "v2.1.1",
278
+ "version_normalized": "2.1.1.0",
279
  "source": {
280
  "type": "git",
281
  "url": "https://github.com/wp-media/rocket-lazyload-common.git",
282
+ "reference": "aa8282c2296b29410dfdd6a093df35c509595124"
283
  },
284
  "dist": {
285
  "type": "zip",
286
+ "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/aa8282c2296b29410dfdd6a093df35c509595124",
287
+ "reference": "aa8282c2296b29410dfdd6a093df35c509595124",
288
  "shasum": ""
289
  },
290
  "require": {
291
+ "php": ">=5.6"
292
  },
293
  "require-dev": {
294
+ "brain/monkey": "^2.0",
295
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
296
+ "doctrine/instantiator": "1.0.*",
297
+ "myclabs/deep-copy": "1.6.*",
298
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
299
+ "phpdocumentor/reflection-docblock": "^3.3",
300
+ "phpunit/php-token-stream": "^1.4",
301
+ "phpunit/phpunit": "^5.7",
302
+ "symfony/yaml": "2.8.*",
303
+ "wp-coding-standards/wpcs": "^2.0.0"
304
  },
305
+ "time": "2019-02-18T16:32:01+00:00",
306
  "type": "library",
307
  "installation-source": "dist",
308
  "autoload": {
310
  "RocketLazyload\\": "src"
311
  }
312
  },
313
+ "notification-url": "https://packagist.org/downloads/",
314
  "license": [
315
+ "GPL-3.0-or-later"
316
  ],
317
  "authors": [
318
  {
320
  "email": "contact@wp-media.me"
321
  }
322
  ],
323
+ "description": "Common Code between WP Rocket and Lazyload by WP Rocket"
 
 
 
 
324
  }
325
  ]
vendor/composer/installers/LICENSE ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2012 Kyle Robinson Young
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is furnished
8
+ to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
vendor/composer/installers/composer.json ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "composer/installers",
3
+ "type": "composer-plugin",
4
+ "license": "MIT",
5
+ "description": "A multi-framework Composer library installer",
6
+ "keywords": [
7
+ "installer",
8
+ "Aimeos",
9
+ "AGL",
10
+ "AnnotateCms",
11
+ "Attogram",
12
+ "Bitrix",
13
+ "CakePHP",
14
+ "Chef",
15
+ "Cockpit",
16
+ "CodeIgniter",
17
+ "concrete5",
18
+ "Craft",
19
+ "Croogo",
20
+ "DokuWiki",
21
+ "Dolibarr",
22
+ "Drupal",
23
+ "Elgg",
24
+ "Eliasis",
25
+ "ExpressionEngine",
26
+ "eZ Platform",
27
+ "FuelPHP",
28
+ "Grav",
29
+ "Hurad",
30
+ "ImageCMS",
31
+ "iTop",
32
+ "Joomla",
33
+ "Kanboard",
34
+ "Kohana",
35
+ "Lan Management System",
36
+ "Laravel",
37
+ "Lavalite",
38
+ "Lithium",
39
+ "Magento",
40
+ "majima",
41
+ "Mako",
42
+ "Mautic",
43
+ "Maya",
44
+ "MODX",
45
+ "MODX Evo",
46
+ "MediaWiki",
47
+ "OXID",
48
+ "osclass",
49
+ "MODULEWork",
50
+ "Moodle",
51
+ "Piwik",
52
+ "pxcms",
53
+ "phpBB",
54
+ "Plentymarkets",
55
+ "PPI",
56
+ "Puppet",
57
+ "Porto",
58
+ "RadPHP",
59
+ "ReIndex",
60
+ "Roundcube",
61
+ "shopware",
62
+ "SilverStripe",
63
+ "SMF",
64
+ "SyDES",
65
+ "symfony",
66
+ "Thelia",
67
+ "TYPO3",
68
+ "WolfCMS",
69
+ "WordPress",
70
+ "YAWIK",
71
+ "Zend",
72
+ "Zikula"
73
+ ],
74
+ "homepage": "https://composer.github.io/installers/",
75
+ "authors": [
76
+ {
77
+ "name": "Kyle Robinson Young",
78
+ "email": "kyle@dontkry.com",
79
+ "homepage": "https://github.com/shama"
80
+ }
81
+ ],
82
+ "autoload": {
83
+ "psr-4": { "Composer\\Installers\\": "src/Composer/Installers" }
84
+ },
85
+ "extra": {
86
+ "class": "Composer\\Installers\\Plugin",
87
+ "branch-alias": {
88
+ "dev-master": "1.0-dev"
89
+ }
90
+ },
91
+ "replace": {
92
+ "shama/baton": "*",
93
+ "roundcube/plugin-installer": "*"
94
+ },
95
+ "require": {
96
+ "composer-plugin-api": "^1.0"
97
+ },
98
+ "require-dev": {
99
+ "composer/composer": "1.0.*@dev",
100
+ "phpunit/phpunit": "^4.8.36"
101
+ },
102
+ "scripts": {
103
+ "test": "phpunit"
104
+ }
105
+ }
vendor/composer/installers/src/Composer/Installers/AglInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AglInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'More/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format package name to CamelCase
12
+ */
13
+ public function inflectPackageVars($vars)
14
+ {
15
+ $vars['name'] = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) {
16
+ return strtoupper($matches[1]);
17
+ }, $vars['name']);
18
+
19
+ return $vars;
20
+ }
21
+ }
vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AimeosInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'ext/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AnnotateCmsInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'addons/modules/{$name}/',
8
+ 'component' => 'addons/components/{$name}/',
9
+ 'service' => 'addons/services/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AsgardInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'Modules/{$name}/',
8
+ 'theme' => 'Themes/{$name}/'
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * For package type asgard-module, cut off a trailing '-plugin' if present.
15
+ *
16
+ * For package type asgard-theme, cut off a trailing '-theme' if present.
17
+ *
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ if ($vars['type'] === 'asgard-module') {
22
+ return $this->inflectPluginVars($vars);
23
+ }
24
+
25
+ if ($vars['type'] === 'asgard-theme') {
26
+ return $this->inflectThemeVars($vars);
27
+ }
28
+
29
+ return $vars;
30
+ }
31
+
32
+ protected function inflectPluginVars($vars)
33
+ {
34
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
35
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
36
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
37
+
38
+ return $vars;
39
+ }
40
+
41
+ protected function inflectThemeVars($vars)
42
+ {
43
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
44
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
45
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
46
+
47
+ return $vars;
48
+ }
49
+ }
vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AttogramInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/BaseInstaller.php ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\IO\IOInterface;
5
+ use Composer\Composer;
6
+ use Composer\Package\PackageInterface;
7
+
8
+ abstract class BaseInstaller
9
+ {
10
+ protected $locations = array();
11
+ protected $composer;
12
+ protected $package;
13
+ protected $io;
14
+
15
+ /**
16
+ * Initializes base installer.
17
+ *
18
+ * @param PackageInterface $package
19
+ * @param Composer $composer
20
+ * @param IOInterface $io
21
+ */
22
+ public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
23
+ {
24
+ $this->composer = $composer;
25
+ $this->package = $package;
26
+ $this->io = $io;
27
+ }
28
+
29
+ /**
30
+ * Return the install path based on package type.
31
+ *
32
+ * @param PackageInterface $package
33
+ * @param string $frameworkType
34
+ * @return string
35
+ */
36
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
37
+ {
38
+ $type = $this->package->getType();
39
+
40
+ $prettyName = $this->package->getPrettyName();
41
+ if (strpos($prettyName, '/') !== false) {
42
+ list($vendor, $name) = explode('/', $prettyName);
43
+ } else {
44
+ $vendor = '';
45
+ $name = $prettyName;
46
+ }
47
+
48
+ $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
49
+
50
+ $extra = $package->getExtra();
51
+ if (!empty($extra['installer-name'])) {
52
+ $availableVars['name'] = $extra['installer-name'];
53
+ }
54
+
55
+ if ($this->composer->getPackage()) {
56
+ $extra = $this->composer->getPackage()->getExtra();
57
+ if (!empty($extra['installer-paths'])) {
58
+ $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor);
59
+ if ($customPath !== false) {
60
+ return $this->templatePath($customPath, $availableVars);
61
+ }
62
+ }
63
+ }
64
+
65
+ $packageType = substr($type, strlen($frameworkType) + 1);
66
+ $locations = $this->getLocations();
67
+ if (!isset($locations[$packageType])) {
68
+ throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
69
+ }
70
+
71
+ return $this->templatePath($locations[$packageType], $availableVars);
72
+ }
73
+
74
+ /**
75
+ * For an installer to override to modify the vars per installer.
76
+ *
77
+ * @param array $vars
78
+ * @return array
79
+ */
80
+ public function inflectPackageVars($vars)
81
+ {
82
+ return $vars;
83
+ }
84
+
85
+ /**
86
+ * Gets the installer's locations
87
+ *
88
+ * @return array
89
+ */
90
+ public function getLocations()
91
+ {
92
+ return $this->locations;
93
+ }
94
+
95
+ /**
96
+ * Replace vars in a path
97
+ *
98
+ * @param string $path
99
+ * @param array $vars
100
+ * @return string
101
+ */
102
+ protected function templatePath($path, array $vars = array())
103
+ {
104
+ if (strpos($path, '{') !== false) {
105
+ extract($vars);
106
+ preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
107
+ if (!empty($matches[1])) {
108
+ foreach ($matches[1] as $var) {
109
+ $path = str_replace('{$' . $var . '}', $$var, $path);
110
+ }
111
+ }
112
+ }
113
+
114
+ return $path;
115
+ }
116
+
117
+ /**
118
+ * Search through a passed paths array for a custom install path.
119
+ *
120
+ * @param array $paths
121
+ * @param string $name
122
+ * @param string $type
123
+ * @param string $vendor = NULL
124
+ * @return string
125
+ */
126
+ protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
127
+ {
128
+ foreach ($paths as $path => $names) {
129
+ if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
130
+ return $path;
131
+ }
132
+ }
133
+
134
+ return false;
135
+ }
136
+ }
vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Util\Filesystem;
6
+
7
+ /**
8
+ * Installer for Bitrix Framework. Supported types of extensions:
9
+ * - `bitrix-d7-module` — copy the module to directory `bitrix/modules/<vendor>.<name>`.
10
+ * - `bitrix-d7-component` — copy the component to directory `bitrix/components/<vendor>/<name>`.
11
+ * - `bitrix-d7-template` — copy the template to directory `bitrix/templates/<vendor>_<name>`.
12
+ *
13
+ * You can set custom path to directory with Bitrix kernel in `composer.json`:
14
+ *
15
+ * ```json
16
+ * {
17
+ * "extra": {
18
+ * "bitrix-dir": "s1/bitrix"
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * @author Nik Samokhvalov <nik@samokhvalov.info>
24
+ * @author Denis Kulichkin <onexhovia@gmail.com>
25
+ */
26
+ class BitrixInstaller extends BaseInstaller
27
+ {
28
+ protected $locations = array(
29
+ 'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
30
+ 'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
31
+ 'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
32
+ 'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/',
33
+ 'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/',
34
+ 'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/',
35
+ );
36
+
37
+ /**
38
+ * @var array Storage for informations about duplicates at all the time of installation packages.
39
+ */
40
+ private static $checkedDuplicates = array();
41
+
42
+ /**
43
+ * {@inheritdoc}
44
+ */
45
+ public function inflectPackageVars($vars)
46
+ {
47
+ if ($this->composer->getPackage()) {
48
+ $extra = $this->composer->getPackage()->getExtra();
49
+
50
+ if (isset($extra['bitrix-dir'])) {
51
+ $vars['bitrix_dir'] = $extra['bitrix-dir'];
52
+ }
53
+ }
54
+
55
+ if (!isset($vars['bitrix_dir'])) {
56
+ $vars['bitrix_dir'] = 'bitrix';
57
+ }
58
+
59
+ return parent::inflectPackageVars($vars);
60
+ }
61
+
62
+ /**
63
+ * {@inheritdoc}
64
+ */
65
+ protected function templatePath($path, array $vars = array())
66
+ {
67
+ $templatePath = parent::templatePath($path, $vars);
68
+ $this->checkDuplicates($templatePath, $vars);
69
+
70
+ return $templatePath;
71
+ }
72
+
73
+ /**
74
+ * Duplicates search packages.
75
+ *
76
+ * @param string $path
77
+ * @param array $vars
78
+ */
79
+ protected function checkDuplicates($path, array $vars = array())
80
+ {
81
+ $packageType = substr($vars['type'], strlen('bitrix') + 1);
82
+ $localDir = explode('/', $vars['bitrix_dir']);
83
+ array_pop($localDir);
84
+ $localDir[] = 'local';
85
+ $localDir = implode('/', $localDir);
86
+
87
+ $oldPath = str_replace(
88
+ array('{$bitrix_dir}', '{$name}'),
89
+ array($localDir, $vars['name']),
90
+ $this->locations[$packageType]
91
+ );
92
+
93
+ if (in_array($oldPath, static::$checkedDuplicates)) {
94
+ return;
95
+ }
96
+
97
+ if ($oldPath !== $path && file_exists($oldPath) && $this->io && $this->io->isInteractive()) {
98
+
99
+ $this->io->writeError(' <error>Duplication of packages:</error>');
100
+ $this->io->writeError(' <info>Package ' . $oldPath . ' will be called instead package ' . $path . '</info>');
101
+
102
+ while (true) {
103
+ switch ($this->io->ask(' <info>Delete ' . $oldPath . ' [y,n,?]?</info> ', '?')) {
104
+ case 'y':
105
+ $fs = new Filesystem();
106
+ $fs->removeDirectory($oldPath);
107
+ break 2;
108
+
109
+ case 'n':
110
+ break 2;
111
+
112
+ case '?':
113
+ default:
114
+ $this->io->writeError(array(
115
+ ' y - delete package ' . $oldPath . ' and to continue with the installation',
116
+ ' n - don\'t delete and to continue with the installation',
117
+ ));
118
+ $this->io->writeError(' ? - print help');
119
+ break;
120
+ }
121
+ }
122
+ }
123
+
124
+ static::$checkedDuplicates[] = $oldPath;
125
+ }
126
+ }
vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class BonefishInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'Packages/{$vendor}/{$name}/'
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\DependencyResolver\Pool;
5
+
6
+ class CakePHPInstaller extends BaseInstaller
7
+ {
8
+ protected $locations = array(
9
+ 'plugin' => 'Plugin/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name to CamelCase
14
+ */
15
+ public function inflectPackageVars($vars)
16
+ {
17
+ if ($this->matchesCakeVersion('>=', '3.0.0')) {
18
+ return $vars;
19
+ }
20
+
21
+ $nameParts = explode('/', $vars['name']);
22
+ foreach ($nameParts as &$value) {
23
+ $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
24
+ $value = str_replace(array('-', '_'), ' ', $value);
25
+ $value = str_replace(' ', '', ucwords($value));
26
+ }
27
+ $vars['name'] = implode('/', $nameParts);
28
+
29
+ return $vars;
30
+ }
31
+
32
+ /**
33
+ * Change the default plugin location when cakephp >= 3.0
34
+ */
35
+ public function getLocations()
36
+ {
37
+ if ($this->matchesCakeVersion('>=', '3.0.0')) {
38
+ $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/';
39
+ }
40
+ return $this->locations;
41
+ }
42
+
43
+ /**
44
+ * Check if CakePHP version matches against a version
45
+ *
46
+ * @param string $matcher
47
+ * @param string $version
48
+ * @return bool
49
+ */
50
+ protected function matchesCakeVersion($matcher, $version)
51
+ {
52
+ if (class_exists('Composer\Semver\Constraint\MultiConstraint')) {
53
+ $multiClass = 'Composer\Semver\Constraint\MultiConstraint';
54
+ $constraintClass = 'Composer\Semver\Constraint\Constraint';
55
+ } else {
56
+ $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint';
57
+ $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint';
58
+ }
59
+
60
+ $repositoryManager = $this->composer->getRepositoryManager();
61
+ if ($repositoryManager) {
62
+ $repos = $repositoryManager->getLocalRepository();
63
+ if (!$repos) {
64
+ return false;
65
+ }
66
+ $cake3 = new $multiClass(array(
67
+ new $constraintClass($matcher, $version),
68
+ new $constraintClass('!=', '9999999-dev'),
69
+ ));
70
+ $pool = new Pool('dev');
71
+ $pool->addRepository($repos);
72
+ $packages = $pool->whatProvides('cakephp/cakephp');
73
+ foreach ($packages as $package) {
74
+ $installed = new $constraintClass('=', $package->getVersion());
75
+ if ($cake3->matches($installed)) {
76
+ return true;
77
+ }
78
+ }
79
+ }
80
+ return false;
81
+ }
82
+ }
vendor/composer/installers/src/Composer/Installers/ChefInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ChefInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'cookbook' => 'Chef/{$vendor}/{$name}/',
8
+ 'role' => 'Chef/roles/{$name}/',
9
+ );
10
+ }
11
+
vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CiviCrmInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'ext' => 'ext/{$name}/'
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ClanCatsFrameworkInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'ship' => 'CCF/orbit/{$name}/',
8
+ 'theme' => 'CCF/app/themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CockpitInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'cockpit/modules/addons/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format module name.
12
+ *
13
+ * Strip `module-` prefix from package name.
14
+ *
15
+ * @param array @vars
16
+ *
17
+ * @return array
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ if ($vars['type'] == 'cockpit-module') {
22
+ return $this->inflectModuleVars($vars);
23
+ }
24
+
25
+ return $vars;
26
+ }
27
+
28
+ public function inflectModuleVars($vars)
29
+ {
30
+ $vars['name'] = ucfirst(preg_replace('/cockpit-/i', '', $vars['name']));
31
+
32
+ return $vars;
33
+ }
34
+ }
vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CodeIgniterInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'application/libraries/{$name}/',
8
+ 'third-party' => 'application/third_party/{$name}/',
9
+ 'module' => 'application/modules/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class Concrete5Installer extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'core' => 'concrete/',
8
+ 'block' => 'application/blocks/{$name}/',
9
+ 'package' => 'packages/{$name}/',
10
+ 'theme' => 'application/themes/{$name}/',
11
+ 'update' => 'updates/{$name}/',
12
+ );
13
+ }
vendor/composer/installers/src/Composer/Installers/CraftInstaller.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Installer for Craft Plugins
6
+ */
7
+ class CraftInstaller extends BaseInstaller
8
+ {
9
+ const NAME_PREFIX = 'craft';
10
+ const NAME_SUFFIX = 'plugin';
11
+
12
+ protected $locations = array(
13
+ 'plugin' => 'craft/plugins/{$name}/',
14
+ );
15
+
16
+ /**
17
+ * Strip `craft-` prefix and/or `-plugin` suffix from package names
18
+ *
19
+ * @param array $vars
20
+ *
21
+ * @return array
22
+ */
23
+ final public function inflectPackageVars($vars)
24
+ {
25
+ return $this->inflectPluginVars($vars);
26
+ }
27
+
28
+ private function inflectPluginVars($vars)
29
+ {
30
+ $vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']);
31
+ $vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']);
32
+
33
+ return $vars;
34
+ }
35
+ }
vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CroogoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'Plugin/{$name}/',
8
+ 'theme' => 'View/Themed/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name to CamelCase
13
+ */
14
+ public function inflectPackageVars($vars)
15
+ {
16
+ $vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name']));
17
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
18
+
19
+ return $vars;
20
+ }
21
+ }
vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class DecibelInstaller extends BaseInstaller
5
+ {
6
+ /** @var array */
7
+ protected $locations = array(
8
+ 'app' => 'app/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class DokuWikiInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'lib/plugins/{$name}/',
8
+ 'template' => 'lib/tpl/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * For package type dokuwiki-plugin, cut off a trailing '-plugin',
15
+ * or leading dokuwiki_ if present.
16
+ *
17
+ * For package type dokuwiki-template, cut off a trailing '-template' if present.
18
+ *
19
+ */
20
+ public function inflectPackageVars($vars)
21
+ {
22
+
23
+ if ($vars['type'] === 'dokuwiki-plugin') {
24
+ return $this->inflectPluginVars($vars);
25
+ }
26
+
27
+ if ($vars['type'] === 'dokuwiki-template') {
28
+ return $this->inflectTemplateVars($vars);
29
+ }
30
+
31
+ return $vars;
32
+ }
33
+
34
+ protected function inflectPluginVars($vars)
35
+ {
36
+ $vars['name'] = preg_replace('/-plugin$/', '', $vars['name']);
37
+ $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
38
+
39
+ return $vars;
40
+ }
41
+
42
+ protected function inflectTemplateVars($vars)
43
+ {
44
+ $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
45
+ $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
46
+
47
+ return $vars;
48
+ }
49
+
50
+ }
vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Class DolibarrInstaller
6
+ *
7
+ * @package Composer\Installers
8
+ * @author Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
9
+ */
10
+ class DolibarrInstaller extends BaseInstaller
11
+ {
12
+ //TODO: Add support for scripts and themes
13
+ protected $locations = array(
14
+ 'module' => 'htdocs/custom/{$name}/',
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class DrupalInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'core' => 'core/',
8
+ 'module' => 'modules/{$name}/',
9
+ 'theme' => 'themes/{$name}/',
10
+ 'library' => 'libraries/{$name}/',
11
+ 'profile' => 'profiles/{$name}/',
12
+ 'drush' => 'drush/{$name}/',
13
+ 'custom-theme' => 'themes/custom/{$name}/',
14
+ 'custom-module' => 'modules/custom/{$name}/',
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/ElggInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ElggInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'mod/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class EliasisInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'component' => 'components/{$name}/',
8
+ 'module' => 'modules/{$name}/',
9
+ 'plugin' => 'plugins/{$name}/',
10
+ 'template' => 'templates/{$name}/',
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\Package\PackageInterface;
5
+
6
+ class ExpressionEngineInstaller extends BaseInstaller
7
+ {
8
+
9
+ protected $locations = array();
10
+
11
+ private $ee2Locations = array(
12
+ 'addon' => 'system/expressionengine/third_party/{$name}/',
13
+ 'theme' => 'themes/third_party/{$name}/',
14
+ );
15
+
16
+ private $ee3Locations = array(
17
+ 'addon' => 'system/user/addons/{$name}/',
18
+ 'theme' => 'themes/user/{$name}/',
19
+ );
20
+
21
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
22
+ {
23
+
24
+ $version = "{$frameworkType}Locations";
25
+ $this->locations = $this->$version;
26
+
27
+ return parent::getInstallPath($package, $frameworkType);
28
+ }
29
+ }
vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class EzPlatformInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'meta-assets' => 'web/assets/ezplatform/',
8
+ 'assets' => 'web/assets/ezplatform/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/FuelInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class FuelInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'fuel/app/modules/{$name}/',
8
+ 'package' => 'fuel/packages/{$name}/',
9
+ 'theme' => 'fuel/app/themes/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class FuelphpInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'component' => 'components/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/GravInstaller.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class GravInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'user/plugins/{$name}/',
8
+ 'theme' => 'user/themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name
13
+ *
14
+ * @param array $vars
15
+ *
16
+ * @return array
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ $restrictedWords = implode('|', array_keys($this->locations));
21
+
22
+ $vars['name'] = strtolower($vars['name']);
23
+ $vars['name'] = preg_replace('/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui',
24
+ '$1',
25
+ $vars['name']
26
+ );
27
+
28
+ return $vars;
29
+ }
30
+ }
vendor/composer/installers/src/Composer/Installers/HuradInstaller.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class HuradInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ 'theme' => 'plugins/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name to CamelCase
13
+ */
14
+ public function inflectPackageVars($vars)
15
+ {
16
+ $nameParts = explode('/', $vars['name']);
17
+ foreach ($nameParts as &$value) {
18
+ $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
19
+ $value = str_replace(array('-', '_'), ' ', $value);
20
+ $value = str_replace(' ', '', ucwords($value));
21
+ }
22
+ $vars['name'] = implode('/', $nameParts);
23
+ return $vars;
24
+ }
25
+ }
vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ImageCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'template' => 'templates/{$name}/',
8
+ 'module' => 'application/modules/{$name}/',
9
+ 'library' => 'application/libraries/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/Installer.php ADDED
@@ -0,0 +1,274 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Composer;
6
+ use Composer\Installer\BinaryInstaller;
7
+ use Composer\Installer\LibraryInstaller;
8
+ use Composer\IO\IOInterface;
9
+ use Composer\Package\PackageInterface;
10
+ use Composer\Repository\InstalledRepositoryInterface;
11
+ use Composer\Util\Filesystem;
12
+
13
+ class Installer extends LibraryInstaller
14
+ {
15
+
16
+ /**
17
+ * Package types to installer class map
18
+ *
19
+ * @var array
20
+ */
21
+ private $supportedTypes = array(
22
+ 'aimeos' => 'AimeosInstaller',
23
+ 'asgard' => 'AsgardInstaller',
24
+ 'attogram' => 'AttogramInstaller',
25
+ 'agl' => 'AglInstaller',
26
+ 'annotatecms' => 'AnnotateCmsInstaller',
27
+ 'bitrix' => 'BitrixInstaller',
28
+ 'bonefish' => 'BonefishInstaller',
29
+ 'cakephp' => 'CakePHPInstaller',
30
+ 'chef' => 'ChefInstaller',
31
+ 'civicrm' => 'CiviCrmInstaller',
32
+ 'ccframework' => 'ClanCatsFrameworkInstaller',
33
+ 'cockpit' => 'CockpitInstaller',
34
+ 'codeigniter' => 'CodeIgniterInstaller',
35
+ 'concrete5' => 'Concrete5Installer',
36
+ 'craft' => 'CraftInstaller',
37
+ 'croogo' => 'CroogoInstaller',
38
+ 'dokuwiki' => 'DokuWikiInstaller',
39
+ 'dolibarr' => 'DolibarrInstaller',
40
+ 'decibel' => 'DecibelInstaller',
41
+ 'drupal' => 'DrupalInstaller',
42
+ 'elgg' => 'ElggInstaller',
43
+ 'eliasis' => 'EliasisInstaller',
44
+ 'ee3' => 'ExpressionEngineInstaller',
45
+ 'ee2' => 'ExpressionEngineInstaller',
46
+ 'ezplatform' => 'EzPlatformInstaller',
47
+ 'fuel' => 'FuelInstaller',
48
+ 'fuelphp' => 'FuelphpInstaller',
49
+ 'grav' => 'GravInstaller',
50
+ 'hurad' => 'HuradInstaller',
51
+ 'imagecms' => 'ImageCMSInstaller',
52
+ 'itop' => 'ItopInstaller',
53
+ 'joomla' => 'JoomlaInstaller',
54
+ 'kanboard' => 'KanboardInstaller',
55
+ 'kirby' => 'KirbyInstaller',
56
+ 'kodicms' => 'KodiCMSInstaller',
57
+ 'kohana' => 'KohanaInstaller',
58
+ 'lms' => 'LanManagementSystemInstaller',
59
+ 'laravel' => 'LaravelInstaller',
60
+ 'lavalite' => 'LavaLiteInstaller',
61
+ 'lithium' => 'LithiumInstaller',
62
+ 'magento' => 'MagentoInstaller',
63
+ 'majima' => 'MajimaInstaller',
64
+ 'mako' => 'MakoInstaller',
65
+ 'maya' => 'MayaInstaller',
66
+ 'mautic' => 'MauticInstaller',
67
+ 'mediawiki' => 'MediaWikiInstaller',
68
+ 'microweber' => 'MicroweberInstaller',
69
+ 'modulework' => 'MODULEWorkInstaller',
70
+ 'modx' => 'ModxInstaller',
71
+ 'modxevo' => 'MODXEvoInstaller',
72
+ 'moodle' => 'MoodleInstaller',
73
+ 'october' => 'OctoberInstaller',
74
+ 'ontowiki' => 'OntoWikiInstaller',
75
+ 'oxid' => 'OxidInstaller',
76
+ 'osclass' => 'OsclassInstaller',
77
+ 'pxcms' => 'PxcmsInstaller',
78
+ 'phpbb' => 'PhpBBInstaller',
79
+ 'pimcore' => 'PimcoreInstaller',
80
+ 'piwik' => 'PiwikInstaller',
81
+ 'plentymarkets'=> 'PlentymarketsInstaller',
82
+ 'ppi' => 'PPIInstaller',
83
+ 'puppet' => 'PuppetInstaller',
84
+ 'radphp' => 'RadPHPInstaller',
85
+ 'phifty' => 'PhiftyInstaller',
86
+ 'porto' => 'PortoInstaller',
87
+ 'redaxo' => 'RedaxoInstaller',
88
+ 'reindex' => 'ReIndexInstaller',
89
+ 'roundcube' => 'RoundcubeInstaller',
90
+ 'shopware' => 'ShopwareInstaller',
91
+ 'sitedirect' => 'SiteDirectInstaller',
92
+ 'silverstripe' => 'SilverStripeInstaller',
93
+ 'smf' => 'SMFInstaller',
94
+ 'sydes' => 'SyDESInstaller',
95
+ 'symfony1' => 'Symfony1Installer',
96
+ 'thelia' => 'TheliaInstaller',
97
+ 'tusk' => 'TuskInstaller',
98
+ 'typo3-cms' => 'TYPO3CmsInstaller',
99
+ 'typo3-flow' => 'TYPO3FlowInstaller',
100
+ 'userfrosting' => 'UserFrostingInstaller',
101
+ 'vanilla' => 'VanillaInstaller',
102
+ 'whmcs' => 'WHMCSInstaller',
103
+ 'wolfcms' => 'WolfCMSInstaller',
104
+ 'wordpress' => 'WordPressInstaller',
105
+ 'yawik' => 'YawikInstaller',
106
+ 'zend' => 'ZendInstaller',
107
+ 'zikula' => 'ZikulaInstaller',
108
+ 'prestashop' => 'PrestashopInstaller'
109
+ );
110
+
111
+ /**
112
+ * Installer constructor.
113
+ *
114
+ * Disables installers specified in main composer extra installer-disable
115
+ * list
116
+ *
117
+ * @param IOInterface $io
118
+ * @param Composer $composer
119
+ * @param string $type
120
+ * @param Filesystem|null $filesystem
121
+ * @param BinaryInstaller|null $binaryInstaller
122
+ */
123
+ public function __construct(
124
+ IOInterface $io,
125
+ Composer $composer,
126
+ $type = 'library',
127
+ Filesystem $filesystem = null,
128
+ BinaryInstaller $binaryInstaller = null
129
+ ) {
130
+ parent::__construct($io, $composer, $type, $filesystem,
131
+ $binaryInstaller);
132
+ $this->removeDisabledInstallers();
133
+ }
134
+
135
+ /**
136
+ * {@inheritDoc}
137
+ */
138
+ public function getInstallPath(PackageInterface $package)
139
+ {
140
+ $type = $package->getType();
141
+ $frameworkType = $this->findFrameworkType($type);
142
+
143
+ if ($frameworkType === false) {
144
+ throw new \InvalidArgumentException(
145
+ 'Sorry the package type of this package is not yet supported.'
146
+ );
147
+ }
148
+
149
+ $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
150
+ $installer = new $class($package, $this->composer, $this->getIO());
151
+
152
+ return $installer->getInstallPath($package, $frameworkType);
153
+ }
154
+
155
+ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
156
+ {
157
+ parent::uninstall($repo, $package);
158
+ $installPath = $this->getPackageBasePath($package);
159
+ $this->io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>'));
160
+ }
161
+
162
+ /**
163
+ * {@inheritDoc}
164
+ */
165
+ public function supports($packageType)
166
+ {
167
+ $frameworkType = $this->findFrameworkType($packageType);
168
+
169
+ if ($frameworkType === false) {
170
+ return false;
171
+ }
172
+
173
+ $locationPattern = $this->getLocationPattern($frameworkType);
174
+
175
+ return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1;
176
+ }
177
+
178
+ /**
179
+ * Finds a supported framework type if it exists and returns it
180
+ *
181
+ * @param string $type
182
+ * @return string
183
+ */
184
+ protected function findFrameworkType($type)
185
+ {
186
+ $frameworkType = false;
187
+
188
+ krsort($this->supportedTypes);
189
+
190
+ foreach ($this->supportedTypes as $key => $val) {
191
+ if ($key === substr($type, 0, strlen($key))) {
192
+ $frameworkType = substr($type, 0, strlen($key));
193
+ break;
194
+ }
195
+ }
196
+
197
+ return $frameworkType;
198
+ }
199
+
200
+ /**
201
+ * Get the second part of the regular expression to check for support of a
202
+ * package type
203
+ *
204
+ * @param string $frameworkType
205
+ * @return string
206
+ */
207
+ protected function getLocationPattern($frameworkType)
208
+ {
209
+ $pattern = false;
210
+ if (!empty($this->supportedTypes[$frameworkType])) {
211
+ $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
212
+ /** @var BaseInstaller $framework */
213
+ $framework = new $frameworkClass(null, $this->composer, $this->getIO());
214
+ $locations = array_keys($framework->getLocations());
215
+ $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
216
+ }
217
+
218
+ return $pattern ? : '(\w+)';
219
+ }
220
+
221
+ /**
222
+ * Get I/O object
223
+ *
224
+ * @return IOInterface
225
+ */
226
+ private function getIO()
227
+ {
228
+ return $this->io;
229
+ }
230
+
231
+ /**
232
+ * Look for installers set to be disabled in composer's extra config and
233
+ * remove them from the list of supported installers.
234
+ *
235
+ * Globals:
236
+ * - true, "all", and "*" - disable all installers.
237
+ * - false - enable all installers (useful with
238
+ * wikimedia/composer-merge-plugin or similar)
239
+ *
240
+ * @return void
241
+ */
242
+ protected function removeDisabledInstallers()
243
+ {
244
+ $extra = $this->composer->getPackage()->getExtra();
245
+
246
+ if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) {
247
+ // No installers are disabled
248
+ return;
249
+ }
250
+
251
+ // Get installers to disable
252
+ $disable = $extra['installer-disable'];
253
+
254
+ // Ensure $disabled is an array
255
+ if (!is_array($disable)) {
256
+ $disable = array($disable);
257
+ }
258
+
259
+ // Check which installers should be disabled
260
+ $all = array(true, "all", "*");
261
+ $intersect = array_intersect($all, $disable);
262
+ if (!empty($intersect)) {
263
+ // Disable all installers
264
+ $this->supportedTypes = array();
265
+ } else {
266
+ // Disable specified installers
267
+ foreach ($disable as $key => $installer) {
268
+ if (is_string($installer) && key_exists($installer, $this->supportedTypes)) {
269
+ unset($this->supportedTypes[$installer]);
270
+ }
271
+ }
272
+ }
273
+ }
274
+ }
vendor/composer/installers/src/Composer/Installers/ItopInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ItopInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'extensions/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class JoomlaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'component' => 'components/{$name}/',
8
+ 'module' => 'modules/{$name}/',
9
+ 'template' => 'templates/{$name}/',
10
+ 'plugin' => 'plugins/{$name}/',
11
+ 'library' => 'libraries/{$name}/',
12
+ );
13
+
14
+ // TODO: Add inflector for mod_ and com_ names
15
+ }
vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ *
6
+ * Installer for kanboard plugins
7
+ *
8
+ * kanboard.net
9
+ *
10
+ * Class KanboardInstaller
11
+ * @package Composer\Installers
12
+ */
13
+ class KanboardInstaller extends BaseInstaller
14
+ {
15
+ protected $locations = array(
16
+ 'plugin' => 'plugins/{$name}/',
17
+ );
18
+ }
vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KirbyInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'site/plugins/{$name}/',
8
+ 'field' => 'site/fields/{$name}/',
9
+ 'tag' => 'site/tags/{$name}/'
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KodiCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'cms/plugins/{$name}/',
8
+ 'media' => 'cms/media/vendor/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KohanaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class LanManagementSystemInstaller extends BaseInstaller
6
+ {
7
+
8
+ protected $locations = array(
9
+ 'plugin' => 'plugins/{$name}/',
10
+ 'template' => 'templates/{$name}/',
11
+ 'document-template' => 'documents/templates/{$name}/',
12
+ 'userpanel-module' => 'userpanel/modules/{$name}/',
13
+ );
14
+
15
+ /**
16
+ * Format package name to CamelCase
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
21
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
22
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
23
+
24
+ return $vars;
25
+ }
26
+
27
+ }
vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class LaravelInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'libraries/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class LavaLiteInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'packages/{$vendor}/{$name}/',
8
+ 'theme' => 'public/themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class LithiumInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'libraries/{$name}/',
8
+ 'source' => 'libraries/_source/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MODULEWorkInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle MODX Evolution specifics when installing packages.
6
+ */
7
+ class MODXEvoInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'snippet' => 'assets/snippets/{$name}/',
11
+ 'plugin' => 'assets/plugins/{$name}/',
12
+ 'module' => 'assets/modules/{$name}/',
13
+ 'template' => 'assets/templates/{$name}/',
14
+ 'lib' => 'assets/lib/{$name}/'
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MagentoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'theme' => 'app/design/frontend/{$name}/',
8
+ 'skin' => 'skin/frontend/default/{$name}/',
9
+ 'library' => 'lib/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Plugin/theme installer for majima
6
+ * @author David Neustadt
7
+ */
8
+ class MajimaInstaller extends BaseInstaller
9
+ {
10
+ protected $locations = array(
11
+ 'plugin' => 'plugins/{$name}/',
12
+ );
13
+
14
+ /**
15
+ * Transforms the names
16
+ * @param array $vars
17
+ * @return array
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ return $this->correctPluginName($vars);
22
+ }
23
+
24
+ /**
25
+ * Change hyphenated names to camelcase
26
+ * @param array $vars
27
+ * @return array
28
+ */
29
+ private function correctPluginName($vars)
30
+ {
31
+ $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
32
+ return strtoupper($matches[0][1]);
33
+ }, $vars['name']);
34
+ $vars['name'] = ucfirst($camelCasedName);
35
+ return $vars;
36
+ }
37
+ }
vendor/composer/installers/src/Composer/Installers/MakoInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MakoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'app/packages/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/MauticInstaller.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MauticInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name of mautic-plugins to CamelCase
13
+ */
14
+ public function inflectPackageVars($vars)
15
+ {
16
+ if ($vars['type'] == 'mautic-plugin') {
17
+ $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
18
+ return strtoupper($matches[0][1]);
19
+ }, ucfirst($vars['name']));
20
+ }
21
+
22
+ return $vars;
23
+ }
24
+
25
+ }
vendor/composer/installers/src/Composer/Installers/MayaInstaller.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MayaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format package name.
12
+ *
13
+ * For package type maya-module, cut off a trailing '-module' if present.
14
+ *
15
+ */
16
+ public function inflectPackageVars($vars)
17
+ {
18
+ if ($vars['type'] === 'maya-module') {
19
+ return $this->inflectModuleVars($vars);
20
+ }
21
+
22
+ return $vars;
23
+ }
24
+
25
+ protected function inflectModuleVars($vars)
26
+ {
27
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
28
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
29
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
30
+
31
+ return $vars;
32
+ }
33
+ }
vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MediaWikiInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'core' => 'core/',
8
+ 'extension' => 'extensions/{$name}/',
9
+ 'skin' => 'skins/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name.
14
+ *
15
+ * For package type mediawiki-extension, cut off a trailing '-extension' if present and transform
16
+ * to CamelCase keeping existing uppercase chars.
17
+ *
18
+ * For package type mediawiki-skin, cut off a trailing '-skin' if present.
19
+ *
20
+ */
21
+ public function inflectPackageVars($vars)
22
+ {
23
+
24
+ if ($vars['type'] === 'mediawiki-extension') {
25
+ return $this->inflectExtensionVars($vars);
26
+ }
27
+
28
+ if ($vars['type'] === 'mediawiki-skin') {
29
+ return $this->inflectSkinVars($vars);
30
+ }
31
+
32
+ return $vars;
33
+ }
34
+
35
+ protected function inflectExtensionVars($vars)
36
+ {
37
+ $vars['name'] = preg_replace('/-extension$/', '', $vars['name']);
38
+ $vars['name'] = str_replace('-', ' ', $vars['name']);
39
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
40
+
41
+ return $vars;
42
+ }
43
+
44
+ protected function inflectSkinVars($vars)
45
+ {
46
+ $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
47
+
48
+ return $vars;
49
+ }
50
+
51
+ }
vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MicroweberInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'userfiles/modules/{$name}/',
8
+ 'module-skin' => 'userfiles/modules/{$name}/templates/',
9
+ 'template' => 'userfiles/templates/{$name}/',
10
+ 'element' => 'userfiles/elements/{$name}/',
11
+ 'vendor' => 'vendor/{$name}/',
12
+ 'components' => 'components/{$name}/'
13
+ );
14
+
15
+ /**
16
+ * Format package name.
17
+ *
18
+ * For package type microweber-module, cut off a trailing '-module' if present
19
+ *
20
+ * For package type microweber-template, cut off a trailing '-template' if present.
21
+ *
22
+ */
23
+ public function inflectPackageVars($vars)
24
+ {
25
+ if ($vars['type'] === 'microweber-template') {
26
+ return $this->inflectTemplateVars($vars);
27
+ }
28
+ if ($vars['type'] === 'microweber-templates') {
29
+ return $this->inflectTemplatesVars($vars);
30
+ }
31
+ if ($vars['type'] === 'microweber-core') {
32
+ return $this->inflectCoreVars($vars);
33
+ }
34
+ if ($vars['type'] === 'microweber-adapter') {
35
+ return $this->inflectCoreVars($vars);
36
+ }
37
+ if ($vars['type'] === 'microweber-module') {
38
+ return $this->inflectModuleVars($vars);
39
+ }
40
+ if ($vars['type'] === 'microweber-modules') {
41
+ return $this->inflectModulesVars($vars);
42
+ }
43
+ if ($vars['type'] === 'microweber-skin') {
44
+ return $this->inflectSkinVars($vars);
45
+ }
46
+ if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') {
47
+ return $this->inflectElementVars($vars);
48
+ }
49
+
50
+ return $vars;
51
+ }
52
+
53
+ protected function inflectTemplateVars($vars)
54
+ {
55
+ $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
56
+ $vars['name'] = preg_replace('/template-$/', '', $vars['name']);
57
+
58
+ return $vars;
59
+ }
60
+
61
+ protected function inflectTemplatesVars($vars)
62
+ {
63
+ $vars['name'] = preg_replace('/-templates$/', '', $vars['name']);
64
+ $vars['name'] = preg_replace('/templates-$/', '', $vars['name']);
65
+
66
+ return $vars;
67
+ }
68
+
69
+ protected function inflectCoreVars($vars)
70
+ {
71
+ $vars['name'] = preg_replace('/-providers$/', '', $vars['name']);
72
+ $vars['name'] = preg_replace('/-provider$/', '', $vars['name']);
73
+ $vars['name'] = preg_replace('/-adapter$/', '', $vars['name']);
74
+
75
+ return $vars;
76
+ }
77
+
78
+ protected function inflectModuleVars($vars)
79
+ {
80
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
81
+ $vars['name'] = preg_replace('/module-$/', '', $vars['name']);
82
+
83
+ return $vars;
84
+ }
85
+
86
+ protected function inflectModulesVars($vars)
87
+ {
88
+ $vars['name'] = preg_replace('/-modules$/', '', $vars['name']);
89
+ $vars['name'] = preg_replace('/modules-$/', '', $vars['name']);
90
+
91
+ return $vars;
92
+ }
93
+
94
+ protected function inflectSkinVars($vars)
95
+ {
96
+ $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
97
+ $vars['name'] = preg_replace('/skin-$/', '', $vars['name']);
98
+
99
+ return $vars;
100
+ }
101
+
102
+ protected function inflectElementVars($vars)
103
+ {
104
+ $vars['name'] = preg_replace('/-elements$/', '', $vars['name']);
105
+ $vars['name'] = preg_replace('/elements-$/', '', $vars['name']);
106
+ $vars['name'] = preg_replace('/-element$/', '', $vars['name']);
107
+ $vars['name'] = preg_replace('/element-$/', '', $vars['name']);
108
+
109
+ return $vars;
110
+ }
111
+ }
vendor/composer/installers/src/Composer/Installers/ModxInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle MODX specifics when installing packages.
6
+ */
7
+ class ModxInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'extra' => 'core/packages/{$name}/'
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MoodleInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'mod' => 'mod/{$name}/',
8
+ 'admin_report' => 'admin/report/{$name}/',
9
+ 'atto' => 'lib/editor/atto/plugins/{$name}/',
10
+ 'tool' => 'admin/tool/{$name}/',
11
+ 'assignment' => 'mod/assignment/type/{$name}/',
12
+ 'assignsubmission' => 'mod/assign/submission/{$name}/',
13
+ 'assignfeedback' => 'mod/assign/feedback/{$name}/',
14
+ 'auth' => 'auth/{$name}/',
15
+ 'availability' => 'availability/condition/{$name}/',
16
+ 'block' => 'blocks/{$name}/',
17
+ 'booktool' => 'mod/book/tool/{$name}/',
18
+ 'cachestore' => 'cache/stores/{$name}/',
19
+ 'cachelock' => 'cache/locks/{$name}/',
20
+ 'calendartype' => 'calendar/type/{$name}/',
21
+ 'format' => 'course/format/{$name}/',
22
+ 'coursereport' => 'course/report/{$name}/',
23
+ 'datafield' => 'mod/data/field/{$name}/',
24
+ 'datapreset' => 'mod/data/preset/{$name}/',
25
+ 'editor' => 'lib/editor/{$name}/',
26
+ 'enrol' => 'enrol/{$name}/',
27
+ 'filter' => 'filter/{$name}/',
28
+ 'gradeexport' => 'grade/export/{$name}/',
29
+ 'gradeimport' => 'grade/import/{$name}/',
30
+ 'gradereport' => 'grade/report/{$name}/',
31
+ 'gradingform' => 'grade/grading/form/{$name}/',
32
+ 'local' => 'local/{$name}/',
33
+ 'logstore' => 'admin/tool/log/store/{$name}/',
34
+ 'ltisource' => 'mod/lti/source/{$name}/',
35
+ 'ltiservice' => 'mod/lti/service/{$name}/',
36
+ 'message' => 'message/output/{$name}/',
37
+ 'mnetservice' => 'mnet/service/{$name}/',
38
+ 'plagiarism' => 'plagiarism/{$name}/',
39
+ 'portfolio' => 'portfolio/{$name}/',
40
+ 'qbehaviour' => 'question/behaviour/{$name}/',
41
+ 'qformat' => 'question/format/{$name}/',
42
+ 'qtype' => 'question/type/{$name}/',
43
+ 'quizaccess' => 'mod/quiz/accessrule/{$name}/',
44
+ 'quiz' => 'mod/quiz/report/{$name}/',
45
+ 'report' => 'report/{$name}/',
46
+ 'repository' => 'repository/{$name}/',
47
+ 'scormreport' => 'mod/scorm/report/{$name}/',
48
+ 'search' => 'search/engine/{$name}/',
49
+ 'theme' => 'theme/{$name}/',
50
+ 'tinymce' => 'lib/editor/tinymce/plugins/{$name}/',
51
+ 'profilefield' => 'user/profile/field/{$name}/',
52
+ 'webservice' => 'webservice/{$name}/',
53
+ 'workshopallocation' => 'mod/workshop/allocation/{$name}/',
54
+ 'workshopeval' => 'mod/workshop/eval/{$name}/',
55
+ 'workshopform' => 'mod/workshop/form/{$name}/'
56
+ );
57
+ }
vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class OctoberInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ 'plugin' => 'plugins/{$vendor}/{$name}/',
9
+ 'theme' => 'themes/{$name}/'
10
+ );
11
+
12
+ /**
13
+ * Format package name.
14
+ *
15
+ * For package type october-plugin, cut off a trailing '-plugin' if present.
16
+ *
17
+ * For package type october-theme, cut off a trailing '-theme' if present.
18
+ *
19
+ */
20
+ public function inflectPackageVars($vars)
21
+ {
22
+ if ($vars['type'] === 'october-plugin') {
23
+ return $this->inflectPluginVars($vars);
24
+ }
25
+
26
+ if ($vars['type'] === 'october-theme') {
27
+ return $this->inflectThemeVars($vars);
28
+ }
29
+
30
+ return $vars;
31
+ }
32
+
33
+ protected function inflectPluginVars($vars)
34
+ {
35
+ $vars['name'] = preg_replace('/^oc-|-plugin$/', '', $vars['name']);
36
+ $vars['vendor'] = preg_replace('/[^a-z0-9_]/i', '', $vars['vendor']);
37
+
38
+ return $vars;
39
+ }
40
+
41
+ protected function inflectThemeVars($vars)
42
+ {
43
+ $vars['name'] = preg_replace('/^oc-|-theme$/', '', $vars['name']);
44
+
45
+ return $vars;
46
+ }
47
+ }
vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class OntoWikiInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'extensions/{$name}/',
8
+ 'theme' => 'extensions/themes/{$name}/',
9
+ 'translation' => 'extensions/translations/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name to lower case and remove ".ontowiki" suffix
14
+ */
15
+ public function inflectPackageVars($vars)
16
+ {
17
+ $vars['name'] = strtolower($vars['name']);
18
+ $vars['name'] = preg_replace('/.ontowiki$/', '', $vars['name']);
19
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
20
+ $vars['name'] = preg_replace('/-translation$/', '', $vars['name']);
21
+
22
+ return $vars;
23
+ }
24
+ }
vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+
5
+ class OsclassInstaller extends BaseInstaller
6
+ {
7
+
8
+ protected $locations = array(
9
+ 'plugin' => 'oc-content/plugins/{$name}/',
10
+ 'theme' => 'oc-content/themes/{$name}/',
11
+ 'language' => 'oc-content/languages/{$name}/',
12
+ );
13
+
14
+ }
vendor/composer/installers/src/Composer/Installers/OxidInstaller.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\Package\PackageInterface;
5
+
6
+ class OxidInstaller extends BaseInstaller
7
+ {
8
+ const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/';
9
+
10
+ protected $locations = array(
11
+ 'module' => 'modules/{$name}/',
12
+ 'theme' => 'application/views/{$name}/',
13
+ 'out' => 'out/{$name}/',
14
+ );
15
+
16
+ /**
17
+ * getInstallPath
18
+ *
19
+ * @param PackageInterface $package
20
+ * @param string $frameworkType
21
+ * @return void
22
+ */
23
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
+ {
25
+ $installPath = parent::getInstallPath($package, $frameworkType);
26
+ $type = $this->package->getType();
27
+ if ($type === 'oxid-module') {
28
+ $this->prepareVendorDirectory($installPath);
29
+ }
30
+ return $installPath;
31
+ }
32
+
33
+ /**
34
+ * prepareVendorDirectory
35
+ *
36
+ * Makes sure there is a vendormetadata.php file inside
37
+ * the vendor folder if there is a vendor folder.
38
+ *
39
+ * @param string $installPath
40
+ * @return void
41
+ */
42
+ protected function prepareVendorDirectory($installPath)
43
+ {
44
+ $matches = '';
45
+ $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches);
46
+ if (!$hasVendorDirectory) {
47
+ return;
48
+ }
49
+
50
+ $vendorDirectory = $matches['vendor'];
51
+ $vendorPath = getcwd() . '/modules/' . $vendorDirectory;
52
+ if (!file_exists($vendorPath)) {
53
+ mkdir($vendorPath, 0755, true);
54
+ }
55
+
56
+ $vendorMetaDataPath = $vendorPath . '/vendormetadata.php';
57
+ touch($vendorMetaDataPath);
58
+ }
59
+ }
vendor/composer/installers/src/Composer/Installers/PPIInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PPIInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PhiftyInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'bundle' => 'bundles/{$name}/',
8
+ 'library' => 'libraries/{$name}/',
9
+ 'framework' => 'frameworks/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PhpBBInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'ext/{$vendor}/{$name}/',
8
+ 'language' => 'language/{$name}/',
9
+ 'style' => 'styles/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PimcoreInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format package name to CamelCase
12
+ */
13
+ public function inflectPackageVars($vars)
14
+ {
15
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
16
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
17
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
18
+
19
+ return $vars;
20
+ }
21
+ }
vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Class PiwikInstaller
6
+ *
7
+ * @package Composer\Installers
8
+ */
9
+ class PiwikInstaller extends BaseInstaller
10
+ {
11
+ /**
12
+ * @var array
13
+ */
14
+ protected $locations = array(
15
+ 'plugin' => 'plugins/{$name}/',
16
+ );
17
+
18
+ /**
19
+ * Format package name to CamelCase
20
+ * @param array $vars
21
+ *
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
27
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
28
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
29
+
30
+ return $vars;
31
+ }
32
+ }
vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PlentymarketsInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => '{$name}/'
8
+ );
9
+
10
+ /**
11
+ * Remove hyphen, "plugin" and format to camelcase
12
+ * @param array $vars
13
+ *
14
+ * @return array
15
+ */
16
+ public function inflectPackageVars($vars)
17
+ {
18
+ $vars['name'] = explode("-", $vars['name']);
19
+ foreach ($vars['name'] as $key => $name) {
20
+ $vars['name'][$key] = ucfirst($vars['name'][$key]);
21
+ if (strcasecmp($name, "Plugin") == 0) {
22
+ unset($vars['name'][$key]);
23
+ }
24
+ }
25
+ $vars['name'] = implode("",$vars['name']);
26
+
27
+ return $vars;
28
+ }
29
+ }
vendor/composer/installers/src/Composer/Installers/Plugin.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Composer;
6
+ use Composer\IO\IOInterface;
7
+ use Composer\Plugin\PluginInterface;
8
+
9
+ class Plugin implements PluginInterface
10
+ {
11
+
12
+ public function activate(Composer $composer, IOInterface $io)
13
+ {
14
+ $installer = new Installer($io, $composer);
15
+ $composer->getInstallationManager()->addInstaller($installer);
16
+ }
17
+ }
vendor/composer/installers/src/Composer/Installers/PortoInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PortoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'container' => 'app/Containers/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PrestashopInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class PuppetInstaller extends BaseInstaller
6
+ {
7
+
8
+ protected $locations = array(
9
+ 'module' => 'modules/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PxcmsInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'app/Modules/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * @param array $vars
15
+ *
16
+ * @return array
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ if ($vars['type'] === 'pxcms-module') {
21
+ return $this->inflectModuleVars($vars);
22
+ }
23
+
24
+ if ($vars['type'] === 'pxcms-theme') {
25
+ return $this->inflectThemeVars($vars);
26
+ }
27
+
28
+ return $vars;
29
+ }
30
+
31
+ /**
32
+ * For package type pxcms-module, cut off a trailing '-plugin' if present.
33
+ *
34
+ * return string
35
+ */
36
+ protected function inflectModuleVars($vars)
37
+ {
38
+ $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
39
+ $vars['name'] = str_replace('module-', '', $vars['name']); // strip out module-
40
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']); // strip out -module
41
+ $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
42
+ $vars['name'] = ucwords($vars['name']); // make module name camelcased
43
+
44
+ return $vars;
45
+ }
46
+
47
+
48
+ /**
49
+ * For package type pxcms-module, cut off a trailing '-plugin' if present.
50
+ *
51
+ * return string
52
+ */
53
+ protected function inflectThemeVars($vars)
54
+ {
55
+ $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
56
+ $vars['name'] = str_replace('theme-', '', $vars['name']); // strip out theme-
57
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); // strip out -theme
58
+ $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
59
+ $vars['name'] = ucwords($vars['name']); // make module name camelcased
60
+
61
+ return $vars;
62
+ }
63
+ }
vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class RadPHPInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'bundle' => 'src/{$name}/'
8
+ );
9
+
10
+ /**
11
+ * Format package name to CamelCase
12
+ */
13
+ public function inflectPackageVars($vars)
14
+ {
15
+ $nameParts = explode('/', $vars['name']);
16
+ foreach ($nameParts as &$value) {
17
+ $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
18
+ $value = str_replace(array('-', '_'), ' ', $value);
19
+ $value = str_replace(' ', '', ucwords($value));
20
+ }
21
+ $vars['name'] = implode('/', $nameParts);
22
+ return $vars;
23
+ }
24
+ }
vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ReIndexInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'theme' => 'themes/{$name}/',
8
+ 'plugin' => 'plugins/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class RedaxoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'addon' => 'redaxo/include/addons/{$name}/',
8
+ 'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class RoundcubeInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Lowercase name and changes the name to a underscores
12
+ *
13
+ * @param array $vars
14
+ * @return array
15
+ */
16
+ public function inflectPackageVars($vars)
17
+ {
18
+ $vars['name'] = strtolower(str_replace('-', '_', $vars['name']));
19
+
20
+ return $vars;
21
+ }
22
+ }
vendor/composer/installers/src/Composer/Installers/SMFInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class SMFInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'Sources/{$name}/',
8
+ 'theme' => 'Themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Plugin/theme installer for shopware
6
+ * @author Benjamin Boit
7
+ */
8
+ class ShopwareInstaller extends BaseInstaller
9
+ {
10
+ protected $locations = array(
11
+ 'backend-plugin' => 'engine/Shopware/Plugins/Local/Backend/{$name}/',
12
+ 'core-plugin' => 'engine/Shopware/Plugins/Local/Core/{$name}/',
13
+ 'frontend-plugin' => 'engine/Shopware/Plugins/Local/Frontend/{$name}/',
14
+ 'theme' => 'templates/{$name}/',
15
+ 'plugin' => 'custom/plugins/{$name}/',
16
+ 'frontend-theme' => 'themes/Frontend/{$name}/',
17
+ );
18
+
19
+ /**
20
+ * Transforms the names
21
+ * @param array $vars
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ if ($vars['type'] === 'shopware-theme') {
27
+ return $this->correctThemeName($vars);
28
+ }
29
+
30
+ return $this->correctPluginName($vars);
31
+ }
32
+
33
+ /**
34
+ * Changes the name to a camelcased combination of vendor and name
35
+ * @param array $vars
36
+ * @return array
37
+ */
38
+ private function correctPluginName($vars)
39
+ {
40
+ $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
41
+ return strtoupper($matches[0][1]);
42
+ }, $vars['name']);
43
+
44
+ $vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName);
45
+
46
+ return $vars;
47
+ }
48
+
49
+ /**
50
+ * Changes the name to a underscore separated name
51
+ * @param array $vars
52
+ * @return array
53
+ */
54
+ private function correctThemeName($vars)
55
+ {
56
+ $vars['name'] = str_replace('-', '_', $vars['name']);
57
+
58
+ return $vars;
59
+ }
60
+ }
vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\Package\PackageInterface;
5
+
6
+ class SilverStripeInstaller extends BaseInstaller
7
+ {
8
+ protected $locations = array(
9
+ 'module' => '{$name}/',
10
+ 'theme' => 'themes/{$name}/',
11
+ );
12
+
13
+ /**
14
+ * Return the install path based on package type.
15
+ *
16
+ * Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework
17
+ * must be installed to 'sapphire' and not 'framework' if the version is <3.0.0
18
+ *
19
+ * @param PackageInterface $package
20
+ * @param string $frameworkType
21
+ * @return string
22
+ */
23
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
+ {
25
+ if (
26
+ $package->getName() == 'silverstripe/framework'
27
+ && preg_match('/^\d+\.\d+\.\d+/', $package->getVersion())
28
+ && version_compare($package->getVersion(), '2.999.999') < 0
29
+ ) {
30
+ return $this->templatePath($this->locations['module'], array('name' => 'sapphire'));
31
+ }
32
+
33
+ return parent::getInstallPath($package, $frameworkType);
34
+ }
35
+ }
vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class SiteDirectInstaller extends BaseInstaller
6
+ {
7
+ protected $locations = array(
8
+ 'module' => 'modules/{$vendor}/{$name}/',
9
+ 'plugin' => 'plugins/{$vendor}/{$name}/'
10
+ );
11
+
12
+ public function inflectPackageVars($vars)
13
+ {
14
+ return $this->parseVars($vars);
15
+ }
16
+
17
+ protected function parseVars($vars)
18
+ {
19
+ $vars['vendor'] = strtolower($vars['vendor']) == 'sitedirect' ? 'SiteDirect' : $vars['vendor'];
20
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
21
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
22
+
23
+ return $vars;
24
+ }
25
+ }
vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class SyDESInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'app/modules/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format module name.
13
+ *
14
+ * Strip `sydes-` prefix and a trailing '-theme' or '-module' from package name if present.
15
+ *
16
+ * @param array @vars
17
+ *
18
+ * @return array
19
+ */
20
+ public function inflectPackageVars($vars)
21
+ {
22
+ if ($vars['type'] == 'sydes-module') {
23
+ return $this->inflectModuleVars($vars);
24
+ }
25
+
26
+ if ($vars['type'] === 'sydes-theme') {
27
+ return $this->inflectThemeVars($vars);
28
+ }
29
+
30
+ return $vars;
31
+ }
32
+
33
+ public function inflectModuleVars($vars)
34
+ {
35
+ $vars['name'] = preg_replace('/(^sydes-|-module$)/i', '', $vars['name']);
36
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
37
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
38
+
39
+ return $vars;
40
+ }
41
+
42
+ protected function inflectThemeVars($vars)
43
+ {
44
+ $vars['name'] = preg_replace('/(^sydes-|-theme$)/', '', $vars['name']);
45
+ $vars['name'] = strtolower($vars['name']);
46
+
47
+ return $vars;
48
+ }
49
+ }
vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Plugin installer for symfony 1.x
6
+ *
7
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
8
+ */
9
+ class Symfony1Installer extends BaseInstaller
10
+ {
11
+ protected $locations = array(
12
+ 'plugin' => 'plugins/{$name}/',
13
+ );
14
+
15
+ /**
16
+ * Format package name to CamelCase
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
21
+ return strtoupper($matches[0][1]);
22
+ }, $vars['name']);
23
+
24
+ return $vars;
25
+ }
26
+ }
vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Extension installer for TYPO3 CMS
6
+ *
7
+ * @deprecated since 1.0.25, use https://packagist.org/packages/typo3/cms-composer-installers instead
8
+ *
9
+ * @author Sascha Egerer <sascha.egerer@dkd.de>
10
+ */
11
+ class TYPO3CmsInstaller extends BaseInstaller
12
+ {
13
+ protected $locations = array(
14
+ 'extension' => 'typo3conf/ext/{$name}/',
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle TYPO3 Flow specifics when installing packages.
6
+ */
7
+ class TYPO3FlowInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'package' => 'Packages/Application/{$name}/',
11
+ 'framework' => 'Packages/Framework/{$name}/',
12
+ 'plugin' => 'Packages/Plugins/{$name}/',
13
+ 'site' => 'Packages/Sites/{$name}/',
14
+ 'boilerplate' => 'Packages/Boilerplates/{$name}/',
15
+ 'build' => 'Build/{$name}/',
16
+ );
17
+
18
+ /**
19
+ * Modify the package name to be a TYPO3 Flow style key.
20
+ *
21
+ * @param array $vars
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ $autoload = $this->package->getAutoload();
27
+ if (isset($autoload['psr-0']) && is_array($autoload['psr-0'])) {
28
+ $namespace = key($autoload['psr-0']);
29
+ $vars['name'] = str_replace('\\', '.', $namespace);
30
+ }
31
+ if (isset($autoload['psr-4']) && is_array($autoload['psr-4'])) {
32
+ $namespace = key($autoload['psr-4']);
33
+ $vars['name'] = rtrim(str_replace('\\', '.', $namespace), '.');
34
+ }
35
+
36
+ return $vars;
37
+ }
38
+ }
vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class TheliaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'local/modules/{$name}/',
8
+ 'frontoffice-template' => 'templates/frontOffice/{$name}/',
9
+ 'backoffice-template' => 'templates/backOffice/{$name}/',
10
+ 'email-template' => 'templates/email/{$name}/',
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/TuskInstaller.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+ /**
4
+ * Composer installer for 3rd party Tusk utilities
5
+ * @author Drew Ewing <drew@phenocode.com>
6
+ */
7
+ class TuskInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'task' => '.tusk/tasks/{$name}/',
11
+ 'command' => '.tusk/commands/{$name}/',
12
+ 'asset' => 'assets/tusk/{$name}/',
13
+ );
14
+ }
vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class UserFrostingInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'sprinkle' => 'app/sprinkles/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class VanillaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class VgmcpInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'bundle' => 'src/{$vendor}/{$name}/',
8
+ 'theme' => 'themes/{$name}/'
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * For package type vgmcp-bundle, cut off a trailing '-bundle' if present.
15
+ *
16
+ * For package type vgmcp-theme, cut off a trailing '-theme' if present.
17
+ *
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ if ($vars['type'] === 'vgmcp-bundle') {
22
+ return $this->inflectPluginVars($vars);
23
+ }
24
+
25
+ if ($vars['type'] === 'vgmcp-theme') {
26
+ return $this->inflectThemeVars($vars);
27
+ }
28
+
29
+ return $vars;
30
+ }
31
+
32
+ protected function inflectPluginVars($vars)
33
+ {
34
+ $vars['name'] = preg_replace('/-bundle$/', '', $vars['name']);
35
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
36
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
37
+
38
+ return $vars;
39
+ }
40
+
41
+ protected function inflectThemeVars($vars)
42
+ {
43
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
44
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
45
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
46
+
47
+ return $vars;
48
+ }
49
+ }
vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class WHMCSInstaller extends BaseInstaller
6
+ {
7
+ protected $locations = array(
8
+ 'gateway' => 'modules/gateways/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class WolfCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'wolf/plugins/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class WordPressInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'wp-content/plugins/{$name}/',
8
+ 'theme' => 'wp-content/themes/{$name}/',
9
+ 'muplugin' => 'wp-content/mu-plugins/{$name}/',
10
+ 'dropin' => 'wp-content/{$name}/',
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/YawikInstaller.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by PhpStorm.
4
+ * User: cbleek
5
+ * Date: 25.03.16
6
+ * Time: 20:55
7
+ */
8
+
9
+ namespace Composer\Installers;
10
+
11
+
12
+ class YawikInstaller extends BaseInstaller
13
+ {
14
+ protected $locations = array(
15
+ 'module' => 'module/{$name}/',
16
+ );
17
+
18
+ /**
19
+ * Format package name to CamelCase
20
+ * @param array $vars
21
+ *
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
27
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
28
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
29
+
30
+ return $vars;
31
+ }
32
+ }
vendor/composer/installers/src/Composer/Installers/ZendInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ZendInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'library/{$name}/',
8
+ 'extra' => 'extras/library/{$name}/',
9
+ 'module' => 'module/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ZikulaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$vendor}-{$name}/',
8
+ 'theme' => 'themes/{$vendor}-{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/bootstrap.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ function includeIfExists($file)
3
+ {
4
+ if (file_exists($file)) {
5
+ return include $file;
6
+ }
7
+ }
8
+ if ((!$loader = includeIfExists(__DIR__ . '/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__ . '/../../../autoload.php'))) {
9
+ die('You must set up the project dependencies, run the following commands:'.PHP_EOL.
10
+ 'curl -s http://getcomposer.org/installer | php'.PHP_EOL.
11
+ 'php composer.phar install'.PHP_EOL);
12
+ }
13
+ return $loader;
vendor/wp-media/rocket-lazyload-common/composer.json CHANGED
@@ -1,7 +1,11 @@
1
  {
2
  "name": "wp-media/rocket-lazyload-common",
3
  "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
4
- "license": "GPLv3",
 
 
 
 
5
  "authors": [
6
  {
7
  "name": "WP Media",
@@ -14,10 +18,32 @@
14
  "RocketLazyload\\": "src"
15
  }
16
  },
 
 
 
 
 
 
 
 
 
17
  "require": {
18
- "php": ">=5.4"
19
  },
20
  "require-dev": {
21
- "squizlabs/php_codesniffer": "^3.2"
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  }
23
- }
1
  {
2
  "name": "wp-media/rocket-lazyload-common",
3
  "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
4
+ "license": "GPL-3.0-or-later",
5
+ "support": {
6
+ "issues": "https://github.com/wp-media/rocket-lazyload-common/issues",
7
+ "source": "https://github.com/wp-media/rocket-lazyload-common"
8
+ },
9
  "authors": [
10
  {
11
  "name": "WP Media",
18
  "RocketLazyload\\": "src"
19
  }
20
  },
21
+ "autoload-dev": {
22
+ "psr-4": {
23
+ "RocketLazyload\\Tests\\Unit\\": "tests/Unit",
24
+ "RocketLazyload\\Tests\\Integration\\": "tests/Integration"
25
+ }
26
+ },
27
+ "config": {
28
+ "sort-packages": true
29
+ },
30
  "require": {
31
+ "php": ">=5.6"
32
  },
33
  "require-dev": {
34
+ "brain/monkey": "^2.0",
35
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
36
+ "doctrine/instantiator": "1.0.*",
37
+ "myclabs/deep-copy": "1.6.*",
38
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
39
+ "phpdocumentor/reflection-docblock": "^3.3",
40
+ "phpunit/php-token-stream": "^1.4",
41
+ "phpunit/phpunit": "^5.7",
42
+ "symfony/yaml": "2.8.*",
43
+ "wp-coding-standards/wpcs": "^2.0.0"
44
+ },
45
+ "scripts": {
46
+ "test-unit":"\"vendor/bin/phpunit\" --testsuite unit --colors=always",
47
+ "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist"
48
  }
49
+ }
vendor/wp-media/rocket-lazyload-common/composer.lock CHANGED
@@ -4,21 +4,1671 @@
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": "f9b403fc49b8026e5db8d7f5acb01c74",
8
  "packages": [],
9
  "packages-dev": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  {
11
  "name": "squizlabs/php_codesniffer",
12
- "version": "3.3.2",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
16
- "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e"
17
  },
18
  "dist": {
19
  "type": "zip",
20
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e",
21
- "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e",
22
  "shasum": ""
23
  },
24
  "require": {
@@ -56,7 +1706,211 @@
56
  "phpcs",
57
  "standards"
58
  ],
59
- "time": "2018-09-23T23:08:17+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  }
61
  ],
62
  "aliases": [],
@@ -65,7 +1919,7 @@
65
  "prefer-stable": false,
66
  "prefer-lowest": false,
67
  "platform": {
68
- "php": ">=5.4"
69
  },
70
  "platform-dev": []
71
  }
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": "50d22d9d649b94602548d48acb4ef4ae",
8
  "packages": [],
9
  "packages-dev": [
10
+ {
11
+ "name": "antecedent/patchwork",
12
+ "version": "2.1.8",
13
+ "source": {
14
+ "type": "git",
15
+ "url": "https://github.com/antecedent/patchwork.git",
16
+ "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7"
17
+ },
18
+ "dist": {
19
+ "type": "zip",
20
+ "url": "https://api.github.com/repos/antecedent/patchwork/zipball/3bb81ace3914c220aa273d1c0603d5e1b454c0d7",
21
+ "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7",
22
+ "shasum": ""
23
+ },
24
+ "require": {
25
+ "php": ">=5.4.0"
26
+ },
27
+ "type": "library",
28
+ "notification-url": "https://packagist.org/downloads/",
29
+ "license": [
30
+ "MIT"
31
+ ],
32
+ "authors": [
33
+ {
34
+ "name": "Ignas Rudaitis",
35
+ "email": "ignas.rudaitis@gmail.com"
36
+ }
37
+ ],
38
+ "description": "Method redefinition (monkey-patching) functionality for PHP.",
39
+ "homepage": "http://patchwork2.org/",
40
+ "keywords": [
41
+ "aop",
42
+ "aspect",
43
+ "interception",
44
+ "monkeypatching",
45
+ "redefinition",
46
+ "runkit",
47
+ "testing"
48
+ ],
49
+ "time": "2018-02-19T18:52:50+00:00"
50
+ },
51
+ {
52
+ "name": "brain/monkey",
53
+ "version": "2.2.0",
54
+ "source": {
55
+ "type": "git",
56
+ "url": "https://github.com/Brain-WP/BrainMonkey.git",
57
+ "reference": "ed9e0698bc1292f33698719da8ca1aa2e18acc51"
58
+ },
59
+ "dist": {
60
+ "type": "zip",
61
+ "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/ed9e0698bc1292f33698719da8ca1aa2e18acc51",
62
+ "reference": "ed9e0698bc1292f33698719da8ca1aa2e18acc51",
63
+ "shasum": ""
64
+ },
65
+ "require": {
66
+ "antecedent/patchwork": "^2.0",
67
+ "mockery/mockery": ">=0.9 <2",
68
+ "php": ">=5.6.0"
69
+ },
70
+ "require-dev": {
71
+ "phpunit/phpunit": "~5.7.9"
72
+ },
73
+ "type": "library",
74
+ "extra": {
75
+ "branch-alias": {
76
+ "dev-version/1": "1.x-dev",
77
+ "dev-master": "2.0.x-dev"
78
+ }
79
+ },
80
+ "autoload": {
81
+ "psr-4": {
82
+ "Brain\\Monkey\\": "src/"
83
+ },
84
+ "files": [
85
+ "inc/api.php"
86
+ ]
87
+ },
88
+ "notification-url": "https://packagist.org/downloads/",
89
+ "license": [
90
+ "MIT"
91
+ ],
92
+ "authors": [
93
+ {
94
+ "name": "Giuseppe Mazzapica",
95
+ "email": "giuseppe.mazzapica@gmail.com",
96
+ "homepage": "https://gmazzap.me",
97
+ "role": "Developer"
98
+ }
99
+ ],
100
+ "description": "Mocking utility for PHP functions and WordPress plugin API",
101
+ "keywords": [
102
+ "Monkey Patching",
103
+ "interception",
104
+ "mock",
105
+ "mock functions",
106
+ "mockery",
107
+ "patchwork",
108
+ "redefinition",
109
+ "runkit",
110
+ "test",
111
+ "testing"
112
+ ],
113
+ "time": "2017-12-01T16:32:09+00:00"
114
+ },
115
+ {
116
+ "name": "dealerdirect/phpcodesniffer-composer-installer",
117
+ "version": "v0.5.0",
118
+ "source": {
119
+ "type": "git",
120
+ "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
121
+ "reference": "e749410375ff6fb7a040a68878c656c2e610b132"
122
+ },
123
+ "dist": {
124
+ "type": "zip",
125
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e749410375ff6fb7a040a68878c656c2e610b132",
126
+ "reference": "e749410375ff6fb7a040a68878c656c2e610b132",
127
+ "shasum": ""
128
+ },
129
+ "require": {
130
+ "composer-plugin-api": "^1.0",
131
+ "php": "^5.3|^7",
132
+ "squizlabs/php_codesniffer": "^2|^3"
133
+ },
134
+ "require-dev": {
135
+ "composer/composer": "*",
136
+ "phpcompatibility/php-compatibility": "^9.0",
137
+ "sensiolabs/security-checker": "^4.1.0"
138
+ },
139
+ "type": "composer-plugin",
140
+ "extra": {
141
+ "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
142
+ },
143
+ "autoload": {
144
+ "psr-4": {
145
+ "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
146
+ }
147
+ },
148
+ "notification-url": "https://packagist.org/downloads/",
149
+ "license": [
150
+ "MIT"
151
+ ],
152
+ "authors": [
153
+ {
154
+ "name": "Franck Nijhof",
155
+ "email": "franck.nijhof@dealerdirect.com",
156
+ "homepage": "http://www.frenck.nl",
157
+ "role": "Developer / IT Manager"
158
+ }
159
+ ],
160
+ "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
161
+ "homepage": "http://www.dealerdirect.com",
162
+ "keywords": [
163
+ "PHPCodeSniffer",
164
+ "PHP_CodeSniffer",
165
+ "code quality",
166
+ "codesniffer",
167
+ "composer",
168
+ "installer",
169
+ "phpcs",
170
+ "plugin",
171
+ "qa",
172
+ "quality",
173
+ "standard",
174
+ "standards",
175
+ "style guide",
176
+ "stylecheck",
177
+ "tests"
178
+ ],
179
+ "time": "2018-10-26T13:21:45+00:00"
180
+ },
181
+ {
182
+ "name": "doctrine/instantiator",
183
+ "version": "1.0.5",
184
+ "source": {
185
+ "type": "git",
186
+ "url": "https://github.com/doctrine/instantiator.git",
187
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
188
+ },
189
+ "dist": {
190
+ "type": "zip",
191
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
192
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
193
+ "shasum": ""
194
+ },
195
+ "require": {
196
+ "php": ">=5.3,<8.0-DEV"
197
+ },
198
+ "require-dev": {
199
+ "athletic/athletic": "~0.1.8",
200
+ "ext-pdo": "*",
201
+ "ext-phar": "*",
202
+ "phpunit/phpunit": "~4.0",
203
+ "squizlabs/php_codesniffer": "~2.0"
204
+ },
205
+ "type": "library",
206
+ "extra": {
207
+ "branch-alias": {
208
+ "dev-master": "1.0.x-dev"
209
+ }
210
+ },
211
+ "autoload": {
212
+ "psr-4": {
213
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
214
+ }
215
+ },
216
+ "notification-url": "https://packagist.org/downloads/",
217
+ "license": [
218
+ "MIT"
219
+ ],
220
+ "authors": [
221
+ {
222
+ "name": "Marco Pivetta",
223
+ "email": "ocramius@gmail.com",
224
+ "homepage": "http://ocramius.github.com/"
225
+ }
226
+ ],
227
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
228
+ "homepage": "https://github.com/doctrine/instantiator",
229
+ "keywords": [
230
+ "constructor",
231
+ "instantiate"
232
+ ],
233
+ "time": "2015-06-14T21:17:01+00:00"
234
+ },
235
+ {
236
+ "name": "hamcrest/hamcrest-php",
237
+ "version": "v2.0.0",
238
+ "source": {
239
+ "type": "git",
240
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
241
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
242
+ },
243
+ "dist": {
244
+ "type": "zip",
245
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
246
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
247
+ "shasum": ""
248
+ },
249
+ "require": {
250
+ "php": "^5.3|^7.0"
251
+ },
252
+ "replace": {
253
+ "cordoval/hamcrest-php": "*",
254
+ "davedevelopment/hamcrest-php": "*",
255
+ "kodova/hamcrest-php": "*"
256
+ },
257
+ "require-dev": {
258
+ "phpunit/php-file-iterator": "1.3.3",
259
+ "phpunit/phpunit": "~4.0",
260
+ "satooshi/php-coveralls": "^1.0"
261
+ },
262
+ "type": "library",
263
+ "extra": {
264
+ "branch-alias": {
265
+ "dev-master": "2.0-dev"
266
+ }
267
+ },
268
+ "autoload": {
269
+ "classmap": [
270
+ "hamcrest"
271
+ ]
272
+ },
273
+ "notification-url": "https://packagist.org/downloads/",
274
+ "license": [
275
+ "BSD"
276
+ ],
277
+ "description": "This is the PHP port of Hamcrest Matchers",
278
+ "keywords": [
279
+ "test"
280
+ ],
281
+ "time": "2016-01-20T08:20:44+00:00"
282
+ },
283
+ {
284
+ "name": "mockery/mockery",
285
+ "version": "1.2.2",
286
+ "source": {
287
+ "type": "git",
288
+ "url": "https://github.com/mockery/mockery.git",
289
+ "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2"
290
+ },
291
+ "dist": {
292
+ "type": "zip",
293
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2",
294
+ "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2",
295
+ "shasum": ""
296
+ },
297
+ "require": {
298
+ "hamcrest/hamcrest-php": "~2.0",
299
+ "lib-pcre": ">=7.0",
300
+ "php": ">=5.6.0"
301
+ },
302
+ "require-dev": {
303
+ "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0"
304
+ },
305
+ "type": "library",
306
+ "extra": {
307
+ "branch-alias": {
308
+ "dev-master": "1.0.x-dev"
309
+ }
310
+ },
311
+ "autoload": {
312
+ "psr-0": {
313
+ "Mockery": "library/"
314
+ }
315
+ },
316
+ "notification-url": "https://packagist.org/downloads/",
317
+ "license": [
318
+ "BSD-3-Clause"
319
+ ],
320
+ "authors": [
321
+ {
322
+ "name": "Pádraic Brady",
323
+ "email": "padraic.brady@gmail.com",
324
+ "homepage": "http://blog.astrumfutura.com"
325
+ },
326
+ {
327
+ "name": "Dave Marshall",
328
+ "email": "dave.marshall@atstsolutions.co.uk",
329
+ "homepage": "http://davedevelopment.co.uk"
330
+ }
331
+ ],
332
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
333
+ "homepage": "https://github.com/mockery/mockery",
334
+ "keywords": [
335
+ "BDD",
336
+ "TDD",
337
+ "library",
338
+ "mock",
339
+ "mock objects",
340
+ "mockery",
341
+ "stub",
342
+ "test",
343
+ "test double",
344
+ "testing"
345
+ ],
346
+ "time": "2019-02-13T09:37:52+00:00"
347
+ },
348
+ {
349
+ "name": "myclabs/deep-copy",
350
+ "version": "1.6.1",
351
+ "source": {
352
+ "type": "git",
353
+ "url": "https://github.com/myclabs/DeepCopy.git",
354
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102"
355
+ },
356
+ "dist": {
357
+ "type": "zip",
358
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102",
359
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102",
360
+ "shasum": ""
361
+ },
362
+ "require": {
363
+ "php": ">=5.4.0"
364
+ },
365
+ "require-dev": {
366
+ "doctrine/collections": "1.*",
367
+ "phpunit/phpunit": "~4.1"
368
+ },
369
+ "type": "library",
370
+ "autoload": {
371
+ "psr-4": {
372
+ "DeepCopy\\": "src/DeepCopy/"
373
+ }
374
+ },
375
+ "notification-url": "https://packagist.org/downloads/",
376
+ "license": [
377
+ "MIT"
378
+ ],
379
+ "description": "Create deep copies (clones) of your objects",
380
+ "homepage": "https://github.com/myclabs/DeepCopy",
381
+ "keywords": [
382
+ "clone",
383
+ "copy",
384
+ "duplicate",
385
+ "object",
386
+ "object graph"
387
+ ],
388
+ "time": "2017-04-12T18:52:22+00:00"
389
+ },
390
+ {
391
+ "name": "phpcompatibility/php-compatibility",
392
+ "version": "9.1.1",
393
+ "source": {
394
+ "type": "git",
395
+ "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
396
+ "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c"
397
+ },
398
+ "dist": {
399
+ "type": "zip",
400
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/2b63c5d284ab8857f7b1d5c240ddb507a6b2293c",
401
+ "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c",
402
+ "shasum": ""
403
+ },
404
+ "require": {
405
+ "php": ">=5.3",
406
+ "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
407
+ },
408
+ "conflict": {
409
+ "squizlabs/php_codesniffer": "2.6.2"
410
+ },
411
+ "require-dev": {
412
+ "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
413
+ },
414
+ "suggest": {
415
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
416
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
417
+ },
418
+ "type": "phpcodesniffer-standard",
419
+ "notification-url": "https://packagist.org/downloads/",
420
+ "license": [
421
+ "LGPL-3.0-or-later"
422
+ ],
423
+ "authors": [
424
+ {
425
+ "name": "Contributors",
426
+ "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
427
+ },
428
+ {
429
+ "name": "Wim Godden",
430
+ "homepage": "https://github.com/wimg",
431
+ "role": "lead"
432
+ },
433
+ {
434
+ "name": "Juliette Reinders Folmer",
435
+ "homepage": "https://github.com/jrfnl",
436
+ "role": "lead"
437
+ }
438
+ ],
439
+ "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
440
+ "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
441
+ "keywords": [
442
+ "compatibility",
443
+ "phpcs",
444
+ "standards"
445
+ ],
446
+ "time": "2018-12-30T23:16:27+00:00"
447
+ },
448
+ {
449
+ "name": "phpcompatibility/phpcompatibility-paragonie",
450
+ "version": "1.0.1",
451
+ "source": {
452
+ "type": "git",
453
+ "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
454
+ "reference": "9160de79fcd683b5c99e9c4133728d91529753ea"
455
+ },
456
+ "dist": {
457
+ "type": "zip",
458
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/9160de79fcd683b5c99e9c4133728d91529753ea",
459
+ "reference": "9160de79fcd683b5c99e9c4133728d91529753ea",
460
+ "shasum": ""
461
+ },
462
+ "require": {
463
+ "phpcompatibility/php-compatibility": "^9.0"
464
+ },
465
+ "require-dev": {
466
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4"
467
+ },
468
+ "suggest": {
469
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
470
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
471
+ },
472
+ "type": "phpcodesniffer-standard",
473
+ "notification-url": "https://packagist.org/downloads/",
474
+ "license": [
475
+ "LGPL-3.0-or-later"
476
+ ],
477
+ "authors": [
478
+ {
479
+ "name": "Wim Godden",
480
+ "role": "lead"
481
+ },
482
+ {
483
+ "name": "Juliette Reinders Folmer",
484
+ "role": "lead"
485
+ }
486
+ ],
487
+ "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
488
+ "homepage": "http://phpcompatibility.com/",
489
+ "keywords": [
490
+ "compatibility",
491
+ "paragonie",
492
+ "phpcs",
493
+ "polyfill",
494
+ "standards"
495
+ ],
496
+ "time": "2018-12-16T19:10:44+00:00"
497
+ },
498
+ {
499
+ "name": "phpcompatibility/phpcompatibility-wp",
500
+ "version": "2.0.0",
501
+ "source": {
502
+ "type": "git",
503
+ "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
504
+ "reference": "cb303f0067cd5b366a41d4fb0e254fb40ff02efd"
505
+ },
506
+ "dist": {
507
+ "type": "zip",
508
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/cb303f0067cd5b366a41d4fb0e254fb40ff02efd",
509
+ "reference": "cb303f0067cd5b366a41d4fb0e254fb40ff02efd",
510
+ "shasum": ""
511
+ },
512
+ "require": {
513
+ "phpcompatibility/php-compatibility": "^9.0",
514
+ "phpcompatibility/phpcompatibility-paragonie": "^1.0"
515
+ },
516
+ "require-dev": {
517
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3"
518
+ },
519
+ "suggest": {
520
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
521
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
522
+ },
523
+ "type": "phpcodesniffer-standard",
524
+ "notification-url": "https://packagist.org/downloads/",
525
+ "license": [
526
+ "LGPL-3.0-or-later"
527
+ ],
528
+ "authors": [
529
+ {
530
+ "name": "Wim Godden",
531
+ "role": "lead"
532
+ },
533
+ {
534
+ "name": "Juliette Reinders Folmer",
535
+ "role": "lead"
536
+ }
537
+ ],
538
+ "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
539
+ "homepage": "http://phpcompatibility.com/",
540
+ "keywords": [
541
+ "compatibility",
542
+ "phpcs",
543
+ "standards",
544
+ "wordpress"
545
+ ],
546
+ "time": "2018-10-07T18:31:37+00:00"
547
+ },
548
+ {
549
+ "name": "phpdocumentor/reflection-common",
550
+ "version": "1.0.1",
551
+ "source": {
552
+ "type": "git",
553
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
554
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
555
+ },
556
+ "dist": {
557
+ "type": "zip",
558
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
559
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
560
+ "shasum": ""
561
+ },
562
+ "require": {
563
+ "php": ">=5.5"
564
+ },
565
+ "require-dev": {
566
+ "phpunit/phpunit": "^4.6"
567
+ },
568
+ "type": "library",
569
+ "extra": {
570
+ "branch-alias": {
571
+ "dev-master": "1.0.x-dev"
572
+ }
573
+ },
574
+ "autoload": {
575
+ "psr-4": {
576
+ "phpDocumentor\\Reflection\\": [
577
+ "src"
578
+ ]
579
+ }
580
+ },
581
+ "notification-url": "https://packagist.org/downloads/",
582
+ "license": [
583
+ "MIT"
584
+ ],
585
+ "authors": [
586
+ {
587
+ "name": "Jaap van Otterdijk",
588
+ "email": "opensource@ijaap.nl"
589
+ }
590
+ ],
591
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
592
+ "homepage": "http://www.phpdoc.org",
593
+ "keywords": [
594
+ "FQSEN",
595
+ "phpDocumentor",
596
+ "phpdoc",
597
+ "reflection",
598
+ "static analysis"
599
+ ],
600
+ "time": "2017-09-11T18:02:19+00:00"
601
+ },
602
+ {
603
+ "name": "phpdocumentor/reflection-docblock",
604
+ "version": "3.3.2",
605
+ "source": {
606
+ "type": "git",
607
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
608
+ "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
609
+ },
610
+ "dist": {
611
+ "type": "zip",
612
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
613
+ "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
614
+ "shasum": ""
615
+ },
616
+ "require": {
617
+ "php": "^5.6 || ^7.0",
618
+ "phpdocumentor/reflection-common": "^1.0.0",
619
+ "phpdocumentor/type-resolver": "^0.4.0",
620
+ "webmozart/assert": "^1.0"
621
+ },
622
+ "require-dev": {
623
+ "mockery/mockery": "^0.9.4",
624
+ "phpunit/phpunit": "^4.4"
625
+ },
626
+ "type": "library",
627
+ "autoload": {
628
+ "psr-4": {
629
+ "phpDocumentor\\Reflection\\": [
630
+ "src/"
631
+ ]
632
+ }
633
+ },
634
+ "notification-url": "https://packagist.org/downloads/",
635
+ "license": [
636
+ "MIT"
637
+ ],
638
+ "authors": [
639
+ {
640
+ "name": "Mike van Riel",
641
+ "email": "me@mikevanriel.com"
642
+ }
643
+ ],
644
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
645
+ "time": "2017-11-10T14:09:06+00:00"
646
+ },
647
+ {
648
+ "name": "phpdocumentor/type-resolver",
649
+ "version": "0.4.0",
650
+ "source": {
651
+ "type": "git",
652
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
653
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
654
+ },
655
+ "dist": {
656
+ "type": "zip",
657
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
658
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
659
+ "shasum": ""
660
+ },
661
+ "require": {
662
+ "php": "^5.5 || ^7.0",
663
+ "phpdocumentor/reflection-common": "^1.0"
664
+ },
665
+ "require-dev": {
666
+ "mockery/mockery": "^0.9.4",
667
+ "phpunit/phpunit": "^5.2||^4.8.24"
668
+ },
669
+ "type": "library",
670
+ "extra": {
671
+ "branch-alias": {
672
+ "dev-master": "1.0.x-dev"
673
+ }
674
+ },
675
+ "autoload": {
676
+ "psr-4": {
677
+ "phpDocumentor\\Reflection\\": [
678
+ "src/"
679
+ ]
680
+ }
681
+ },
682
+ "notification-url": "https://packagist.org/downloads/",
683
+ "license": [
684
+ "MIT"
685
+ ],
686
+ "authors": [
687
+ {
688
+ "name": "Mike van Riel",
689
+ "email": "me@mikevanriel.com"
690
+ }
691
+ ],
692
+ "time": "2017-07-14T14:27:02+00:00"
693
+ },
694
+ {
695
+ "name": "phpspec/prophecy",
696
+ "version": "1.8.0",
697
+ "source": {
698
+ "type": "git",
699
+ "url": "https://github.com/phpspec/prophecy.git",
700
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
701
+ },
702
+ "dist": {
703
+ "type": "zip",
704
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
705
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
706
+ "shasum": ""
707
+ },
708
+ "require": {
709
+ "doctrine/instantiator": "^1.0.2",
710
+ "php": "^5.3|^7.0",
711
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
712
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
713
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
714
+ },
715
+ "require-dev": {
716
+ "phpspec/phpspec": "^2.5|^3.2",
717
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
718
+ },
719
+ "type": "library",
720
+ "extra": {
721
+ "branch-alias": {
722
+ "dev-master": "1.8.x-dev"
723
+ }
724
+ },
725
+ "autoload": {
726
+ "psr-0": {
727
+ "Prophecy\\": "src/"
728
+ }
729
+ },
730
+ "notification-url": "https://packagist.org/downloads/",
731
+ "license": [
732
+ "MIT"
733
+ ],
734
+ "authors": [
735
+ {
736
+ "name": "Konstantin Kudryashov",
737
+ "email": "ever.zet@gmail.com",
738
+ "homepage": "http://everzet.com"
739
+ },
740
+ {
741
+ "name": "Marcello Duarte",
742
+ "email": "marcello.duarte@gmail.com"
743
+ }
744
+ ],
745
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
746
+ "homepage": "https://github.com/phpspec/prophecy",
747
+ "keywords": [
748
+ "Double",
749
+ "Dummy",
750
+ "fake",
751
+ "mock",
752
+ "spy",
753
+ "stub"
754
+ ],
755
+ "time": "2018-08-05T17:53:17+00:00"
756
+ },
757
+ {
758
+ "name": "phpunit/php-code-coverage",
759
+ "version": "4.0.8",
760
+ "source": {
761
+ "type": "git",
762
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
763
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
764
+ },
765
+ "dist": {
766
+ "type": "zip",
767
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
768
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
769
+ "shasum": ""
770
+ },
771
+ "require": {
772
+ "ext-dom": "*",
773
+ "ext-xmlwriter": "*",
774
+ "php": "^5.6 || ^7.0",
775
+ "phpunit/php-file-iterator": "^1.3",
776
+ "phpunit/php-text-template": "^1.2",
777
+ "phpunit/php-token-stream": "^1.4.2 || ^2.0",
778
+ "sebastian/code-unit-reverse-lookup": "^1.0",
779
+ "sebastian/environment": "^1.3.2 || ^2.0",
780
+ "sebastian/version": "^1.0 || ^2.0"
781
+ },
782
+ "require-dev": {
783
+ "ext-xdebug": "^2.1.4",
784
+ "phpunit/phpunit": "^5.7"
785
+ },
786
+ "suggest": {
787
+ "ext-xdebug": "^2.5.1"
788
+ },
789
+ "type": "library",
790
+ "extra": {
791
+ "branch-alias": {
792
+ "dev-master": "4.0.x-dev"
793
+ }
794
+ },
795
+ "autoload": {
796
+ "classmap": [
797
+ "src/"
798
+ ]
799
+ },
800
+ "notification-url": "https://packagist.org/downloads/",
801
+ "license": [
802
+ "BSD-3-Clause"
803
+ ],
804
+ "authors": [
805
+ {
806
+ "name": "Sebastian Bergmann",
807
+ "email": "sb@sebastian-bergmann.de",
808
+ "role": "lead"
809
+ }
810
+ ],
811
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
812
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
813
+ "keywords": [
814
+ "coverage",
815
+ "testing",
816
+ "xunit"
817
+ ],
818
+ "time": "2017-04-02T07:44:40+00:00"
819
+ },
820
+ {
821
+ "name": "phpunit/php-file-iterator",
822
+ "version": "1.4.5",
823
+ "source": {
824
+ "type": "git",
825
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
826
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
827
+ },
828
+ "dist": {
829
+ "type": "zip",
830
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
831
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
832
+ "shasum": ""
833
+ },
834
+ "require": {
835
+ "php": ">=5.3.3"
836
+ },
837
+ "type": "library",
838
+ "extra": {
839
+ "branch-alias": {
840
+ "dev-master": "1.4.x-dev"
841
+ }
842
+ },
843
+ "autoload": {
844
+ "classmap": [
845
+ "src/"
846
+ ]
847
+ },
848
+ "notification-url": "https://packagist.org/downloads/",
849
+ "license": [
850
+ "BSD-3-Clause"
851
+ ],
852
+ "authors": [
853
+ {
854
+ "name": "Sebastian Bergmann",
855
+ "email": "sb@sebastian-bergmann.de",
856
+ "role": "lead"
857
+ }
858
+ ],
859
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
860
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
861
+ "keywords": [
862
+ "filesystem",
863
+ "iterator"
864
+ ],
865
+ "time": "2017-11-27T13:52:08+00:00"
866
+ },
867
+ {
868
+ "name": "phpunit/php-text-template",
869
+ "version": "1.2.1",
870
+ "source": {
871
+ "type": "git",
872
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
873
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
874
+ },
875
+ "dist": {
876
+ "type": "zip",
877
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
878
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
879
+ "shasum": ""
880
+ },
881
+ "require": {
882
+ "php": ">=5.3.3"
883
+ },
884
+ "type": "library",
885
+ "autoload": {
886
+ "classmap": [
887
+ "src/"
888
+ ]
889
+ },
890
+ "notification-url": "https://packagist.org/downloads/",
891
+ "license": [
892
+ "BSD-3-Clause"
893
+ ],
894
+ "authors": [
895
+ {
896
+ "name": "Sebastian Bergmann",
897
+ "email": "sebastian@phpunit.de",
898
+ "role": "lead"
899
+ }
900
+ ],
901
+ "description": "Simple template engine.",
902
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
903
+ "keywords": [
904
+ "template"
905
+ ],
906
+ "time": "2015-06-21T13:50:34+00:00"
907
+ },
908
+ {
909
+ "name": "phpunit/php-timer",
910
+ "version": "1.0.9",
911
+ "source": {
912
+ "type": "git",
913
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
914
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
915
+ },
916
+ "dist": {
917
+ "type": "zip",
918
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
919
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
920
+ "shasum": ""
921
+ },
922
+ "require": {
923
+ "php": "^5.3.3 || ^7.0"
924
+ },
925
+ "require-dev": {
926
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
927
+ },
928
+ "type": "library",
929
+ "extra": {
930
+ "branch-alias": {
931
+ "dev-master": "1.0-dev"
932
+ }
933
+ },
934
+ "autoload": {
935
+ "classmap": [
936
+ "src/"
937
+ ]
938
+ },
939
+ "notification-url": "https://packagist.org/downloads/",
940
+ "license": [
941
+ "BSD-3-Clause"
942
+ ],
943
+ "authors": [
944
+ {
945
+ "name": "Sebastian Bergmann",
946
+ "email": "sb@sebastian-bergmann.de",
947
+ "role": "lead"
948
+ }
949
+ ],
950
+ "description": "Utility class for timing",
951
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
952
+ "keywords": [
953
+ "timer"
954
+ ],
955
+ "time": "2017-02-26T11:10:40+00:00"
956
+ },
957
+ {
958
+ "name": "phpunit/php-token-stream",
959
+ "version": "1.4.12",
960
+ "source": {
961
+ "type": "git",
962
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
963
+ "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
964
+ },
965
+ "dist": {
966
+ "type": "zip",
967
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
968
+ "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
969
+ "shasum": ""
970
+ },
971
+ "require": {
972
+ "ext-tokenizer": "*",
973
+ "php": ">=5.3.3"
974
+ },
975
+ "require-dev": {
976
+ "phpunit/phpunit": "~4.2"
977
+ },
978
+ "type": "library",
979
+ "extra": {
980
+ "branch-alias": {
981
+ "dev-master": "1.4-dev"
982
+ }
983
+ },
984
+ "autoload": {
985
+ "classmap": [
986
+ "src/"
987
+ ]
988
+ },
989
+ "notification-url": "https://packagist.org/downloads/",
990
+ "license": [
991
+ "BSD-3-Clause"
992
+ ],
993
+ "authors": [
994
+ {
995
+ "name": "Sebastian Bergmann",
996
+ "email": "sebastian@phpunit.de"
997
+ }
998
+ ],
999
+ "description": "Wrapper around PHP's tokenizer extension.",
1000
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1001
+ "keywords": [
1002
+ "tokenizer"
1003
+ ],
1004
+ "time": "2017-12-04T08:55:13+00:00"
1005
+ },
1006
+ {
1007
+ "name": "phpunit/phpunit",
1008
+ "version": "5.7.27",
1009
+ "source": {
1010
+ "type": "git",
1011
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1012
+ "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
1013
+ },
1014
+ "dist": {
1015
+ "type": "zip",
1016
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
1017
+ "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
1018
+ "shasum": ""
1019
+ },
1020
+ "require": {
1021
+ "ext-dom": "*",
1022
+ "ext-json": "*",
1023
+ "ext-libxml": "*",
1024
+ "ext-mbstring": "*",
1025
+ "ext-xml": "*",
1026
+ "myclabs/deep-copy": "~1.3",
1027
+ "php": "^5.6 || ^7.0",
1028
+ "phpspec/prophecy": "^1.6.2",
1029
+ "phpunit/php-code-coverage": "^4.0.4",
1030
+ "phpunit/php-file-iterator": "~1.4",
1031
+ "phpunit/php-text-template": "~1.2",
1032
+ "phpunit/php-timer": "^1.0.6",
1033
+ "phpunit/phpunit-mock-objects": "^3.2",
1034
+ "sebastian/comparator": "^1.2.4",
1035
+ "sebastian/diff": "^1.4.3",
1036
+ "sebastian/environment": "^1.3.4 || ^2.0",
1037
+ "sebastian/exporter": "~2.0",
1038
+ "sebastian/global-state": "^1.1",
1039
+ "sebastian/object-enumerator": "~2.0",
1040
+ "sebastian/resource-operations": "~1.0",
1041
+ "sebastian/version": "^1.0.6|^2.0.1",
1042
+ "symfony/yaml": "~2.1|~3.0|~4.0"
1043
+ },
1044
+ "conflict": {
1045
+ "phpdocumentor/reflection-docblock": "3.0.2"
1046
+ },
1047
+ "require-dev": {
1048
+ "ext-pdo": "*"
1049
+ },
1050
+ "suggest": {
1051
+ "ext-xdebug": "*",
1052
+ "phpunit/php-invoker": "~1.1"
1053
+ },
1054
+ "bin": [
1055
+ "phpunit"
1056
+ ],
1057
+ "type": "library",
1058
+ "extra": {
1059
+ "branch-alias": {
1060
+ "dev-master": "5.7.x-dev"
1061
+ }
1062
+ },
1063
+ "autoload": {
1064
+ "classmap": [
1065
+ "src/"
1066
+ ]
1067
+ },
1068
+ "notification-url": "https://packagist.org/downloads/",
1069
+ "license": [
1070
+ "BSD-3-Clause"
1071
+ ],
1072
+ "authors": [
1073
+ {
1074
+ "name": "Sebastian Bergmann",
1075
+ "email": "sebastian@phpunit.de",
1076
+ "role": "lead"
1077
+ }
1078
+ ],
1079
+ "description": "The PHP Unit Testing framework.",
1080
+ "homepage": "https://phpunit.de/",
1081
+ "keywords": [
1082
+ "phpunit",
1083
+ "testing",
1084
+ "xunit"
1085
+ ],
1086
+ "time": "2018-02-01T05:50:59+00:00"
1087
+ },
1088
+ {
1089
+ "name": "phpunit/phpunit-mock-objects",
1090
+ "version": "3.4.4",
1091
+ "source": {
1092
+ "type": "git",
1093
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1094
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
1095
+ },
1096
+ "dist": {
1097
+ "type": "zip",
1098
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
1099
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
1100
+ "shasum": ""
1101
+ },
1102
+ "require": {
1103
+ "doctrine/instantiator": "^1.0.2",
1104
+ "php": "^5.6 || ^7.0",
1105
+ "phpunit/php-text-template": "^1.2",
1106
+ "sebastian/exporter": "^1.2 || ^2.0"
1107
+ },
1108
+ "conflict": {
1109
+ "phpunit/phpunit": "<5.4.0"
1110
+ },
1111
+ "require-dev": {
1112
+ "phpunit/phpunit": "^5.4"
1113
+ },
1114
+ "suggest": {
1115
+ "ext-soap": "*"
1116
+ },
1117
+ "type": "library",
1118
+ "extra": {
1119
+ "branch-alias": {
1120
+ "dev-master": "3.2.x-dev"
1121
+ }
1122
+ },
1123
+ "autoload": {
1124
+ "classmap": [
1125
+ "src/"
1126
+ ]
1127
+ },
1128
+ "notification-url": "https://packagist.org/downloads/",
1129
+ "license": [
1130
+ "BSD-3-Clause"
1131
+ ],
1132
+ "authors": [
1133
+ {
1134
+ "name": "Sebastian Bergmann",
1135
+ "email": "sb@sebastian-bergmann.de",
1136
+ "role": "lead"
1137
+ }
1138
+ ],
1139
+ "description": "Mock Object library for PHPUnit",
1140
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1141
+ "keywords": [
1142
+ "mock",
1143
+ "xunit"
1144
+ ],
1145
+ "time": "2017-06-30T09:13:00+00:00"
1146
+ },
1147
+ {
1148
+ "name": "sebastian/code-unit-reverse-lookup",
1149
+ "version": "1.0.1",
1150
+ "source": {
1151
+ "type": "git",
1152
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1153
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1154
+ },
1155
+ "dist": {
1156
+ "type": "zip",
1157
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1158
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1159
+ "shasum": ""
1160
+ },
1161
+ "require": {
1162
+ "php": "^5.6 || ^7.0"
1163
+ },
1164
+ "require-dev": {
1165
+ "phpunit/phpunit": "^5.7 || ^6.0"
1166
+ },
1167
+ "type": "library",
1168
+ "extra": {
1169
+ "branch-alias": {
1170
+ "dev-master": "1.0.x-dev"
1171
+ }
1172
+ },
1173
+ "autoload": {
1174
+ "classmap": [
1175
+ "src/"
1176
+ ]
1177
+ },
1178
+ "notification-url": "https://packagist.org/downloads/",
1179
+ "license": [
1180
+ "BSD-3-Clause"
1181
+ ],
1182
+ "authors": [
1183
+ {
1184
+ "name": "Sebastian Bergmann",
1185
+ "email": "sebastian@phpunit.de"
1186
+ }
1187
+ ],
1188
+ "description": "Looks up which function or method a line of code belongs to",
1189
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1190
+ "time": "2017-03-04T06:30:41+00:00"
1191
+ },
1192
+ {
1193
+ "name": "sebastian/comparator",
1194
+ "version": "1.2.4",
1195
+ "source": {
1196
+ "type": "git",
1197
+ "url": "https://github.com/sebastianbergmann/comparator.git",
1198
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
1199
+ },
1200
+ "dist": {
1201
+ "type": "zip",
1202
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1203
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1204
+ "shasum": ""
1205
+ },
1206
+ "require": {
1207
+ "php": ">=5.3.3",
1208
+ "sebastian/diff": "~1.2",
1209
+ "sebastian/exporter": "~1.2 || ~2.0"
1210
+ },
1211
+ "require-dev": {
1212
+ "phpunit/phpunit": "~4.4"
1213
+ },
1214
+ "type": "library",
1215
+ "extra": {
1216
+ "branch-alias": {
1217
+ "dev-master": "1.2.x-dev"
1218
+ }
1219
+ },
1220
+ "autoload": {
1221
+ "classmap": [
1222
+ "src/"
1223
+ ]
1224
+ },
1225
+ "notification-url": "https://packagist.org/downloads/",
1226
+ "license": [
1227
+ "BSD-3-Clause"
1228
+ ],
1229
+ "authors": [
1230
+ {
1231
+ "name": "Jeff Welch",
1232
+ "email": "whatthejeff@gmail.com"
1233
+ },
1234
+ {
1235
+ "name": "Volker Dusch",
1236
+ "email": "github@wallbash.com"
1237
+ },
1238
+ {
1239
+ "name": "Bernhard Schussek",
1240
+ "email": "bschussek@2bepublished.at"
1241
+ },
1242
+ {
1243
+ "name": "Sebastian Bergmann",
1244
+ "email": "sebastian@phpunit.de"
1245
+ }
1246
+ ],
1247
+ "description": "Provides the functionality to compare PHP values for equality",
1248
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
1249
+ "keywords": [
1250
+ "comparator",
1251
+ "compare",
1252
+ "equality"
1253
+ ],
1254
+ "time": "2017-01-29T09:50:25+00:00"
1255
+ },
1256
+ {
1257
+ "name": "sebastian/diff",
1258
+ "version": "1.4.3",
1259
+ "source": {
1260
+ "type": "git",
1261
+ "url": "https://github.com/sebastianbergmann/diff.git",
1262
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
1263
+ },
1264
+ "dist": {
1265
+ "type": "zip",
1266
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1267
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1268
+ "shasum": ""
1269
+ },
1270
+ "require": {
1271
+ "php": "^5.3.3 || ^7.0"
1272
+ },
1273
+ "require-dev": {
1274
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1275
+ },
1276
+ "type": "library",
1277
+ "extra": {
1278
+ "branch-alias": {
1279
+ "dev-master": "1.4-dev"
1280
+ }
1281
+ },
1282
+ "autoload": {
1283
+ "classmap": [
1284
+ "src/"
1285
+ ]
1286
+ },
1287
+ "notification-url": "https://packagist.org/downloads/",
1288
+ "license": [
1289
+ "BSD-3-Clause"
1290
+ ],
1291
+ "authors": [
1292
+ {
1293
+ "name": "Kore Nordmann",
1294
+ "email": "mail@kore-nordmann.de"
1295
+ },
1296
+ {
1297
+ "name": "Sebastian Bergmann",
1298
+ "email": "sebastian@phpunit.de"
1299
+ }
1300
+ ],
1301
+ "description": "Diff implementation",
1302
+ "homepage": "https://github.com/sebastianbergmann/diff",
1303
+ "keywords": [
1304
+ "diff"
1305
+ ],
1306
+ "time": "2017-05-22T07:24:03+00:00"
1307
+ },
1308
+ {
1309
+ "name": "sebastian/environment",
1310
+ "version": "2.0.0",
1311
+ "source": {
1312
+ "type": "git",
1313
+ "url": "https://github.com/sebastianbergmann/environment.git",
1314
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
1315
+ },
1316
+ "dist": {
1317
+ "type": "zip",
1318
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1319
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1320
+ "shasum": ""
1321
+ },
1322
+ "require": {
1323
+ "php": "^5.6 || ^7.0"
1324
+ },
1325
+ "require-dev": {
1326
+ "phpunit/phpunit": "^5.0"
1327
+ },
1328
+ "type": "library",
1329
+ "extra": {
1330
+ "branch-alias": {
1331
+ "dev-master": "2.0.x-dev"
1332
+ }
1333
+ },
1334
+ "autoload": {
1335
+ "classmap": [
1336
+ "src/"
1337
+ ]
1338
+ },
1339
+ "notification-url": "https://packagist.org/downloads/",
1340
+ "license": [
1341
+ "BSD-3-Clause"
1342
+ ],
1343
+ "authors": [
1344
+ {
1345
+ "name": "Sebastian Bergmann",
1346
+ "email": "sebastian@phpunit.de"
1347
+ }
1348
+ ],
1349
+ "description": "Provides functionality to handle HHVM/PHP environments",
1350
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
1351
+ "keywords": [
1352
+ "Xdebug",
1353
+ "environment",
1354
+ "hhvm"
1355
+ ],
1356
+ "time": "2016-11-26T07:53:53+00:00"
1357
+ },
1358
+ {
1359
+ "name": "sebastian/exporter",
1360
+ "version": "2.0.0",
1361
+ "source": {
1362
+ "type": "git",
1363
+ "url": "https://github.com/sebastianbergmann/exporter.git",
1364
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
1365
+ },
1366
+ "dist": {
1367
+ "type": "zip",
1368
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1369
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1370
+ "shasum": ""
1371
+ },
1372
+ "require": {
1373
+ "php": ">=5.3.3",
1374
+ "sebastian/recursion-context": "~2.0"
1375
+ },
1376
+ "require-dev": {
1377
+ "ext-mbstring": "*",
1378
+ "phpunit/phpunit": "~4.4"
1379
+ },
1380
+ "type": "library",
1381
+ "extra": {
1382
+ "branch-alias": {
1383
+ "dev-master": "2.0.x-dev"
1384
+ }
1385
+ },
1386
+ "autoload": {
1387
+ "classmap": [
1388
+ "src/"
1389
+ ]
1390
+ },
1391
+ "notification-url": "https://packagist.org/downloads/",
1392
+ "license": [
1393
+ "BSD-3-Clause"
1394
+ ],
1395
+ "authors": [
1396
+ {
1397
+ "name": "Jeff Welch",
1398
+ "email": "whatthejeff@gmail.com"
1399
+ },
1400
+ {
1401
+ "name": "Volker Dusch",
1402
+ "email": "github@wallbash.com"
1403
+ },
1404
+ {
1405
+ "name": "Bernhard Schussek",
1406
+ "email": "bschussek@2bepublished.at"
1407
+ },
1408
+ {
1409
+ "name": "Sebastian Bergmann",
1410
+ "email": "sebastian@phpunit.de"
1411
+ },
1412
+ {
1413
+ "name": "Adam Harvey",
1414
+ "email": "aharvey@php.net"
1415
+ }
1416
+ ],
1417
+ "description": "Provides the functionality to export PHP variables for visualization",
1418
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
1419
+ "keywords": [
1420
+ "export",
1421
+ "exporter"
1422
+ ],
1423
+ "time": "2016-11-19T08:54:04+00:00"
1424
+ },
1425
+ {
1426
+ "name": "sebastian/global-state",
1427
+ "version": "1.1.1",
1428
+ "source": {
1429
+ "type": "git",
1430
+ "url": "https://github.com/sebastianbergmann/global-state.git",
1431
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
1432
+ },
1433
+ "dist": {
1434
+ "type": "zip",
1435
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
1436
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
1437
+ "shasum": ""
1438
+ },
1439
+ "require": {
1440
+ "php": ">=5.3.3"
1441
+ },
1442
+ "require-dev": {
1443
+ "phpunit/phpunit": "~4.2"
1444
+ },
1445
+ "suggest": {
1446
+ "ext-uopz": "*"
1447
+ },
1448
+ "type": "library",
1449
+ "extra": {
1450
+ "branch-alias": {
1451
+ "dev-master": "1.0-dev"
1452
+ }
1453
+ },
1454
+ "autoload": {
1455
+ "classmap": [
1456
+ "src/"
1457
+ ]
1458
+ },
1459
+ "notification-url": "https://packagist.org/downloads/",
1460
+ "license": [
1461
+ "BSD-3-Clause"
1462
+ ],
1463
+ "authors": [
1464
+ {
1465
+ "name": "Sebastian Bergmann",
1466
+ "email": "sebastian@phpunit.de"
1467
+ }
1468
+ ],
1469
+ "description": "Snapshotting of global state",
1470
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
1471
+ "keywords": [
1472
+ "global state"
1473
+ ],
1474
+ "time": "2015-10-12T03:26:01+00:00"
1475
+ },
1476
+ {
1477
+ "name": "sebastian/object-enumerator",
1478
+ "version": "2.0.1",
1479
+ "source": {
1480
+ "type": "git",
1481
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1482
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
1483
+ },
1484
+ "dist": {
1485
+ "type": "zip",
1486
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
1487
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
1488
+ "shasum": ""
1489
+ },
1490
+ "require": {
1491
+ "php": ">=5.6",
1492
+ "sebastian/recursion-context": "~2.0"
1493
+ },
1494
+ "require-dev": {
1495
+ "phpunit/phpunit": "~5"
1496
+ },
1497
+ "type": "library",
1498
+ "extra": {
1499
+ "branch-alias": {
1500
+ "dev-master": "2.0.x-dev"
1501
+ }
1502
+ },
1503
+ "autoload": {
1504
+ "classmap": [
1505
+ "src/"
1506
+ ]
1507
+ },
1508
+ "notification-url": "https://packagist.org/downloads/",
1509
+ "license": [
1510
+ "BSD-3-Clause"
1511
+ ],
1512
+ "authors": [
1513
+ {
1514
+ "name": "Sebastian Bergmann",
1515
+ "email": "sebastian@phpunit.de"
1516
+ }
1517
+ ],
1518
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1519
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1520
+ "time": "2017-02-18T15:18:39+00:00"
1521
+ },
1522
+ {
1523
+ "name": "sebastian/recursion-context",
1524
+ "version": "2.0.0",
1525
+ "source": {
1526
+ "type": "git",
1527
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
1528
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
1529
+ },
1530
+ "dist": {
1531
+ "type": "zip",
1532
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1533
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1534
+ "shasum": ""
1535
+ },
1536
+ "require": {
1537
+ "php": ">=5.3.3"
1538
+ },
1539
+ "require-dev": {
1540
+ "phpunit/phpunit": "~4.4"
1541
+ },
1542
+ "type": "library",
1543
+ "extra": {
1544
+ "branch-alias": {
1545
+ "dev-master": "2.0.x-dev"
1546
+ }
1547
+ },
1548
+ "autoload": {
1549
+ "classmap": [
1550
+ "src/"
1551
+ ]
1552
+ },
1553
+ "notification-url": "https://packagist.org/downloads/",
1554
+ "license": [
1555
+ "BSD-3-Clause"
1556
+ ],
1557
+ "authors": [
1558
+ {
1559
+ "name": "Jeff Welch",
1560
+ "email": "whatthejeff@gmail.com"
1561
+ },
1562
+ {
1563
+ "name": "Sebastian Bergmann",
1564
+ "email": "sebastian@phpunit.de"
1565
+ },
1566
+ {
1567
+ "name": "Adam Harvey",
1568
+ "email": "aharvey@php.net"
1569
+ }
1570
+ ],
1571
+ "description": "Provides functionality to recursively process PHP variables",
1572
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1573
+ "time": "2016-11-19T07:33:16+00:00"
1574
+ },
1575
+ {
1576
+ "name": "sebastian/resource-operations",
1577
+ "version": "1.0.0",
1578
+ "source": {
1579
+ "type": "git",
1580
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
1581
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1582
+ },
1583
+ "dist": {
1584
+ "type": "zip",
1585
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1586
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1587
+ "shasum": ""
1588
+ },
1589
+ "require": {
1590
+ "php": ">=5.6.0"
1591
+ },
1592
+ "type": "library",
1593
+ "extra": {
1594
+ "branch-alias": {
1595
+ "dev-master": "1.0.x-dev"
1596
+ }
1597
+ },
1598
+ "autoload": {
1599
+ "classmap": [
1600
+ "src/"
1601
+ ]
1602
+ },
1603
+ "notification-url": "https://packagist.org/downloads/",
1604
+ "license": [
1605
+ "BSD-3-Clause"
1606
+ ],
1607
+ "authors": [
1608
+ {
1609
+ "name": "Sebastian Bergmann",
1610
+ "email": "sebastian@phpunit.de"
1611
+ }
1612
+ ],
1613
+ "description": "Provides a list of PHP built-in functions that operate on resources",
1614
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1615
+ "time": "2015-07-28T20:34:47+00:00"
1616
+ },
1617
+ {
1618
+ "name": "sebastian/version",
1619
+ "version": "2.0.1",
1620
+ "source": {
1621
+ "type": "git",
1622
+ "url": "https://github.com/sebastianbergmann/version.git",
1623
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1624
+ },
1625
+ "dist": {
1626
+ "type": "zip",
1627
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1628
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1629
+ "shasum": ""
1630
+ },
1631
+ "require": {
1632
+ "php": ">=5.6"
1633
+ },
1634
+ "type": "library",
1635
+ "extra": {
1636
+ "branch-alias": {
1637
+ "dev-master": "2.0.x-dev"
1638
+ }
1639
+ },
1640
+ "autoload": {
1641
+ "classmap": [
1642
+ "src/"
1643
+ ]
1644
+ },
1645
+ "notification-url": "https://packagist.org/downloads/",
1646
+ "license": [
1647
+ "BSD-3-Clause"
1648
+ ],
1649
+ "authors": [
1650
+ {
1651
+ "name": "Sebastian Bergmann",
1652
+ "email": "sebastian@phpunit.de",
1653
+ "role": "lead"
1654
+ }
1655
+ ],
1656
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1657
+ "homepage": "https://github.com/sebastianbergmann/version",
1658
+ "time": "2016-10-03T07:35:21+00:00"
1659
+ },
1660
  {
1661
  "name": "squizlabs/php_codesniffer",
1662
+ "version": "3.4.0",
1663
  "source": {
1664
  "type": "git",
1665
  "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
1666
+ "reference": "379deb987e26c7cd103a7b387aea178baec96e48"
1667
  },
1668
  "dist": {
1669
  "type": "zip",
1670
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48",
1671
+ "reference": "379deb987e26c7cd103a7b387aea178baec96e48",
1672
  "shasum": ""
1673
  },
1674
  "require": {
1706
  "phpcs",
1707
  "standards"
1708
  ],
1709
+ "time": "2018-12-19T23:57:18+00:00"
1710
+ },
1711
+ {
1712
+ "name": "symfony/polyfill-ctype",
1713
+ "version": "v1.10.0",
1714
+ "source": {
1715
+ "type": "git",
1716
+ "url": "https://github.com/symfony/polyfill-ctype.git",
1717
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
1718
+ },
1719
+ "dist": {
1720
+ "type": "zip",
1721
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
1722
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
1723
+ "shasum": ""
1724
+ },
1725
+ "require": {
1726
+ "php": ">=5.3.3"
1727
+ },
1728
+ "suggest": {
1729
+ "ext-ctype": "For best performance"
1730
+ },
1731
+ "type": "library",
1732
+ "extra": {
1733
+ "branch-alias": {
1734
+ "dev-master": "1.9-dev"
1735
+ }
1736
+ },
1737
+ "autoload": {
1738
+ "psr-4": {
1739
+ "Symfony\\Polyfill\\Ctype\\": ""
1740
+ },
1741
+ "files": [
1742
+ "bootstrap.php"
1743
+ ]
1744
+ },
1745
+ "notification-url": "https://packagist.org/downloads/",
1746
+ "license": [
1747
+ "MIT"
1748
+ ],
1749
+ "authors": [
1750
+ {
1751
+ "name": "Symfony Community",
1752
+ "homepage": "https://symfony.com/contributors"
1753
+ },
1754
+ {
1755
+ "name": "Gert de Pagter",
1756
+ "email": "backendtea@gmail.com"
1757
+ }
1758
+ ],
1759
+ "description": "Symfony polyfill for ctype functions",
1760
+ "homepage": "https://symfony.com",
1761
+ "keywords": [
1762
+ "compatibility",
1763
+ "ctype",
1764
+ "polyfill",
1765
+ "portable"
1766
+ ],
1767
+ "time": "2018-08-06T14:22:27+00:00"
1768
+ },
1769
+ {
1770
+ "name": "symfony/yaml",
1771
+ "version": "v2.8.49",
1772
+ "source": {
1773
+ "type": "git",
1774
+ "url": "https://github.com/symfony/yaml.git",
1775
+ "reference": "02c1859112aa779d9ab394ae4f3381911d84052b"
1776
+ },
1777
+ "dist": {
1778
+ "type": "zip",
1779
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b",
1780
+ "reference": "02c1859112aa779d9ab394ae4f3381911d84052b",
1781
+ "shasum": ""
1782
+ },
1783
+ "require": {
1784
+ "php": ">=5.3.9",
1785
+ "symfony/polyfill-ctype": "~1.8"
1786
+ },
1787
+ "type": "library",
1788
+ "extra": {
1789
+ "branch-alias": {
1790
+ "dev-master": "2.8-dev"
1791
+ }
1792
+ },
1793
+ "autoload": {
1794
+ "psr-4": {
1795
+ "Symfony\\Component\\Yaml\\": ""
1796
+ },
1797
+ "exclude-from-classmap": [
1798
+ "/Tests/"
1799
+ ]
1800
+ },
1801
+ "notification-url": "https://packagist.org/downloads/",
1802
+ "license": [
1803
+ "MIT"
1804
+ ],
1805
+ "authors": [
1806
+ {
1807
+ "name": "Fabien Potencier",
1808
+ "email": "fabien@symfony.com"
1809
+ },
1810
+ {
1811
+ "name": "Symfony Community",
1812
+ "homepage": "https://symfony.com/contributors"
1813
+ }
1814
+ ],
1815
+ "description": "Symfony Yaml Component",
1816
+ "homepage": "https://symfony.com",
1817
+ "time": "2018-11-11T11:18:13+00:00"
1818
+ },
1819
+ {
1820
+ "name": "webmozart/assert",
1821
+ "version": "1.4.0",
1822
+ "source": {
1823
+ "type": "git",
1824
+ "url": "https://github.com/webmozart/assert.git",
1825
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
1826
+ },
1827
+ "dist": {
1828
+ "type": "zip",
1829
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
1830
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
1831
+ "shasum": ""
1832
+ },
1833
+ "require": {
1834
+ "php": "^5.3.3 || ^7.0",
1835
+ "symfony/polyfill-ctype": "^1.8"
1836
+ },
1837
+ "require-dev": {
1838
+ "phpunit/phpunit": "^4.6",
1839
+ "sebastian/version": "^1.0.1"
1840
+ },
1841
+ "type": "library",
1842
+ "extra": {
1843
+ "branch-alias": {
1844
+ "dev-master": "1.3-dev"
1845
+ }
1846
+ },
1847
+ "autoload": {
1848
+ "psr-4": {
1849
+ "Webmozart\\Assert\\": "src/"
1850
+ }
1851
+ },
1852
+ "notification-url": "https://packagist.org/downloads/",
1853
+ "license": [
1854
+ "MIT"
1855
+ ],
1856
+ "authors": [
1857
+ {
1858
+ "name": "Bernhard Schussek",
1859
+ "email": "bschussek@gmail.com"
1860
+ }
1861
+ ],
1862
+ "description": "Assertions to validate method input/output with nice error messages.",
1863
+ "keywords": [
1864
+ "assert",
1865
+ "check",
1866
+ "validate"
1867
+ ],
1868
+ "time": "2018-12-25T11:19:39+00:00"
1869
+ },
1870
+ {
1871
+ "name": "wp-coding-standards/wpcs",
1872
+ "version": "2.0.0",
1873
+ "source": {
1874
+ "type": "git",
1875
+ "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
1876
+ "reference": "c9eaadaafefce36b3cb7e06eb15305b8c4cae9ce"
1877
+ },
1878
+ "dist": {
1879
+ "type": "zip",
1880
+ "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/c9eaadaafefce36b3cb7e06eb15305b8c4cae9ce",
1881
+ "reference": "c9eaadaafefce36b3cb7e06eb15305b8c4cae9ce",
1882
+ "shasum": ""
1883
+ },
1884
+ "require": {
1885
+ "php": ">=5.4",
1886
+ "squizlabs/php_codesniffer": "^3.3.1"
1887
+ },
1888
+ "require-dev": {
1889
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
1890
+ "phpcompatibility/php-compatibility": "^9.0",
1891
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
1892
+ },
1893
+ "suggest": {
1894
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
1895
+ },
1896
+ "type": "phpcodesniffer-standard",
1897
+ "notification-url": "https://packagist.org/downloads/",
1898
+ "license": [
1899
+ "MIT"
1900
+ ],
1901
+ "authors": [
1902
+ {
1903
+ "name": "Contributors",
1904
+ "homepage": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/graphs/contributors"
1905
+ }
1906
+ ],
1907
+ "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
1908
+ "keywords": [
1909
+ "phpcs",
1910
+ "standards",
1911
+ "wordpress"
1912
+ ],
1913
+ "time": "2019-01-16T10:13:16+00:00"
1914
  }
1915
  ],
1916
  "aliases": [],
1919
  "prefer-stable": false,
1920
  "prefer-lowest": false,
1921
  "platform": {
1922
+ "php": ">=5.6"
1923
  },
1924
  "platform-dev": []
1925
  }
vendor/wp-media/rocket-lazyload-common/phpcs.xml CHANGED
@@ -3,5 +3,22 @@
3
  <description>Rocket Lazyload Coding Standards</description>
4
 
5
  <config name="testVersion" value="5.4-" />
6
- <rule ref="PSR2" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  </ruleset>
3
  <description>Rocket Lazyload Coding Standards</description>
4
 
5
  <config name="testVersion" value="5.4-" />
6
+ <rule ref="PHPCompatibilityWP">
7
+ <include-pattern>*\.php$</include-pattern>
8
+ </rule>
9
+ <rule ref="PSR2">
10
+ <exclude name="Generic.Files.LineLength.TooLong" />
11
+ </rule>
12
+ <rule ref="WordPress">
13
+ <exclude name="WordPress.Files.FileName" />
14
+ <exclude name="WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid" />
15
+ <exclude name="WordPress.WhiteSpace.ControlStructureSpacing" />
16
+ <exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceBefore" />
17
+ <exclude name="WordPress.Arrays.ArrayDeclarationSpacing" />
18
+ <exclude name="Generic.Classes.OpeningBraceSameLine.BraceOnNewLine" />
19
+ <exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed" />
20
+ <exclude name="Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine" />
21
+ <exclude name="PEAR.Functions.FunctionCallSignature" />
22
+ <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen" />
23
+ </rule>
24
  </ruleset>
vendor/wp-media/rocket-lazyload-common/src/Assets.php CHANGED
@@ -1,6 +1,15 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyload;
3
 
 
 
 
4
  class Assets
5
  {
6
  /**
@@ -9,12 +18,22 @@ class Assets
9
  * @param array $args Array of arguments to populate the lazyload script options.
10
  * @return void
11
  */
12
- public function insertLazyloadScript($args)
 
 
 
 
 
 
 
 
 
 
 
13
  {
14
  $defaults = [
15
- 'base_url' => '',
16
- 'suffix' => 'min',
17
- 'elements' => [
18
  'img',
19
  'iframe',
20
  ],
@@ -24,11 +43,12 @@ class Assets
24
  ];
25
 
26
  $args = wp_parse_args($args, $defaults);
 
27
 
28
- echo '<script>(function(w, d){
29
  var b = d.getElementsByTagName("body")[0];
30
  var s = d.createElement("script"); s.async = true;
31
- s.src = !("IntersectionObserver" in w) ? "' . $args['base_url'] . 'lazyload-' . $args['fallback'] . $args['suffix'] . '.js" : "' . $args['base_url'] . 'lazyload-' . $args['version'] . $args['suffix'] . '.js";
32
  w.lazyLoadOptions = {
33
  elements_selector: "' . esc_attr(implode(',', $args['elements'])) . '",
34
  data_src: "lazy-src",
@@ -74,23 +94,42 @@ class Assets
74
  </script>';
75
  }
76
 
77
- /**
78
  * Inserts in the HTML the script to replace the Youtube thumbnail by the iframe.
79
  *
80
  * @param array $args Array of arguments to populate the script options.
81
  * @return void
82
  */
83
- public function insertYoutubeThumbnailScript($args)
 
 
 
 
 
 
 
 
 
 
 
84
  {
85
  $defaults = [
86
  'resolution' => 'hqdefault',
87
  ];
88
 
 
 
 
 
 
 
 
 
 
 
89
  $args = wp_parse_args($args, $defaults);
90
 
91
- echo <<<HTML
92
- <script>function lazyLoadThumb(e){var t='<img src="https://i.ytimg.com/vi/ID/{$args['resolution']}.jpg">',a='<div class="play"></div>';return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="https://www.youtube.com/embed/ID?autoplay=1";t+=0===this.dataset.query.length?'':'&'+this.dataset.query;e.setAttribute("src",t.replace("ID",this.dataset.id)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),this.parentNode.replaceChild(e,this)}document.addEventListener("DOMContentLoaded",function(){var e,t,a=document.getElementsByClassName("rll-youtube-player");for(t=0;t<a.length;t++)e=document.createElement("div"),e.setAttribute("data-id",a[t].dataset.id),e.setAttribute("data-query", a[t].dataset.query),e.innerHTML=lazyLoadThumb(a[t].dataset.id),e.onclick=lazyLoadYoutubeIframe,a[t].appendChild(e)});</script>
93
- HTML;
94
  }
95
 
96
  /**
@@ -99,7 +138,20 @@ HTML;
99
  * @param array $args Array of arguments to populate the CSS.
100
  * @return void
101
  */
102
- public function insertYoutubeThumbnailCSS($args)
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  {
104
  $defaults = [
105
  'base_url' => '',
@@ -107,9 +159,7 @@ HTML;
107
 
108
  $args = wp_parse_args($args, $defaults);
109
 
110
- $css = '.rll-youtube-player{position:relative;padding-bottom:56.23%;height:0;overflow:hidden;max-width:100%;}.rll-youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;background:0 0}.rll-youtube-player img{bottom:0;display:block;left:0;margin:auto;max-width:100%;width:100%;position:absolute;right:0;top:0;border:none;height:auto;cursor:pointer;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.rll-youtube-player img:hover{-webkit-filter:brightness(75%)}.rll-youtube-player .play{height:72px;width:72px;left:50%;top:50%;margin-left:-36px;margin-top:-36px;position:absolute;background:url(' . $args['base_url'] . 'img/youtube.png) no-repeat;cursor:pointer}.wp-has-aspect-ratio .rll-youtube-player{position:absolute;padding-bottom:0;width:100%;height:100%;top:0;bottom:0;left:0;right:0;';
111
-
112
- wp_add_inline_style('rocket-lazyload', $css);
113
  }
114
 
115
  /**
@@ -117,10 +167,18 @@ HTML;
117
  */
118
  public function insertNoJSCSS()
119
  {
120
- $css = '.no-js .rll-youtube-player, .no-js [data-lazy-src]{display:none !important;}';
121
-
122
  wp_register_style('rocket-lazyload', false);
123
  wp_enqueue_style('rocket-lazyload');
124
- wp_add_inline_style('rocket-lazyload', $css);
 
 
 
 
 
 
 
 
 
 
125
  }
126
  }
1
  <?php
2
+ /**
3
+ * Handle the lazyload required assets: inline CSS and JS
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyload;
9
 
10
+ /**
11
+ * Class containing the methods to return or print the assets needed for lazyloading
12
+ */
13
  class Assets
14
  {
15
  /**
18
  * @param array $args Array of arguments to populate the lazyload script options.
19
  * @return void
20
  */
21
+ public function insertLazyloadScript($args = [])
22
+ {
23
+ echo $this->getLazyloadScript($args);
24
+ }
25
+
26
+ /**
27
+ * Returns the lazyload inline script
28
+ *
29
+ * @param array $args Array of arguments to populate the lazyload script options.
30
+ * @return string
31
+ */
32
+ public function getLazyloadScript($args = [])
33
  {
34
  $defaults = [
35
+ 'base_url' => '',
36
+ 'elements' => [
 
37
  'img',
38
  'iframe',
39
  ],
43
  ];
44
 
45
  $args = wp_parse_args($args, $defaults);
46
+ $min = defined('SCRIPT_DEBUG') ? '' : '.min';
47
 
48
+ return '<script>(function(w, d){
49
  var b = d.getElementsByTagName("body")[0];
50
  var s = d.createElement("script"); s.async = true;
51
+ s.src = !("IntersectionObserver" in w) ? "' . $args['base_url'] . 'lazyload-' . $args['fallback'] . $min . '.js" : "' . $args['base_url'] . 'lazyload-' . $args['version'] . $min . '.js";
52
  w.lazyLoadOptions = {
53
  elements_selector: "' . esc_attr(implode(',', $args['elements'])) . '",
54
  data_src: "lazy-src",
94
  </script>';
95
  }
96
 
97
+ /**
98
  * Inserts in the HTML the script to replace the Youtube thumbnail by the iframe.
99
  *
100
  * @param array $args Array of arguments to populate the script options.
101
  * @return void
102
  */
103
+ public function insertYoutubeThumbnailScript($args = [])
104
+ {
105
+ echo $this->getYoutubeThumbnailScript($args);
106
+ }
107
+
108
+ /**
109
+ * Returns the Youtube Thumbnail inline script
110
+ *
111
+ * @param array $args Array of arguments to populate the script options.
112
+ * @return string
113
+ */
114
+ public function getYoutubeThumbnailScript($args = [])
115
  {
116
  $defaults = [
117
  'resolution' => 'hqdefault',
118
  ];
119
 
120
+ $allowed_resolutions = [
121
+ 'default' => 1,
122
+ 'mqdefault' => 1,
123
+ 'sddefault' => 1,
124
+ 'hqdefault' => 1,
125
+ 'maxresdefault' => 1,
126
+ ];
127
+
128
+ $args['resolution'] = ( isset($args['resolution']) && isset($allowed_resolutions[ $args['resolution'] ]) ) ? $args['resolution'] : 'hqdefault';
129
+
130
  $args = wp_parse_args($args, $defaults);
131
 
132
+ return "<script>function lazyLoadThumb(e){var t='<img src=\"https://i.ytimg.com/vi/ID/{$args['resolution']}.jpg\">',a='<div class=\"play\"></div>';return t.replace(\"ID\",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement(\"iframe\"),t=\"https://www.youtube.com/embed/ID?autoplay=1\";t+=0===this.dataset.query.length?'':'&'+this.dataset.query;e.setAttribute(\"src\",t.replace(\"ID\",this.dataset.id)),e.setAttribute(\"frameborder\",\"0\"),e.setAttribute(\"allowfullscreen\",\"1\"),this.parentNode.replaceChild(e,this)}document.addEventListener(\"DOMContentLoaded\",function(){var e,t,a=document.getElementsByClassName(\"rll-youtube-player\");for(t=0;t<a.length;t++)e=document.createElement(\"div\"),e.setAttribute(\"data-id\",a[t].dataset.id),e.setAttribute(\"data-query\", a[t].dataset.query),e.innerHTML=lazyLoadThumb(a[t].dataset.id),e.onclick=lazyLoadYoutubeIframe,a[t].appendChild(e)});</script>";
 
 
133
  }
134
 
135
  /**
138
  * @param array $args Array of arguments to populate the CSS.
139
  * @return void
140
  */
141
+ public function insertYoutubeThumbnailCSS($args = [])
142
+ {
143
+ wp_register_style('rocket-lazyload', false);
144
+ wp_enqueue_style('rocket-lazyload');
145
+ wp_add_inline_style('rocket-lazyload', $this->getYoutubeThumbnailCSS($args));
146
+ }
147
+
148
+ /**
149
+ * Returns the CSS for the Youtube Thumbnail
150
+ *
151
+ * @param array $args Array of arguments to populate the CSS.
152
+ * @return string
153
+ */
154
+ public function getYoutubeThumbnailCSS($args = [])
155
  {
156
  $defaults = [
157
  'base_url' => '',
159
 
160
  $args = wp_parse_args($args, $defaults);
161
 
162
+ return '.rll-youtube-player{position:relative;padding-bottom:56.23%;height:0;overflow:hidden;max-width:100%;}.rll-youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;background:0 0}.rll-youtube-player img{bottom:0;display:block;left:0;margin:auto;max-width:100%;width:100%;position:absolute;right:0;top:0;border:none;height:auto;cursor:pointer;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.rll-youtube-player img:hover{-webkit-filter:brightness(75%)}.rll-youtube-player .play{height:72px;width:72px;left:50%;top:50%;margin-left:-36px;margin-top:-36px;position:absolute;background:url(' . $args['base_url'] . 'img/youtube.png) no-repeat;cursor:pointer}.wp-has-aspect-ratio .rll-youtube-player{position:absolute;padding-bottom:0;width:100%;height:100%;top:0;bottom:0;left:0;right:0;';
 
 
163
  }
164
 
165
  /**
167
  */
168
  public function insertNoJSCSS()
169
  {
 
 
170
  wp_register_style('rocket-lazyload', false);
171
  wp_enqueue_style('rocket-lazyload');
172
+ wp_add_inline_style('rocket-lazyload', $this->getNoJSCSS());
173
+ }
174
+
175
+ /**
176
+ * Returns the CSS to correctly display images when JavaScript is disabled
177
+ *
178
+ * @return string
179
+ */
180
+ public function getNoJSCSS()
181
+ {
182
+ return '.no-js .rll-youtube-player, .no-js [data-lazy-src]{display:none !important;}';
183
  }
184
  }
vendor/wp-media/rocket-lazyload-common/src/Iframe.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyload;
3
 
4
  /**
@@ -9,12 +15,12 @@ class Iframe
9
  /**
10
  * Finds iframes in the HTML provided and call the methods to lazyload them
11
  *
12
- * @param string $html Original HTML
13
- * @param string $buffer Content to parse
14
- * @param array $args Array of arguments to use
15
  * @return string
16
  */
17
- public function lazyloadIframes($html, $buffer, $args)
18
  {
19
  $defaults = [
20
  'youtube' => false,
@@ -22,13 +28,15 @@ class Iframe
22
 
23
  $args = wp_parse_args($args, $defaults);
24
 
25
- preg_match_all('@<iframe(?<atts>\s.+)>.*</iframe>@iUs', $buffer, $matches, PREG_SET_ORDER);
26
 
27
- if (empty($matches)) {
28
  return $html;
29
  }
30
 
31
- foreach ($matches as $iframe) {
 
 
32
  if ($this->isIframeExcluded($iframe)) {
33
  continue;
34
  }
@@ -63,33 +71,51 @@ class Iframe
63
  /**
64
  * Checks if the provided iframe is excluded from lazyload
65
  *
66
- * @param array $iframe Array of matched patterns
67
  * @return boolean
68
  */
69
- private function isIframeExcluded($iframe)
70
  {
71
- // Don't mess with the Gravity Forms ajax iframe.
72
- if (strpos($iframe[0], 'gform_ajax_frame')) {
73
- return true;
74
- }
75
 
76
- // Don't lazyload if iframe has data-no-lazy attribute.
77
- if (strpos($iframe[0], 'data-no-lazy=')) {
78
- return true;
79
- }
80
-
81
- // Don't lazyload if iframe is google recaptcha fallback.
82
- if (strpos($iframe[0], 'recaptcha/api/fallback')) {
83
- return true;
84
  }
85
 
86
  return false;
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * Applies lazyload on the iframe provided
91
  *
92
- * @param array $iframe Array of matched elements
93
  * @return string
94
  */
95
  private function replaceIframe($iframe)
@@ -122,7 +148,7 @@ class Iframe
122
  /**
123
  * Replaces the iframe provided by the Youtube thumbnail
124
  *
125
- * @param array $iframe Array of matched elements
126
  * @return bool|string
127
  */
128
  private function replaceYoutubeThumbnail($iframe)
@@ -151,12 +177,12 @@ class Iframe
151
  /**
152
  * Gets the Youtube ID from the URL provided
153
  *
154
- * @param string $url URL to search
155
  * @return bool|string
156
  */
157
- private function getYoutubeIDFromURL($url)
158
  {
159
- $pattern = '#^(?:https?:)?(?://)?(?:www\.)?(?:youtu\.be|youtube\.com|youtube-nocookie\.com)/(?:embed/|v/|watch/?\?v=)([\w-]{11})#iU';
160
  $result = preg_match($pattern, $url, $matches);
161
 
162
  if (! $result) {
1
  <?php
2
+ /**
3
+ * Handles lazyloading of iframes
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyload;
9
 
10
  /**
15
  /**
16
  * Finds iframes in the HTML provided and call the methods to lazyload them
17
  *
18
+ * @param string $html Original HTML.
19
+ * @param string $buffer Content to parse.
20
+ * @param array $args Array of arguments to use.
21
  * @return string
22
  */
23
+ public function lazyloadIframes($html, $buffer, $args = [])
24
  {
25
  $defaults = [
26
  'youtube' => false,
28
 
29
  $args = wp_parse_args($args, $defaults);
30
 
31
+ preg_match_all('@<iframe(?<atts>\s.+)>.*</iframe>@iUs', $buffer, $iframes, PREG_SET_ORDER);
32
 
33
+ if (empty($iframes)) {
34
  return $html;
35
  }
36
 
37
+ $iframes = array_unique($iframes, SORT_REGULAR);
38
+
39
+ foreach ($iframes as $iframe) {
40
  if ($this->isIframeExcluded($iframe)) {
41
  continue;
42
  }
71
  /**
72
  * Checks if the provided iframe is excluded from lazyload
73
  *
74
+ * @param array $iframe Array of matched patterns.
75
  * @return boolean
76
  */
77
+ public function isIframeExcluded($iframe)
78
  {
 
 
 
 
79
 
80
+ foreach ($this->getExcludedPatterns() as $excluded_pattern) {
81
+ if (strpos($iframe[0], $excluded_pattern) !== false) {
82
+ return true;
83
+ }
 
 
 
 
84
  }
85
 
86
  return false;
87
  }
88
 
89
+ /**
90
+ * Gets patterns excluded from lazyload for iframes
91
+ *
92
+ * @since 2.1.1
93
+ *
94
+ * @return array
95
+ */
96
+ private function getExcludedPatterns()
97
+ {
98
+ /**
99
+ * Filters the patterns excluded from lazyload for iframes
100
+ *
101
+ * @since 2.1.1
102
+ *
103
+ * @param array $excluded_patterns Array of excluded patterns.
104
+ */
105
+ return apply_filters(
106
+ 'rocket_lazyload_iframe_excluded_patterns',
107
+ [
108
+ 'gform_ajax_frame',
109
+ 'data-no-lazy=',
110
+ 'recaptcha/api/fallback',
111
+ ]
112
+ );
113
+ }
114
+
115
  /**
116
  * Applies lazyload on the iframe provided
117
  *
118
+ * @param array $iframe Array of matched elements.
119
  * @return string
120
  */
121
  private function replaceIframe($iframe)
148
  /**
149
  * Replaces the iframe provided by the Youtube thumbnail
150
  *
151
+ * @param array $iframe Array of matched elements.
152
  * @return bool|string
153
  */
154
  private function replaceYoutubeThumbnail($iframe)
177
  /**
178
  * Gets the Youtube ID from the URL provided
179
  *
180
+ * @param string $url URL to search.
181
  * @return bool|string
182
  */
183
+ public function getYoutubeIDFromURL($url)
184
  {
185
+ $pattern = '#^(?:https?:)?(?://)?(?:www\.)?(?:youtu\.be|youtube\.com|youtube-nocookie\.com)/(?:embed/|v/|watch/?\?v=)?([\w-]{11})#iU';
186
  $result = preg_match($pattern, $url, $matches);
187
 
188
  if (! $result) {
vendor/wp-media/rocket-lazyload-common/src/Image.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  namespace RocketLazyload;
3
 
4
  /**
@@ -9,8 +15,8 @@ class Image
9
  /**
10
  * Finds the images to be lazyloaded and call the callback method to replace them.
11
  *
12
- * @param string $html
13
- * @param string $buffer
14
  * @return string
15
  */
16
  public function lazyloadImages($html, $buffer)
@@ -21,6 +27,8 @@ class Image
21
  return $html;
22
  }
23
 
 
 
24
  foreach ($images as $image) {
25
  // Don't apply LazyLoad on images from WP Retina x2.
26
  if (function_exists('wr2x_picture_rewrite')) {
@@ -29,66 +37,14 @@ class Image
29
  }
30
  }
31
 
32
- /**
33
- * Filters the attributes used to prevent lazylad from being applied
34
- *
35
- * @since 1.0
36
- * @author Remy Perona
37
- *
38
- * @param array $excluded_attributes An array of excluded attributes.
39
- */
40
- $excluded_attributes = apply_filters(
41
- 'rocket_lazyload_excluded_attributes',
42
- [
43
- 'data-src=',
44
- 'data-no-lazy=',
45
- 'data-lazy-original=',
46
- 'data-lazy-src=',
47
- 'data-lazysrc=',
48
- 'data-lazyload=',
49
- 'data-bgposition=',
50
- 'data-envira-src=',
51
- 'fullurl=',
52
- 'lazy-slider-img=',
53
- 'data-srcset=',
54
- 'class="ls-l',
55
- 'class="ls-bg',
56
- ]
57
- );
58
-
59
- /**
60
- * Filters the src used to prevent lazylad from being applied
61
- *
62
- * @since 1.0
63
- * @author Remy Perona
64
- *
65
- * @param array $excluded_src An array of excluded src.
66
- */
67
- $excluded_src = apply_filters(
68
- 'rocket_lazyload_excluded_src',
69
- [
70
- '/wpcf7_captcha/',
71
- 'timthumb.php?src',
72
- ]
73
- );
74
-
75
- if ($this->isExcluded($image[1] . $image[3], $excluded_attributes) || $this->isExcluded($image[2], $excluded_src)) {
76
  continue;
77
  }
78
 
79
- $image_lazyload = sprintf('<img%1$s src="%4$s" data-lazy-src=%2$s%3$s>', $image[1], $image[2], $image[3], $this->getPlaceholder());
80
-
81
- /**
82
- * Filter the LazyLoad HTML output
83
- *
84
- * @since 1.0
85
- *
86
- * @param string $html Output that will be printed
87
- */
88
- $image_lazyload = apply_filters('rocket_lazyload_html', $image_lazyload);
89
- $image_lazyload .= '<noscript>' . $image[0] . '</noscript>';
90
 
91
- $html = str_replace($image[0], $image_lazyload, $html);
92
  }
93
 
94
  return $html;
@@ -97,12 +53,20 @@ class Image
97
  /**
98
  * Checks if the provided string matches with the provided excluded patterns
99
  *
100
- * @param string $string String to check
101
- * @param array $excluded_values Patterns to match against
102
  * @return boolean
103
  */
104
- private function isExcluded($string, $excluded_values)
105
  {
 
 
 
 
 
 
 
 
106
  foreach ($excluded_values as $excluded_value) {
107
  if (strpos($string, $excluded_value) !== false) {
108
  return true;
@@ -112,10 +76,93 @@ class Image
112
  return false;
113
  }
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  /**
116
  * Applies lazyload on srcset and sizes attributes
117
  *
118
- * @param string $html HTML image tag
119
  * @return string
120
  */
121
  public function lazyloadResponsiveAttributes($html)
@@ -134,7 +181,7 @@ class Image
134
  /**
135
  * Finds patterns matching smiley and call the callback method to replace them with the image
136
  *
137
- * @param string $text Content to search in
138
  * @return string
139
  */
140
  public function convertSmilies($text)
@@ -181,7 +228,7 @@ class Image
181
  /**
182
  * Replace matches by smiley image, lazyloaded
183
  *
184
- * @param array $matches Array of matches
185
  * @return string
186
  */
187
  private function translateSmiley($matches)
@@ -231,10 +278,17 @@ class Image
231
  *
232
  * @param int $width Width of the placeholder image. Default 1.
233
  * @param int $height Height of the placeholder image. Default 1.
234
- * @return void
235
  */
236
- private function getPlaceholder($width = 1, $height = 1)
237
  {
 
 
 
 
 
 
 
238
  /**
239
  * Filter the image lazyLoad placeholder on src attribute
240
  *
@@ -242,6 +296,6 @@ class Image
242
  *
243
  * @param string $placeholder Placeholder that will be printed.
244
  */
245
- return apply_filters('rocket_lazyload_placeholder', "data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 $width $height\'%3E%3C/svg%3E");
246
  }
247
  }
1
  <?php
2
+ /**
3
+ * Handles lazyloading of images
4
+ *
5
+ * @package RocketLazyload
6
+ */
7
+
8
  namespace RocketLazyload;
9
 
10
  /**
15
  /**
16
  * Finds the images to be lazyloaded and call the callback method to replace them.
17
  *
18
+ * @param string $html Original HTML.
19
+ * @param string $buffer Content to parse.
20
  * @return string
21
  */
22
  public function lazyloadImages($html, $buffer)
27
  return $html;
28
  }
29
 
30
+ $images = array_unique($images, SORT_REGULAR);
31
+
32
  foreach ($images as $image) {
33
  // Don't apply LazyLoad on images from WP Retina x2.
34
  if (function_exists('wr2x_picture_rewrite')) {
37
  }
38
  }
39
 
40
+ if ($this->isExcluded($image[1] . $image[3], $this->getExcludedAttributes()) || $this->isExcluded($image[2], $this->getExcludedSrc())) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  continue;
42
  }
43
 
44
+ $image_lazyload = $this->replaceImage($image);
45
+ $html = str_replace($image[0], $image_lazyload, $html);
 
 
 
 
 
 
 
 
 
46
 
47
+ unset($image_lazyload);
48
  }
49
 
50
  return $html;
53
  /**
54
  * Checks if the provided string matches with the provided excluded patterns
55
  *
56
+ * @param string $string String to check.
57
+ * @param array $excluded_values Patterns to match against.
58
  * @return boolean
59
  */
60
+ public function isExcluded($string, $excluded_values)
61
  {
62
+ if (! is_array($excluded_values)) {
63
+ (array) $excluded_values;
64
+ }
65
+
66
+ if (empty($excluded_values)) {
67
+ return false;
68
+ }
69
+
70
  foreach ($excluded_values as $excluded_value) {
71
  if (strpos($string, $excluded_value) !== false) {
72
  return true;
76
  return false;
77
  }
78
 
79
+ /**
80
+ * Returns the list of excluded attributes
81
+ *
82
+ * @return array
83
+ */
84
+ public function getExcludedAttributes()
85
+ {
86
+ /**
87
+ * Filters the attributes used to prevent lazylad from being applied
88
+ *
89
+ * @since 1.0
90
+ * @author Remy Perona
91
+ *
92
+ * @param array $excluded_attributes An array of excluded attributes.
93
+ */
94
+ return apply_filters(
95
+ 'rocket_lazyload_excluded_attributes',
96
+ [
97
+ 'data-src=',
98
+ 'data-no-lazy=',
99
+ 'data-lazy-original=',
100
+ 'data-lazy-src=',
101
+ 'data-lazysrc=',
102
+ 'data-lazyload=',
103
+ 'data-bgposition=',
104
+ 'data-envira-src=',
105
+ 'fullurl=',
106
+ 'lazy-slider-img=',
107
+ 'data-srcset=',
108
+ 'class="ls-l',
109
+ 'class="ls-bg',
110
+ 'soliloquy-image',
111
+ ]
112
+ );
113
+ }
114
+
115
+ /**
116
+ * Returns the list of excluded src
117
+ *
118
+ * @return array
119
+ */
120
+ public function getExcludedSrc()
121
+ {
122
+ /**
123
+ * Filters the src used to prevent lazylad from being applied
124
+ *
125
+ * @since 1.0
126
+ * @author Remy Perona
127
+ *
128
+ * @param array $excluded_src An array of excluded src.
129
+ */
130
+ return apply_filters(
131
+ 'rocket_lazyload_excluded_src',
132
+ [
133
+ '/wpcf7_captcha/',
134
+ 'timthumb.php?src',
135
+ ]
136
+ );
137
+ }
138
+
139
+ /**
140
+ * Replaces the original image by the lazyload one
141
+ *
142
+ * @param array $image Array of matches elements.
143
+ * @return string
144
+ */
145
+ private function replaceImage($image)
146
+ {
147
+ $image_lazyload = sprintf('<img%1$s src="%4$s" data-lazy-src=%2$s%3$s>', $image[1], $image[2], $image[3], $this->getPlaceholder());
148
+
149
+ /**
150
+ * Filter the LazyLoad HTML output
151
+ *
152
+ * @since 1.0
153
+ *
154
+ * @param string $html Output that will be printed
155
+ */
156
+ $image_lazyload = apply_filters('rocket_lazyload_html', $image_lazyload);
157
+ $image_lazyload .= '<noscript>' . $image[0] . '</noscript>';
158
+
159
+ return $image_lazyload;
160
+ }
161
+
162
  /**
163
  * Applies lazyload on srcset and sizes attributes
164
  *
165
+ * @param string $html HTML image tag.
166
  * @return string
167
  */
168
  public function lazyloadResponsiveAttributes($html)
181
  /**
182
  * Finds patterns matching smiley and call the callback method to replace them with the image
183
  *
184
+ * @param string $text Content to search in.
185
  * @return string
186
  */
187
  public function convertSmilies($text)
228
  /**
229
  * Replace matches by smiley image, lazyloaded
230
  *
231
+ * @param array $matches Array of matches.
232
  * @return string
233
  */
234
  private function translateSmiley($matches)
278
  *
279
  * @param int $width Width of the placeholder image. Default 1.
280
  * @param int $height Height of the placeholder image. Default 1.
281
+ * @return string
282
  */
283
+ public function getPlaceholder($width = 1, $height = 1)
284
  {
285
+ $width = absint($width);
286
+ $height = absint($height);
287
+
288
+ $width = 0 === $width ? 1 : $width;
289
+ $height = 0 === $height ? 1 : $height;
290
+
291
+ $placeholder = str_replace(' ', '%20', "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 $width $height'%3E%3C/svg%3E");
292
  /**
293
  * Filter the image lazyLoad placeholder on src attribute
294
  *
296
  *
297
  * @param string $placeholder Placeholder that will be printed.
298
  */
299
+ return apply_filters('rocket_lazyload_placeholder', $placeholder);
300
  }
301
  }
views/admin-page.php CHANGED
@@ -1,10 +1,16 @@
1
  <?php
 
 
 
 
 
 
2
  defined('ABSPATH') || die('Cheatin\' uh?');
3
 
4
  global $wp_version;
5
 
6
  $options = [
7
- 'images' => [
8
  'label' => __('Images', 'rocket-lazy-load'),
9
  ],
10
  'iframes' => [
@@ -13,12 +19,12 @@ $options = [
13
  'youtube' => [
14
  'label' => __('Replace Youtube videos by thumbnail', 'rocket-lazy-load'),
15
  ],
16
- ]; // WPCS: prefix ok.
17
 
18
  ?>
19
  <div class="wrap rocket-lazyload-settings">
20
 
21
- <?php $heading_tag = version_compare($wp_version, '4.3') >= 0 ? 'h1' : 'h2'; // WPCS: prefix ok. ?>
22
  <<?php echo $heading_tag; ?> class="screen-reader-text"><?php echo esc_html(get_admin_page_title()); ?></<?php echo $heading_tag; ?>>
23
  <div class="rocket-lazyload-header">
24
  <div>
@@ -42,7 +48,7 @@ $options = [
42
  <p><?php esc_html_e('LazyLoad displays images, iframes and videos on a page only when they are visible to the user.', 'rocket-lazy-load'); ?></p>
43
  <p><?php esc_html_e('This mechanism reduces the number of HTTP requests and improves the loading time.', 'rocket-lazy-load'); ?></p>
44
  <ul class="rocket-lazyload-options">
45
- <?php foreach ($options as $slug => $infos) : // WPCS: prefix ok. ?>
46
  <li class="rocket-lazyload-option">
47
  <input type="checkbox" value="1" id="lazyload-<?php echo esc_attr($slug); ?>" name="rocket_lazyload_options[<?php echo esc_attr($slug); ?>]" <?php checked($this->option_array->get($slug, 0), 1); ?> aria-labelledby="describe-lazyload-<?php echo esc_attr($slug); ?>">
48
  <label for="lazyload-<?php echo esc_attr($slug); ?>">
@@ -55,7 +61,7 @@ $options = [
55
  </ul>
56
  </fieldset>
57
  <?php settings_fields('rocket_lazyload'); ?>
58
-
59
  <?php if (! is_plugin_active('wp-rocket/wp-rocket.php')) { ?>
60
  <div class="rocket-lazyload-upgrade">
61
 
@@ -65,7 +71,7 @@ $options = [
65
  <?php esc_html_e('Go Premium with', 'rocket-lazy-load'); ?>
66
  <img class="rocket-lazyload-rocket-logo" src="<?php echo esc_url(ROCKET_LL_ASSETS_URL . 'img/wprocket.png'); ?>" srcset="<?php echo esc_url(ROCKET_LL_ASSETS_URL . 'img/wprocket@2x.png'); ?>" width="232" height="63" alt="WP Rocket">
67
  </p>
68
-
69
  <div class="rocket-lazyload-cta-block">
70
  <a class="button button-primary" href="https://wp-rocket.me/?utm_source=wp_plugin&utm_medium=rocket_lazyload"><?php _e('Get WP&nbsp;Rocket Now!', 'rocket-lazy-load'); ?></a>
71
  </div>
@@ -73,37 +79,51 @@ $options = [
73
 
74
  <div class="rocket-lazyload-upgrade-arguments">
75
  <ul>
76
- <li class="rll-upgrade-item"><?php
 
77
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
78
  printf(__('%1$sMultiple new features%2$s to further improve your load time', 'rocket-lazy-load'), '<strong>', '</strong>')
79
- ?></li>
80
- <li class="rll-upgrade-item"><?php
 
 
81
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
82
  printf(__('All you need to %1$simprove your Google PageSpeed%2$s score', 'rocket-lazy-load'), '<strong>', '</strong>')
83
- ?></li>
84
- <li class="rll-upgrade-item"><?php
 
 
85
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
86
  printf(__('%1$sBoost your SEO%2$s by preloading your cache page for Google’s bots', 'rocket-lazy-load'), '<strong>', '</strong>')
87
- ?></li>
88
- <li class="rll-upgrade-item"><?php
 
 
89
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
90
  printf(__('Watch your conversion rise with the %1$s100%% WooCommerce compatibility%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
91
- ?></li>
92
- <li class="rll-upgrade-item"><?php
 
 
93
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
94
  printf(__('Minimal configuration, %1$sImmediate results%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
95
- ?></li>
96
- <li class="rll-upgrade-item"><?php
 
 
97
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
98
  printf(__('Set up takes %1$s5 minutes flat%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
99
- ?></li>
100
- <li class="rll-upgrade-item"><?php
 
 
101
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
102
  printf(__('%1$s24/7 support%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
103
- ?></li>
 
104
  </ul>
105
  </div><!-- .rocket-lazyload-upgrade-arguments -->
106
-
107
  </div><!-- .rocket-lazyload-upgrade -->
108
  <?php } ?>
109
 
@@ -115,4 +135,4 @@ $options = [
115
  </p>
116
  </form>
117
  </div>
118
- </div>
1
  <?php
2
+ /**
3
+ * Admin Page view
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  defined('ABSPATH') || die('Cheatin\' uh?');
9
 
10
  global $wp_version;
11
 
12
  $options = [
13
+ 'images' => [
14
  'label' => __('Images', 'rocket-lazy-load'),
15
  ],
16
  'iframes' => [
19
  'youtube' => [
20
  'label' => __('Replace Youtube videos by thumbnail', 'rocket-lazy-load'),
21
  ],
22
+ ];
23
 
24
  ?>
25
  <div class="wrap rocket-lazyload-settings">
26
 
27
+ <?php $heading_tag = version_compare($wp_version, '4.3') >= 0 ? 'h1' : 'h2'; ?>
28
  <<?php echo $heading_tag; ?> class="screen-reader-text"><?php echo esc_html(get_admin_page_title()); ?></<?php echo $heading_tag; ?>>
29
  <div class="rocket-lazyload-header">
30
  <div>
48
  <p><?php esc_html_e('LazyLoad displays images, iframes and videos on a page only when they are visible to the user.', 'rocket-lazy-load'); ?></p>
49
  <p><?php esc_html_e('This mechanism reduces the number of HTTP requests and improves the loading time.', 'rocket-lazy-load'); ?></p>
50
  <ul class="rocket-lazyload-options">
51
+ <?php foreach ($options as $slug => $infos) : ?>
52
  <li class="rocket-lazyload-option">
53
  <input type="checkbox" value="1" id="lazyload-<?php echo esc_attr($slug); ?>" name="rocket_lazyload_options[<?php echo esc_attr($slug); ?>]" <?php checked($this->option_array->get($slug, 0), 1); ?> aria-labelledby="describe-lazyload-<?php echo esc_attr($slug); ?>">
54
  <label for="lazyload-<?php echo esc_attr($slug); ?>">
61
  </ul>
62
  </fieldset>
63
  <?php settings_fields('rocket_lazyload'); ?>
64
+
65
  <?php if (! is_plugin_active('wp-rocket/wp-rocket.php')) { ?>
66
  <div class="rocket-lazyload-upgrade">
67
 
71
  <?php esc_html_e('Go Premium with', 'rocket-lazy-load'); ?>
72
  <img class="rocket-lazyload-rocket-logo" src="<?php echo esc_url(ROCKET_LL_ASSETS_URL . 'img/wprocket.png'); ?>" srcset="<?php echo esc_url(ROCKET_LL_ASSETS_URL . 'img/wprocket@2x.png'); ?>" width="232" height="63" alt="WP Rocket">
73
  </p>
74
+
75
  <div class="rocket-lazyload-cta-block">
76
  <a class="button button-primary" href="https://wp-rocket.me/?utm_source=wp_plugin&utm_medium=rocket_lazyload"><?php _e('Get WP&nbsp;Rocket Now!', 'rocket-lazy-load'); ?></a>
77
  </div>
79
 
80
  <div class="rocket-lazyload-upgrade-arguments">
81
  <ul>
82
+ <li class="rll-upgrade-item">
83
+ <?php
84
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
85
  printf(__('%1$sMultiple new features%2$s to further improve your load time', 'rocket-lazy-load'), '<strong>', '</strong>')
86
+ ?>
87
+ </li>
88
+ <li class="rll-upgrade-item">
89
+ <?php
90
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
91
  printf(__('All you need to %1$simprove your Google PageSpeed%2$s score', 'rocket-lazy-load'), '<strong>', '</strong>')
92
+ ?>
93
+ </li>
94
+ <li class="rll-upgrade-item">
95
+ <?php
96
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
97
  printf(__('%1$sBoost your SEO%2$s by preloading your cache page for Google’s bots', 'rocket-lazy-load'), '<strong>', '</strong>')
98
+ ?>
99
+ </li>
100
+ <li class="rll-upgrade-item">
101
+ <?php
102
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
103
  printf(__('Watch your conversion rise with the %1$s100%% WooCommerce compatibility%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
104
+ ?>
105
+ </li>
106
+ <li class="rll-upgrade-item">
107
+ <?php
108
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
109
  printf(__('Minimal configuration, %1$sImmediate results%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
110
+ ?>
111
+ </li>
112
+ <li class="rll-upgrade-item">
113
+ <?php
114
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
115
  printf(__('Set up takes %1$s5 minutes flat%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
116
+ ?>
117
+ </li>
118
+ <li class="rll-upgrade-item">
119
+ <?php
120
  // Translators: %1$s = strong opening tag, %2$s = strong closing tag.
121
  printf(__('%1$s24/7 support%2$s', 'rocket-lazy-load'), '<strong>', '</strong>')
122
+ ?>
123
+ </li>
124
  </ul>
125
  </div><!-- .rocket-lazyload-upgrade-arguments -->
126
+
127
  </div><!-- .rocket-lazyload-upgrade -->
128
  <?php } ?>
129
 
135
  </p>
136
  </form>
137
  </div>
138
+ </div>
views/imagify-notice.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  defined('ABSPATH') || die('Cheatin\' uh?');
3
 
4
  $action_url = wp_nonce_url(
@@ -10,12 +16,12 @@ $action_url = wp_nonce_url(
10
  admin_url('update.php')
11
  ),
12
  'install-plugin_imagify'
13
- ); // WPCS: prefix ok.
14
 
15
  $dismiss_url = wp_nonce_url(
16
  admin_url('admin-post.php?action=rocket_lazyload_ignore&box=rocket_lazyload_imagify_notice'),
17
  'rocket_lazyload_ignore_rocket_lazyload_imagify_notice'
18
- ); // WPCS: prefix ok.
19
 
20
  ?>
21
  <div id="plugin-filter" class="updated plugin-card plugin-card-imagify rktll-imagify-notice">
@@ -30,4 +36,4 @@ $dismiss_url = wp_nonce_url(
30
  <p class="rktll-imagify-cta">
31
  <a data-slug="imagify" href="<?php echo esc_url($action_url); ?>" class="button button-primary install-now"><?php esc_html_e('Install Imagify for Free', 'rocket-lazy-load'); ?></a>
32
  </p>
33
- </div>
1
  <?php
2
+ /**
3
+ * Imagify notice view
4
+ *
5
+ * @package RocketLazyloadPlugin
6
+ */
7
+
8
  defined('ABSPATH') || die('Cheatin\' uh?');
9
 
10
  $action_url = wp_nonce_url(
16
  admin_url('update.php')
17
  ),
18
  'install-plugin_imagify'
19
+ ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound.
20
 
21
  $dismiss_url = wp_nonce_url(
22
  admin_url('admin-post.php?action=rocket_lazyload_ignore&box=rocket_lazyload_imagify_notice'),
23
  'rocket_lazyload_ignore_rocket_lazyload_imagify_notice'
24
+ ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound.
25
 
26
  ?>
27
  <div id="plugin-filter" class="updated plugin-card plugin-card-imagify rktll-imagify-notice">
36
  <p class="rktll-imagify-cta">
37
  <a data-slug="imagify" href="<?php echo esc_url($action_url); ?>" class="button button-primary install-now"><?php esc_html_e('Install Imagify for Free', 'rocket-lazy-load'); ?></a>
38
  </p>
39
+ </div>