Absolutely Glamorous Custom Admin - Version 7.0

Version Description

  • Improved security
  • Code cleanup
  • Removed farbtastic scripts
  • Properly using enqueue for scripts and dependencies
  • Small changes on General fields, better naming AGCA administrators > AGCA safe users
Download this release

Release Info

Developer cusmin
Plugin Icon 128x128 Absolutely Glamorous Custom Admin
Version 7.0
Comparing to
See all releases

Code changes from version 6.9.5 to 7.0

Files changed (10) hide show
  1. .gitignore +2 -1
  2. changelog.txt +10 -0
  3. composer.json +1 -1
  4. composer.lock +2919 -860
  5. plugin.php +211 -244
  6. readme.txt +11 -7
  7. script/ag_script.js +0 -4
  8. script/farbtastic.js +0 -346
  9. style/ag_style.css +4 -0
  10. style/farbtastic.css +0 -51
.gitignore CHANGED
@@ -1,3 +1,4 @@
1
  /vendor
2
  tests/_output/*
3
- codeception.yml
 
1
  /vendor
2
  tests/_output/*
3
+ codeception.yml
4
+ /.idea
changelog.txt CHANGED
@@ -1,5 +1,15 @@
1
  == Change Log ==
2
 
 
 
 
 
 
 
 
 
 
 
3
  = 6.9.4 =
4
  * Fixed: "Cannot hide Woocommerce Analytics button in the admin menu" issue
5
  * Small text improvements
1
  == Change Log ==
2
 
3
+ = 7.0 =
4
+ * Improved security
5
+ * Code cleanup
6
+ * Removed farbtastic scripts
7
+ * Properly using enqueue for scripts and dependencies
8
+ * Small changes on General fields, better naming AGCA administrators > AGCA safe users
9
+
10
+ = 6.9.5 =
11
+ * Improved security
12
+
13
  = 6.9.4 =
14
  * Fixed: "Cannot hide Woocommerce Analytics button in the admin menu" issue
15
  * Small text improvements
composer.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
  "require": {
3
- "codeception/codeception": "^2.2"
4
  }
5
  }
1
  {
2
  "require": {
3
+ "codeception/codeception": "^3.1"
4
  }
5
  }
composer.lock CHANGED
@@ -1,33 +1,33 @@
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
  "This file is @generated automatically"
6
  ],
7
- "hash": "fb5785c0a0e075cde41e6c79ac15d771",
8
- "content-hash": "c4884e34fd65287a5a178a1f79d98a2e",
9
  "packages": [
10
  {
11
  "name": "behat/gherkin",
12
- "version": "v4.4.5",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/Behat/Gherkin.git",
16
- "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74"
17
  },
18
  "dist": {
19
  "type": "zip",
20
- "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74",
21
- "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74",
22
  "shasum": ""
23
  },
24
  "require": {
25
- "php": ">=5.3.1"
26
  },
27
  "require-dev": {
28
- "phpunit/phpunit": "~4.5|~5",
29
- "symfony/phpunit-bridge": "~2.7|~3",
30
- "symfony/yaml": "~2.3|~3"
 
31
  },
32
  "suggest": {
33
  "symfony/yaml": "If you want to parse features, represented in YAML files"
@@ -54,7 +54,7 @@
54
  "homepage": "http://everzet.com"
55
  }
56
  ],
57
- "description": "Gherkin DSL parser for PHP 5.3",
58
  "homepage": "http://behat.org/",
59
  "keywords": [
60
  "BDD",
@@ -64,62 +64,71 @@
64
  "gherkin",
65
  "parser"
66
  ],
67
- "time": "2016-10-30 11:50:56"
 
 
 
 
68
  },
69
  {
70
  "name": "codeception/codeception",
71
- "version": "2.2.6",
72
  "source": {
73
  "type": "git",
74
  "url": "https://github.com/Codeception/Codeception.git",
75
- "reference": "5fbe312c8138e71458ec1e715b0ce262331ca5a2"
76
  },
77
  "dist": {
78
  "type": "zip",
79
- "url": "https://api.github.com/repos/Codeception/Codeception/zipball/5fbe312c8138e71458ec1e715b0ce262331ca5a2",
80
- "reference": "5fbe312c8138e71458ec1e715b0ce262331ca5a2",
81
  "shasum": ""
82
  },
83
  "require": {
84
- "behat/gherkin": "~4.4.0",
 
 
 
85
  "ext-json": "*",
86
  "ext-mbstring": "*",
87
- "facebook/webdriver": ">=1.0.1 <2.0",
88
- "guzzlehttp/guzzle": ">=4.1.4 <7.0",
89
- "guzzlehttp/psr7": "~1.0",
90
- "php": ">=5.4.0 <8.0",
91
- "phpunit/php-code-coverage": ">=2.1.3 <5.0",
92
- "phpunit/phpunit": ">4.8.20 <6.0",
93
- "sebastian/comparator": "~1.1",
94
- "sebastian/diff": "^1.4",
95
- "symfony/browser-kit": ">=2.7 <4.0",
96
- "symfony/console": ">=2.7 <4.0",
97
- "symfony/css-selector": ">=2.7 <4.0",
98
- "symfony/dom-crawler": ">=2.7 <4.0",
99
- "symfony/event-dispatcher": ">=2.7 <4.0",
100
- "symfony/finder": ">=2.7 <4.0",
101
- "symfony/yaml": ">=2.7 <4.0"
102
  },
103
  "require-dev": {
104
  "codeception/specify": "~0.3",
105
- "facebook/graph-sdk": "~5.3",
 
 
106
  "flow/jsonpath": "~0.2",
107
- "league/factory-muffin": "^3.0",
108
- "league/factory-muffin-faker": "^1.0",
109
- "mongodb/mongodb": "^1.0",
110
  "monolog/monolog": "~1.8",
111
  "pda/pheanstalk": "~3.0",
112
  "php-amqplib/php-amqplib": "~2.4",
113
  "predis/predis": "^1.0",
114
- "squizlabs/php_codesniffer": "~2.0"
 
 
 
115
  },
116
  "suggest": {
 
 
117
  "codeception/specify": "BDD-style code blocks",
118
  "codeception/verify": "BDD-style assertions",
119
  "flow/jsonpath": "For using JSONPath in REST module",
120
  "league/factory-muffin": "For DataFactory module",
121
  "league/factory-muffin-faker": "For Faker support in DataFactory module",
122
  "phpseclib/phpseclib": "for SFTP option in FTP Module",
 
123
  "symfony/phpunit-bridge": "For phpunit-bridge support"
124
  },
125
  "bin": [
@@ -131,7 +140,7 @@
131
  },
132
  "autoload": {
133
  "psr-4": {
134
- "Codeception\\": "src\\Codeception",
135
  "Codeception\\Extension\\": "ext"
136
  }
137
  },
@@ -155,38 +164,127 @@
155
  "functional testing",
156
  "unit testing"
157
  ],
158
- "time": "2016-10-27 00:00:34"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  },
160
  {
161
  "name": "doctrine/instantiator",
162
- "version": "1.0.5",
163
  "source": {
164
  "type": "git",
165
  "url": "https://github.com/doctrine/instantiator.git",
166
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
167
  },
168
  "dist": {
169
  "type": "zip",
170
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
171
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
172
  "shasum": ""
173
  },
174
  "require": {
175
- "php": ">=5.3,<8.0-DEV"
176
  },
177
  "require-dev": {
178
- "athletic/athletic": "~0.1.8",
179
  "ext-pdo": "*",
180
  "ext-phar": "*",
181
- "phpunit/phpunit": "~4.0",
182
- "squizlabs/php_codesniffer": "~2.0"
 
 
183
  },
184
  "type": "library",
185
- "extra": {
186
- "branch-alias": {
187
- "dev-master": "1.0.x-dev"
188
- }
189
- },
190
  "autoload": {
191
  "psr-4": {
192
  "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -200,45 +298,76 @@
200
  {
201
  "name": "Marco Pivetta",
202
  "email": "ocramius@gmail.com",
203
- "homepage": "http://ocramius.github.com/"
204
  }
205
  ],
206
  "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
207
- "homepage": "https://github.com/doctrine/instantiator",
208
  "keywords": [
209
  "constructor",
210
  "instantiate"
211
  ],
212
- "time": "2015-06-14 21:17:01"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  },
214
  {
215
  "name": "facebook/webdriver",
216
- "version": "1.2.0",
217
  "source": {
218
  "type": "git",
219
- "url": "https://github.com/facebook/php-webdriver.git",
220
- "reference": "af21de3ae5306a8ca0bcc02a19735dadc43e83f3"
221
  },
222
  "dist": {
223
  "type": "zip",
224
- "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/af21de3ae5306a8ca0bcc02a19735dadc43e83f3",
225
- "reference": "af21de3ae5306a8ca0bcc02a19735dadc43e83f3",
226
  "shasum": ""
227
  },
228
  "require": {
229
  "ext-curl": "*",
230
- "php": "^5.5 || ~7.0"
 
 
 
 
231
  },
232
  "require-dev": {
233
- "friendsofphp/php-cs-fixer": "^1.11",
 
 
234
  "php-mock/php-mock-phpunit": "^1.1",
235
- "phpunit/phpunit": "4.6.* || ~5.0",
236
- "squizlabs/php_codesniffer": "^2.6"
 
 
237
  },
238
  "suggest": {
239
- "phpdocumentor/phpdocumentor": "2.*"
240
  },
241
  "type": "library",
 
 
 
 
 
242
  "autoload": {
243
  "psr-4": {
244
  "Facebook\\WebDriver\\": "lib/"
@@ -248,7 +377,7 @@
248
  "license": [
249
  "Apache-2.0"
250
  ],
251
- "description": "A PHP client for WebDriver",
252
  "homepage": "https://github.com/facebook/php-webdriver",
253
  "keywords": [
254
  "facebook",
@@ -256,45 +385,56 @@
256
  "selenium",
257
  "webdriver"
258
  ],
259
- "time": "2016-10-14 15:16:51"
 
 
 
 
 
 
260
  },
261
  {
262
  "name": "guzzlehttp/guzzle",
263
- "version": "6.2.2",
264
  "source": {
265
  "type": "git",
266
  "url": "https://github.com/guzzle/guzzle.git",
267
- "reference": "ebf29dee597f02f09f4d5bbecc68230ea9b08f60"
268
  },
269
  "dist": {
270
  "type": "zip",
271
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ebf29dee597f02f09f4d5bbecc68230ea9b08f60",
272
- "reference": "ebf29dee597f02f09f4d5bbecc68230ea9b08f60",
273
  "shasum": ""
274
  },
275
  "require": {
 
276
  "guzzlehttp/promises": "^1.0",
277
- "guzzlehttp/psr7": "^1.3.1",
278
- "php": ">=5.5"
 
279
  },
280
  "require-dev": {
281
  "ext-curl": "*",
282
- "phpunit/phpunit": "^4.0",
283
- "psr/log": "^1.0"
 
 
 
284
  },
285
  "type": "library",
286
  "extra": {
287
  "branch-alias": {
288
- "dev-master": "6.2-dev"
289
  }
290
  },
291
  "autoload": {
292
- "files": [
293
- "src/functions_include.php"
294
- ],
295
  "psr-4": {
296
  "GuzzleHttp\\": "src/"
297
- }
 
 
 
298
  },
299
  "notification-url": "https://packagist.org/downloads/",
300
  "license": [
@@ -318,32 +458,36 @@
318
  "rest",
319
  "web service"
320
  ],
321
- "time": "2016-10-08 15:01:37"
 
 
 
 
322
  },
323
  {
324
  "name": "guzzlehttp/promises",
325
- "version": "1.3.0",
326
  "source": {
327
  "type": "git",
328
  "url": "https://github.com/guzzle/promises.git",
329
- "reference": "2693c101803ca78b27972d84081d027fca790a1e"
330
  },
331
  "dist": {
332
  "type": "zip",
333
- "url": "https://api.github.com/repos/guzzle/promises/zipball/2693c101803ca78b27972d84081d027fca790a1e",
334
- "reference": "2693c101803ca78b27972d84081d027fca790a1e",
335
  "shasum": ""
336
  },
337
  "require": {
338
- "php": ">=5.5.0"
339
  },
340
  "require-dev": {
341
- "phpunit/phpunit": "~4.0"
342
  },
343
  "type": "library",
344
  "extra": {
345
  "branch-alias": {
346
- "dev-master": "1.0-dev"
347
  }
348
  },
349
  "autoload": {
@@ -369,36 +513,45 @@
369
  "keywords": [
370
  "promise"
371
  ],
372
- "time": "2016-11-18 17:47:58"
 
 
 
 
373
  },
374
  {
375
  "name": "guzzlehttp/psr7",
376
- "version": "1.3.1",
377
  "source": {
378
  "type": "git",
379
  "url": "https://github.com/guzzle/psr7.git",
380
- "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b"
381
  },
382
  "dist": {
383
  "type": "zip",
384
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b",
385
- "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b",
386
  "shasum": ""
387
  },
388
  "require": {
389
  "php": ">=5.4.0",
390
- "psr/http-message": "~1.0"
 
391
  },
392
  "provide": {
393
  "psr/http-message-implementation": "1.0"
394
  },
395
  "require-dev": {
396
- "phpunit/phpunit": "~4.0"
 
 
 
 
397
  },
398
  "type": "library",
399
  "extra": {
400
  "branch-alias": {
401
- "dev-master": "1.4-dev"
402
  }
403
  },
404
  "autoload": {
@@ -418,310 +571,411 @@
418
  "name": "Michael Dowling",
419
  "email": "mtdowling@gmail.com",
420
  "homepage": "https://github.com/mtdowling"
 
 
 
 
421
  }
422
  ],
423
- "description": "PSR-7 message implementation",
424
  "keywords": [
425
  "http",
426
  "message",
 
 
 
427
  "stream",
428
- "uri"
 
429
  ],
430
- "time": "2016-06-24 23:00:38"
 
 
 
 
431
  },
432
  {
433
- "name": "myclabs/deep-copy",
434
- "version": "1.5.5",
435
  "source": {
436
  "type": "git",
437
- "url": "https://github.com/myclabs/DeepCopy.git",
438
- "reference": "399c1f9781e222f6eb6cc238796f5200d1b7f108"
439
  },
440
  "dist": {
441
  "type": "zip",
442
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/399c1f9781e222f6eb6cc238796f5200d1b7f108",
443
- "reference": "399c1f9781e222f6eb6cc238796f5200d1b7f108",
444
  "shasum": ""
445
  },
446
  "require": {
447
- "php": ">=5.4.0"
 
448
  },
449
  "require-dev": {
450
- "doctrine/collections": "1.*",
451
- "phpunit/phpunit": "~4.1"
452
  },
453
  "type": "library",
 
 
 
 
 
454
  "autoload": {
455
  "psr-4": {
456
- "DeepCopy\\": "src/DeepCopy/"
457
- }
 
 
 
458
  },
459
  "notification-url": "https://packagist.org/downloads/",
460
  "license": [
461
- "MIT"
462
  ],
463
- "description": "Create deep copies (clones) of your objects",
464
- "homepage": "https://github.com/myclabs/DeepCopy",
 
 
 
 
 
 
 
 
 
 
465
  "keywords": [
466
- "clone",
467
- "copy",
468
- "duplicate",
469
- "object",
470
- "object graph"
 
 
471
  ],
472
- "time": "2016-10-31 17:19:45"
 
 
 
 
 
 
 
 
473
  },
474
  {
475
- "name": "phpdocumentor/reflection-common",
476
- "version": "1.0",
477
  "source": {
478
  "type": "git",
479
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
480
- "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
481
  },
482
  "dist": {
483
  "type": "zip",
484
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
485
- "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
486
  "shasum": ""
487
  },
488
  "require": {
489
- "php": ">=5.5"
 
 
 
 
 
 
490
  },
491
  "require-dev": {
492
- "phpunit/phpunit": "^4.6"
 
 
 
 
 
493
  },
494
  "type": "library",
495
  "extra": {
496
  "branch-alias": {
497
- "dev-master": "1.0.x-dev"
498
  }
499
  },
500
  "autoload": {
501
  "psr-4": {
502
- "phpDocumentor\\Reflection\\": [
503
- "src"
504
- ]
505
  }
506
  },
507
  "notification-url": "https://packagist.org/downloads/",
508
  "license": [
509
- "MIT"
510
  ],
511
  "authors": [
512
  {
513
- "name": "Jaap van Otterdijk",
514
- "email": "opensource@ijaap.nl"
 
 
 
 
515
  }
516
  ],
517
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
518
- "homepage": "http://www.phpdoc.org",
519
  "keywords": [
520
- "FQSEN",
521
- "phpDocumentor",
522
- "phpdoc",
523
- "reflection",
524
- "static analysis"
 
 
 
 
 
 
 
 
 
525
  ],
526
- "time": "2015-12-27 11:43:31"
 
 
 
 
 
 
 
 
527
  },
528
  {
529
- "name": "phpdocumentor/reflection-docblock",
530
- "version": "3.1.1",
531
  "source": {
532
  "type": "git",
533
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
534
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
535
  },
536
  "dist": {
537
  "type": "zip",
538
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
539
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
540
  "shasum": ""
541
  },
542
  "require": {
543
- "php": ">=5.5",
544
- "phpdocumentor/reflection-common": "^1.0@dev",
545
- "phpdocumentor/type-resolver": "^0.2.0",
546
- "webmozart/assert": "^1.0"
547
  },
548
  "require-dev": {
549
- "mockery/mockery": "^0.9.4",
550
- "phpunit/phpunit": "^4.4"
551
  },
552
  "type": "library",
 
 
 
 
 
553
  "autoload": {
554
  "psr-4": {
555
- "phpDocumentor\\Reflection\\": [
556
- "src/"
557
- ]
558
  }
559
  },
560
  "notification-url": "https://packagist.org/downloads/",
561
  "license": [
562
- "MIT"
563
  ],
564
  "authors": [
565
  {
566
- "name": "Mike van Riel",
567
- "email": "me@mikevanriel.com"
 
 
 
 
568
  }
569
  ],
570
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
571
- "time": "2016-09-30 07:12:33"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
  },
573
  {
574
- "name": "phpdocumentor/type-resolver",
575
- "version": "0.2.1",
576
  "source": {
577
  "type": "git",
578
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
579
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
580
  },
581
  "dist": {
582
  "type": "zip",
583
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
584
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
585
  "shasum": ""
586
  },
587
  "require": {
588
- "php": ">=5.5",
589
- "phpdocumentor/reflection-common": "^1.0"
590
  },
591
  "require-dev": {
592
- "mockery/mockery": "^0.9.4",
593
- "phpunit/phpunit": "^5.2||^4.8.24"
594
  },
595
  "type": "library",
596
  "extra": {
597
  "branch-alias": {
598
- "dev-master": "1.0.x-dev"
599
  }
600
  },
601
  "autoload": {
602
  "psr-4": {
603
- "phpDocumentor\\Reflection\\": [
604
- "src/"
605
- ]
606
  }
607
  },
608
  "notification-url": "https://packagist.org/downloads/",
609
  "license": [
610
- "MIT"
611
  ],
612
  "authors": [
613
  {
614
- "name": "Mike van Riel",
615
- "email": "me@mikevanriel.com"
 
 
 
 
616
  }
617
  ],
618
- "time": "2016-11-25 06:54:22"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
619
  },
620
  {
621
- "name": "phpspec/prophecy",
622
- "version": "v1.6.2",
623
  "source": {
624
  "type": "git",
625
- "url": "https://github.com/phpspec/prophecy.git",
626
- "reference": "6c52c2722f8460122f96f86346600e1077ce22cb"
627
  },
628
  "dist": {
629
  "type": "zip",
630
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb",
631
- "reference": "6c52c2722f8460122f96f86346600e1077ce22cb",
632
  "shasum": ""
633
  },
634
  "require": {
635
- "doctrine/instantiator": "^1.0.2",
636
- "php": "^5.3|^7.0",
637
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
638
- "sebastian/comparator": "^1.1",
639
- "sebastian/recursion-context": "^1.0|^2.0"
640
  },
641
  "require-dev": {
642
- "phpspec/phpspec": "^2.0",
643
- "phpunit/phpunit": "^4.8 || ^5.6.5"
644
  },
645
  "type": "library",
646
  "extra": {
647
  "branch-alias": {
648
- "dev-master": "1.6.x-dev"
649
  }
650
  },
651
  "autoload": {
652
- "psr-0": {
653
- "Prophecy\\": "src/"
654
  }
655
  },
656
  "notification-url": "https://packagist.org/downloads/",
657
  "license": [
658
- "MIT"
659
  ],
660
  "authors": [
661
  {
662
- "name": "Konstantin Kudryashov",
663
- "email": "ever.zet@gmail.com",
664
- "homepage": "http://everzet.com"
665
  },
666
  {
667
- "name": "Marcello Duarte",
668
- "email": "marcello.duarte@gmail.com"
669
  }
670
  ],
671
- "description": "Highly opinionated mocking framework for PHP 5.3+",
672
- "homepage": "https://github.com/phpspec/prophecy",
673
  "keywords": [
674
- "Double",
675
- "Dummy",
676
- "fake",
677
- "mock",
678
- "spy",
679
- "stub"
 
680
  ],
681
- "time": "2016-11-21 14:58:47"
 
 
 
 
 
 
 
 
682
  },
683
  {
684
- "name": "phpunit/php-code-coverage",
685
- "version": "4.0.3",
686
  "source": {
687
  "type": "git",
688
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
689
- "reference": "903fd6318d0a90b4770a009ff73e4a4e9c437929"
690
  },
691
  "dist": {
692
  "type": "zip",
693
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/903fd6318d0a90b4770a009ff73e4a4e9c437929",
694
- "reference": "903fd6318d0a90b4770a009ff73e4a4e9c437929",
695
  "shasum": ""
696
  },
697
  "require": {
698
- "php": "^5.6 || ^7.0",
699
- "phpunit/php-file-iterator": "~1.3",
700
- "phpunit/php-text-template": "~1.2",
701
- "phpunit/php-token-stream": "^1.4.2",
702
- "sebastian/code-unit-reverse-lookup": "~1.0",
703
- "sebastian/environment": "^1.3.2 || ^2.0",
704
- "sebastian/version": "~1.0|~2.0"
705
  },
706
  "require-dev": {
707
- "ext-xdebug": ">=2.1.4",
708
- "phpunit/phpunit": "^5.4"
709
- },
710
- "suggest": {
711
- "ext-dom": "*",
712
- "ext-xdebug": ">=2.4.0",
713
- "ext-xmlwriter": "*"
714
  },
715
  "type": "library",
716
  "extra": {
717
  "branch-alias": {
718
- "dev-master": "4.0.x-dev"
719
  }
720
  },
721
  "autoload": {
722
- "classmap": [
723
- "src/"
724
- ]
725
  },
726
  "notification-url": "https://packagist.org/downloads/",
727
  "license": [
@@ -729,46 +983,63 @@
729
  ],
730
  "authors": [
731
  {
732
- "name": "Sebastian Bergmann",
733
- "email": "sb@sebastian-bergmann.de",
734
- "role": "lead"
 
 
 
735
  }
736
  ],
737
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
738
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
739
  "keywords": [
740
- "coverage",
741
- "testing",
742
- "xunit"
743
  ],
744
- "time": "2016-11-28 16:00:31"
 
 
 
 
 
 
 
 
745
  },
746
  {
747
- "name": "phpunit/php-file-iterator",
748
- "version": "1.4.2",
749
  "source": {
750
  "type": "git",
751
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
752
- "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
753
  },
754
  "dist": {
755
  "type": "zip",
756
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
757
- "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
758
  "shasum": ""
759
  },
760
  "require": {
761
- "php": ">=5.3.3"
 
 
 
 
762
  },
763
  "type": "library",
764
  "extra": {
765
  "branch-alias": {
766
- "dev-master": "1.4.x-dev"
767
  }
768
  },
769
  "autoload": {
770
- "classmap": [
771
- "src/"
 
 
 
772
  ]
773
  },
774
  "notification-url": "https://packagist.org/downloads/",
@@ -777,41 +1048,66 @@
777
  ],
778
  "authors": [
779
  {
780
- "name": "Sebastian Bergmann",
781
- "email": "sb@sebastian-bergmann.de",
782
- "role": "lead"
 
 
 
783
  }
784
  ],
785
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
786
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
787
  "keywords": [
788
- "filesystem",
789
- "iterator"
 
 
 
790
  ],
791
- "time": "2016-10-03 07:40:28"
 
 
 
 
 
 
 
 
792
  },
793
  {
794
- "name": "phpunit/php-text-template",
795
- "version": "1.2.1",
796
  "source": {
797
  "type": "git",
798
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
799
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
800
  },
801
  "dist": {
802
  "type": "zip",
803
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
804
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
805
  "shasum": ""
806
  },
807
  "require": {
808
- "php": ">=5.3.3"
 
 
 
 
 
 
809
  },
810
  "type": "library",
 
 
 
 
 
811
  "autoload": {
812
- "classmap": [
813
- "src/"
814
- ]
815
  },
816
  "notification-url": "https://packagist.org/downloads/",
817
  "license": [
@@ -819,43 +1115,73 @@
819
  ],
820
  "authors": [
821
  {
822
- "name": "Sebastian Bergmann",
823
- "email": "sebastian@phpunit.de",
824
- "role": "lead"
 
 
 
825
  }
826
  ],
827
- "description": "Simple template engine.",
828
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
829
  "keywords": [
830
- "template"
 
 
 
 
 
 
 
 
 
831
  ],
832
- "time": "2015-06-21 13:50:34"
 
 
 
 
 
 
 
 
833
  },
834
  {
835
- "name": "phpunit/php-timer",
836
- "version": "1.0.8",
837
  "source": {
838
  "type": "git",
839
- "url": "https://github.com/sebastianbergmann/php-timer.git",
840
- "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
841
  },
842
  "dist": {
843
  "type": "zip",
844
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
845
- "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
846
  "shasum": ""
847
  },
848
  "require": {
849
- "php": ">=5.3.3"
 
850
  },
851
  "require-dev": {
852
- "phpunit/phpunit": "~4|~5"
 
 
 
 
853
  },
854
  "type": "library",
 
 
 
 
 
855
  "autoload": {
856
- "classmap": [
857
- "src/"
858
- ]
859
  },
860
  "notification-url": "https://packagist.org/downloads/",
861
  "license": [
@@ -863,122 +1189,115 @@
863
  ],
864
  "authors": [
865
  {
866
- "name": "Sebastian Bergmann",
867
- "email": "sb@sebastian-bergmann.de",
868
- "role": "lead"
 
 
 
869
  }
870
  ],
871
- "description": "Utility class for timing",
872
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
873
  "keywords": [
874
- "timer"
 
 
 
875
  ],
876
- "time": "2016-05-12 18:03:57"
 
 
 
 
 
 
 
 
877
  },
878
  {
879
- "name": "phpunit/php-token-stream",
880
- "version": "1.4.9",
881
  "source": {
882
  "type": "git",
883
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
884
- "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b"
885
  },
886
  "dist": {
887
  "type": "zip",
888
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b",
889
- "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b",
890
  "shasum": ""
891
  },
892
  "require": {
893
- "ext-tokenizer": "*",
894
- "php": ">=5.3.3"
 
 
895
  },
896
  "require-dev": {
897
- "phpunit/phpunit": "~4.2"
 
 
898
  },
899
  "type": "library",
900
- "extra": {
901
- "branch-alias": {
902
- "dev-master": "1.4-dev"
903
- }
904
- },
905
  "autoload": {
906
- "classmap": [
907
- "src/"
 
 
 
908
  ]
909
  },
910
  "notification-url": "https://packagist.org/downloads/",
911
  "license": [
912
- "BSD-3-Clause"
913
  ],
914
- "authors": [
 
 
 
 
 
 
 
 
 
 
 
 
915
  {
916
- "name": "Sebastian Bergmann",
917
- "email": "sebastian@phpunit.de"
918
  }
919
  ],
920
- "description": "Wrapper around PHP's tokenizer extension.",
921
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
922
- "keywords": [
923
- "tokenizer"
924
- ],
925
- "time": "2016-11-15 14:06:22"
926
  },
927
  {
928
- "name": "phpunit/phpunit",
929
- "version": "5.7.2",
930
  "source": {
931
  "type": "git",
932
- "url": "https://github.com/sebastianbergmann/phpunit.git",
933
- "reference": "336aff0ac52e306c98e7455bc3e8d7b0bf777a5e"
934
  },
935
  "dist": {
936
  "type": "zip",
937
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/336aff0ac52e306c98e7455bc3e8d7b0bf777a5e",
938
- "reference": "336aff0ac52e306c98e7455bc3e8d7b0bf777a5e",
939
  "shasum": ""
940
  },
941
  "require": {
942
  "ext-dom": "*",
943
- "ext-json": "*",
944
- "ext-libxml": "*",
945
- "ext-mbstring": "*",
946
- "ext-xml": "*",
947
- "myclabs/deep-copy": "~1.3",
948
- "php": "^5.6 || ^7.0",
949
- "phpspec/prophecy": "^1.3.1",
950
- "phpunit/php-code-coverage": "^4.0.3",
951
- "phpunit/php-file-iterator": "~1.4",
952
- "phpunit/php-text-template": "~1.2",
953
- "phpunit/php-timer": "^1.0.6",
954
- "phpunit/phpunit-mock-objects": "^3.2",
955
- "sebastian/comparator": "~1.2.2",
956
- "sebastian/diff": "~1.2",
957
- "sebastian/environment": "^1.3.4 || ^2.0",
958
- "sebastian/exporter": "~2.0",
959
- "sebastian/global-state": "~1.0",
960
- "sebastian/object-enumerator": "~2.0",
961
- "sebastian/resource-operations": "~1.0",
962
- "sebastian/version": "~1.0|~2.0",
963
- "symfony/yaml": "~2.1|~3.0"
964
- },
965
- "conflict": {
966
- "phpdocumentor/reflection-docblock": "3.0.2"
967
- },
968
- "require-dev": {
969
- "ext-pdo": "*"
970
- },
971
- "suggest": {
972
- "ext-xdebug": "*",
973
- "phpunit/php-invoker": "~1.1"
974
  },
975
- "bin": [
976
- "phpunit"
977
- ],
978
  "type": "library",
979
  "extra": {
980
  "branch-alias": {
981
- "dev-master": "5.7.x-dev"
982
  }
983
  },
984
  "autoload": {
@@ -991,56 +1310,47 @@
991
  "BSD-3-Clause"
992
  ],
993
  "authors": [
 
 
 
 
 
 
 
 
 
 
994
  {
995
  "name": "Sebastian Bergmann",
996
  "email": "sebastian@phpunit.de",
997
- "role": "lead"
998
  }
999
  ],
1000
- "description": "The PHP Unit Testing framework.",
1001
- "homepage": "https://phpunit.de/",
1002
- "keywords": [
1003
- "phpunit",
1004
- "testing",
1005
- "xunit"
1006
- ],
1007
- "time": "2016-12-03 08:33:00"
1008
  },
1009
  {
1010
- "name": "phpunit/phpunit-mock-objects",
1011
- "version": "3.4.2",
1012
  "source": {
1013
  "type": "git",
1014
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1015
- "reference": "90a08f5deed5f7ac35463c161f2e8fa0e5652faf"
1016
  },
1017
  "dist": {
1018
  "type": "zip",
1019
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/90a08f5deed5f7ac35463c161f2e8fa0e5652faf",
1020
- "reference": "90a08f5deed5f7ac35463c161f2e8fa0e5652faf",
1021
  "shasum": ""
1022
  },
1023
  "require": {
1024
- "doctrine/instantiator": "^1.0.2",
1025
- "php": "^5.6 || ^7.0",
1026
- "phpunit/php-text-template": "^1.2",
1027
- "sebastian/exporter": "^1.2 || ^2.0"
1028
- },
1029
- "conflict": {
1030
- "phpunit/phpunit": "<5.4.0"
1031
- },
1032
- "require-dev": {
1033
- "phpunit/phpunit": "^5.4"
1034
- },
1035
- "suggest": {
1036
- "ext-soap": "*"
1037
  },
1038
  "type": "library",
1039
- "extra": {
1040
- "branch-alias": {
1041
- "dev-master": "3.2.x-dev"
1042
- }
1043
- },
1044
  "autoload": {
1045
  "classmap": [
1046
  "src/"
@@ -1051,46 +1361,55 @@
1051
  "BSD-3-Clause"
1052
  ],
1053
  "authors": [
 
 
 
 
 
 
 
 
 
 
1054
  {
1055
  "name": "Sebastian Bergmann",
1056
- "email": "sb@sebastian-bergmann.de",
1057
- "role": "lead"
1058
  }
1059
  ],
1060
- "description": "Mock Object library for PHPUnit",
1061
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1062
- "keywords": [
1063
- "mock",
1064
- "xunit"
1065
- ],
1066
- "time": "2016-11-27 07:52:03"
1067
  },
1068
  {
1069
- "name": "psr/http-message",
1070
- "version": "1.0.1",
1071
  "source": {
1072
  "type": "git",
1073
- "url": "https://github.com/php-fig/http-message.git",
1074
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1075
  },
1076
  "dist": {
1077
  "type": "zip",
1078
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1079
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1080
  "shasum": ""
1081
  },
1082
  "require": {
1083
- "php": ">=5.3.0"
1084
  },
1085
  "type": "library",
1086
  "extra": {
1087
  "branch-alias": {
1088
- "dev-master": "1.0.x-dev"
1089
  }
1090
  },
1091
  "autoload": {
1092
  "psr-4": {
1093
- "Psr\\Http\\Message\\": "src/"
1094
  }
1095
  },
1096
  "notification-url": "https://packagist.org/downloads/",
@@ -1099,48 +1418,58 @@
1099
  ],
1100
  "authors": [
1101
  {
1102
- "name": "PHP-FIG",
1103
- "homepage": "http://www.php-fig.org/"
1104
  }
1105
  ],
1106
- "description": "Common interface for HTTP messages",
1107
- "homepage": "https://github.com/php-fig/http-message",
1108
  "keywords": [
1109
- "http",
1110
- "http-message",
1111
- "psr",
1112
- "psr-7",
1113
- "request",
1114
- "response"
1115
  ],
1116
- "time": "2016-08-06 14:39:51"
 
 
 
 
1117
  },
1118
  {
1119
- "name": "psr/log",
1120
- "version": "1.0.2",
1121
  "source": {
1122
  "type": "git",
1123
- "url": "https://github.com/php-fig/log.git",
1124
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
1125
  },
1126
  "dist": {
1127
  "type": "zip",
1128
- "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
1129
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
1130
  "shasum": ""
1131
  },
1132
  "require": {
1133
- "php": ">=5.3.0"
 
 
 
 
 
 
 
1134
  },
1135
  "type": "library",
1136
  "extra": {
1137
  "branch-alias": {
1138
- "dev-master": "1.0.x-dev"
1139
  }
1140
  },
1141
  "autoload": {
1142
  "psr-4": {
1143
- "Psr\\Log\\": "Psr/Log/"
1144
  }
1145
  },
1146
  "notification-url": "https://packagist.org/downloads/",
@@ -1149,152 +1478,173 @@
1149
  ],
1150
  "authors": [
1151
  {
1152
- "name": "PHP-FIG",
1153
- "homepage": "http://www.php-fig.org/"
 
 
 
 
1154
  }
1155
  ],
1156
- "description": "Common interface for logging libraries",
1157
- "homepage": "https://github.com/php-fig/log",
1158
- "keywords": [
1159
- "log",
1160
- "psr",
1161
- "psr-3"
1162
- ],
1163
- "time": "2016-10-10 12:19:37"
1164
  },
1165
  {
1166
- "name": "sebastian/code-unit-reverse-lookup",
1167
- "version": "1.0.0",
1168
  "source": {
1169
  "type": "git",
1170
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1171
- "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe"
1172
  },
1173
  "dist": {
1174
  "type": "zip",
1175
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
1176
- "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
1177
  "shasum": ""
1178
  },
1179
  "require": {
1180
- "php": ">=5.6"
 
1181
  },
1182
  "require-dev": {
1183
- "phpunit/phpunit": "~5"
1184
  },
1185
  "type": "library",
1186
  "extra": {
1187
  "branch-alias": {
1188
- "dev-master": "1.0.x-dev"
1189
  }
1190
  },
1191
  "autoload": {
1192
- "classmap": [
1193
- "src/"
1194
- ]
1195
  },
1196
  "notification-url": "https://packagist.org/downloads/",
1197
  "license": [
1198
- "BSD-3-Clause"
1199
  ],
1200
  "authors": [
1201
  {
1202
- "name": "Sebastian Bergmann",
1203
- "email": "sebastian@phpunit.de"
1204
  }
1205
  ],
1206
- "description": "Looks up which function or method a line of code belongs to",
1207
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1208
- "time": "2016-02-13 06:45:14"
 
 
 
1209
  },
1210
  {
1211
- "name": "sebastian/comparator",
1212
- "version": "1.2.2",
1213
  "source": {
1214
  "type": "git",
1215
- "url": "https://github.com/sebastianbergmann/comparator.git",
1216
- "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f"
1217
  },
1218
  "dist": {
1219
  "type": "zip",
1220
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f",
1221
- "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f",
1222
  "shasum": ""
1223
  },
1224
  "require": {
1225
- "php": ">=5.3.3",
1226
- "sebastian/diff": "~1.2",
1227
- "sebastian/exporter": "~1.2 || ~2.0"
 
 
1228
  },
1229
  "require-dev": {
1230
- "phpunit/phpunit": "~4.4"
 
1231
  },
1232
  "type": "library",
1233
  "extra": {
1234
  "branch-alias": {
1235
- "dev-master": "1.2.x-dev"
1236
  }
1237
  },
1238
  "autoload": {
1239
- "classmap": [
1240
- "src/"
1241
- ]
1242
  },
1243
  "notification-url": "https://packagist.org/downloads/",
1244
  "license": [
1245
- "BSD-3-Clause"
1246
  ],
1247
  "authors": [
1248
  {
1249
- "name": "Jeff Welch",
1250
- "email": "whatthejeff@gmail.com"
1251
- },
1252
- {
1253
- "name": "Volker Dusch",
1254
- "email": "github@wallbash.com"
1255
- },
1256
- {
1257
- "name": "Bernhard Schussek",
1258
- "email": "bschussek@2bepublished.at"
1259
  },
1260
  {
1261
- "name": "Sebastian Bergmann",
1262
- "email": "sebastian@phpunit.de"
1263
  }
1264
  ],
1265
- "description": "Provides the functionality to compare PHP values for equality",
1266
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
1267
  "keywords": [
1268
- "comparator",
1269
- "compare",
1270
- "equality"
 
 
 
1271
  ],
1272
- "time": "2016-11-19 09:18:40"
 
 
 
 
1273
  },
1274
  {
1275
- "name": "sebastian/diff",
1276
- "version": "1.4.1",
1277
  "source": {
1278
  "type": "git",
1279
- "url": "https://github.com/sebastianbergmann/diff.git",
1280
- "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
1281
  },
1282
  "dist": {
1283
  "type": "zip",
1284
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
1285
- "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
1286
  "shasum": ""
1287
  },
1288
  "require": {
1289
- "php": ">=5.3.3"
 
 
 
 
 
 
 
 
 
1290
  },
1291
  "require-dev": {
1292
- "phpunit/phpunit": "~4.8"
 
 
 
1293
  },
1294
  "type": "library",
1295
  "extra": {
1296
  "branch-alias": {
1297
- "dev-master": "1.4-dev"
1298
  }
1299
  },
1300
  "autoload": {
@@ -1307,41 +1657,50 @@
1307
  "BSD-3-Clause"
1308
  ],
1309
  "authors": [
1310
- {
1311
- "name": "Kore Nordmann",
1312
- "email": "mail@kore-nordmann.de"
1313
- },
1314
  {
1315
  "name": "Sebastian Bergmann",
1316
- "email": "sebastian@phpunit.de"
 
1317
  }
1318
  ],
1319
- "description": "Diff implementation",
1320
- "homepage": "https://github.com/sebastianbergmann/diff",
1321
  "keywords": [
1322
- "diff"
 
 
1323
  ],
1324
- "time": "2015-12-08 07:14:41"
 
 
 
 
 
 
 
 
 
 
1325
  },
1326
  {
1327
- "name": "sebastian/environment",
1328
- "version": "2.0.0",
1329
  "source": {
1330
  "type": "git",
1331
- "url": "https://github.com/sebastianbergmann/environment.git",
1332
- "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
1333
  },
1334
  "dist": {
1335
  "type": "zip",
1336
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1337
- "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1338
  "shasum": ""
1339
  },
1340
  "require": {
1341
- "php": "^5.6 || ^7.0"
1342
  },
1343
  "require-dev": {
1344
- "phpunit/phpunit": "^5.0"
1345
  },
1346
  "type": "library",
1347
  "extra": {
@@ -1361,46 +1720,46 @@
1361
  "authors": [
1362
  {
1363
  "name": "Sebastian Bergmann",
1364
- "email": "sebastian@phpunit.de"
 
1365
  }
1366
  ],
1367
- "description": "Provides functionality to handle HHVM/PHP environments",
1368
- "homepage": "http://www.github.com/sebastianbergmann/environment",
1369
  "keywords": [
1370
- "Xdebug",
1371
- "environment",
1372
- "hhvm"
 
 
 
 
 
 
 
 
 
1373
  ],
1374
- "time": "2016-11-26 07:53:53"
1375
  },
1376
  {
1377
- "name": "sebastian/exporter",
1378
- "version": "2.0.0",
1379
  "source": {
1380
  "type": "git",
1381
- "url": "https://github.com/sebastianbergmann/exporter.git",
1382
- "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
1383
  },
1384
  "dist": {
1385
  "type": "zip",
1386
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1387
- "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1388
  "shasum": ""
1389
  },
1390
  "require": {
1391
- "php": ">=5.3.3",
1392
- "sebastian/recursion-context": "~2.0"
1393
- },
1394
- "require-dev": {
1395
- "ext-mbstring": "*",
1396
- "phpunit/phpunit": "~4.4"
1397
  },
1398
  "type": "library",
1399
- "extra": {
1400
- "branch-alias": {
1401
- "dev-master": "2.0.x-dev"
1402
- }
1403
- },
1404
  "autoload": {
1405
  "classmap": [
1406
  "src/"
@@ -1411,62 +1770,47 @@
1411
  "BSD-3-Clause"
1412
  ],
1413
  "authors": [
1414
- {
1415
- "name": "Jeff Welch",
1416
- "email": "whatthejeff@gmail.com"
1417
- },
1418
- {
1419
- "name": "Volker Dusch",
1420
- "email": "github@wallbash.com"
1421
- },
1422
- {
1423
- "name": "Bernhard Schussek",
1424
- "email": "bschussek@2bepublished.at"
1425
- },
1426
  {
1427
  "name": "Sebastian Bergmann",
1428
- "email": "sebastian@phpunit.de"
1429
- },
1430
- {
1431
- "name": "Adam Harvey",
1432
- "email": "aharvey@php.net"
1433
  }
1434
  ],
1435
- "description": "Provides the functionality to export PHP variables for visualization",
1436
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
1437
  "keywords": [
1438
- "export",
1439
- "exporter"
1440
  ],
1441
- "time": "2016-11-19 08:54:04"
 
 
 
 
1442
  },
1443
  {
1444
- "name": "sebastian/global-state",
1445
- "version": "1.1.1",
1446
  "source": {
1447
  "type": "git",
1448
- "url": "https://github.com/sebastianbergmann/global-state.git",
1449
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
1450
  },
1451
  "dist": {
1452
  "type": "zip",
1453
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
1454
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
1455
  "shasum": ""
1456
  },
1457
  "require": {
1458
- "php": ">=5.3.3"
1459
  },
1460
  "require-dev": {
1461
- "phpunit/phpunit": "~4.2"
1462
- },
1463
- "suggest": {
1464
- "ext-uopz": "*"
1465
  },
1466
  "type": "library",
1467
  "extra": {
1468
  "branch-alias": {
1469
- "dev-master": "1.0-dev"
1470
  }
1471
  },
1472
  "autoload": {
@@ -1481,41 +1825,52 @@
1481
  "authors": [
1482
  {
1483
  "name": "Sebastian Bergmann",
1484
- "email": "sebastian@phpunit.de"
 
1485
  }
1486
  ],
1487
- "description": "Snapshotting of global state",
1488
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
1489
  "keywords": [
1490
- "global state"
 
 
 
 
 
 
 
 
 
 
1491
  ],
1492
- "time": "2015-10-12 03:26:01"
1493
  },
1494
  {
1495
- "name": "sebastian/object-enumerator",
1496
- "version": "2.0.0",
1497
  "source": {
1498
  "type": "git",
1499
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1500
- "reference": "96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35"
1501
  },
1502
  "dist": {
1503
  "type": "zip",
1504
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35",
1505
- "reference": "96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35",
1506
  "shasum": ""
1507
  },
1508
  "require": {
1509
- "php": ">=5.6",
1510
- "sebastian/recursion-context": "~2.0"
1511
  },
1512
  "require-dev": {
1513
- "phpunit/phpunit": "~5"
1514
  },
1515
  "type": "library",
1516
  "extra": {
1517
  "branch-alias": {
1518
- "dev-master": "2.0.x-dev"
1519
  }
1520
  },
1521
  "autoload": {
@@ -1533,34 +1888,80 @@
1533
  "email": "sebastian@phpunit.de"
1534
  }
1535
  ],
1536
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1537
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1538
- "time": "2016-11-19 07:35:10"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1539
  },
1540
  {
1541
- "name": "sebastian/recursion-context",
1542
- "version": "2.0.0",
1543
  "source": {
1544
  "type": "git",
1545
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
1546
- "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
1547
  },
1548
  "dist": {
1549
  "type": "zip",
1550
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1551
- "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1552
  "shasum": ""
1553
  },
1554
  "require": {
1555
- "php": ">=5.3.3"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1556
  },
1557
  "require-dev": {
1558
- "phpunit/phpunit": "~4.4"
 
 
 
 
 
1559
  },
 
 
 
1560
  "type": "library",
1561
  "extra": {
1562
  "branch-alias": {
1563
- "dev-master": "2.0.x-dev"
1564
  }
1565
  },
1566
  "autoload": {
@@ -1573,39 +1974,99 @@
1573
  "BSD-3-Clause"
1574
  ],
1575
  "authors": [
1576
- {
1577
- "name": "Jeff Welch",
1578
- "email": "whatthejeff@gmail.com"
1579
- },
1580
  {
1581
  "name": "Sebastian Bergmann",
1582
- "email": "sebastian@phpunit.de"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1583
  },
1584
  {
1585
- "name": "Adam Harvey",
1586
- "email": "aharvey@php.net"
1587
  }
1588
  ],
1589
- "description": "Provides functionality to recursively process PHP variables",
1590
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1591
- "time": "2016-11-19 07:33:16"
1592
  },
1593
  {
1594
- "name": "sebastian/resource-operations",
1595
- "version": "1.0.0",
1596
  "source": {
1597
  "type": "git",
1598
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
1599
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1600
  },
1601
  "dist": {
1602
  "type": "zip",
1603
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1604
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1605
  "shasum": ""
1606
  },
1607
  "require": {
1608
- "php": ">=5.6.0"
1609
  },
1610
  "type": "library",
1611
  "extra": {
@@ -1614,167 +2075,1540 @@
1614
  }
1615
  },
1616
  "autoload": {
1617
- "classmap": [
1618
- "src/"
1619
- ]
1620
  },
1621
  "notification-url": "https://packagist.org/downloads/",
1622
  "license": [
1623
- "BSD-3-Clause"
1624
  ],
1625
  "authors": [
1626
  {
1627
- "name": "Sebastian Bergmann",
1628
- "email": "sebastian@phpunit.de"
1629
  }
1630
  ],
1631
- "description": "Provides a list of PHP built-in functions that operate on resources",
1632
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1633
- "time": "2015-07-28 20:34:47"
 
 
 
 
 
 
 
 
 
 
 
1634
  },
1635
  {
1636
- "name": "sebastian/version",
1637
- "version": "2.0.1",
1638
  "source": {
1639
  "type": "git",
1640
- "url": "https://github.com/sebastianbergmann/version.git",
1641
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1642
  },
1643
  "dist": {
1644
  "type": "zip",
1645
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1646
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1647
  "shasum": ""
1648
  },
1649
  "require": {
1650
  "php": ">=5.6"
1651
  },
1652
- "type": "library",
1653
- "extra": {
1654
- "branch-alias": {
1655
- "dev-master": "2.0.x-dev"
1656
- }
1657
  },
 
1658
  "autoload": {
1659
- "classmap": [
1660
- "src/"
1661
  ]
1662
  },
1663
  "notification-url": "https://packagist.org/downloads/",
1664
  "license": [
1665
- "BSD-3-Clause"
1666
  ],
1667
  "authors": [
1668
  {
1669
- "name": "Sebastian Bergmann",
1670
- "email": "sebastian@phpunit.de",
1671
- "role": "lead"
1672
  }
1673
  ],
1674
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1675
- "homepage": "https://github.com/sebastianbergmann/version",
1676
- "time": "2016-10-03 07:35:21"
 
 
 
1677
  },
1678
  {
1679
- "name": "symfony/browser-kit",
1680
- "version": "v3.2.0",
1681
  "source": {
1682
  "type": "git",
1683
- "url": "https://github.com/symfony/browser-kit.git",
1684
- "reference": "34348c2691ce6254e8e008026f4c5e72c22bb318"
1685
  },
1686
  "dist": {
1687
  "type": "zip",
1688
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/34348c2691ce6254e8e008026f4c5e72c22bb318",
1689
- "reference": "34348c2691ce6254e8e008026f4c5e72c22bb318",
1690
  "shasum": ""
1691
  },
1692
  "require": {
1693
- "php": ">=5.5.9",
1694
- "symfony/dom-crawler": "~2.8|~3.0"
1695
  },
1696
  "require-dev": {
1697
- "symfony/css-selector": "~2.8|~3.0",
1698
- "symfony/process": "~2.8|~3.0"
1699
- },
1700
- "suggest": {
1701
- "symfony/process": ""
1702
  },
1703
  "type": "library",
1704
  "extra": {
1705
  "branch-alias": {
1706
- "dev-master": "3.2-dev"
1707
  }
1708
  },
1709
  "autoload": {
1710
- "psr-4": {
1711
- "Symfony\\Component\\BrowserKit\\": ""
1712
- },
1713
- "exclude-from-classmap": [
1714
- "/Tests/"
1715
  ]
1716
  },
1717
  "notification-url": "https://packagist.org/downloads/",
1718
  "license": [
1719
- "MIT"
1720
  ],
1721
  "authors": [
1722
  {
1723
- "name": "Fabien Potencier",
1724
- "email": "fabien@symfony.com"
1725
- },
1726
- {
1727
- "name": "Symfony Community",
1728
- "homepage": "https://symfony.com/contributors"
1729
  }
1730
  ],
1731
- "description": "Symfony BrowserKit Component",
1732
- "homepage": "https://symfony.com",
1733
- "time": "2016-10-13 13:35:11"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1734
  },
1735
  {
1736
- "name": "symfony/console",
1737
- "version": "v3.2.0",
1738
  "source": {
1739
  "type": "git",
1740
- "url": "https://github.com/symfony/console.git",
1741
- "reference": "09d0fd33560e3573185a2ea17614e37ba38716c5"
1742
  },
1743
  "dist": {
1744
  "type": "zip",
1745
- "url": "https://api.github.com/repos/symfony/console/zipball/09d0fd33560e3573185a2ea17614e37ba38716c5",
1746
- "reference": "09d0fd33560e3573185a2ea17614e37ba38716c5",
1747
  "shasum": ""
1748
  },
1749
  "require": {
1750
- "php": ">=5.5.9",
1751
- "symfony/debug": "~2.8|~3.0",
1752
- "symfony/polyfill-mbstring": "~1.0"
1753
- },
1754
- "require-dev": {
1755
- "psr/log": "~1.0",
1756
- "symfony/event-dispatcher": "~2.8|~3.0",
1757
- "symfony/filesystem": "~2.8|~3.0",
1758
- "symfony/process": "~2.8|~3.0"
1759
  },
1760
  "suggest": {
1761
- "psr/log": "For using the console logger",
1762
- "symfony/event-dispatcher": "",
1763
- "symfony/filesystem": "",
1764
- "symfony/process": ""
1765
  },
1766
  "type": "library",
1767
  "extra": {
1768
  "branch-alias": {
1769
- "dev-master": "3.2-dev"
 
 
 
 
1770
  }
1771
  },
1772
  "autoload": {
1773
  "psr-4": {
1774
- "Symfony\\Component\\Console\\": ""
1775
  },
1776
- "exclude-from-classmap": [
1777
- "/Tests/"
 
 
 
1778
  ]
1779
  },
1780
  "notification-url": "https://packagist.org/downloads/",
@@ -1783,47 +3617,79 @@
1783
  ],
1784
  "authors": [
1785
  {
1786
- "name": "Fabien Potencier",
1787
- "email": "fabien@symfony.com"
1788
  },
1789
  {
1790
  "name": "Symfony Community",
1791
  "homepage": "https://symfony.com/contributors"
1792
  }
1793
  ],
1794
- "description": "Symfony Console Component",
1795
  "homepage": "https://symfony.com",
1796
- "time": "2016-11-16 22:18:16"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1797
  },
1798
  {
1799
- "name": "symfony/css-selector",
1800
- "version": "v3.2.0",
1801
  "source": {
1802
  "type": "git",
1803
- "url": "https://github.com/symfony/css-selector.git",
1804
- "reference": "e1241f275814827c411d922ba8e64cf2a00b2994"
1805
  },
1806
  "dist": {
1807
  "type": "zip",
1808
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/e1241f275814827c411d922ba8e64cf2a00b2994",
1809
- "reference": "e1241f275814827c411d922ba8e64cf2a00b2994",
1810
  "shasum": ""
1811
  },
1812
  "require": {
1813
- "php": ">=5.5.9"
 
 
 
1814
  },
1815
  "type": "library",
1816
  "extra": {
1817
  "branch-alias": {
1818
- "dev-master": "3.2-dev"
 
 
 
 
1819
  }
1820
  },
1821
  "autoload": {
1822
  "psr-4": {
1823
- "Symfony\\Component\\CssSelector\\": ""
1824
  },
1825
- "exclude-from-classmap": [
1826
- "/Tests/"
1827
  ]
1828
  },
1829
  "notification-url": "https://packagist.org/downloads/",
@@ -1832,59 +3698,75 @@
1832
  ],
1833
  "authors": [
1834
  {
1835
- "name": "Jean-François Simon",
1836
- "email": "jeanfrancois.simon@sensiolabs.com"
1837
- },
1838
- {
1839
- "name": "Fabien Potencier",
1840
- "email": "fabien@symfony.com"
1841
  },
1842
  {
1843
  "name": "Symfony Community",
1844
  "homepage": "https://symfony.com/contributors"
1845
  }
1846
  ],
1847
- "description": "Symfony CssSelector Component",
1848
  "homepage": "https://symfony.com",
1849
- "time": "2016-11-03 08:11:03"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1850
  },
1851
  {
1852
- "name": "symfony/debug",
1853
- "version": "v3.2.0",
1854
  "source": {
1855
  "type": "git",
1856
- "url": "https://github.com/symfony/debug.git",
1857
- "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231"
1858
  },
1859
  "dist": {
1860
  "type": "zip",
1861
- "url": "https://api.github.com/repos/symfony/debug/zipball/9f923e68d524a3095c5a2ae5fc7220c7cbc12231",
1862
- "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231",
1863
  "shasum": ""
1864
  },
1865
  "require": {
1866
- "php": ">=5.5.9",
1867
- "psr/log": "~1.0"
1868
- },
1869
- "conflict": {
1870
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
1871
- },
1872
- "require-dev": {
1873
- "symfony/class-loader": "~2.8|~3.0",
1874
- "symfony/http-kernel": "~2.8|~3.0"
1875
  },
1876
  "type": "library",
1877
  "extra": {
1878
  "branch-alias": {
1879
- "dev-master": "3.2-dev"
 
 
 
 
1880
  }
1881
  },
1882
  "autoload": {
1883
  "psr-4": {
1884
- "Symfony\\Component\\Debug\\": ""
1885
  },
1886
- "exclude-from-classmap": [
1887
- "/Tests/"
1888
  ]
1889
  },
1890
  "notification-url": "https://packagist.org/downloads/",
@@ -1893,54 +3775,77 @@
1893
  ],
1894
  "authors": [
1895
  {
1896
- "name": "Fabien Potencier",
1897
- "email": "fabien@symfony.com"
1898
  },
1899
  {
1900
  "name": "Symfony Community",
1901
  "homepage": "https://symfony.com/contributors"
1902
  }
1903
  ],
1904
- "description": "Symfony Debug Component",
1905
  "homepage": "https://symfony.com",
1906
- "time": "2016-11-16 22:18:16"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1907
  },
1908
  {
1909
- "name": "symfony/dom-crawler",
1910
- "version": "v3.2.0",
1911
  "source": {
1912
  "type": "git",
1913
- "url": "https://github.com/symfony/dom-crawler.git",
1914
- "reference": "c6b6111f5aae7c58698cdc10220785627ac44a2c"
1915
  },
1916
  "dist": {
1917
  "type": "zip",
1918
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c6b6111f5aae7c58698cdc10220785627ac44a2c",
1919
- "reference": "c6b6111f5aae7c58698cdc10220785627ac44a2c",
1920
  "shasum": ""
1921
  },
1922
  "require": {
1923
- "php": ">=5.5.9",
1924
- "symfony/polyfill-mbstring": "~1.0"
1925
- },
1926
- "require-dev": {
1927
- "symfony/css-selector": "~2.8|~3.0"
1928
- },
1929
- "suggest": {
1930
- "symfony/css-selector": ""
1931
  },
1932
  "type": "library",
1933
  "extra": {
1934
  "branch-alias": {
1935
- "dev-master": "3.2-dev"
 
 
 
 
1936
  }
1937
  },
1938
  "autoload": {
1939
  "psr-4": {
1940
- "Symfony\\Component\\DomCrawler\\": ""
1941
  },
1942
- "exclude-from-classmap": [
1943
- "/Tests/"
 
 
 
1944
  ]
1945
  },
1946
  "notification-url": "https://packagist.org/downloads/",
@@ -1949,58 +3854,77 @@
1949
  ],
1950
  "authors": [
1951
  {
1952
- "name": "Fabien Potencier",
1953
- "email": "fabien@symfony.com"
1954
  },
1955
  {
1956
  "name": "Symfony Community",
1957
  "homepage": "https://symfony.com/contributors"
1958
  }
1959
  ],
1960
- "description": "Symfony DomCrawler Component",
1961
  "homepage": "https://symfony.com",
1962
- "time": "2016-11-25 12:32:42"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1963
  },
1964
  {
1965
- "name": "symfony/event-dispatcher",
1966
- "version": "v3.2.0",
1967
  "source": {
1968
  "type": "git",
1969
- "url": "https://github.com/symfony/event-dispatcher.git",
1970
- "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283"
1971
  },
1972
  "dist": {
1973
  "type": "zip",
1974
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e8f47a327c2f0fd5aa04fa60af2b693006ed7283",
1975
- "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283",
1976
  "shasum": ""
1977
  },
1978
  "require": {
1979
- "php": ">=5.5.9"
1980
- },
1981
- "require-dev": {
1982
- "psr/log": "~1.0",
1983
- "symfony/config": "~2.8|~3.0",
1984
- "symfony/dependency-injection": "~2.8|~3.0",
1985
- "symfony/expression-language": "~2.8|~3.0",
1986
- "symfony/stopwatch": "~2.8|~3.0"
1987
- },
1988
- "suggest": {
1989
- "symfony/dependency-injection": "",
1990
- "symfony/http-kernel": ""
1991
  },
1992
  "type": "library",
1993
  "extra": {
1994
  "branch-alias": {
1995
- "dev-master": "3.2-dev"
 
 
 
 
1996
  }
1997
  },
1998
  "autoload": {
1999
  "psr-4": {
2000
- "Symfony\\Component\\EventDispatcher\\": ""
2001
  },
2002
- "exclude-from-classmap": [
2003
- "/Tests/"
 
 
 
2004
  ]
2005
  },
2006
  "notification-url": "https://packagist.org/downloads/",
@@ -2009,44 +3933,67 @@
2009
  ],
2010
  "authors": [
2011
  {
2012
- "name": "Fabien Potencier",
2013
- "email": "fabien@symfony.com"
 
 
 
 
2014
  },
2015
  {
2016
  "name": "Symfony Community",
2017
  "homepage": "https://symfony.com/contributors"
2018
  }
2019
  ],
2020
- "description": "Symfony EventDispatcher Component",
2021
  "homepage": "https://symfony.com",
2022
- "time": "2016-10-13 06:29:04"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2023
  },
2024
  {
2025
- "name": "symfony/finder",
2026
- "version": "v3.2.0",
2027
  "source": {
2028
  "type": "git",
2029
- "url": "https://github.com/symfony/finder.git",
2030
- "reference": "4263e35a1e342a0f195c9349c0dee38148f8a14f"
2031
  },
2032
  "dist": {
2033
  "type": "zip",
2034
- "url": "https://api.github.com/repos/symfony/finder/zipball/4263e35a1e342a0f195c9349c0dee38148f8a14f",
2035
- "reference": "4263e35a1e342a0f195c9349c0dee38148f8a14f",
2036
  "shasum": ""
2037
  },
2038
  "require": {
2039
- "php": ">=5.5.9"
 
2040
  },
2041
  "type": "library",
2042
- "extra": {
2043
- "branch-alias": {
2044
- "dev-master": "3.2-dev"
2045
- }
2046
- },
2047
  "autoload": {
2048
  "psr-4": {
2049
- "Symfony\\Component\\Finder\\": ""
2050
  },
2051
  "exclude-from-classmap": [
2052
  "/Tests/"
@@ -2066,43 +4013,62 @@
2066
  "homepage": "https://symfony.com/contributors"
2067
  }
2068
  ],
2069
- "description": "Symfony Finder Component",
2070
  "homepage": "https://symfony.com",
2071
- "time": "2016-11-03 08:11:03"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2072
  },
2073
  {
2074
- "name": "symfony/polyfill-mbstring",
2075
- "version": "v1.3.0",
2076
  "source": {
2077
  "type": "git",
2078
- "url": "https://github.com/symfony/polyfill-mbstring.git",
2079
- "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4"
2080
  },
2081
  "dist": {
2082
  "type": "zip",
2083
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4",
2084
- "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4",
2085
  "shasum": ""
2086
  },
2087
  "require": {
2088
- "php": ">=5.3.3"
 
2089
  },
2090
  "suggest": {
2091
- "ext-mbstring": "For best performance"
2092
  },
2093
  "type": "library",
2094
  "extra": {
2095
  "branch-alias": {
2096
- "dev-master": "1.3-dev"
 
 
 
 
2097
  }
2098
  },
2099
  "autoload": {
2100
  "psr-4": {
2101
- "Symfony\\Polyfill\\Mbstring\\": ""
2102
- },
2103
- "files": [
2104
- "bootstrap.php"
2105
- ]
2106
  },
2107
  "notification-url": "https://packagist.org/downloads/",
2108
  "license": [
@@ -2118,46 +4084,63 @@
2118
  "homepage": "https://symfony.com/contributors"
2119
  }
2120
  ],
2121
- "description": "Symfony polyfill for the Mbstring extension",
2122
  "homepage": "https://symfony.com",
2123
  "keywords": [
2124
- "compatibility",
2125
- "mbstring",
2126
- "polyfill",
2127
- "portable",
2128
- "shim"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2129
  ],
2130
- "time": "2016-11-14 01:06:16"
2131
  },
2132
  {
2133
  "name": "symfony/yaml",
2134
- "version": "v3.2.0",
2135
  "source": {
2136
  "type": "git",
2137
  "url": "https://github.com/symfony/yaml.git",
2138
- "reference": "f2300ba8fbb002c028710b92e1906e7457410693"
2139
  },
2140
  "dist": {
2141
  "type": "zip",
2142
- "url": "https://api.github.com/repos/symfony/yaml/zipball/f2300ba8fbb002c028710b92e1906e7457410693",
2143
- "reference": "f2300ba8fbb002c028710b92e1906e7457410693",
2144
  "shasum": ""
2145
  },
2146
  "require": {
2147
- "php": ">=5.5.9"
 
 
 
 
2148
  },
2149
  "require-dev": {
2150
- "symfony/console": "~2.8|~3.0"
2151
  },
2152
  "suggest": {
2153
  "symfony/console": "For validating YAML files using the lint command"
2154
  },
2155
  "type": "library",
2156
- "extra": {
2157
- "branch-alias": {
2158
- "dev-master": "3.2-dev"
2159
- }
2160
- },
2161
  "autoload": {
2162
  "psr-4": {
2163
  "Symfony\\Component\\Yaml\\": ""
@@ -2180,35 +4163,106 @@
2180
  "homepage": "https://symfony.com/contributors"
2181
  }
2182
  ],
2183
- "description": "Symfony Yaml Component",
2184
  "homepage": "https://symfony.com",
2185
- "time": "2016-11-18 21:17:59"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2186
  },
2187
  {
2188
  "name": "webmozart/assert",
2189
- "version": "1.2.0",
2190
  "source": {
2191
  "type": "git",
2192
- "url": "https://github.com/webmozart/assert.git",
2193
- "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
2194
  },
2195
  "dist": {
2196
  "type": "zip",
2197
- "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
2198
- "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
2199
  "shasum": ""
2200
  },
2201
  "require": {
2202
- "php": "^5.3.3 || ^7.0"
 
 
 
 
 
2203
  },
2204
  "require-dev": {
2205
- "phpunit/phpunit": "^4.6",
2206
- "sebastian/version": "^1.0.1"
2207
  },
2208
  "type": "library",
2209
  "extra": {
2210
  "branch-alias": {
2211
- "dev-master": "1.3-dev"
2212
  }
2213
  },
2214
  "autoload": {
@@ -2232,7 +4286,11 @@
2232
  "check",
2233
  "validate"
2234
  ],
2235
- "time": "2016-11-23 20:04:58"
 
 
 
 
2236
  }
2237
  ],
2238
  "packages-dev": [],
@@ -2242,5 +4300,6 @@
2242
  "prefer-stable": false,
2243
  "prefer-lowest": false,
2244
  "platform": [],
2245
- "platform-dev": []
 
2246
  }
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "da61291bfc874c647083be4a7e5bba96",
 
8
  "packages": [
9
  {
10
  "name": "behat/gherkin",
11
+ "version": "v4.8.0",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/Behat/Gherkin.git",
15
+ "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd"
16
  },
17
  "dist": {
18
  "type": "zip",
19
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd",
20
+ "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd",
21
  "shasum": ""
22
  },
23
  "require": {
24
+ "php": "~7.2|~8.0"
25
  },
26
  "require-dev": {
27
+ "cucumber/cucumber": "dev-gherkin-16.0.0",
28
+ "phpunit/phpunit": "~8|~9",
29
+ "symfony/phpunit-bridge": "~3|~4|~5",
30
+ "symfony/yaml": "~3|~4|~5"
31
  },
32
  "suggest": {
33
  "symfony/yaml": "If you want to parse features, represented in YAML files"
54
  "homepage": "http://everzet.com"
55
  }
56
  ],
57
+ "description": "Gherkin DSL parser for PHP",
58
  "homepage": "http://behat.org/",
59
  "keywords": [
60
  "BDD",
64
  "gherkin",
65
  "parser"
66
  ],
67
+ "support": {
68
+ "issues": "https://github.com/Behat/Gherkin/issues",
69
+ "source": "https://github.com/Behat/Gherkin/tree/v4.8.0"
70
+ },
71
+ "time": "2021-02-04T12:44:21+00:00"
72
  },
73
  {
74
  "name": "codeception/codeception",
75
+ "version": "3.1.3",
76
  "source": {
77
  "type": "git",
78
  "url": "https://github.com/Codeception/Codeception.git",
79
+ "reference": "5ce5d0e2064b5590c19709c75fc4c621b1236b32"
80
  },
81
  "dist": {
82
  "type": "zip",
83
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/5ce5d0e2064b5590c19709c75fc4c621b1236b32",
84
+ "reference": "5ce5d0e2064b5590c19709c75fc4c621b1236b32",
85
  "shasum": ""
86
  },
87
  "require": {
88
+ "behat/gherkin": "^4.4.0",
89
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3",
90
+ "codeception/stub": "^2.0 | ^3.0",
91
+ "ext-curl": "*",
92
  "ext-json": "*",
93
  "ext-mbstring": "*",
94
+ "facebook/webdriver": "^1.6.0",
95
+ "guzzlehttp/guzzle": "^6.3.0",
96
+ "guzzlehttp/psr7": "~1.4",
97
+ "hoa/console": "~3.0",
98
+ "php": ">=5.6.0 <8.0",
99
+ "symfony/browser-kit": ">=2.7 <5.0",
100
+ "symfony/console": ">=2.7 <5.0",
101
+ "symfony/css-selector": ">=2.7 <5.0",
102
+ "symfony/dom-crawler": ">=2.7 <5.0",
103
+ "symfony/event-dispatcher": ">=2.7 <5.0",
104
+ "symfony/finder": ">=2.7 <5.0",
105
+ "symfony/yaml": ">=2.7 <5.0"
 
 
 
106
  },
107
  "require-dev": {
108
  "codeception/specify": "~0.3",
109
+ "doctrine/annotations": "^1",
110
+ "doctrine/data-fixtures": "^1",
111
+ "doctrine/orm": "^2",
112
  "flow/jsonpath": "~0.2",
 
 
 
113
  "monolog/monolog": "~1.8",
114
  "pda/pheanstalk": "~3.0",
115
  "php-amqplib/php-amqplib": "~2.4",
116
  "predis/predis": "^1.0",
117
+ "ramsey/uuid-doctrine": "^1.5",
118
+ "squizlabs/php_codesniffer": "~2.0",
119
+ "symfony/process": ">=2.7 <5.0",
120
+ "vlucas/phpdotenv": "^3.0"
121
  },
122
  "suggest": {
123
+ "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module",
124
+ "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests",
125
  "codeception/specify": "BDD-style code blocks",
126
  "codeception/verify": "BDD-style assertions",
127
  "flow/jsonpath": "For using JSONPath in REST module",
128
  "league/factory-muffin": "For DataFactory module",
129
  "league/factory-muffin-faker": "For Faker support in DataFactory module",
130
  "phpseclib/phpseclib": "for SFTP option in FTP Module",
131
+ "stecman/symfony-console-completion": "For BASH autocompletion",
132
  "symfony/phpunit-bridge": "For phpunit-bridge support"
133
  },
134
  "bin": [
140
  },
141
  "autoload": {
142
  "psr-4": {
143
+ "Codeception\\": "src/Codeception",
144
  "Codeception\\Extension\\": "ext"
145
  }
146
  },
164
  "functional testing",
165
  "unit testing"
166
  ],
167
+ "support": {
168
+ "issues": "https://github.com/Codeception/Codeception/issues",
169
+ "source": "https://github.com/Codeception/Codeception/tree/3.1.3"
170
+ },
171
+ "funding": [
172
+ {
173
+ "url": "https://opencollective.com/codeception",
174
+ "type": "open_collective"
175
+ }
176
+ ],
177
+ "time": "2021-08-06T17:20:30+00:00"
178
+ },
179
+ {
180
+ "name": "codeception/phpunit-wrapper",
181
+ "version": "8.1.4",
182
+ "source": {
183
+ "type": "git",
184
+ "url": "https://github.com/Codeception/phpunit-wrapper.git",
185
+ "reference": "f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3"
186
+ },
187
+ "dist": {
188
+ "type": "zip",
189
+ "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3",
190
+ "reference": "f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3",
191
+ "shasum": ""
192
+ },
193
+ "require": {
194
+ "php": ">=7.2",
195
+ "phpunit/php-code-coverage": "^7.0",
196
+ "phpunit/phpunit": "^8.0",
197
+ "sebastian/comparator": "^3.0",
198
+ "sebastian/diff": "^3.0"
199
+ },
200
+ "require-dev": {
201
+ "codeception/specify": "*",
202
+ "vlucas/phpdotenv": "^3.0"
203
+ },
204
+ "type": "library",
205
+ "autoload": {
206
+ "psr-4": {
207
+ "Codeception\\PHPUnit\\": "src/"
208
+ }
209
+ },
210
+ "notification-url": "https://packagist.org/downloads/",
211
+ "license": [
212
+ "MIT"
213
+ ],
214
+ "authors": [
215
+ {
216
+ "name": "Davert",
217
+ "email": "davert.php@resend.cc"
218
+ }
219
+ ],
220
+ "description": "PHPUnit classes used by Codeception",
221
+ "support": {
222
+ "issues": "https://github.com/Codeception/phpunit-wrapper/issues",
223
+ "source": "https://github.com/Codeception/phpunit-wrapper/tree/8.1.4"
224
+ },
225
+ "time": "2020-12-28T14:00:08+00:00"
226
+ },
227
+ {
228
+ "name": "codeception/stub",
229
+ "version": "3.7.0",
230
+ "source": {
231
+ "type": "git",
232
+ "url": "https://github.com/Codeception/Stub.git",
233
+ "reference": "468dd5fe659f131fc997f5196aad87512f9b1304"
234
+ },
235
+ "dist": {
236
+ "type": "zip",
237
+ "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304",
238
+ "reference": "468dd5fe659f131fc997f5196aad87512f9b1304",
239
+ "shasum": ""
240
+ },
241
+ "require": {
242
+ "phpunit/phpunit": "^8.4 | ^9.0"
243
+ },
244
+ "type": "library",
245
+ "autoload": {
246
+ "psr-4": {
247
+ "Codeception\\": "src/"
248
+ }
249
+ },
250
+ "notification-url": "https://packagist.org/downloads/",
251
+ "license": [
252
+ "MIT"
253
+ ],
254
+ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
255
+ "support": {
256
+ "issues": "https://github.com/Codeception/Stub/issues",
257
+ "source": "https://github.com/Codeception/Stub/tree/3.7.0"
258
+ },
259
+ "time": "2020-07-03T15:54:43+00:00"
260
  },
261
  {
262
  "name": "doctrine/instantiator",
263
+ "version": "1.4.0",
264
  "source": {
265
  "type": "git",
266
  "url": "https://github.com/doctrine/instantiator.git",
267
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
268
  },
269
  "dist": {
270
  "type": "zip",
271
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
272
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
273
  "shasum": ""
274
  },
275
  "require": {
276
+ "php": "^7.1 || ^8.0"
277
  },
278
  "require-dev": {
279
+ "doctrine/coding-standard": "^8.0",
280
  "ext-pdo": "*",
281
  "ext-phar": "*",
282
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
283
+ "phpstan/phpstan": "^0.12",
284
+ "phpstan/phpstan-phpunit": "^0.12",
285
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
286
  },
287
  "type": "library",
 
 
 
 
 
288
  "autoload": {
289
  "psr-4": {
290
  "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
298
  {
299
  "name": "Marco Pivetta",
300
  "email": "ocramius@gmail.com",
301
+ "homepage": "https://ocramius.github.io/"
302
  }
303
  ],
304
  "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
305
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
306
  "keywords": [
307
  "constructor",
308
  "instantiate"
309
  ],
310
+ "support": {
311
+ "issues": "https://github.com/doctrine/instantiator/issues",
312
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
313
+ },
314
+ "funding": [
315
+ {
316
+ "url": "https://www.doctrine-project.org/sponsorship.html",
317
+ "type": "custom"
318
+ },
319
+ {
320
+ "url": "https://www.patreon.com/phpdoctrine",
321
+ "type": "patreon"
322
+ },
323
+ {
324
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
325
+ "type": "tidelift"
326
+ }
327
+ ],
328
+ "time": "2020-11-10T18:47:58+00:00"
329
  },
330
  {
331
  "name": "facebook/webdriver",
332
+ "version": "1.7.1",
333
  "source": {
334
  "type": "git",
335
+ "url": "https://github.com/php-webdriver/php-webdriver-archive.git",
336
+ "reference": "e43de70f3c7166169d0f14a374505392734160e5"
337
  },
338
  "dist": {
339
  "type": "zip",
340
+ "url": "https://api.github.com/repos/php-webdriver/php-webdriver-archive/zipball/e43de70f3c7166169d0f14a374505392734160e5",
341
+ "reference": "e43de70f3c7166169d0f14a374505392734160e5",
342
  "shasum": ""
343
  },
344
  "require": {
345
  "ext-curl": "*",
346
+ "ext-json": "*",
347
+ "ext-mbstring": "*",
348
+ "ext-zip": "*",
349
+ "php": "^5.6 || ~7.0",
350
+ "symfony/process": "^2.8 || ^3.1 || ^4.0"
351
  },
352
  "require-dev": {
353
+ "friendsofphp/php-cs-fixer": "^2.0",
354
+ "jakub-onderka/php-parallel-lint": "^0.9.2",
355
+ "php-coveralls/php-coveralls": "^2.0",
356
  "php-mock/php-mock-phpunit": "^1.1",
357
+ "phpunit/phpunit": "^5.7",
358
+ "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0",
359
+ "squizlabs/php_codesniffer": "^2.6",
360
+ "symfony/var-dumper": "^3.3 || ^4.0"
361
  },
362
  "suggest": {
363
+ "ext-SimpleXML": "For Firefox profile creation"
364
  },
365
  "type": "library",
366
+ "extra": {
367
+ "branch-alias": {
368
+ "dev-community": "1.5-dev"
369
+ }
370
+ },
371
  "autoload": {
372
  "psr-4": {
373
  "Facebook\\WebDriver\\": "lib/"
377
  "license": [
378
  "Apache-2.0"
379
  ],
380
+ "description": "A PHP client for Selenium WebDriver",
381
  "homepage": "https://github.com/facebook/php-webdriver",
382
  "keywords": [
383
  "facebook",
385
  "selenium",
386
  "webdriver"
387
  ],
388
+ "support": {
389
+ "forum": "https://www.facebook.com/groups/phpwebdriver/",
390
+ "issues": "https://github.com/facebook/php-webdriver/issues",
391
+ "source": "https://github.com/facebook/php-webdriver"
392
+ },
393
+ "abandoned": "php-webdriver/webdriver",
394
+ "time": "2019-06-13T08:02:18+00:00"
395
  },
396
  {
397
  "name": "guzzlehttp/guzzle",
398
+ "version": "6.5.5",
399
  "source": {
400
  "type": "git",
401
  "url": "https://github.com/guzzle/guzzle.git",
402
+ "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
403
  },
404
  "dist": {
405
  "type": "zip",
406
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
407
+ "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
408
  "shasum": ""
409
  },
410
  "require": {
411
+ "ext-json": "*",
412
  "guzzlehttp/promises": "^1.0",
413
+ "guzzlehttp/psr7": "^1.6.1",
414
+ "php": ">=5.5",
415
+ "symfony/polyfill-intl-idn": "^1.17.0"
416
  },
417
  "require-dev": {
418
  "ext-curl": "*",
419
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
420
+ "psr/log": "^1.1"
421
+ },
422
+ "suggest": {
423
+ "psr/log": "Required for using the Log middleware"
424
  },
425
  "type": "library",
426
  "extra": {
427
  "branch-alias": {
428
+ "dev-master": "6.5-dev"
429
  }
430
  },
431
  "autoload": {
 
 
 
432
  "psr-4": {
433
  "GuzzleHttp\\": "src/"
434
+ },
435
+ "files": [
436
+ "src/functions_include.php"
437
+ ]
438
  },
439
  "notification-url": "https://packagist.org/downloads/",
440
  "license": [
458
  "rest",
459
  "web service"
460
  ],
461
+ "support": {
462
+ "issues": "https://github.com/guzzle/guzzle/issues",
463
+ "source": "https://github.com/guzzle/guzzle/tree/6.5"
464
+ },
465
+ "time": "2020-06-16T21:01:06+00:00"
466
  },
467
  {
468
  "name": "guzzlehttp/promises",
469
+ "version": "1.4.1",
470
  "source": {
471
  "type": "git",
472
  "url": "https://github.com/guzzle/promises.git",
473
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
474
  },
475
  "dist": {
476
  "type": "zip",
477
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
478
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
479
  "shasum": ""
480
  },
481
  "require": {
482
+ "php": ">=5.5"
483
  },
484
  "require-dev": {
485
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
486
  },
487
  "type": "library",
488
  "extra": {
489
  "branch-alias": {
490
+ "dev-master": "1.4-dev"
491
  }
492
  },
493
  "autoload": {
513
  "keywords": [
514
  "promise"
515
  ],
516
+ "support": {
517
+ "issues": "https://github.com/guzzle/promises/issues",
518
+ "source": "https://github.com/guzzle/promises/tree/1.4.1"
519
+ },
520
+ "time": "2021-03-07T09:25:29+00:00"
521
  },
522
  {
523
  "name": "guzzlehttp/psr7",
524
+ "version": "1.8.2",
525
  "source": {
526
  "type": "git",
527
  "url": "https://github.com/guzzle/psr7.git",
528
+ "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
529
  },
530
  "dist": {
531
  "type": "zip",
532
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
533
+ "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
534
  "shasum": ""
535
  },
536
  "require": {
537
  "php": ">=5.4.0",
538
+ "psr/http-message": "~1.0",
539
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
540
  },
541
  "provide": {
542
  "psr/http-message-implementation": "1.0"
543
  },
544
  "require-dev": {
545
+ "ext-zlib": "*",
546
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
547
+ },
548
+ "suggest": {
549
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
550
  },
551
  "type": "library",
552
  "extra": {
553
  "branch-alias": {
554
+ "dev-master": "1.7-dev"
555
  }
556
  },
557
  "autoload": {
571
  "name": "Michael Dowling",
572
  "email": "mtdowling@gmail.com",
573
  "homepage": "https://github.com/mtdowling"
574
+ },
575
+ {
576
+ "name": "Tobias Schultze",
577
+ "homepage": "https://github.com/Tobion"
578
  }
579
  ],
580
+ "description": "PSR-7 message implementation that also provides common utility methods",
581
  "keywords": [
582
  "http",
583
  "message",
584
+ "psr-7",
585
+ "request",
586
+ "response",
587
  "stream",
588
+ "uri",
589
+ "url"
590
  ],
591
+ "support": {
592
+ "issues": "https://github.com/guzzle/psr7/issues",
593
+ "source": "https://github.com/guzzle/psr7/tree/1.8.2"
594
+ },
595
+ "time": "2021-04-26T09:17:50+00:00"
596
  },
597
  {
598
+ "name": "hoa/consistency",
599
+ "version": "1.17.05.02",
600
  "source": {
601
  "type": "git",
602
+ "url": "https://github.com/hoaproject/Consistency.git",
603
+ "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f"
604
  },
605
  "dist": {
606
  "type": "zip",
607
+ "url": "https://api.github.com/repos/hoaproject/Consistency/zipball/fd7d0adc82410507f332516faf655b6ed22e4c2f",
608
+ "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f",
609
  "shasum": ""
610
  },
611
  "require": {
612
+ "hoa/exception": "~1.0",
613
+ "php": ">=5.5.0"
614
  },
615
  "require-dev": {
616
+ "hoa/stream": "~1.0",
617
+ "hoa/test": "~2.0"
618
  },
619
  "type": "library",
620
+ "extra": {
621
+ "branch-alias": {
622
+ "dev-master": "1.x-dev"
623
+ }
624
+ },
625
  "autoload": {
626
  "psr-4": {
627
+ "Hoa\\Consistency\\": "."
628
+ },
629
+ "files": [
630
+ "Prelude.php"
631
+ ]
632
  },
633
  "notification-url": "https://packagist.org/downloads/",
634
  "license": [
635
+ "BSD-3-Clause"
636
  ],
637
+ "authors": [
638
+ {
639
+ "name": "Ivan Enderlin",
640
+ "email": "ivan.enderlin@hoa-project.net"
641
+ },
642
+ {
643
+ "name": "Hoa community",
644
+ "homepage": "https://hoa-project.net/"
645
+ }
646
+ ],
647
+ "description": "The Hoa\\Consistency library.",
648
+ "homepage": "https://hoa-project.net/",
649
  "keywords": [
650
+ "autoloader",
651
+ "callable",
652
+ "consistency",
653
+ "entity",
654
+ "flex",
655
+ "keyword",
656
+ "library"
657
  ],
658
+ "support": {
659
+ "docs": "https://central.hoa-project.net/Documentation/Library/Consistency",
660
+ "email": "support@hoa-project.net",
661
+ "forum": "https://users.hoa-project.net/",
662
+ "irc": "irc://chat.freenode.net/hoaproject",
663
+ "issues": "https://github.com/hoaproject/Consistency/issues",
664
+ "source": "https://central.hoa-project.net/Resource/Library/Consistency"
665
+ },
666
+ "time": "2017-05-02T12:18:12+00:00"
667
  },
668
  {
669
+ "name": "hoa/console",
670
+ "version": "3.17.05.02",
671
  "source": {
672
  "type": "git",
673
+ "url": "https://github.com/hoaproject/Console.git",
674
+ "reference": "e231fd3ea70e6d773576ae78de0bdc1daf331a66"
675
  },
676
  "dist": {
677
  "type": "zip",
678
+ "url": "https://api.github.com/repos/hoaproject/Console/zipball/e231fd3ea70e6d773576ae78de0bdc1daf331a66",
679
+ "reference": "e231fd3ea70e6d773576ae78de0bdc1daf331a66",
680
  "shasum": ""
681
  },
682
  "require": {
683
+ "hoa/consistency": "~1.0",
684
+ "hoa/event": "~1.0",
685
+ "hoa/exception": "~1.0",
686
+ "hoa/file": "~1.0",
687
+ "hoa/protocol": "~1.0",
688
+ "hoa/stream": "~1.0",
689
+ "hoa/ustring": "~4.0"
690
  },
691
  "require-dev": {
692
+ "hoa/test": "~2.0"
693
+ },
694
+ "suggest": {
695
+ "ext-pcntl": "To enable hoa://Event/Console/Window:resize.",
696
+ "hoa/dispatcher": "To use the console kit.",
697
+ "hoa/router": "To use the console kit."
698
  },
699
  "type": "library",
700
  "extra": {
701
  "branch-alias": {
702
+ "dev-master": "3.x-dev"
703
  }
704
  },
705
  "autoload": {
706
  "psr-4": {
707
+ "Hoa\\Console\\": "."
 
 
708
  }
709
  },
710
  "notification-url": "https://packagist.org/downloads/",
711
  "license": [
712
+ "BSD-3-Clause"
713
  ],
714
  "authors": [
715
  {
716
+ "name": "Ivan Enderlin",
717
+ "email": "ivan.enderlin@hoa-project.net"
718
+ },
719
+ {
720
+ "name": "Hoa community",
721
+ "homepage": "https://hoa-project.net/"
722
  }
723
  ],
724
+ "description": "The Hoa\\Console library.",
725
+ "homepage": "https://hoa-project.net/",
726
  "keywords": [
727
+ "autocompletion",
728
+ "chrome",
729
+ "cli",
730
+ "console",
731
+ "cursor",
732
+ "getoption",
733
+ "library",
734
+ "option",
735
+ "parser",
736
+ "processus",
737
+ "readline",
738
+ "terminfo",
739
+ "tput",
740
+ "window"
741
  ],
742
+ "support": {
743
+ "docs": "https://central.hoa-project.net/Documentation/Library/Console",
744
+ "email": "support@hoa-project.net",
745
+ "forum": "https://users.hoa-project.net/",
746
+ "irc": "irc://chat.freenode.net/hoaproject",
747
+ "issues": "https://github.com/hoaproject/Console/issues",
748
+ "source": "https://central.hoa-project.net/Resource/Library/Console"
749
+ },
750
+ "time": "2017-05-02T12:26:19+00:00"
751
  },
752
  {
753
+ "name": "hoa/event",
754
+ "version": "1.17.01.13",
755
  "source": {
756
  "type": "git",
757
+ "url": "https://github.com/hoaproject/Event.git",
758
+ "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54"
759
  },
760
  "dist": {
761
  "type": "zip",
762
+ "url": "https://api.github.com/repos/hoaproject/Event/zipball/6c0060dced212ffa3af0e34bb46624f990b29c54",
763
+ "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54",
764
  "shasum": ""
765
  },
766
  "require": {
767
+ "hoa/consistency": "~1.0",
768
+ "hoa/exception": "~1.0"
 
 
769
  },
770
  "require-dev": {
771
+ "hoa/test": "~2.0"
 
772
  },
773
  "type": "library",
774
+ "extra": {
775
+ "branch-alias": {
776
+ "dev-master": "1.x-dev"
777
+ }
778
+ },
779
  "autoload": {
780
  "psr-4": {
781
+ "Hoa\\Event\\": "."
 
 
782
  }
783
  },
784
  "notification-url": "https://packagist.org/downloads/",
785
  "license": [
786
+ "BSD-3-Clause"
787
  ],
788
  "authors": [
789
  {
790
+ "name": "Ivan Enderlin",
791
+ "email": "ivan.enderlin@hoa-project.net"
792
+ },
793
+ {
794
+ "name": "Hoa community",
795
+ "homepage": "https://hoa-project.net/"
796
  }
797
  ],
798
+ "description": "The Hoa\\Event library.",
799
+ "homepage": "https://hoa-project.net/",
800
+ "keywords": [
801
+ "event",
802
+ "library",
803
+ "listener",
804
+ "observer"
805
+ ],
806
+ "support": {
807
+ "docs": "https://central.hoa-project.net/Documentation/Library/Event",
808
+ "email": "support@hoa-project.net",
809
+ "forum": "https://users.hoa-project.net/",
810
+ "irc": "irc://chat.freenode.net/hoaproject",
811
+ "issues": "https://github.com/hoaproject/Event/issues",
812
+ "source": "https://central.hoa-project.net/Resource/Library/Event"
813
+ },
814
+ "time": "2017-01-13T15:30:50+00:00"
815
  },
816
  {
817
+ "name": "hoa/exception",
818
+ "version": "1.17.01.16",
819
  "source": {
820
  "type": "git",
821
+ "url": "https://github.com/hoaproject/Exception.git",
822
+ "reference": "091727d46420a3d7468ef0595651488bfc3a458f"
823
  },
824
  "dist": {
825
  "type": "zip",
826
+ "url": "https://api.github.com/repos/hoaproject/Exception/zipball/091727d46420a3d7468ef0595651488bfc3a458f",
827
+ "reference": "091727d46420a3d7468ef0595651488bfc3a458f",
828
  "shasum": ""
829
  },
830
  "require": {
831
+ "hoa/consistency": "~1.0",
832
+ "hoa/event": "~1.0"
833
  },
834
  "require-dev": {
835
+ "hoa/test": "~2.0"
 
836
  },
837
  "type": "library",
838
  "extra": {
839
  "branch-alias": {
840
+ "dev-master": "1.x-dev"
841
  }
842
  },
843
  "autoload": {
844
  "psr-4": {
845
+ "Hoa\\Exception\\": "."
 
 
846
  }
847
  },
848
  "notification-url": "https://packagist.org/downloads/",
849
  "license": [
850
+ "BSD-3-Clause"
851
  ],
852
  "authors": [
853
  {
854
+ "name": "Ivan Enderlin",
855
+ "email": "ivan.enderlin@hoa-project.net"
856
+ },
857
+ {
858
+ "name": "Hoa community",
859
+ "homepage": "https://hoa-project.net/"
860
  }
861
  ],
862
+ "description": "The Hoa\\Exception library.",
863
+ "homepage": "https://hoa-project.net/",
864
+ "keywords": [
865
+ "exception",
866
+ "library"
867
+ ],
868
+ "support": {
869
+ "docs": "https://central.hoa-project.net/Documentation/Library/Exception",
870
+ "email": "support@hoa-project.net",
871
+ "forum": "https://users.hoa-project.net/",
872
+ "irc": "irc://chat.freenode.net/hoaproject",
873
+ "issues": "https://github.com/hoaproject/Exception/issues",
874
+ "source": "https://central.hoa-project.net/Resource/Library/Exception"
875
+ },
876
+ "time": "2017-01-16T07:53:27+00:00"
877
  },
878
  {
879
+ "name": "hoa/file",
880
+ "version": "1.17.07.11",
881
  "source": {
882
  "type": "git",
883
+ "url": "https://github.com/hoaproject/File.git",
884
+ "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca"
885
  },
886
  "dist": {
887
  "type": "zip",
888
+ "url": "https://api.github.com/repos/hoaproject/File/zipball/35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca",
889
+ "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca",
890
  "shasum": ""
891
  },
892
  "require": {
893
+ "hoa/consistency": "~1.0",
894
+ "hoa/event": "~1.0",
895
+ "hoa/exception": "~1.0",
896
+ "hoa/iterator": "~2.0",
897
+ "hoa/stream": "~1.0"
898
  },
899
  "require-dev": {
900
+ "hoa/test": "~2.0"
 
901
  },
902
  "type": "library",
903
  "extra": {
904
  "branch-alias": {
905
+ "dev-master": "1.x-dev"
906
  }
907
  },
908
  "autoload": {
909
+ "psr-4": {
910
+ "Hoa\\File\\": "."
911
  }
912
  },
913
  "notification-url": "https://packagist.org/downloads/",
914
  "license": [
915
+ "BSD-3-Clause"
916
  ],
917
  "authors": [
918
  {
919
+ "name": "Ivan Enderlin",
920
+ "email": "ivan.enderlin@hoa-project.net"
 
921
  },
922
  {
923
+ "name": "Hoa community",
924
+ "homepage": "https://hoa-project.net/"
925
  }
926
  ],
927
+ "description": "The Hoa\\File library.",
928
+ "homepage": "https://hoa-project.net/",
929
  "keywords": [
930
+ "Socket",
931
+ "directory",
932
+ "file",
933
+ "finder",
934
+ "library",
935
+ "link",
936
+ "temporary"
937
  ],
938
+ "support": {
939
+ "docs": "https://central.hoa-project.net/Documentation/Library/File",
940
+ "email": "support@hoa-project.net",
941
+ "forum": "https://users.hoa-project.net/",
942
+ "irc": "irc://chat.freenode.net/hoaproject",
943
+ "issues": "https://github.com/hoaproject/File/issues",
944
+ "source": "https://central.hoa-project.net/Resource/Library/File"
945
+ },
946
+ "time": "2017-07-11T07:42:15+00:00"
947
  },
948
  {
949
+ "name": "hoa/iterator",
950
+ "version": "2.17.01.10",
951
  "source": {
952
  "type": "git",
953
+ "url": "https://github.com/hoaproject/Iterator.git",
954
+ "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc"
955
  },
956
  "dist": {
957
  "type": "zip",
958
+ "url": "https://api.github.com/repos/hoaproject/Iterator/zipball/d1120ba09cb4ccd049c86d10058ab94af245f0cc",
959
+ "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc",
960
  "shasum": ""
961
  },
962
  "require": {
963
+ "hoa/consistency": "~1.0",
964
+ "hoa/exception": "~1.0"
 
 
 
 
 
965
  },
966
  "require-dev": {
967
+ "hoa/test": "~2.0"
 
 
 
 
 
 
968
  },
969
  "type": "library",
970
  "extra": {
971
  "branch-alias": {
972
+ "dev-master": "2.x-dev"
973
  }
974
  },
975
  "autoload": {
976
+ "psr-4": {
977
+ "Hoa\\Iterator\\": "."
978
+ }
979
  },
980
  "notification-url": "https://packagist.org/downloads/",
981
  "license": [
983
  ],
984
  "authors": [
985
  {
986
+ "name": "Ivan Enderlin",
987
+ "email": "ivan.enderlin@hoa-project.net"
988
+ },
989
+ {
990
+ "name": "Hoa community",
991
+ "homepage": "https://hoa-project.net/"
992
  }
993
  ],
994
+ "description": "The Hoa\\Iterator library.",
995
+ "homepage": "https://hoa-project.net/",
996
  "keywords": [
997
+ "iterator",
998
+ "library"
 
999
  ],
1000
+ "support": {
1001
+ "docs": "https://central.hoa-project.net/Documentation/Library/Iterator",
1002
+ "email": "support@hoa-project.net",
1003
+ "forum": "https://users.hoa-project.net/",
1004
+ "irc": "irc://chat.freenode.net/hoaproject",
1005
+ "issues": "https://github.com/hoaproject/Iterator/issues",
1006
+ "source": "https://central.hoa-project.net/Resource/Library/Iterator"
1007
+ },
1008
+ "time": "2017-01-10T10:34:47+00:00"
1009
  },
1010
  {
1011
+ "name": "hoa/protocol",
1012
+ "version": "1.17.01.14",
1013
  "source": {
1014
  "type": "git",
1015
+ "url": "https://github.com/hoaproject/Protocol.git",
1016
+ "reference": "5c2cf972151c45f373230da170ea015deecf19e2"
1017
  },
1018
  "dist": {
1019
  "type": "zip",
1020
+ "url": "https://api.github.com/repos/hoaproject/Protocol/zipball/5c2cf972151c45f373230da170ea015deecf19e2",
1021
+ "reference": "5c2cf972151c45f373230da170ea015deecf19e2",
1022
  "shasum": ""
1023
  },
1024
  "require": {
1025
+ "hoa/consistency": "~1.0",
1026
+ "hoa/exception": "~1.0"
1027
+ },
1028
+ "require-dev": {
1029
+ "hoa/test": "~2.0"
1030
  },
1031
  "type": "library",
1032
  "extra": {
1033
  "branch-alias": {
1034
+ "dev-master": "1.x-dev"
1035
  }
1036
  },
1037
  "autoload": {
1038
+ "psr-4": {
1039
+ "Hoa\\Protocol\\": "."
1040
+ },
1041
+ "files": [
1042
+ "Wrapper.php"
1043
  ]
1044
  },
1045
  "notification-url": "https://packagist.org/downloads/",
1048
  ],
1049
  "authors": [
1050
  {
1051
+ "name": "Ivan Enderlin",
1052
+ "email": "ivan.enderlin@hoa-project.net"
1053
+ },
1054
+ {
1055
+ "name": "Hoa community",
1056
+ "homepage": "https://hoa-project.net/"
1057
  }
1058
  ],
1059
+ "description": "The Hoa\\Protocol library.",
1060
+ "homepage": "https://hoa-project.net/",
1061
  "keywords": [
1062
+ "library",
1063
+ "protocol",
1064
+ "resource",
1065
+ "stream",
1066
+ "wrapper"
1067
  ],
1068
+ "support": {
1069
+ "docs": "https://central.hoa-project.net/Documentation/Library/Protocol",
1070
+ "email": "support@hoa-project.net",
1071
+ "forum": "https://users.hoa-project.net/",
1072
+ "irc": "irc://chat.freenode.net/hoaproject",
1073
+ "issues": "https://github.com/hoaproject/Protocol/issues",
1074
+ "source": "https://central.hoa-project.net/Resource/Library/Protocol"
1075
+ },
1076
+ "time": "2017-01-14T12:26:10+00:00"
1077
  },
1078
  {
1079
+ "name": "hoa/stream",
1080
+ "version": "1.17.02.21",
1081
  "source": {
1082
  "type": "git",
1083
+ "url": "https://github.com/hoaproject/Stream.git",
1084
+ "reference": "3293cfffca2de10525df51436adf88a559151d82"
1085
  },
1086
  "dist": {
1087
  "type": "zip",
1088
+ "url": "https://api.github.com/repos/hoaproject/Stream/zipball/3293cfffca2de10525df51436adf88a559151d82",
1089
+ "reference": "3293cfffca2de10525df51436adf88a559151d82",
1090
  "shasum": ""
1091
  },
1092
  "require": {
1093
+ "hoa/consistency": "~1.0",
1094
+ "hoa/event": "~1.0",
1095
+ "hoa/exception": "~1.0",
1096
+ "hoa/protocol": "~1.0"
1097
+ },
1098
+ "require-dev": {
1099
+ "hoa/test": "~2.0"
1100
  },
1101
  "type": "library",
1102
+ "extra": {
1103
+ "branch-alias": {
1104
+ "dev-master": "1.x-dev"
1105
+ }
1106
+ },
1107
  "autoload": {
1108
+ "psr-4": {
1109
+ "Hoa\\Stream\\": "."
1110
+ }
1111
  },
1112
  "notification-url": "https://packagist.org/downloads/",
1113
  "license": [
1115
  ],
1116
  "authors": [
1117
  {
1118
+ "name": "Ivan Enderlin",
1119
+ "email": "ivan.enderlin@hoa-project.net"
1120
+ },
1121
+ {
1122
+ "name": "Hoa community",
1123
+ "homepage": "https://hoa-project.net/"
1124
  }
1125
  ],
1126
+ "description": "The Hoa\\Stream library.",
1127
+ "homepage": "https://hoa-project.net/",
1128
  "keywords": [
1129
+ "Context",
1130
+ "bucket",
1131
+ "composite",
1132
+ "filter",
1133
+ "in",
1134
+ "library",
1135
+ "out",
1136
+ "protocol",
1137
+ "stream",
1138
+ "wrapper"
1139
  ],
1140
+ "support": {
1141
+ "docs": "https://central.hoa-project.net/Documentation/Library/Stream",
1142
+ "email": "support@hoa-project.net",
1143
+ "forum": "https://users.hoa-project.net/",
1144
+ "irc": "irc://chat.freenode.net/hoaproject",
1145
+ "issues": "https://github.com/hoaproject/Stream/issues",
1146
+ "source": "https://central.hoa-project.net/Resource/Library/Stream"
1147
+ },
1148
+ "time": "2017-02-21T16:01:06+00:00"
1149
  },
1150
  {
1151
+ "name": "hoa/ustring",
1152
+ "version": "4.17.01.16",
1153
  "source": {
1154
  "type": "git",
1155
+ "url": "https://github.com/hoaproject/Ustring.git",
1156
+ "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0"
1157
  },
1158
  "dist": {
1159
  "type": "zip",
1160
+ "url": "https://api.github.com/repos/hoaproject/Ustring/zipball/e6326e2739178799b1fe3fdd92029f9517fa17a0",
1161
+ "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0",
1162
  "shasum": ""
1163
  },
1164
  "require": {
1165
+ "hoa/consistency": "~1.0",
1166
+ "hoa/exception": "~1.0"
1167
  },
1168
  "require-dev": {
1169
+ "hoa/test": "~2.0"
1170
+ },
1171
+ "suggest": {
1172
+ "ext-iconv": "ext/iconv must be present (or a third implementation) to use Hoa\\Ustring::transcode().",
1173
+ "ext-intl": "To get a better Hoa\\Ustring::toAscii() and Hoa\\Ustring::compareTo()."
1174
  },
1175
  "type": "library",
1176
+ "extra": {
1177
+ "branch-alias": {
1178
+ "dev-master": "4.x-dev"
1179
+ }
1180
+ },
1181
  "autoload": {
1182
+ "psr-4": {
1183
+ "Hoa\\Ustring\\": "."
1184
+ }
1185
  },
1186
  "notification-url": "https://packagist.org/downloads/",
1187
  "license": [
1189
  ],
1190
  "authors": [
1191
  {
1192
+ "name": "Ivan Enderlin",
1193
+ "email": "ivan.enderlin@hoa-project.net"
1194
+ },
1195
+ {
1196
+ "name": "Hoa community",
1197
+ "homepage": "https://hoa-project.net/"
1198
  }
1199
  ],
1200
+ "description": "The Hoa\\Ustring library.",
1201
+ "homepage": "https://hoa-project.net/",
1202
  "keywords": [
1203
+ "library",
1204
+ "search",
1205
+ "string",
1206
+ "unicode"
1207
  ],
1208
+ "support": {
1209
+ "docs": "https://central.hoa-project.net/Documentation/Library/Ustring",
1210
+ "email": "support@hoa-project.net",
1211
+ "forum": "https://users.hoa-project.net/",
1212
+ "irc": "irc://chat.freenode.net/hoaproject",
1213
+ "issues": "https://github.com/hoaproject/Ustring/issues",
1214
+ "source": "https://central.hoa-project.net/Resource/Library/Ustring"
1215
+ },
1216
+ "time": "2017-01-16T07:08:25+00:00"
1217
  },
1218
  {
1219
+ "name": "myclabs/deep-copy",
1220
+ "version": "1.10.2",
1221
  "source": {
1222
  "type": "git",
1223
+ "url": "https://github.com/myclabs/DeepCopy.git",
1224
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
1225
  },
1226
  "dist": {
1227
  "type": "zip",
1228
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
1229
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
1230
  "shasum": ""
1231
  },
1232
  "require": {
1233
+ "php": "^7.1 || ^8.0"
1234
+ },
1235
+ "replace": {
1236
+ "myclabs/deep-copy": "self.version"
1237
  },
1238
  "require-dev": {
1239
+ "doctrine/collections": "^1.0",
1240
+ "doctrine/common": "^2.6",
1241
+ "phpunit/phpunit": "^7.1"
1242
  },
1243
  "type": "library",
 
 
 
 
 
1244
  "autoload": {
1245
+ "psr-4": {
1246
+ "DeepCopy\\": "src/DeepCopy/"
1247
+ },
1248
+ "files": [
1249
+ "src/DeepCopy/deep_copy.php"
1250
  ]
1251
  },
1252
  "notification-url": "https://packagist.org/downloads/",
1253
  "license": [
1254
+ "MIT"
1255
  ],
1256
+ "description": "Create deep copies (clones) of your objects",
1257
+ "keywords": [
1258
+ "clone",
1259
+ "copy",
1260
+ "duplicate",
1261
+ "object",
1262
+ "object graph"
1263
+ ],
1264
+ "support": {
1265
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
1266
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
1267
+ },
1268
+ "funding": [
1269
  {
1270
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
1271
+ "type": "tidelift"
1272
  }
1273
  ],
1274
+ "time": "2020-11-13T09:40:50+00:00"
 
 
 
 
 
1275
  },
1276
  {
1277
+ "name": "phar-io/manifest",
1278
+ "version": "2.0.3",
1279
  "source": {
1280
  "type": "git",
1281
+ "url": "https://github.com/phar-io/manifest.git",
1282
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
1283
  },
1284
  "dist": {
1285
  "type": "zip",
1286
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
1287
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
1288
  "shasum": ""
1289
  },
1290
  "require": {
1291
  "ext-dom": "*",
1292
+ "ext-phar": "*",
1293
+ "ext-xmlwriter": "*",
1294
+ "phar-io/version": "^3.0.1",
1295
+ "php": "^7.2 || ^8.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1296
  },
 
 
 
1297
  "type": "library",
1298
  "extra": {
1299
  "branch-alias": {
1300
+ "dev-master": "2.0.x-dev"
1301
  }
1302
  },
1303
  "autoload": {
1310
  "BSD-3-Clause"
1311
  ],
1312
  "authors": [
1313
+ {
1314
+ "name": "Arne Blankerts",
1315
+ "email": "arne@blankerts.de",
1316
+ "role": "Developer"
1317
+ },
1318
+ {
1319
+ "name": "Sebastian Heuer",
1320
+ "email": "sebastian@phpeople.de",
1321
+ "role": "Developer"
1322
+ },
1323
  {
1324
  "name": "Sebastian Bergmann",
1325
  "email": "sebastian@phpunit.de",
1326
+ "role": "Developer"
1327
  }
1328
  ],
1329
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
1330
+ "support": {
1331
+ "issues": "https://github.com/phar-io/manifest/issues",
1332
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
1333
+ },
1334
+ "time": "2021-07-20T11:28:43+00:00"
 
 
1335
  },
1336
  {
1337
+ "name": "phar-io/version",
1338
+ "version": "3.1.0",
1339
  "source": {
1340
  "type": "git",
1341
+ "url": "https://github.com/phar-io/version.git",
1342
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
1343
  },
1344
  "dist": {
1345
  "type": "zip",
1346
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
1347
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
1348
  "shasum": ""
1349
  },
1350
  "require": {
1351
+ "php": "^7.2 || ^8.0"
 
 
 
 
 
 
 
 
 
 
 
 
1352
  },
1353
  "type": "library",
 
 
 
 
 
1354
  "autoload": {
1355
  "classmap": [
1356
  "src/"
1361
  "BSD-3-Clause"
1362
  ],
1363
  "authors": [
1364
+ {
1365
+ "name": "Arne Blankerts",
1366
+ "email": "arne@blankerts.de",
1367
+ "role": "Developer"
1368
+ },
1369
+ {
1370
+ "name": "Sebastian Heuer",
1371
+ "email": "sebastian@phpeople.de",
1372
+ "role": "Developer"
1373
+ },
1374
  {
1375
  "name": "Sebastian Bergmann",
1376
+ "email": "sebastian@phpunit.de",
1377
+ "role": "Developer"
1378
  }
1379
  ],
1380
+ "description": "Library for handling version information and constraints",
1381
+ "support": {
1382
+ "issues": "https://github.com/phar-io/version/issues",
1383
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
1384
+ },
1385
+ "time": "2021-02-23T14:00:09+00:00"
 
1386
  },
1387
  {
1388
+ "name": "phpdocumentor/reflection-common",
1389
+ "version": "2.2.0",
1390
  "source": {
1391
  "type": "git",
1392
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1393
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
1394
  },
1395
  "dist": {
1396
  "type": "zip",
1397
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1398
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1399
  "shasum": ""
1400
  },
1401
  "require": {
1402
+ "php": "^7.2 || ^8.0"
1403
  },
1404
  "type": "library",
1405
  "extra": {
1406
  "branch-alias": {
1407
+ "dev-2.x": "2.x-dev"
1408
  }
1409
  },
1410
  "autoload": {
1411
  "psr-4": {
1412
+ "phpDocumentor\\Reflection\\": "src/"
1413
  }
1414
  },
1415
  "notification-url": "https://packagist.org/downloads/",
1418
  ],
1419
  "authors": [
1420
  {
1421
+ "name": "Jaap van Otterdijk",
1422
+ "email": "opensource@ijaap.nl"
1423
  }
1424
  ],
1425
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1426
+ "homepage": "http://www.phpdoc.org",
1427
  "keywords": [
1428
+ "FQSEN",
1429
+ "phpDocumentor",
1430
+ "phpdoc",
1431
+ "reflection",
1432
+ "static analysis"
 
1433
  ],
1434
+ "support": {
1435
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
1436
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
1437
+ },
1438
+ "time": "2020-06-27T09:03:43+00:00"
1439
  },
1440
  {
1441
+ "name": "phpdocumentor/reflection-docblock",
1442
+ "version": "5.2.2",
1443
  "source": {
1444
  "type": "git",
1445
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1446
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
1447
  },
1448
  "dist": {
1449
  "type": "zip",
1450
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
1451
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
1452
  "shasum": ""
1453
  },
1454
  "require": {
1455
+ "ext-filter": "*",
1456
+ "php": "^7.2 || ^8.0",
1457
+ "phpdocumentor/reflection-common": "^2.2",
1458
+ "phpdocumentor/type-resolver": "^1.3",
1459
+ "webmozart/assert": "^1.9.1"
1460
+ },
1461
+ "require-dev": {
1462
+ "mockery/mockery": "~1.3.2"
1463
  },
1464
  "type": "library",
1465
  "extra": {
1466
  "branch-alias": {
1467
+ "dev-master": "5.x-dev"
1468
  }
1469
  },
1470
  "autoload": {
1471
  "psr-4": {
1472
+ "phpDocumentor\\Reflection\\": "src"
1473
  }
1474
  },
1475
  "notification-url": "https://packagist.org/downloads/",
1478
  ],
1479
  "authors": [
1480
  {
1481
+ "name": "Mike van Riel",
1482
+ "email": "me@mikevanriel.com"
1483
+ },
1484
+ {
1485
+ "name": "Jaap van Otterdijk",
1486
+ "email": "account@ijaap.nl"
1487
  }
1488
  ],
1489
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1490
+ "support": {
1491
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1492
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
1493
+ },
1494
+ "time": "2020-09-03T19:13:55+00:00"
 
 
1495
  },
1496
  {
1497
+ "name": "phpdocumentor/type-resolver",
1498
+ "version": "1.4.0",
1499
  "source": {
1500
  "type": "git",
1501
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
1502
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
1503
  },
1504
  "dist": {
1505
  "type": "zip",
1506
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1507
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1508
  "shasum": ""
1509
  },
1510
  "require": {
1511
+ "php": "^7.2 || ^8.0",
1512
+ "phpdocumentor/reflection-common": "^2.0"
1513
  },
1514
  "require-dev": {
1515
+ "ext-tokenizer": "*"
1516
  },
1517
  "type": "library",
1518
  "extra": {
1519
  "branch-alias": {
1520
+ "dev-1.x": "1.x-dev"
1521
  }
1522
  },
1523
  "autoload": {
1524
+ "psr-4": {
1525
+ "phpDocumentor\\Reflection\\": "src"
1526
+ }
1527
  },
1528
  "notification-url": "https://packagist.org/downloads/",
1529
  "license": [
1530
+ "MIT"
1531
  ],
1532
  "authors": [
1533
  {
1534
+ "name": "Mike van Riel",
1535
+ "email": "me@mikevanriel.com"
1536
  }
1537
  ],
1538
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
1539
+ "support": {
1540
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1541
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
1542
+ },
1543
+ "time": "2020-09-17T18:55:26+00:00"
1544
  },
1545
  {
1546
+ "name": "phpspec/prophecy",
1547
+ "version": "1.13.0",
1548
  "source": {
1549
  "type": "git",
1550
+ "url": "https://github.com/phpspec/prophecy.git",
1551
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
1552
  },
1553
  "dist": {
1554
  "type": "zip",
1555
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
1556
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
1557
  "shasum": ""
1558
  },
1559
  "require": {
1560
+ "doctrine/instantiator": "^1.2",
1561
+ "php": "^7.2 || ~8.0, <8.1",
1562
+ "phpdocumentor/reflection-docblock": "^5.2",
1563
+ "sebastian/comparator": "^3.0 || ^4.0",
1564
+ "sebastian/recursion-context": "^3.0 || ^4.0"
1565
  },
1566
  "require-dev": {
1567
+ "phpspec/phpspec": "^6.0",
1568
+ "phpunit/phpunit": "^8.0 || ^9.0"
1569
  },
1570
  "type": "library",
1571
  "extra": {
1572
  "branch-alias": {
1573
+ "dev-master": "1.11.x-dev"
1574
  }
1575
  },
1576
  "autoload": {
1577
+ "psr-4": {
1578
+ "Prophecy\\": "src/Prophecy"
1579
+ }
1580
  },
1581
  "notification-url": "https://packagist.org/downloads/",
1582
  "license": [
1583
+ "MIT"
1584
  ],
1585
  "authors": [
1586
  {
1587
+ "name": "Konstantin Kudryashov",
1588
+ "email": "ever.zet@gmail.com",
1589
+ "homepage": "http://everzet.com"
 
 
 
 
 
 
 
1590
  },
1591
  {
1592
+ "name": "Marcello Duarte",
1593
+ "email": "marcello.duarte@gmail.com"
1594
  }
1595
  ],
1596
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
1597
+ "homepage": "https://github.com/phpspec/prophecy",
1598
  "keywords": [
1599
+ "Double",
1600
+ "Dummy",
1601
+ "fake",
1602
+ "mock",
1603
+ "spy",
1604
+ "stub"
1605
  ],
1606
+ "support": {
1607
+ "issues": "https://github.com/phpspec/prophecy/issues",
1608
+ "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
1609
+ },
1610
+ "time": "2021-03-17T13:42:18+00:00"
1611
  },
1612
  {
1613
+ "name": "phpunit/php-code-coverage",
1614
+ "version": "7.0.15",
1615
  "source": {
1616
  "type": "git",
1617
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1618
+ "reference": "819f92bba8b001d4363065928088de22f25a3a48"
1619
  },
1620
  "dist": {
1621
  "type": "zip",
1622
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48",
1623
+ "reference": "819f92bba8b001d4363065928088de22f25a3a48",
1624
  "shasum": ""
1625
  },
1626
  "require": {
1627
+ "ext-dom": "*",
1628
+ "ext-xmlwriter": "*",
1629
+ "php": ">=7.2",
1630
+ "phpunit/php-file-iterator": "^2.0.2",
1631
+ "phpunit/php-text-template": "^1.2.1",
1632
+ "phpunit/php-token-stream": "^3.1.3 || ^4.0",
1633
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
1634
+ "sebastian/environment": "^4.2.2",
1635
+ "sebastian/version": "^2.0.1",
1636
+ "theseer/tokenizer": "^1.1.3"
1637
  },
1638
  "require-dev": {
1639
+ "phpunit/phpunit": "^8.2.2"
1640
+ },
1641
+ "suggest": {
1642
+ "ext-xdebug": "^2.7.2"
1643
  },
1644
  "type": "library",
1645
  "extra": {
1646
  "branch-alias": {
1647
+ "dev-master": "7.0-dev"
1648
  }
1649
  },
1650
  "autoload": {
1657
  "BSD-3-Clause"
1658
  ],
1659
  "authors": [
 
 
 
 
1660
  {
1661
  "name": "Sebastian Bergmann",
1662
+ "email": "sebastian@phpunit.de",
1663
+ "role": "lead"
1664
  }
1665
  ],
1666
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1667
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1668
  "keywords": [
1669
+ "coverage",
1670
+ "testing",
1671
+ "xunit"
1672
  ],
1673
+ "support": {
1674
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1675
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15"
1676
+ },
1677
+ "funding": [
1678
+ {
1679
+ "url": "https://github.com/sebastianbergmann",
1680
+ "type": "github"
1681
+ }
1682
+ ],
1683
+ "time": "2021-07-26T12:20:09+00:00"
1684
  },
1685
  {
1686
+ "name": "phpunit/php-file-iterator",
1687
+ "version": "2.0.4",
1688
  "source": {
1689
  "type": "git",
1690
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1691
+ "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05"
1692
  },
1693
  "dist": {
1694
  "type": "zip",
1695
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/28af674ff175d0768a5a978e6de83f697d4a7f05",
1696
+ "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05",
1697
  "shasum": ""
1698
  },
1699
  "require": {
1700
+ "php": ">=7.1"
1701
  },
1702
  "require-dev": {
1703
+ "phpunit/phpunit": "^8.5"
1704
  },
1705
  "type": "library",
1706
  "extra": {
1720
  "authors": [
1721
  {
1722
  "name": "Sebastian Bergmann",
1723
+ "email": "sebastian@phpunit.de",
1724
+ "role": "lead"
1725
  }
1726
  ],
1727
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1728
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1729
  "keywords": [
1730
+ "filesystem",
1731
+ "iterator"
1732
+ ],
1733
+ "support": {
1734
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1735
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.4"
1736
+ },
1737
+ "funding": [
1738
+ {
1739
+ "url": "https://github.com/sebastianbergmann",
1740
+ "type": "github"
1741
+ }
1742
  ],
1743
+ "time": "2021-07-19T06:46:01+00:00"
1744
  },
1745
  {
1746
+ "name": "phpunit/php-text-template",
1747
+ "version": "1.2.1",
1748
  "source": {
1749
  "type": "git",
1750
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
1751
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1752
  },
1753
  "dist": {
1754
  "type": "zip",
1755
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1756
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1757
  "shasum": ""
1758
  },
1759
  "require": {
1760
+ "php": ">=5.3.3"
 
 
 
 
 
1761
  },
1762
  "type": "library",
 
 
 
 
 
1763
  "autoload": {
1764
  "classmap": [
1765
  "src/"
1770
  "BSD-3-Clause"
1771
  ],
1772
  "authors": [
 
 
 
 
 
 
 
 
 
 
 
 
1773
  {
1774
  "name": "Sebastian Bergmann",
1775
+ "email": "sebastian@phpunit.de",
1776
+ "role": "lead"
 
 
 
1777
  }
1778
  ],
1779
+ "description": "Simple template engine.",
1780
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1781
  "keywords": [
1782
+ "template"
 
1783
  ],
1784
+ "support": {
1785
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1786
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
1787
+ },
1788
+ "time": "2015-06-21T13:50:34+00:00"
1789
  },
1790
  {
1791
+ "name": "phpunit/php-timer",
1792
+ "version": "2.1.3",
1793
  "source": {
1794
  "type": "git",
1795
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
1796
+ "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
1797
  },
1798
  "dist": {
1799
  "type": "zip",
1800
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
1801
+ "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
1802
  "shasum": ""
1803
  },
1804
  "require": {
1805
+ "php": ">=7.1"
1806
  },
1807
  "require-dev": {
1808
+ "phpunit/phpunit": "^8.5"
 
 
 
1809
  },
1810
  "type": "library",
1811
  "extra": {
1812
  "branch-alias": {
1813
+ "dev-master": "2.1-dev"
1814
  }
1815
  },
1816
  "autoload": {
1825
  "authors": [
1826
  {
1827
  "name": "Sebastian Bergmann",
1828
+ "email": "sebastian@phpunit.de",
1829
+ "role": "lead"
1830
  }
1831
  ],
1832
+ "description": "Utility class for timing",
1833
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
1834
  "keywords": [
1835
+ "timer"
1836
+ ],
1837
+ "support": {
1838
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1839
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
1840
+ },
1841
+ "funding": [
1842
+ {
1843
+ "url": "https://github.com/sebastianbergmann",
1844
+ "type": "github"
1845
+ }
1846
  ],
1847
+ "time": "2020-11-30T08:20:02+00:00"
1848
  },
1849
  {
1850
+ "name": "phpunit/php-token-stream",
1851
+ "version": "4.0.4",
1852
  "source": {
1853
  "type": "git",
1854
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1855
+ "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3"
1856
  },
1857
  "dist": {
1858
  "type": "zip",
1859
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3",
1860
+ "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3",
1861
  "shasum": ""
1862
  },
1863
  "require": {
1864
+ "ext-tokenizer": "*",
1865
+ "php": "^7.3 || ^8.0"
1866
  },
1867
  "require-dev": {
1868
+ "phpunit/phpunit": "^9.0"
1869
  },
1870
  "type": "library",
1871
  "extra": {
1872
  "branch-alias": {
1873
+ "dev-master": "4.0-dev"
1874
  }
1875
  },
1876
  "autoload": {
1888
  "email": "sebastian@phpunit.de"
1889
  }
1890
  ],
1891
+ "description": "Wrapper around PHP's tokenizer extension.",
1892
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1893
+ "keywords": [
1894
+ "tokenizer"
1895
+ ],
1896
+ "support": {
1897
+ "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
1898
+ "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
1899
+ },
1900
+ "funding": [
1901
+ {
1902
+ "url": "https://github.com/sebastianbergmann",
1903
+ "type": "github"
1904
+ }
1905
+ ],
1906
+ "abandoned": true,
1907
+ "time": "2020-08-04T08:28:15+00:00"
1908
  },
1909
  {
1910
+ "name": "phpunit/phpunit",
1911
+ "version": "8.5.20",
1912
  "source": {
1913
  "type": "git",
1914
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1915
+ "reference": "9deefba183198398a09b927a6ac6bc1feb0b7b70"
1916
  },
1917
  "dist": {
1918
  "type": "zip",
1919
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9deefba183198398a09b927a6ac6bc1feb0b7b70",
1920
+ "reference": "9deefba183198398a09b927a6ac6bc1feb0b7b70",
1921
  "shasum": ""
1922
  },
1923
  "require": {
1924
+ "doctrine/instantiator": "^1.3.1",
1925
+ "ext-dom": "*",
1926
+ "ext-json": "*",
1927
+ "ext-libxml": "*",
1928
+ "ext-mbstring": "*",
1929
+ "ext-xml": "*",
1930
+ "ext-xmlwriter": "*",
1931
+ "myclabs/deep-copy": "^1.10.0",
1932
+ "phar-io/manifest": "^2.0.3",
1933
+ "phar-io/version": "^3.0.2",
1934
+ "php": ">=7.2",
1935
+ "phpspec/prophecy": "^1.10.3",
1936
+ "phpunit/php-code-coverage": "^7.0.12",
1937
+ "phpunit/php-file-iterator": "^2.0.4",
1938
+ "phpunit/php-text-template": "^1.2.1",
1939
+ "phpunit/php-timer": "^2.1.2",
1940
+ "sebastian/comparator": "^3.0.2",
1941
+ "sebastian/diff": "^3.0.2",
1942
+ "sebastian/environment": "^4.2.3",
1943
+ "sebastian/exporter": "^3.1.2",
1944
+ "sebastian/global-state": "^3.0.0",
1945
+ "sebastian/object-enumerator": "^3.0.3",
1946
+ "sebastian/resource-operations": "^2.0.1",
1947
+ "sebastian/type": "^1.1.3",
1948
+ "sebastian/version": "^2.0.1"
1949
  },
1950
  "require-dev": {
1951
+ "ext-pdo": "*"
1952
+ },
1953
+ "suggest": {
1954
+ "ext-soap": "*",
1955
+ "ext-xdebug": "*",
1956
+ "phpunit/php-invoker": "^2.0.0"
1957
  },
1958
+ "bin": [
1959
+ "phpunit"
1960
+ ],
1961
  "type": "library",
1962
  "extra": {
1963
  "branch-alias": {
1964
+ "dev-master": "8.5-dev"
1965
  }
1966
  },
1967
  "autoload": {
1974
  "BSD-3-Clause"
1975
  ],
1976
  "authors": [
 
 
 
 
1977
  {
1978
  "name": "Sebastian Bergmann",
1979
+ "email": "sebastian@phpunit.de",
1980
+ "role": "lead"
1981
+ }
1982
+ ],
1983
+ "description": "The PHP Unit Testing framework.",
1984
+ "homepage": "https://phpunit.de/",
1985
+ "keywords": [
1986
+ "phpunit",
1987
+ "testing",
1988
+ "xunit"
1989
+ ],
1990
+ "support": {
1991
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
1992
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.20"
1993
+ },
1994
+ "funding": [
1995
+ {
1996
+ "url": "https://phpunit.de/donate.html",
1997
+ "type": "custom"
1998
  },
1999
  {
2000
+ "url": "https://github.com/sebastianbergmann",
2001
+ "type": "github"
2002
  }
2003
  ],
2004
+ "time": "2021-08-31T06:44:38+00:00"
 
 
2005
  },
2006
  {
2007
+ "name": "psr/container",
2008
+ "version": "1.1.1",
2009
  "source": {
2010
  "type": "git",
2011
+ "url": "https://github.com/php-fig/container.git",
2012
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
2013
+ },
2014
+ "dist": {
2015
+ "type": "zip",
2016
+ "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
2017
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
2018
+ "shasum": ""
2019
+ },
2020
+ "require": {
2021
+ "php": ">=7.2.0"
2022
+ },
2023
+ "type": "library",
2024
+ "autoload": {
2025
+ "psr-4": {
2026
+ "Psr\\Container\\": "src/"
2027
+ }
2028
+ },
2029
+ "notification-url": "https://packagist.org/downloads/",
2030
+ "license": [
2031
+ "MIT"
2032
+ ],
2033
+ "authors": [
2034
+ {
2035
+ "name": "PHP-FIG",
2036
+ "homepage": "https://www.php-fig.org/"
2037
+ }
2038
+ ],
2039
+ "description": "Common Container Interface (PHP FIG PSR-11)",
2040
+ "homepage": "https://github.com/php-fig/container",
2041
+ "keywords": [
2042
+ "PSR-11",
2043
+ "container",
2044
+ "container-interface",
2045
+ "container-interop",
2046
+ "psr"
2047
+ ],
2048
+ "support": {
2049
+ "issues": "https://github.com/php-fig/container/issues",
2050
+ "source": "https://github.com/php-fig/container/tree/1.1.1"
2051
+ },
2052
+ "time": "2021-03-05T17:36:06+00:00"
2053
+ },
2054
+ {
2055
+ "name": "psr/http-message",
2056
+ "version": "1.0.1",
2057
+ "source": {
2058
+ "type": "git",
2059
+ "url": "https://github.com/php-fig/http-message.git",
2060
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
2061
  },
2062
  "dist": {
2063
  "type": "zip",
2064
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
2065
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
2066
  "shasum": ""
2067
  },
2068
  "require": {
2069
+ "php": ">=5.3.0"
2070
  },
2071
  "type": "library",
2072
  "extra": {
2075
  }
2076
  },
2077
  "autoload": {
2078
+ "psr-4": {
2079
+ "Psr\\Http\\Message\\": "src/"
2080
+ }
2081
  },
2082
  "notification-url": "https://packagist.org/downloads/",
2083
  "license": [
2084
+ "MIT"
2085
  ],
2086
  "authors": [
2087
  {
2088
+ "name": "PHP-FIG",
2089
+ "homepage": "http://www.php-fig.org/"
2090
  }
2091
  ],
2092
+ "description": "Common interface for HTTP messages",
2093
+ "homepage": "https://github.com/php-fig/http-message",
2094
+ "keywords": [
2095
+ "http",
2096
+ "http-message",
2097
+ "psr",
2098
+ "psr-7",
2099
+ "request",
2100
+ "response"
2101
+ ],
2102
+ "support": {
2103
+ "source": "https://github.com/php-fig/http-message/tree/master"
2104
+ },
2105
+ "time": "2016-08-06T14:39:51+00:00"
2106
  },
2107
  {
2108
+ "name": "ralouphie/getallheaders",
2109
+ "version": "3.0.3",
2110
  "source": {
2111
  "type": "git",
2112
+ "url": "https://github.com/ralouphie/getallheaders.git",
2113
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
2114
  },
2115
  "dist": {
2116
  "type": "zip",
2117
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
2118
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
2119
  "shasum": ""
2120
  },
2121
  "require": {
2122
  "php": ">=5.6"
2123
  },
2124
+ "require-dev": {
2125
+ "php-coveralls/php-coveralls": "^2.1",
2126
+ "phpunit/phpunit": "^5 || ^6.5"
 
 
2127
  },
2128
+ "type": "library",
2129
  "autoload": {
2130
+ "files": [
2131
+ "src/getallheaders.php"
2132
  ]
2133
  },
2134
  "notification-url": "https://packagist.org/downloads/",
2135
  "license": [
2136
+ "MIT"
2137
  ],
2138
  "authors": [
2139
  {
2140
+ "name": "Ralph Khattar",
2141
+ "email": "ralph.khattar@gmail.com"
 
2142
  }
2143
  ],
2144
+ "description": "A polyfill for getallheaders.",
2145
+ "support": {
2146
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
2147
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
2148
+ },
2149
+ "time": "2019-03-08T08:55:37+00:00"
2150
  },
2151
  {
2152
+ "name": "sebastian/code-unit-reverse-lookup",
2153
+ "version": "1.0.2",
2154
  "source": {
2155
  "type": "git",
2156
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
2157
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
2158
  },
2159
  "dist": {
2160
  "type": "zip",
2161
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
2162
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
2163
  "shasum": ""
2164
  },
2165
  "require": {
2166
+ "php": ">=5.6"
 
2167
  },
2168
  "require-dev": {
2169
+ "phpunit/phpunit": "^8.5"
 
 
 
 
2170
  },
2171
  "type": "library",
2172
  "extra": {
2173
  "branch-alias": {
2174
+ "dev-master": "1.0.x-dev"
2175
  }
2176
  },
2177
  "autoload": {
2178
+ "classmap": [
2179
+ "src/"
 
 
 
2180
  ]
2181
  },
2182
  "notification-url": "https://packagist.org/downloads/",
2183
  "license": [
2184
+ "BSD-3-Clause"
2185
  ],
2186
  "authors": [
2187
  {
2188
+ "name": "Sebastian Bergmann",
2189
+ "email": "sebastian@phpunit.de"
 
 
 
 
2190
  }
2191
  ],
2192
+ "description": "Looks up which function or method a line of code belongs to",
2193
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2194
+ "support": {
2195
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
2196
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
2197
+ },
2198
+ "funding": [
2199
+ {
2200
+ "url": "https://github.com/sebastianbergmann",
2201
+ "type": "github"
2202
+ }
2203
+ ],
2204
+ "time": "2020-11-30T08:15:22+00:00"
2205
+ },
2206
+ {
2207
+ "name": "sebastian/comparator",
2208
+ "version": "3.0.3",
2209
+ "source": {
2210
+ "type": "git",
2211
+ "url": "https://github.com/sebastianbergmann/comparator.git",
2212
+ "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
2213
+ },
2214
+ "dist": {
2215
+ "type": "zip",
2216
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
2217
+ "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
2218
+ "shasum": ""
2219
+ },
2220
+ "require": {
2221
+ "php": ">=7.1",
2222
+ "sebastian/diff": "^3.0",
2223
+ "sebastian/exporter": "^3.1"
2224
+ },
2225
+ "require-dev": {
2226
+ "phpunit/phpunit": "^8.5"
2227
+ },
2228
+ "type": "library",
2229
+ "extra": {
2230
+ "branch-alias": {
2231
+ "dev-master": "3.0-dev"
2232
+ }
2233
+ },
2234
+ "autoload": {
2235
+ "classmap": [
2236
+ "src/"
2237
+ ]
2238
+ },
2239
+ "notification-url": "https://packagist.org/downloads/",
2240
+ "license": [
2241
+ "BSD-3-Clause"
2242
+ ],
2243
+ "authors": [
2244
+ {
2245
+ "name": "Sebastian Bergmann",
2246
+ "email": "sebastian@phpunit.de"
2247
+ },
2248
+ {
2249
+ "name": "Jeff Welch",
2250
+ "email": "whatthejeff@gmail.com"
2251
+ },
2252
+ {
2253
+ "name": "Volker Dusch",
2254
+ "email": "github@wallbash.com"
2255
+ },
2256
+ {
2257
+ "name": "Bernhard Schussek",
2258
+ "email": "bschussek@2bepublished.at"
2259
+ }
2260
+ ],
2261
+ "description": "Provides the functionality to compare PHP values for equality",
2262
+ "homepage": "https://github.com/sebastianbergmann/comparator",
2263
+ "keywords": [
2264
+ "comparator",
2265
+ "compare",
2266
+ "equality"
2267
+ ],
2268
+ "support": {
2269
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
2270
+ "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
2271
+ },
2272
+ "funding": [
2273
+ {
2274
+ "url": "https://github.com/sebastianbergmann",
2275
+ "type": "github"
2276
+ }
2277
+ ],
2278
+ "time": "2020-11-30T08:04:30+00:00"
2279
+ },
2280
+ {
2281
+ "name": "sebastian/diff",
2282
+ "version": "3.0.3",
2283
+ "source": {
2284
+ "type": "git",
2285
+ "url": "https://github.com/sebastianbergmann/diff.git",
2286
+ "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211"
2287
+ },
2288
+ "dist": {
2289
+ "type": "zip",
2290
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
2291
+ "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
2292
+ "shasum": ""
2293
+ },
2294
+ "require": {
2295
+ "php": ">=7.1"
2296
+ },
2297
+ "require-dev": {
2298
+ "phpunit/phpunit": "^7.5 || ^8.0",
2299
+ "symfony/process": "^2 || ^3.3 || ^4"
2300
+ },
2301
+ "type": "library",
2302
+ "extra": {
2303
+ "branch-alias": {
2304
+ "dev-master": "3.0-dev"
2305
+ }
2306
+ },
2307
+ "autoload": {
2308
+ "classmap": [
2309
+ "src/"
2310
+ ]
2311
+ },
2312
+ "notification-url": "https://packagist.org/downloads/",
2313
+ "license": [
2314
+ "BSD-3-Clause"
2315
+ ],
2316
+ "authors": [
2317
+ {
2318
+ "name": "Sebastian Bergmann",
2319
+ "email": "sebastian@phpunit.de"
2320
+ },
2321
+ {
2322
+ "name": "Kore Nordmann",
2323
+ "email": "mail@kore-nordmann.de"
2324
+ }
2325
+ ],
2326
+ "description": "Diff implementation",
2327
+ "homepage": "https://github.com/sebastianbergmann/diff",
2328
+ "keywords": [
2329
+ "diff",
2330
+ "udiff",
2331
+ "unidiff",
2332
+ "unified diff"
2333
+ ],
2334
+ "support": {
2335
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
2336
+ "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3"
2337
+ },
2338
+ "funding": [
2339
+ {
2340
+ "url": "https://github.com/sebastianbergmann",
2341
+ "type": "github"
2342
+ }
2343
+ ],
2344
+ "time": "2020-11-30T07:59:04+00:00"
2345
+ },
2346
+ {
2347
+ "name": "sebastian/environment",
2348
+ "version": "4.2.4",
2349
+ "source": {
2350
+ "type": "git",
2351
+ "url": "https://github.com/sebastianbergmann/environment.git",
2352
+ "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
2353
+ },
2354
+ "dist": {
2355
+ "type": "zip",
2356
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
2357
+ "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
2358
+ "shasum": ""
2359
+ },
2360
+ "require": {
2361
+ "php": ">=7.1"
2362
+ },
2363
+ "require-dev": {
2364
+ "phpunit/phpunit": "^7.5"
2365
+ },
2366
+ "suggest": {
2367
+ "ext-posix": "*"
2368
+ },
2369
+ "type": "library",
2370
+ "extra": {
2371
+ "branch-alias": {
2372
+ "dev-master": "4.2-dev"
2373
+ }
2374
+ },
2375
+ "autoload": {
2376
+ "classmap": [
2377
+ "src/"
2378
+ ]
2379
+ },
2380
+ "notification-url": "https://packagist.org/downloads/",
2381
+ "license": [
2382
+ "BSD-3-Clause"
2383
+ ],
2384
+ "authors": [
2385
+ {
2386
+ "name": "Sebastian Bergmann",
2387
+ "email": "sebastian@phpunit.de"
2388
+ }
2389
+ ],
2390
+ "description": "Provides functionality to handle HHVM/PHP environments",
2391
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
2392
+ "keywords": [
2393
+ "Xdebug",
2394
+ "environment",
2395
+ "hhvm"
2396
+ ],
2397
+ "support": {
2398
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
2399
+ "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
2400
+ },
2401
+ "funding": [
2402
+ {
2403
+ "url": "https://github.com/sebastianbergmann",
2404
+ "type": "github"
2405
+ }
2406
+ ],
2407
+ "time": "2020-11-30T07:53:42+00:00"
2408
+ },
2409
+ {
2410
+ "name": "sebastian/exporter",
2411
+ "version": "3.1.3",
2412
+ "source": {
2413
+ "type": "git",
2414
+ "url": "https://github.com/sebastianbergmann/exporter.git",
2415
+ "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
2416
+ },
2417
+ "dist": {
2418
+ "type": "zip",
2419
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
2420
+ "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
2421
+ "shasum": ""
2422
+ },
2423
+ "require": {
2424
+ "php": ">=7.0",
2425
+ "sebastian/recursion-context": "^3.0"
2426
+ },
2427
+ "require-dev": {
2428
+ "ext-mbstring": "*",
2429
+ "phpunit/phpunit": "^6.0"
2430
+ },
2431
+ "type": "library",
2432
+ "extra": {
2433
+ "branch-alias": {
2434
+ "dev-master": "3.1.x-dev"
2435
+ }
2436
+ },
2437
+ "autoload": {
2438
+ "classmap": [
2439
+ "src/"
2440
+ ]
2441
+ },
2442
+ "notification-url": "https://packagist.org/downloads/",
2443
+ "license": [
2444
+ "BSD-3-Clause"
2445
+ ],
2446
+ "authors": [
2447
+ {
2448
+ "name": "Sebastian Bergmann",
2449
+ "email": "sebastian@phpunit.de"
2450
+ },
2451
+ {
2452
+ "name": "Jeff Welch",
2453
+ "email": "whatthejeff@gmail.com"
2454
+ },
2455
+ {
2456
+ "name": "Volker Dusch",
2457
+ "email": "github@wallbash.com"
2458
+ },
2459
+ {
2460
+ "name": "Adam Harvey",
2461
+ "email": "aharvey@php.net"
2462
+ },
2463
+ {
2464
+ "name": "Bernhard Schussek",
2465
+ "email": "bschussek@gmail.com"
2466
+ }
2467
+ ],
2468
+ "description": "Provides the functionality to export PHP variables for visualization",
2469
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
2470
+ "keywords": [
2471
+ "export",
2472
+ "exporter"
2473
+ ],
2474
+ "support": {
2475
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
2476
+ "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
2477
+ },
2478
+ "funding": [
2479
+ {
2480
+ "url": "https://github.com/sebastianbergmann",
2481
+ "type": "github"
2482
+ }
2483
+ ],
2484
+ "time": "2020-11-30T07:47:53+00:00"
2485
+ },
2486
+ {
2487
+ "name": "sebastian/global-state",
2488
+ "version": "3.0.1",
2489
+ "source": {
2490
+ "type": "git",
2491
+ "url": "https://github.com/sebastianbergmann/global-state.git",
2492
+ "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b"
2493
+ },
2494
+ "dist": {
2495
+ "type": "zip",
2496
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/474fb9edb7ab891665d3bfc6317f42a0a150454b",
2497
+ "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b",
2498
+ "shasum": ""
2499
+ },
2500
+ "require": {
2501
+ "php": ">=7.2",
2502
+ "sebastian/object-reflector": "^1.1.1",
2503
+ "sebastian/recursion-context": "^3.0"
2504
+ },
2505
+ "require-dev": {
2506
+ "ext-dom": "*",
2507
+ "phpunit/phpunit": "^8.0"
2508
+ },
2509
+ "suggest": {
2510
+ "ext-uopz": "*"
2511
+ },
2512
+ "type": "library",
2513
+ "extra": {
2514
+ "branch-alias": {
2515
+ "dev-master": "3.0-dev"
2516
+ }
2517
+ },
2518
+ "autoload": {
2519
+ "classmap": [
2520
+ "src/"
2521
+ ]
2522
+ },
2523
+ "notification-url": "https://packagist.org/downloads/",
2524
+ "license": [
2525
+ "BSD-3-Clause"
2526
+ ],
2527
+ "authors": [
2528
+ {
2529
+ "name": "Sebastian Bergmann",
2530
+ "email": "sebastian@phpunit.de"
2531
+ }
2532
+ ],
2533
+ "description": "Snapshotting of global state",
2534
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
2535
+ "keywords": [
2536
+ "global state"
2537
+ ],
2538
+ "support": {
2539
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
2540
+ "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1"
2541
+ },
2542
+ "funding": [
2543
+ {
2544
+ "url": "https://github.com/sebastianbergmann",
2545
+ "type": "github"
2546
+ }
2547
+ ],
2548
+ "time": "2020-11-30T07:43:24+00:00"
2549
+ },
2550
+ {
2551
+ "name": "sebastian/object-enumerator",
2552
+ "version": "3.0.4",
2553
+ "source": {
2554
+ "type": "git",
2555
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2556
+ "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
2557
+ },
2558
+ "dist": {
2559
+ "type": "zip",
2560
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
2561
+ "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
2562
+ "shasum": ""
2563
+ },
2564
+ "require": {
2565
+ "php": ">=7.0",
2566
+ "sebastian/object-reflector": "^1.1.1",
2567
+ "sebastian/recursion-context": "^3.0"
2568
+ },
2569
+ "require-dev": {
2570
+ "phpunit/phpunit": "^6.0"
2571
+ },
2572
+ "type": "library",
2573
+ "extra": {
2574
+ "branch-alias": {
2575
+ "dev-master": "3.0.x-dev"
2576
+ }
2577
+ },
2578
+ "autoload": {
2579
+ "classmap": [
2580
+ "src/"
2581
+ ]
2582
+ },
2583
+ "notification-url": "https://packagist.org/downloads/",
2584
+ "license": [
2585
+ "BSD-3-Clause"
2586
+ ],
2587
+ "authors": [
2588
+ {
2589
+ "name": "Sebastian Bergmann",
2590
+ "email": "sebastian@phpunit.de"
2591
+ }
2592
+ ],
2593
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2594
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2595
+ "support": {
2596
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2597
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
2598
+ },
2599
+ "funding": [
2600
+ {
2601
+ "url": "https://github.com/sebastianbergmann",
2602
+ "type": "github"
2603
+ }
2604
+ ],
2605
+ "time": "2020-11-30T07:40:27+00:00"
2606
+ },
2607
+ {
2608
+ "name": "sebastian/object-reflector",
2609
+ "version": "1.1.2",
2610
+ "source": {
2611
+ "type": "git",
2612
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
2613
+ "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
2614
+ },
2615
+ "dist": {
2616
+ "type": "zip",
2617
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
2618
+ "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
2619
+ "shasum": ""
2620
+ },
2621
+ "require": {
2622
+ "php": ">=7.0"
2623
+ },
2624
+ "require-dev": {
2625
+ "phpunit/phpunit": "^6.0"
2626
+ },
2627
+ "type": "library",
2628
+ "extra": {
2629
+ "branch-alias": {
2630
+ "dev-master": "1.1-dev"
2631
+ }
2632
+ },
2633
+ "autoload": {
2634
+ "classmap": [
2635
+ "src/"
2636
+ ]
2637
+ },
2638
+ "notification-url": "https://packagist.org/downloads/",
2639
+ "license": [
2640
+ "BSD-3-Clause"
2641
+ ],
2642
+ "authors": [
2643
+ {
2644
+ "name": "Sebastian Bergmann",
2645
+ "email": "sebastian@phpunit.de"
2646
+ }
2647
+ ],
2648
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
2649
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2650
+ "support": {
2651
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
2652
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
2653
+ },
2654
+ "funding": [
2655
+ {
2656
+ "url": "https://github.com/sebastianbergmann",
2657
+ "type": "github"
2658
+ }
2659
+ ],
2660
+ "time": "2020-11-30T07:37:18+00:00"
2661
+ },
2662
+ {
2663
+ "name": "sebastian/recursion-context",
2664
+ "version": "3.0.1",
2665
+ "source": {
2666
+ "type": "git",
2667
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
2668
+ "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
2669
+ },
2670
+ "dist": {
2671
+ "type": "zip",
2672
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
2673
+ "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
2674
+ "shasum": ""
2675
+ },
2676
+ "require": {
2677
+ "php": ">=7.0"
2678
+ },
2679
+ "require-dev": {
2680
+ "phpunit/phpunit": "^6.0"
2681
+ },
2682
+ "type": "library",
2683
+ "extra": {
2684
+ "branch-alias": {
2685
+ "dev-master": "3.0.x-dev"
2686
+ }
2687
+ },
2688
+ "autoload": {
2689
+ "classmap": [
2690
+ "src/"
2691
+ ]
2692
+ },
2693
+ "notification-url": "https://packagist.org/downloads/",
2694
+ "license": [
2695
+ "BSD-3-Clause"
2696
+ ],
2697
+ "authors": [
2698
+ {
2699
+ "name": "Sebastian Bergmann",
2700
+ "email": "sebastian@phpunit.de"
2701
+ },
2702
+ {
2703
+ "name": "Jeff Welch",
2704
+ "email": "whatthejeff@gmail.com"
2705
+ },
2706
+ {
2707
+ "name": "Adam Harvey",
2708
+ "email": "aharvey@php.net"
2709
+ }
2710
+ ],
2711
+ "description": "Provides functionality to recursively process PHP variables",
2712
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2713
+ "support": {
2714
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
2715
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
2716
+ },
2717
+ "funding": [
2718
+ {
2719
+ "url": "https://github.com/sebastianbergmann",
2720
+ "type": "github"
2721
+ }
2722
+ ],
2723
+ "time": "2020-11-30T07:34:24+00:00"
2724
+ },
2725
+ {
2726
+ "name": "sebastian/resource-operations",
2727
+ "version": "2.0.2",
2728
+ "source": {
2729
+ "type": "git",
2730
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
2731
+ "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
2732
+ },
2733
+ "dist": {
2734
+ "type": "zip",
2735
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
2736
+ "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
2737
+ "shasum": ""
2738
+ },
2739
+ "require": {
2740
+ "php": ">=7.1"
2741
+ },
2742
+ "type": "library",
2743
+ "extra": {
2744
+ "branch-alias": {
2745
+ "dev-master": "2.0-dev"
2746
+ }
2747
+ },
2748
+ "autoload": {
2749
+ "classmap": [
2750
+ "src/"
2751
+ ]
2752
+ },
2753
+ "notification-url": "https://packagist.org/downloads/",
2754
+ "license": [
2755
+ "BSD-3-Clause"
2756
+ ],
2757
+ "authors": [
2758
+ {
2759
+ "name": "Sebastian Bergmann",
2760
+ "email": "sebastian@phpunit.de"
2761
+ }
2762
+ ],
2763
+ "description": "Provides a list of PHP built-in functions that operate on resources",
2764
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2765
+ "support": {
2766
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
2767
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2"
2768
+ },
2769
+ "funding": [
2770
+ {
2771
+ "url": "https://github.com/sebastianbergmann",
2772
+ "type": "github"
2773
+ }
2774
+ ],
2775
+ "time": "2020-11-30T07:30:19+00:00"
2776
+ },
2777
+ {
2778
+ "name": "sebastian/type",
2779
+ "version": "1.1.4",
2780
+ "source": {
2781
+ "type": "git",
2782
+ "url": "https://github.com/sebastianbergmann/type.git",
2783
+ "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4"
2784
+ },
2785
+ "dist": {
2786
+ "type": "zip",
2787
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4",
2788
+ "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4",
2789
+ "shasum": ""
2790
+ },
2791
+ "require": {
2792
+ "php": ">=7.2"
2793
+ },
2794
+ "require-dev": {
2795
+ "phpunit/phpunit": "^8.2"
2796
+ },
2797
+ "type": "library",
2798
+ "extra": {
2799
+ "branch-alias": {
2800
+ "dev-master": "1.1-dev"
2801
+ }
2802
+ },
2803
+ "autoload": {
2804
+ "classmap": [
2805
+ "src/"
2806
+ ]
2807
+ },
2808
+ "notification-url": "https://packagist.org/downloads/",
2809
+ "license": [
2810
+ "BSD-3-Clause"
2811
+ ],
2812
+ "authors": [
2813
+ {
2814
+ "name": "Sebastian Bergmann",
2815
+ "email": "sebastian@phpunit.de",
2816
+ "role": "lead"
2817
+ }
2818
+ ],
2819
+ "description": "Collection of value objects that represent the types of the PHP type system",
2820
+ "homepage": "https://github.com/sebastianbergmann/type",
2821
+ "support": {
2822
+ "issues": "https://github.com/sebastianbergmann/type/issues",
2823
+ "source": "https://github.com/sebastianbergmann/type/tree/1.1.4"
2824
+ },
2825
+ "funding": [
2826
+ {
2827
+ "url": "https://github.com/sebastianbergmann",
2828
+ "type": "github"
2829
+ }
2830
+ ],
2831
+ "time": "2020-11-30T07:25:11+00:00"
2832
+ },
2833
+ {
2834
+ "name": "sebastian/version",
2835
+ "version": "2.0.1",
2836
+ "source": {
2837
+ "type": "git",
2838
+ "url": "https://github.com/sebastianbergmann/version.git",
2839
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
2840
+ },
2841
+ "dist": {
2842
+ "type": "zip",
2843
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
2844
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
2845
+ "shasum": ""
2846
+ },
2847
+ "require": {
2848
+ "php": ">=5.6"
2849
+ },
2850
+ "type": "library",
2851
+ "extra": {
2852
+ "branch-alias": {
2853
+ "dev-master": "2.0.x-dev"
2854
+ }
2855
+ },
2856
+ "autoload": {
2857
+ "classmap": [
2858
+ "src/"
2859
+ ]
2860
+ },
2861
+ "notification-url": "https://packagist.org/downloads/",
2862
+ "license": [
2863
+ "BSD-3-Clause"
2864
+ ],
2865
+ "authors": [
2866
+ {
2867
+ "name": "Sebastian Bergmann",
2868
+ "email": "sebastian@phpunit.de",
2869
+ "role": "lead"
2870
+ }
2871
+ ],
2872
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2873
+ "homepage": "https://github.com/sebastianbergmann/version",
2874
+ "support": {
2875
+ "issues": "https://github.com/sebastianbergmann/version/issues",
2876
+ "source": "https://github.com/sebastianbergmann/version/tree/master"
2877
+ },
2878
+ "time": "2016-10-03T07:35:21+00:00"
2879
+ },
2880
+ {
2881
+ "name": "symfony/browser-kit",
2882
+ "version": "v4.4.27",
2883
+ "source": {
2884
+ "type": "git",
2885
+ "url": "https://github.com/symfony/browser-kit.git",
2886
+ "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b"
2887
+ },
2888
+ "dist": {
2889
+ "type": "zip",
2890
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9629d1524d8ced5a4ec3e94abdbd638b4ec8319b",
2891
+ "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b",
2892
+ "shasum": ""
2893
+ },
2894
+ "require": {
2895
+ "php": ">=7.1.3",
2896
+ "symfony/dom-crawler": "^3.4|^4.0|^5.0",
2897
+ "symfony/polyfill-php80": "^1.16"
2898
+ },
2899
+ "require-dev": {
2900
+ "symfony/css-selector": "^3.4|^4.0|^5.0",
2901
+ "symfony/http-client": "^4.3|^5.0",
2902
+ "symfony/mime": "^4.3|^5.0",
2903
+ "symfony/process": "^3.4|^4.0|^5.0"
2904
+ },
2905
+ "suggest": {
2906
+ "symfony/process": ""
2907
+ },
2908
+ "type": "library",
2909
+ "autoload": {
2910
+ "psr-4": {
2911
+ "Symfony\\Component\\BrowserKit\\": ""
2912
+ },
2913
+ "exclude-from-classmap": [
2914
+ "/Tests/"
2915
+ ]
2916
+ },
2917
+ "notification-url": "https://packagist.org/downloads/",
2918
+ "license": [
2919
+ "MIT"
2920
+ ],
2921
+ "authors": [
2922
+ {
2923
+ "name": "Fabien Potencier",
2924
+ "email": "fabien@symfony.com"
2925
+ },
2926
+ {
2927
+ "name": "Symfony Community",
2928
+ "homepage": "https://symfony.com/contributors"
2929
+ }
2930
+ ],
2931
+ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
2932
+ "homepage": "https://symfony.com",
2933
+ "support": {
2934
+ "source": "https://github.com/symfony/browser-kit/tree/v4.4.27"
2935
+ },
2936
+ "funding": [
2937
+ {
2938
+ "url": "https://symfony.com/sponsor",
2939
+ "type": "custom"
2940
+ },
2941
+ {
2942
+ "url": "https://github.com/fabpot",
2943
+ "type": "github"
2944
+ },
2945
+ {
2946
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2947
+ "type": "tidelift"
2948
+ }
2949
+ ],
2950
+ "time": "2021-07-21T12:19:41+00:00"
2951
+ },
2952
+ {
2953
+ "name": "symfony/console",
2954
+ "version": "v4.4.30",
2955
+ "source": {
2956
+ "type": "git",
2957
+ "url": "https://github.com/symfony/console.git",
2958
+ "reference": "a3f7189a0665ee33b50e9e228c46f50f5acbed22"
2959
+ },
2960
+ "dist": {
2961
+ "type": "zip",
2962
+ "url": "https://api.github.com/repos/symfony/console/zipball/a3f7189a0665ee33b50e9e228c46f50f5acbed22",
2963
+ "reference": "a3f7189a0665ee33b50e9e228c46f50f5acbed22",
2964
+ "shasum": ""
2965
+ },
2966
+ "require": {
2967
+ "php": ">=7.1.3",
2968
+ "symfony/polyfill-mbstring": "~1.0",
2969
+ "symfony/polyfill-php73": "^1.8",
2970
+ "symfony/polyfill-php80": "^1.16",
2971
+ "symfony/service-contracts": "^1.1|^2"
2972
+ },
2973
+ "conflict": {
2974
+ "psr/log": ">=3",
2975
+ "symfony/dependency-injection": "<3.4",
2976
+ "symfony/event-dispatcher": "<4.3|>=5",
2977
+ "symfony/lock": "<4.4",
2978
+ "symfony/process": "<3.3"
2979
+ },
2980
+ "provide": {
2981
+ "psr/log-implementation": "1.0|2.0"
2982
+ },
2983
+ "require-dev": {
2984
+ "psr/log": "^1|^2",
2985
+ "symfony/config": "^3.4|^4.0|^5.0",
2986
+ "symfony/dependency-injection": "^3.4|^4.0|^5.0",
2987
+ "symfony/event-dispatcher": "^4.3",
2988
+ "symfony/lock": "^4.4|^5.0",
2989
+ "symfony/process": "^3.4|^4.0|^5.0",
2990
+ "symfony/var-dumper": "^4.3|^5.0"
2991
+ },
2992
+ "suggest": {
2993
+ "psr/log": "For using the console logger",
2994
+ "symfony/event-dispatcher": "",
2995
+ "symfony/lock": "",
2996
+ "symfony/process": ""
2997
+ },
2998
+ "type": "library",
2999
+ "autoload": {
3000
+ "psr-4": {
3001
+ "Symfony\\Component\\Console\\": ""
3002
+ },
3003
+ "exclude-from-classmap": [
3004
+ "/Tests/"
3005
+ ]
3006
+ },
3007
+ "notification-url": "https://packagist.org/downloads/",
3008
+ "license": [
3009
+ "MIT"
3010
+ ],
3011
+ "authors": [
3012
+ {
3013
+ "name": "Fabien Potencier",
3014
+ "email": "fabien@symfony.com"
3015
+ },
3016
+ {
3017
+ "name": "Symfony Community",
3018
+ "homepage": "https://symfony.com/contributors"
3019
+ }
3020
+ ],
3021
+ "description": "Eases the creation of beautiful and testable command line interfaces",
3022
+ "homepage": "https://symfony.com",
3023
+ "support": {
3024
+ "source": "https://github.com/symfony/console/tree/v4.4.30"
3025
+ },
3026
+ "funding": [
3027
+ {
3028
+ "url": "https://symfony.com/sponsor",
3029
+ "type": "custom"
3030
+ },
3031
+ {
3032
+ "url": "https://github.com/fabpot",
3033
+ "type": "github"
3034
+ },
3035
+ {
3036
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3037
+ "type": "tidelift"
3038
+ }
3039
+ ],
3040
+ "time": "2021-08-25T19:27:26+00:00"
3041
+ },
3042
+ {
3043
+ "name": "symfony/css-selector",
3044
+ "version": "v4.4.27",
3045
+ "source": {
3046
+ "type": "git",
3047
+ "url": "https://github.com/symfony/css-selector.git",
3048
+ "reference": "5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6"
3049
+ },
3050
+ "dist": {
3051
+ "type": "zip",
3052
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6",
3053
+ "reference": "5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6",
3054
+ "shasum": ""
3055
+ },
3056
+ "require": {
3057
+ "php": ">=7.1.3",
3058
+ "symfony/polyfill-php80": "^1.16"
3059
+ },
3060
+ "type": "library",
3061
+ "autoload": {
3062
+ "psr-4": {
3063
+ "Symfony\\Component\\CssSelector\\": ""
3064
+ },
3065
+ "exclude-from-classmap": [
3066
+ "/Tests/"
3067
+ ]
3068
+ },
3069
+ "notification-url": "https://packagist.org/downloads/",
3070
+ "license": [
3071
+ "MIT"
3072
+ ],
3073
+ "authors": [
3074
+ {
3075
+ "name": "Fabien Potencier",
3076
+ "email": "fabien@symfony.com"
3077
+ },
3078
+ {
3079
+ "name": "Jean-François Simon",
3080
+ "email": "jeanfrancois.simon@sensiolabs.com"
3081
+ },
3082
+ {
3083
+ "name": "Symfony Community",
3084
+ "homepage": "https://symfony.com/contributors"
3085
+ }
3086
+ ],
3087
+ "description": "Converts CSS selectors to XPath expressions",
3088
+ "homepage": "https://symfony.com",
3089
+ "support": {
3090
+ "source": "https://github.com/symfony/css-selector/tree/v4.4.27"
3091
+ },
3092
+ "funding": [
3093
+ {
3094
+ "url": "https://symfony.com/sponsor",
3095
+ "type": "custom"
3096
+ },
3097
+ {
3098
+ "url": "https://github.com/fabpot",
3099
+ "type": "github"
3100
+ },
3101
+ {
3102
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3103
+ "type": "tidelift"
3104
+ }
3105
+ ],
3106
+ "time": "2021-07-21T12:19:41+00:00"
3107
+ },
3108
+ {
3109
+ "name": "symfony/dom-crawler",
3110
+ "version": "v4.4.30",
3111
+ "source": {
3112
+ "type": "git",
3113
+ "url": "https://github.com/symfony/dom-crawler.git",
3114
+ "reference": "4632ae3567746c7e915c33c67a2fb6ab746090c4"
3115
+ },
3116
+ "dist": {
3117
+ "type": "zip",
3118
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4632ae3567746c7e915c33c67a2fb6ab746090c4",
3119
+ "reference": "4632ae3567746c7e915c33c67a2fb6ab746090c4",
3120
+ "shasum": ""
3121
+ },
3122
+ "require": {
3123
+ "php": ">=7.1.3",
3124
+ "symfony/polyfill-ctype": "~1.8",
3125
+ "symfony/polyfill-mbstring": "~1.0",
3126
+ "symfony/polyfill-php80": "^1.16"
3127
+ },
3128
+ "conflict": {
3129
+ "masterminds/html5": "<2.6"
3130
+ },
3131
+ "require-dev": {
3132
+ "masterminds/html5": "^2.6",
3133
+ "symfony/css-selector": "^3.4|^4.0|^5.0"
3134
+ },
3135
+ "suggest": {
3136
+ "symfony/css-selector": ""
3137
+ },
3138
+ "type": "library",
3139
+ "autoload": {
3140
+ "psr-4": {
3141
+ "Symfony\\Component\\DomCrawler\\": ""
3142
+ },
3143
+ "exclude-from-classmap": [
3144
+ "/Tests/"
3145
+ ]
3146
+ },
3147
+ "notification-url": "https://packagist.org/downloads/",
3148
+ "license": [
3149
+ "MIT"
3150
+ ],
3151
+ "authors": [
3152
+ {
3153
+ "name": "Fabien Potencier",
3154
+ "email": "fabien@symfony.com"
3155
+ },
3156
+ {
3157
+ "name": "Symfony Community",
3158
+ "homepage": "https://symfony.com/contributors"
3159
+ }
3160
+ ],
3161
+ "description": "Eases DOM navigation for HTML and XML documents",
3162
+ "homepage": "https://symfony.com",
3163
+ "support": {
3164
+ "source": "https://github.com/symfony/dom-crawler/tree/v4.4.30"
3165
+ },
3166
+ "funding": [
3167
+ {
3168
+ "url": "https://symfony.com/sponsor",
3169
+ "type": "custom"
3170
+ },
3171
+ {
3172
+ "url": "https://github.com/fabpot",
3173
+ "type": "github"
3174
+ },
3175
+ {
3176
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3177
+ "type": "tidelift"
3178
+ }
3179
+ ],
3180
+ "time": "2021-08-28T15:40:01+00:00"
3181
+ },
3182
+ {
3183
+ "name": "symfony/event-dispatcher",
3184
+ "version": "v4.4.30",
3185
+ "source": {
3186
+ "type": "git",
3187
+ "url": "https://github.com/symfony/event-dispatcher.git",
3188
+ "reference": "2fe81680070043c4c80e7cedceb797e34f377bac"
3189
+ },
3190
+ "dist": {
3191
+ "type": "zip",
3192
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2fe81680070043c4c80e7cedceb797e34f377bac",
3193
+ "reference": "2fe81680070043c4c80e7cedceb797e34f377bac",
3194
+ "shasum": ""
3195
+ },
3196
+ "require": {
3197
+ "php": ">=7.1.3",
3198
+ "symfony/event-dispatcher-contracts": "^1.1",
3199
+ "symfony/polyfill-php80": "^1.16"
3200
+ },
3201
+ "conflict": {
3202
+ "symfony/dependency-injection": "<3.4"
3203
+ },
3204
+ "provide": {
3205
+ "psr/event-dispatcher-implementation": "1.0",
3206
+ "symfony/event-dispatcher-implementation": "1.1"
3207
+ },
3208
+ "require-dev": {
3209
+ "psr/log": "^1|^2|^3",
3210
+ "symfony/config": "^3.4|^4.0|^5.0",
3211
+ "symfony/dependency-injection": "^3.4|^4.0|^5.0",
3212
+ "symfony/error-handler": "~3.4|~4.4",
3213
+ "symfony/expression-language": "^3.4|^4.0|^5.0",
3214
+ "symfony/http-foundation": "^3.4|^4.0|^5.0",
3215
+ "symfony/service-contracts": "^1.1|^2",
3216
+ "symfony/stopwatch": "^3.4|^4.0|^5.0"
3217
+ },
3218
+ "suggest": {
3219
+ "symfony/dependency-injection": "",
3220
+ "symfony/http-kernel": ""
3221
+ },
3222
+ "type": "library",
3223
+ "autoload": {
3224
+ "psr-4": {
3225
+ "Symfony\\Component\\EventDispatcher\\": ""
3226
+ },
3227
+ "exclude-from-classmap": [
3228
+ "/Tests/"
3229
+ ]
3230
+ },
3231
+ "notification-url": "https://packagist.org/downloads/",
3232
+ "license": [
3233
+ "MIT"
3234
+ ],
3235
+ "authors": [
3236
+ {
3237
+ "name": "Fabien Potencier",
3238
+ "email": "fabien@symfony.com"
3239
+ },
3240
+ {
3241
+ "name": "Symfony Community",
3242
+ "homepage": "https://symfony.com/contributors"
3243
+ }
3244
+ ],
3245
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
3246
+ "homepage": "https://symfony.com",
3247
+ "support": {
3248
+ "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.30"
3249
+ },
3250
+ "funding": [
3251
+ {
3252
+ "url": "https://symfony.com/sponsor",
3253
+ "type": "custom"
3254
+ },
3255
+ {
3256
+ "url": "https://github.com/fabpot",
3257
+ "type": "github"
3258
+ },
3259
+ {
3260
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3261
+ "type": "tidelift"
3262
+ }
3263
+ ],
3264
+ "time": "2021-08-04T20:31:23+00:00"
3265
+ },
3266
+ {
3267
+ "name": "symfony/event-dispatcher-contracts",
3268
+ "version": "v1.1.9",
3269
+ "source": {
3270
+ "type": "git",
3271
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
3272
+ "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
3273
+ },
3274
+ "dist": {
3275
+ "type": "zip",
3276
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
3277
+ "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
3278
+ "shasum": ""
3279
+ },
3280
+ "require": {
3281
+ "php": ">=7.1.3"
3282
+ },
3283
+ "suggest": {
3284
+ "psr/event-dispatcher": "",
3285
+ "symfony/event-dispatcher-implementation": ""
3286
+ },
3287
+ "type": "library",
3288
+ "extra": {
3289
+ "branch-alias": {
3290
+ "dev-master": "1.1-dev"
3291
+ },
3292
+ "thanks": {
3293
+ "name": "symfony/contracts",
3294
+ "url": "https://github.com/symfony/contracts"
3295
+ }
3296
+ },
3297
+ "autoload": {
3298
+ "psr-4": {
3299
+ "Symfony\\Contracts\\EventDispatcher\\": ""
3300
+ }
3301
+ },
3302
+ "notification-url": "https://packagist.org/downloads/",
3303
+ "license": [
3304
+ "MIT"
3305
+ ],
3306
+ "authors": [
3307
+ {
3308
+ "name": "Nicolas Grekas",
3309
+ "email": "p@tchwork.com"
3310
+ },
3311
+ {
3312
+ "name": "Symfony Community",
3313
+ "homepage": "https://symfony.com/contributors"
3314
+ }
3315
+ ],
3316
+ "description": "Generic abstractions related to dispatching event",
3317
+ "homepage": "https://symfony.com",
3318
+ "keywords": [
3319
+ "abstractions",
3320
+ "contracts",
3321
+ "decoupling",
3322
+ "interfaces",
3323
+ "interoperability",
3324
+ "standards"
3325
+ ],
3326
+ "support": {
3327
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9"
3328
+ },
3329
+ "funding": [
3330
+ {
3331
+ "url": "https://symfony.com/sponsor",
3332
+ "type": "custom"
3333
+ },
3334
+ {
3335
+ "url": "https://github.com/fabpot",
3336
+ "type": "github"
3337
+ },
3338
+ {
3339
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3340
+ "type": "tidelift"
3341
+ }
3342
+ ],
3343
+ "time": "2020-07-06T13:19:58+00:00"
3344
+ },
3345
+ {
3346
+ "name": "symfony/finder",
3347
+ "version": "v4.4.30",
3348
+ "source": {
3349
+ "type": "git",
3350
+ "url": "https://github.com/symfony/finder.git",
3351
+ "reference": "70362f1e112280d75b30087c7598b837c1b468b6"
3352
+ },
3353
+ "dist": {
3354
+ "type": "zip",
3355
+ "url": "https://api.github.com/repos/symfony/finder/zipball/70362f1e112280d75b30087c7598b837c1b468b6",
3356
+ "reference": "70362f1e112280d75b30087c7598b837c1b468b6",
3357
+ "shasum": ""
3358
+ },
3359
+ "require": {
3360
+ "php": ">=7.1.3",
3361
+ "symfony/polyfill-php80": "^1.16"
3362
+ },
3363
+ "type": "library",
3364
+ "autoload": {
3365
+ "psr-4": {
3366
+ "Symfony\\Component\\Finder\\": ""
3367
+ },
3368
+ "exclude-from-classmap": [
3369
+ "/Tests/"
3370
+ ]
3371
+ },
3372
+ "notification-url": "https://packagist.org/downloads/",
3373
+ "license": [
3374
+ "MIT"
3375
+ ],
3376
+ "authors": [
3377
+ {
3378
+ "name": "Fabien Potencier",
3379
+ "email": "fabien@symfony.com"
3380
+ },
3381
+ {
3382
+ "name": "Symfony Community",
3383
+ "homepage": "https://symfony.com/contributors"
3384
+ }
3385
+ ],
3386
+ "description": "Finds files and directories via an intuitive fluent interface",
3387
+ "homepage": "https://symfony.com",
3388
+ "support": {
3389
+ "source": "https://github.com/symfony/finder/tree/v4.4.30"
3390
+ },
3391
+ "funding": [
3392
+ {
3393
+ "url": "https://symfony.com/sponsor",
3394
+ "type": "custom"
3395
+ },
3396
+ {
3397
+ "url": "https://github.com/fabpot",
3398
+ "type": "github"
3399
+ },
3400
+ {
3401
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3402
+ "type": "tidelift"
3403
+ }
3404
+ ],
3405
+ "time": "2021-08-04T20:31:23+00:00"
3406
+ },
3407
+ {
3408
+ "name": "symfony/polyfill-ctype",
3409
+ "version": "v1.23.0",
3410
+ "source": {
3411
+ "type": "git",
3412
+ "url": "https://github.com/symfony/polyfill-ctype.git",
3413
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
3414
+ },
3415
+ "dist": {
3416
+ "type": "zip",
3417
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
3418
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
3419
+ "shasum": ""
3420
+ },
3421
+ "require": {
3422
+ "php": ">=7.1"
3423
+ },
3424
+ "suggest": {
3425
+ "ext-ctype": "For best performance"
3426
+ },
3427
+ "type": "library",
3428
+ "extra": {
3429
+ "branch-alias": {
3430
+ "dev-main": "1.23-dev"
3431
+ },
3432
+ "thanks": {
3433
+ "name": "symfony/polyfill",
3434
+ "url": "https://github.com/symfony/polyfill"
3435
+ }
3436
+ },
3437
+ "autoload": {
3438
+ "psr-4": {
3439
+ "Symfony\\Polyfill\\Ctype\\": ""
3440
+ },
3441
+ "files": [
3442
+ "bootstrap.php"
3443
+ ]
3444
+ },
3445
+ "notification-url": "https://packagist.org/downloads/",
3446
+ "license": [
3447
+ "MIT"
3448
+ ],
3449
+ "authors": [
3450
+ {
3451
+ "name": "Gert de Pagter",
3452
+ "email": "BackEndTea@gmail.com"
3453
+ },
3454
+ {
3455
+ "name": "Symfony Community",
3456
+ "homepage": "https://symfony.com/contributors"
3457
+ }
3458
+ ],
3459
+ "description": "Symfony polyfill for ctype functions",
3460
+ "homepage": "https://symfony.com",
3461
+ "keywords": [
3462
+ "compatibility",
3463
+ "ctype",
3464
+ "polyfill",
3465
+ "portable"
3466
+ ],
3467
+ "support": {
3468
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
3469
+ },
3470
+ "funding": [
3471
+ {
3472
+ "url": "https://symfony.com/sponsor",
3473
+ "type": "custom"
3474
+ },
3475
+ {
3476
+ "url": "https://github.com/fabpot",
3477
+ "type": "github"
3478
+ },
3479
+ {
3480
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3481
+ "type": "tidelift"
3482
+ }
3483
+ ],
3484
+ "time": "2021-02-19T12:13:01+00:00"
3485
+ },
3486
+ {
3487
+ "name": "symfony/polyfill-intl-idn",
3488
+ "version": "v1.23.0",
3489
+ "source": {
3490
+ "type": "git",
3491
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
3492
+ "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
3493
+ },
3494
+ "dist": {
3495
+ "type": "zip",
3496
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
3497
+ "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
3498
+ "shasum": ""
3499
+ },
3500
+ "require": {
3501
+ "php": ">=7.1",
3502
+ "symfony/polyfill-intl-normalizer": "^1.10",
3503
+ "symfony/polyfill-php72": "^1.10"
3504
+ },
3505
+ "suggest": {
3506
+ "ext-intl": "For best performance"
3507
+ },
3508
+ "type": "library",
3509
+ "extra": {
3510
+ "branch-alias": {
3511
+ "dev-main": "1.23-dev"
3512
+ },
3513
+ "thanks": {
3514
+ "name": "symfony/polyfill",
3515
+ "url": "https://github.com/symfony/polyfill"
3516
+ }
3517
+ },
3518
+ "autoload": {
3519
+ "psr-4": {
3520
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
3521
+ },
3522
+ "files": [
3523
+ "bootstrap.php"
3524
+ ]
3525
+ },
3526
+ "notification-url": "https://packagist.org/downloads/",
3527
+ "license": [
3528
+ "MIT"
3529
+ ],
3530
+ "authors": [
3531
+ {
3532
+ "name": "Laurent Bassin",
3533
+ "email": "laurent@bassin.info"
3534
+ },
3535
+ {
3536
+ "name": "Trevor Rowbotham",
3537
+ "email": "trevor.rowbotham@pm.me"
3538
+ },
3539
+ {
3540
+ "name": "Symfony Community",
3541
+ "homepage": "https://symfony.com/contributors"
3542
+ }
3543
+ ],
3544
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
3545
+ "homepage": "https://symfony.com",
3546
+ "keywords": [
3547
+ "compatibility",
3548
+ "idn",
3549
+ "intl",
3550
+ "polyfill",
3551
+ "portable",
3552
+ "shim"
3553
+ ],
3554
+ "support": {
3555
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0"
3556
+ },
3557
+ "funding": [
3558
+ {
3559
+ "url": "https://symfony.com/sponsor",
3560
+ "type": "custom"
3561
+ },
3562
+ {
3563
+ "url": "https://github.com/fabpot",
3564
+ "type": "github"
3565
+ },
3566
+ {
3567
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3568
+ "type": "tidelift"
3569
+ }
3570
+ ],
3571
+ "time": "2021-05-27T09:27:20+00:00"
3572
  },
3573
  {
3574
+ "name": "symfony/polyfill-intl-normalizer",
3575
+ "version": "v1.23.0",
3576
  "source": {
3577
  "type": "git",
3578
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
3579
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
3580
  },
3581
  "dist": {
3582
  "type": "zip",
3583
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
3584
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
3585
  "shasum": ""
3586
  },
3587
  "require": {
3588
+ "php": ">=7.1"
 
 
 
 
 
 
 
 
3589
  },
3590
  "suggest": {
3591
+ "ext-intl": "For best performance"
 
 
 
3592
  },
3593
  "type": "library",
3594
  "extra": {
3595
  "branch-alias": {
3596
+ "dev-main": "1.23-dev"
3597
+ },
3598
+ "thanks": {
3599
+ "name": "symfony/polyfill",
3600
+ "url": "https://github.com/symfony/polyfill"
3601
  }
3602
  },
3603
  "autoload": {
3604
  "psr-4": {
3605
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
3606
  },
3607
+ "files": [
3608
+ "bootstrap.php"
3609
+ ],
3610
+ "classmap": [
3611
+ "Resources/stubs"
3612
  ]
3613
  },
3614
  "notification-url": "https://packagist.org/downloads/",
3617
  ],
3618
  "authors": [
3619
  {
3620
+ "name": "Nicolas Grekas",
3621
+ "email": "p@tchwork.com"
3622
  },
3623
  {
3624
  "name": "Symfony Community",
3625
  "homepage": "https://symfony.com/contributors"
3626
  }
3627
  ],
3628
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
3629
  "homepage": "https://symfony.com",
3630
+ "keywords": [
3631
+ "compatibility",
3632
+ "intl",
3633
+ "normalizer",
3634
+ "polyfill",
3635
+ "portable",
3636
+ "shim"
3637
+ ],
3638
+ "support": {
3639
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
3640
+ },
3641
+ "funding": [
3642
+ {
3643
+ "url": "https://symfony.com/sponsor",
3644
+ "type": "custom"
3645
+ },
3646
+ {
3647
+ "url": "https://github.com/fabpot",
3648
+ "type": "github"
3649
+ },
3650
+ {
3651
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3652
+ "type": "tidelift"
3653
+ }
3654
+ ],
3655
+ "time": "2021-02-19T12:13:01+00:00"
3656
  },
3657
  {
3658
+ "name": "symfony/polyfill-mbstring",
3659
+ "version": "v1.23.1",
3660
  "source": {
3661
  "type": "git",
3662
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
3663
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
3664
  },
3665
  "dist": {
3666
  "type": "zip",
3667
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
3668
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
3669
  "shasum": ""
3670
  },
3671
  "require": {
3672
+ "php": ">=7.1"
3673
+ },
3674
+ "suggest": {
3675
+ "ext-mbstring": "For best performance"
3676
  },
3677
  "type": "library",
3678
  "extra": {
3679
  "branch-alias": {
3680
+ "dev-main": "1.23-dev"
3681
+ },
3682
+ "thanks": {
3683
+ "name": "symfony/polyfill",
3684
+ "url": "https://github.com/symfony/polyfill"
3685
  }
3686
  },
3687
  "autoload": {
3688
  "psr-4": {
3689
+ "Symfony\\Polyfill\\Mbstring\\": ""
3690
  },
3691
+ "files": [
3692
+ "bootstrap.php"
3693
  ]
3694
  },
3695
  "notification-url": "https://packagist.org/downloads/",
3698
  ],
3699
  "authors": [
3700
  {
3701
+ "name": "Nicolas Grekas",
3702
+ "email": "p@tchwork.com"
 
 
 
 
3703
  },
3704
  {
3705
  "name": "Symfony Community",
3706
  "homepage": "https://symfony.com/contributors"
3707
  }
3708
  ],
3709
+ "description": "Symfony polyfill for the Mbstring extension",
3710
  "homepage": "https://symfony.com",
3711
+ "keywords": [
3712
+ "compatibility",
3713
+ "mbstring",
3714
+ "polyfill",
3715
+ "portable",
3716
+ "shim"
3717
+ ],
3718
+ "support": {
3719
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
3720
+ },
3721
+ "funding": [
3722
+ {
3723
+ "url": "https://symfony.com/sponsor",
3724
+ "type": "custom"
3725
+ },
3726
+ {
3727
+ "url": "https://github.com/fabpot",
3728
+ "type": "github"
3729
+ },
3730
+ {
3731
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3732
+ "type": "tidelift"
3733
+ }
3734
+ ],
3735
+ "time": "2021-05-27T12:26:48+00:00"
3736
  },
3737
  {
3738
+ "name": "symfony/polyfill-php72",
3739
+ "version": "v1.23.0",
3740
  "source": {
3741
  "type": "git",
3742
+ "url": "https://github.com/symfony/polyfill-php72.git",
3743
+ "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
3744
  },
3745
  "dist": {
3746
  "type": "zip",
3747
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
3748
+ "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
3749
  "shasum": ""
3750
  },
3751
  "require": {
3752
+ "php": ">=7.1"
 
 
 
 
 
 
 
 
3753
  },
3754
  "type": "library",
3755
  "extra": {
3756
  "branch-alias": {
3757
+ "dev-main": "1.23-dev"
3758
+ },
3759
+ "thanks": {
3760
+ "name": "symfony/polyfill",
3761
+ "url": "https://github.com/symfony/polyfill"
3762
  }
3763
  },
3764
  "autoload": {
3765
  "psr-4": {
3766
+ "Symfony\\Polyfill\\Php72\\": ""
3767
  },
3768
+ "files": [
3769
+ "bootstrap.php"
3770
  ]
3771
  },
3772
  "notification-url": "https://packagist.org/downloads/",
3775
  ],
3776
  "authors": [
3777
  {
3778
+ "name": "Nicolas Grekas",
3779
+ "email": "p@tchwork.com"
3780
  },
3781
  {
3782
  "name": "Symfony Community",
3783
  "homepage": "https://symfony.com/contributors"
3784
  }
3785
  ],
3786
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
3787
  "homepage": "https://symfony.com",
3788
+ "keywords": [
3789
+ "compatibility",
3790
+ "polyfill",
3791
+ "portable",
3792
+ "shim"
3793
+ ],
3794
+ "support": {
3795
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0"
3796
+ },
3797
+ "funding": [
3798
+ {
3799
+ "url": "https://symfony.com/sponsor",
3800
+ "type": "custom"
3801
+ },
3802
+ {
3803
+ "url": "https://github.com/fabpot",
3804
+ "type": "github"
3805
+ },
3806
+ {
3807
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3808
+ "type": "tidelift"
3809
+ }
3810
+ ],
3811
+ "time": "2021-05-27T09:17:38+00:00"
3812
  },
3813
  {
3814
+ "name": "symfony/polyfill-php73",
3815
+ "version": "v1.23.0",
3816
  "source": {
3817
  "type": "git",
3818
+ "url": "https://github.com/symfony/polyfill-php73.git",
3819
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
3820
  },
3821
  "dist": {
3822
  "type": "zip",
3823
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
3824
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
3825
  "shasum": ""
3826
  },
3827
  "require": {
3828
+ "php": ">=7.1"
 
 
 
 
 
 
 
3829
  },
3830
  "type": "library",
3831
  "extra": {
3832
  "branch-alias": {
3833
+ "dev-main": "1.23-dev"
3834
+ },
3835
+ "thanks": {
3836
+ "name": "symfony/polyfill",
3837
+ "url": "https://github.com/symfony/polyfill"
3838
  }
3839
  },
3840
  "autoload": {
3841
  "psr-4": {
3842
+ "Symfony\\Polyfill\\Php73\\": ""
3843
  },
3844
+ "files": [
3845
+ "bootstrap.php"
3846
+ ],
3847
+ "classmap": [
3848
+ "Resources/stubs"
3849
  ]
3850
  },
3851
  "notification-url": "https://packagist.org/downloads/",
3854
  ],
3855
  "authors": [
3856
  {
3857
+ "name": "Nicolas Grekas",
3858
+ "email": "p@tchwork.com"
3859
  },
3860
  {
3861
  "name": "Symfony Community",
3862
  "homepage": "https://symfony.com/contributors"
3863
  }
3864
  ],
3865
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
3866
  "homepage": "https://symfony.com",
3867
+ "keywords": [
3868
+ "compatibility",
3869
+ "polyfill",
3870
+ "portable",
3871
+ "shim"
3872
+ ],
3873
+ "support": {
3874
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
3875
+ },
3876
+ "funding": [
3877
+ {
3878
+ "url": "https://symfony.com/sponsor",
3879
+ "type": "custom"
3880
+ },
3881
+ {
3882
+ "url": "https://github.com/fabpot",
3883
+ "type": "github"
3884
+ },
3885
+ {
3886
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3887
+ "type": "tidelift"
3888
+ }
3889
+ ],
3890
+ "time": "2021-02-19T12:13:01+00:00"
3891
  },
3892
  {
3893
+ "name": "symfony/polyfill-php80",
3894
+ "version": "v1.23.1",
3895
  "source": {
3896
  "type": "git",
3897
+ "url": "https://github.com/symfony/polyfill-php80.git",
3898
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
3899
  },
3900
  "dist": {
3901
  "type": "zip",
3902
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
3903
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
3904
  "shasum": ""
3905
  },
3906
  "require": {
3907
+ "php": ">=7.1"
 
 
 
 
 
 
 
 
 
 
 
3908
  },
3909
  "type": "library",
3910
  "extra": {
3911
  "branch-alias": {
3912
+ "dev-main": "1.23-dev"
3913
+ },
3914
+ "thanks": {
3915
+ "name": "symfony/polyfill",
3916
+ "url": "https://github.com/symfony/polyfill"
3917
  }
3918
  },
3919
  "autoload": {
3920
  "psr-4": {
3921
+ "Symfony\\Polyfill\\Php80\\": ""
3922
  },
3923
+ "files": [
3924
+ "bootstrap.php"
3925
+ ],
3926
+ "classmap": [
3927
+ "Resources/stubs"
3928
  ]
3929
  },
3930
  "notification-url": "https://packagist.org/downloads/",
3933
  ],
3934
  "authors": [
3935
  {
3936
+ "name": "Ion Bazan",
3937
+ "email": "ion.bazan@gmail.com"
3938
+ },
3939
+ {
3940
+ "name": "Nicolas Grekas",
3941
+ "email": "p@tchwork.com"
3942
  },
3943
  {
3944
  "name": "Symfony Community",
3945
  "homepage": "https://symfony.com/contributors"
3946
  }
3947
  ],
3948
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
3949
  "homepage": "https://symfony.com",
3950
+ "keywords": [
3951
+ "compatibility",
3952
+ "polyfill",
3953
+ "portable",
3954
+ "shim"
3955
+ ],
3956
+ "support": {
3957
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
3958
+ },
3959
+ "funding": [
3960
+ {
3961
+ "url": "https://symfony.com/sponsor",
3962
+ "type": "custom"
3963
+ },
3964
+ {
3965
+ "url": "https://github.com/fabpot",
3966
+ "type": "github"
3967
+ },
3968
+ {
3969
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3970
+ "type": "tidelift"
3971
+ }
3972
+ ],
3973
+ "time": "2021-07-28T13:41:28+00:00"
3974
  },
3975
  {
3976
+ "name": "symfony/process",
3977
+ "version": "v4.4.30",
3978
  "source": {
3979
  "type": "git",
3980
+ "url": "https://github.com/symfony/process.git",
3981
+ "reference": "13d3161ef63a8ec21eeccaaf9a4d7f784a87a97d"
3982
  },
3983
  "dist": {
3984
  "type": "zip",
3985
+ "url": "https://api.github.com/repos/symfony/process/zipball/13d3161ef63a8ec21eeccaaf9a4d7f784a87a97d",
3986
+ "reference": "13d3161ef63a8ec21eeccaaf9a4d7f784a87a97d",
3987
  "shasum": ""
3988
  },
3989
  "require": {
3990
+ "php": ">=7.1.3",
3991
+ "symfony/polyfill-php80": "^1.16"
3992
  },
3993
  "type": "library",
 
 
 
 
 
3994
  "autoload": {
3995
  "psr-4": {
3996
+ "Symfony\\Component\\Process\\": ""
3997
  },
3998
  "exclude-from-classmap": [
3999
  "/Tests/"
4013
  "homepage": "https://symfony.com/contributors"
4014
  }
4015
  ],
4016
+ "description": "Executes commands in sub-processes",
4017
  "homepage": "https://symfony.com",
4018
+ "support": {
4019
+ "source": "https://github.com/symfony/process/tree/v4.4.30"
4020
+ },
4021
+ "funding": [
4022
+ {
4023
+ "url": "https://symfony.com/sponsor",
4024
+ "type": "custom"
4025
+ },
4026
+ {
4027
+ "url": "https://github.com/fabpot",
4028
+ "type": "github"
4029
+ },
4030
+ {
4031
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4032
+ "type": "tidelift"
4033
+ }
4034
+ ],
4035
+ "time": "2021-08-04T20:31:23+00:00"
4036
  },
4037
  {
4038
+ "name": "symfony/service-contracts",
4039
+ "version": "v2.4.0",
4040
  "source": {
4041
  "type": "git",
4042
+ "url": "https://github.com/symfony/service-contracts.git",
4043
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
4044
  },
4045
  "dist": {
4046
  "type": "zip",
4047
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
4048
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
4049
  "shasum": ""
4050
  },
4051
  "require": {
4052
+ "php": ">=7.2.5",
4053
+ "psr/container": "^1.1"
4054
  },
4055
  "suggest": {
4056
+ "symfony/service-implementation": ""
4057
  },
4058
  "type": "library",
4059
  "extra": {
4060
  "branch-alias": {
4061
+ "dev-main": "2.4-dev"
4062
+ },
4063
+ "thanks": {
4064
+ "name": "symfony/contracts",
4065
+ "url": "https://github.com/symfony/contracts"
4066
  }
4067
  },
4068
  "autoload": {
4069
  "psr-4": {
4070
+ "Symfony\\Contracts\\Service\\": ""
4071
+ }
 
 
 
4072
  },
4073
  "notification-url": "https://packagist.org/downloads/",
4074
  "license": [
4084
  "homepage": "https://symfony.com/contributors"
4085
  }
4086
  ],
4087
+ "description": "Generic abstractions related to writing services",
4088
  "homepage": "https://symfony.com",
4089
  "keywords": [
4090
+ "abstractions",
4091
+ "contracts",
4092
+ "decoupling",
4093
+ "interfaces",
4094
+ "interoperability",
4095
+ "standards"
4096
+ ],
4097
+ "support": {
4098
+ "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
4099
+ },
4100
+ "funding": [
4101
+ {
4102
+ "url": "https://symfony.com/sponsor",
4103
+ "type": "custom"
4104
+ },
4105
+ {
4106
+ "url": "https://github.com/fabpot",
4107
+ "type": "github"
4108
+ },
4109
+ {
4110
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4111
+ "type": "tidelift"
4112
+ }
4113
  ],
4114
+ "time": "2021-04-01T10:43:52+00:00"
4115
  },
4116
  {
4117
  "name": "symfony/yaml",
4118
+ "version": "v4.4.29",
4119
  "source": {
4120
  "type": "git",
4121
  "url": "https://github.com/symfony/yaml.git",
4122
+ "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a"
4123
  },
4124
  "dist": {
4125
  "type": "zip",
4126
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/3abcc4db06d4e776825eaa3ed8ad924d5bc7432a",
4127
+ "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a",
4128
  "shasum": ""
4129
  },
4130
  "require": {
4131
+ "php": ">=7.1.3",
4132
+ "symfony/polyfill-ctype": "~1.8"
4133
+ },
4134
+ "conflict": {
4135
+ "symfony/console": "<3.4"
4136
  },
4137
  "require-dev": {
4138
+ "symfony/console": "^3.4|^4.0|^5.0"
4139
  },
4140
  "suggest": {
4141
  "symfony/console": "For validating YAML files using the lint command"
4142
  },
4143
  "type": "library",
 
 
 
 
 
4144
  "autoload": {
4145
  "psr-4": {
4146
  "Symfony\\Component\\Yaml\\": ""
4163
  "homepage": "https://symfony.com/contributors"
4164
  }
4165
  ],
4166
+ "description": "Loads and dumps YAML files",
4167
  "homepage": "https://symfony.com",
4168
+ "support": {
4169
+ "source": "https://github.com/symfony/yaml/tree/v4.4.29"
4170
+ },
4171
+ "funding": [
4172
+ {
4173
+ "url": "https://symfony.com/sponsor",
4174
+ "type": "custom"
4175
+ },
4176
+ {
4177
+ "url": "https://github.com/fabpot",
4178
+ "type": "github"
4179
+ },
4180
+ {
4181
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4182
+ "type": "tidelift"
4183
+ }
4184
+ ],
4185
+ "time": "2021-07-27T16:19:30+00:00"
4186
+ },
4187
+ {
4188
+ "name": "theseer/tokenizer",
4189
+ "version": "1.2.1",
4190
+ "source": {
4191
+ "type": "git",
4192
+ "url": "https://github.com/theseer/tokenizer.git",
4193
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
4194
+ },
4195
+ "dist": {
4196
+ "type": "zip",
4197
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
4198
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
4199
+ "shasum": ""
4200
+ },
4201
+ "require": {
4202
+ "ext-dom": "*",
4203
+ "ext-tokenizer": "*",
4204
+ "ext-xmlwriter": "*",
4205
+ "php": "^7.2 || ^8.0"
4206
+ },
4207
+ "type": "library",
4208
+ "autoload": {
4209
+ "classmap": [
4210
+ "src/"
4211
+ ]
4212
+ },
4213
+ "notification-url": "https://packagist.org/downloads/",
4214
+ "license": [
4215
+ "BSD-3-Clause"
4216
+ ],
4217
+ "authors": [
4218
+ {
4219
+ "name": "Arne Blankerts",
4220
+ "email": "arne@blankerts.de",
4221
+ "role": "Developer"
4222
+ }
4223
+ ],
4224
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4225
+ "support": {
4226
+ "issues": "https://github.com/theseer/tokenizer/issues",
4227
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
4228
+ },
4229
+ "funding": [
4230
+ {
4231
+ "url": "https://github.com/theseer",
4232
+ "type": "github"
4233
+ }
4234
+ ],
4235
+ "time": "2021-07-28T10:34:58+00:00"
4236
  },
4237
  {
4238
  "name": "webmozart/assert",
4239
+ "version": "1.10.0",
4240
  "source": {
4241
  "type": "git",
4242
+ "url": "https://github.com/webmozarts/assert.git",
4243
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
4244
  },
4245
  "dist": {
4246
  "type": "zip",
4247
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
4248
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
4249
  "shasum": ""
4250
  },
4251
  "require": {
4252
+ "php": "^7.2 || ^8.0",
4253
+ "symfony/polyfill-ctype": "^1.8"
4254
+ },
4255
+ "conflict": {
4256
+ "phpstan/phpstan": "<0.12.20",
4257
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
4258
  },
4259
  "require-dev": {
4260
+ "phpunit/phpunit": "^8.5.13"
 
4261
  },
4262
  "type": "library",
4263
  "extra": {
4264
  "branch-alias": {
4265
+ "dev-master": "1.10-dev"
4266
  }
4267
  },
4268
  "autoload": {
4286
  "check",
4287
  "validate"
4288
  ],
4289
+ "support": {
4290
+ "issues": "https://github.com/webmozarts/assert/issues",
4291
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
4292
+ },
4293
+ "time": "2021-03-09T10:59:23+00:00"
4294
  }
4295
  ],
4296
  "packages-dev": [],
4300
  "prefer-stable": false,
4301
  "prefer-lowest": false,
4302
  "platform": [],
4303
+ "platform-dev": [],
4304
+ "plugin-api-version": "2.1.0"
4305
  }
plugin.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Custom Dashboard & Login Page - AGCA
4
  Plugin URI: https://cusmin.com/agca
5
  Description: CHANGE: admin menu, login page, admin bar, dashboard widgets, custom colors, custom CSS & JS, logo & images
6
  Author: Cusmin
7
- Version: 6.9.5
8
  Text Domain: ag-custom-admin
9
  Domain Path: /languages
10
  Author URI: https://cusmin.com/
@@ -28,7 +28,7 @@ Author URI: https://cusmin.com/
28
  $agca = new AGCA();
29
 
30
  class AGCA{
31
- private $agca_version = "6.9.5";
32
  private $colorizer = "";
33
  private $agca_debug = false;
34
  private $admin_capabilities;
@@ -42,7 +42,6 @@ class AGCA{
42
 
43
  function init(){
44
  $this->reloadScript();
45
- $this->checkPOST();
46
  $this->checkGET();
47
 
48
  if(function_exists("add_filter")){
@@ -56,31 +55,39 @@ class AGCA{
56
  add_action('login_head', array(&$this,'print_login_head'));
57
  add_action('admin_menu', array(&$this,'agca_create_menu'));
58
  add_action('wp_head', array(&$this,'print_page'));
59
- //add_action( 'wp_before_admin_bar_render', array(&$this,'admin_bar_changes') );
60
  add_action( 'plugins_loaded', array(&$this,'load_plugin_textdomain') );
61
  register_deactivation_hook(__FILE__, array(&$this,'agca_deactivate'));
62
 
63
  add_action( 'customize_controls_enqueue_scripts', array(&$this,'agca_customizer_php') );
64
 
65
- add_action( 'admin_bar_menu', array(&$this,'wp_admin_bar_my_custom_account_menu'), 11 );
66
- add_action( 'updated_option', array(&$this,'after_update_option'), 10, 3);
67
-
68
- /* wp_localize_script(
69
- 'agca-script',//use agca enqueued script
70
- 'agca_string',
71
- $this->get_language_strings()
72
- );*/
73
 
74
  /*Initialize properties*/
75
  $this->colorizer = $this->jsonMenuArray(get_option('ag_colorizer_json'),'colorizer');
76
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
 
79
  function isAGCASettingsPage() {
80
- $cs = get_current_screen();
81
- if($cs) {
82
- return $cs->id === 'tools_page_ag-custom-admin/plugin';
 
 
83
  }
 
84
  return false;
85
  }
86
 
@@ -128,11 +135,8 @@ class AGCA{
128
  'agca_custom_css',
129
  'agca_footer_left',
130
  'agca_footer_right',
131
- 'agca_custom_title',
132
- 'agca_custom_site_heading',
133
- 'agca_howdy',
134
- 'agca_logout',
135
  'agca_custom_js',
 
136
  ])) {
137
  remove_action( 'updated_option', array(&$this,'after_update_option'));
138
  update_option($option, $old_value);
@@ -153,6 +157,7 @@ class AGCA{
153
  }
154
 
155
  function admin_init(){
 
156
  $this->agca_register_settings();
157
  $this->agca_init_session();
158
  $isAdminUser = current_user_can($this->admin_capability());
@@ -161,12 +166,39 @@ class AGCA{
161
  remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
162
  }
163
  }
 
 
164
  }
165
 
166
  function login_init(){
167
  $this->agca_enqueue_scripts();
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  function agca_init_session(){
171
  if (!session_id()){
172
  session_start([
@@ -176,8 +208,6 @@ class AGCA{
176
  }
177
 
178
  function checkGET(){
179
- if(isset($_GET['agca_action'])){
180
- }
181
  if(isset($_GET['agca_debug'])){
182
  if($_GET['agca_debug'] =="true"){
183
  $this->agca_debug = true;
@@ -187,14 +217,11 @@ class AGCA{
187
  }
188
  }
189
 
190
- function checkPOST(){
191
- }
192
-
193
  function getFieldSecurityProtected(){
194
  if($this->is_wp_admin() && $this->can_save_unfiltered_html()){
195
  return '';
196
  }
197
- return '<p style="color: red">(&nbsp;For security reasons, this field is available for editing only to WordPress <b>Administrators</b> with the allowed capability to save unfiltered HTML&nbsp;)</p>';
198
  }
199
 
200
  function verifyPostRequest(){
@@ -214,7 +241,7 @@ class AGCA{
214
  if (is_user_member_of_blog($user_id, $blog_id)) {
215
  if (!current_user_can('manage_options')) {
216
  _e('Multi-site: Current user is not recognized as administrator.', 'ag-custom-admin');
217
- echo ' '.$msError;
218
  exit;
219
  }
220
  } else {
@@ -224,7 +251,7 @@ class AGCA{
224
  $user_id,
225
  $blog_id
226
  );
227
- echo ' '. $msError;
228
  exit;
229
  }
230
  } else {
@@ -242,19 +269,6 @@ class AGCA{
242
  }
243
  }
244
 
245
- function get_language_strings() {
246
- $strings = array(
247
-
248
- );
249
- return $strings;
250
- }
251
-
252
- function admin_bar_changes(){
253
- if( current_user_can( 'manage_options' )){
254
-
255
- }
256
- }
257
-
258
  function isGuest(){
259
  global $user_login;
260
  if($user_login) {
@@ -271,60 +285,33 @@ class AGCA{
271
  $customTitle = get_option('agca_custom_title');
272
  $customTitle = str_replace('%BLOG%',$blog,$customTitle);
273
  $customTitle = str_replace('%PAGE%',$page,$customTitle);
274
- return $customTitle;
275
  }else{
276
- return $admin_title;
277
  }
278
  }
279
  function agca_get_includes() {
280
- ?>
281
- <script type="text/javascript">
282
- <?php
283
- //AGCA GLOBALS
284
- echo "var agca_global_plugin_url = '".$this->pluginUrl()."';";
285
- ?>
286
- </script>
287
- <?php if( get_option('agca_no_style') == true ) { ?>
288
- <link rel="stylesheet" type="text/css" href="<?php echo $this->pluginUrl(); ?>style/ag_style_simple.css?ver=<?php echo $this->agca_version; ?>" />
289
- <?php } else { ?>
290
- <link rel="stylesheet" type="text/css" href="<?php echo $this->pluginUrl(); ?>style/ag_style.css?ver=<?php echo $this->agca_version; ?>" />
291
- <?php } ?>
292
- <script type="text/javascript" src="<?php echo $this->pluginUrl(); ?>script/ag_script.js?ver=<?php echo $this->agca_version; ?>"></script>
293
-
294
-
295
- <?php
296
- if($this->context == "login"){
297
- ?>
298
- <link rel="stylesheet" type="text/css" href="<?php echo $this->pluginUrl(); ?>style/login.min.css" />
299
- <?php
300
- }else{
301
- ?>
302
- <link rel="stylesheet" type="text/css" href="<?php echo $this->pluginUrl(); ?>style/admin.min.css" />
303
- <?php
304
- }
305
- ?>
306
- <?php
307
- if(!((get_option('agca_role_allbutadmin')==true) and (current_user_can($this->admin_capability())))){
308
  ?>
309
  <style type="text/css">
310
- <?php echo get_option('agca_custom_css'); ?>
311
  </style>
312
- <script type="text/javascript">
313
- try{
314
- eval("<?php echo str_replace(array("\r\n", "\n", "\r"), ' ', get_option('agca_custom_js')); ?>");
315
- }catch(e){
316
- alert('AGCA: <?php _e('There is an error in your custom JS script. Please fix it:', 'ag-custom-admin'); ?> \n\n' + e + '\n\n (<?php _e('AGCA -> Advanced -> Custom JavaScript', 'ag-custom-admin'); ?>)');
317
- console.log(e);
318
- }
319
- </script>
 
 
320
  <?php
321
  }
322
  }
323
 
324
  function agca_enqueue_scripts() {
325
  wp_enqueue_script('jquery');
326
- //TODO: Use this instead of manually adding scripts
327
- //wp_enqueue_script('agca-script', __FILE__.'/script/ag_script.js', array('jquery'),$this->agca_version );
328
  }
329
 
330
  function WPSPluginIsLoginPage(){
@@ -397,6 +384,7 @@ class AGCA{
397
  register_setting( 'agca-options-group', 'agca_footer_left_hide' );
398
  register_setting( 'agca-options-group', 'agca_footer_right' );
399
  register_setting( 'agca-options-group', 'agca_footer_right_hide' );
 
400
 
401
  register_setting( 'agca-options-group', 'agca_login_banner' );
402
  register_setting( 'agca-options-group', 'agca_login_banner_text' );
@@ -536,6 +524,7 @@ class AGCA{
536
  'agca_footer_left_hide',
537
  'agca_footer_right',
538
  'agca_footer_right_hide',
 
539
  'agca_login_banner',
540
  'agca_login_banner_text',
541
  'agca_login_photo_remove',
@@ -626,19 +615,16 @@ class AGCA{
626
  $optionNames = $this->getOptions();
627
 
628
  foreach ($optionNames as $optionName){
629
- $optionValue = "";
630
  $optionValue = $savedOptions[$optionName];
631
 
632
  if($optionName == "ag_edit_adminmenu_json" || "ag_edit_adminmenu_json_new"|| $optionName == "ag_add_adminmenu_json" ||$optionName == "ag_colorizer_json"){
633
  $optionValue = str_replace("\\\"", "\"", $optionValue);
634
  $optionValue = str_replace("\\\'", "\'", $optionValue);
635
  }else if($optionName == "agca_custom_js" || $optionName == "agca_custom_css"){
636
- //fb($optionValue);
637
  $optionValue = htmlspecialchars_decode($optionValue);
638
  $optionValue = str_replace("\'", '"', $optionValue);
639
  $optionValue = str_replace('\"', "'", $optionValue);
640
- //fb($optionValue);
641
- }else{
642
 
643
  }
644
  update_option($optionName, $optionValue);
@@ -694,7 +680,7 @@ class AGCA{
694
  header("Content-Disposition: attachment; filename=$filename");
695
  header("Content-Type: text/plain; ");
696
  header("Content-Transfer-Encoding: binary");
697
- echo $str;
698
  die();
699
  }
700
 
@@ -708,11 +694,23 @@ class AGCA{
708
  add_management_page('AGCA', 'AGCA', 'administrator', __FILE__, array(&$this,'agca_admin_page') );
709
  }
710
 
 
 
 
 
 
 
 
 
 
 
 
711
  function agca_create_admin_button($name,$arr) {
712
 
713
- $href = $arr["value"];
714
- $target =$arr["target"];
715
- $button ="<li class=\"wp-not-current-submenu menu-top menu-top-last\" id=\"menu-$name\"><a href=\"$href\" target=\"$target\" class=\"wp-not-current-submenu menu-top\"><div class=\"wp-menu-arrow\"><div></div></div><div class=\"wp-menu-image dashicons-before dashicons-admin-$name\" style=\"width:15px\"><br></div><div class=\"wp-menu-name\">$name</div></a></li>";
 
716
 
717
  return $button;
718
  }
@@ -747,7 +745,7 @@ class AGCA{
747
  $elements = json_decode($arr[0],true);
748
  if($elements !=""){
749
  foreach($elements as $k => $v){
750
- $array.='<tr><td colspan="2"><button target="'.$v['target'].'" title="'.$v['value'].'" class="button-secondary" type="button">'.$k.'</button>&nbsp;<a style="cursor:pointer;" title="Edit" class="button_edit"><span class="dashicons dashicons-edit"></span></a>&nbsp;<a style="cursor:pointer" title="Delete" class="button_remove"><span class="dashicons dashicons-no"></span></a></td><td></td></tr>';
751
  }
752
  }
753
  }else{
@@ -775,7 +773,6 @@ class AGCA{
775
  function remove_dashboard_widget($widget,$side)
776
  {
777
  //side can be 'normal' or 'side'
778
- global $wp_meta_boxes;
779
  remove_meta_box($widget, 'dashboard', $side);
780
  }
781
 
@@ -794,7 +791,7 @@ class AGCA{
794
  if(!$this->isGuest()){
795
  ?><style type="text/css">
796
  <?php
797
- echo get_option('agca_custom_css');
798
  if(get_option('agca_menu_remove_customize_button')){
799
  echo '#wp-admin-bar-customize{display:none;}';
800
  }
@@ -823,7 +820,7 @@ class AGCA{
823
  //$wpversion = $this->get_wp_version();
824
  ?>
825
  <script type="text/javascript">
826
- var agca_version = "<?php echo $this->agca_version; ?>";
827
  var agca_debug = <?php echo ($this->agca_debug)?"true":"false"; ?>;
828
  var jQueryScriptOutputted = false;
829
  var agca_context = "page";
@@ -832,12 +829,8 @@ class AGCA{
832
  //if the jQuery object isn't available
833
  if (typeof(jQuery) == 'undefined') {
834
  if (! jQueryScriptOutputted) {
835
- //only output the script once..
836
- jQueryScriptOutputted = true;
837
- //output the script (load it from google api)
838
- document.write("<scr" + "ipt type=\"text/javascript\" src=\"//ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js\"></scr" + "ipt>");
839
  }
840
- setTimeout("initJQuery()", 50);
841
  } else {
842
  jQuery(function() {
843
  try
@@ -853,10 +846,6 @@ class AGCA{
853
  }
854
  initJQuery();
855
  </script>
856
- <script type="text/javascript">
857
- <?php echo "var agca_global_plugin_url = '".$this->pluginUrl()."';"; ?>
858
- </script>
859
- <script type="text/javascript" src="<?php echo $this->pluginUrl(); ?>script/ag_script.js?ver=<?php echo $this->agca_version; ?>"></script>
860
  <script type="text/javascript">
861
  jQuery(document).ready(function(){
862
  <?php if(get_option('agca_colorizer_turnonoff') == 'on' && (get_option('agca_admin_bar_frontend_hide')!=true)){
@@ -866,7 +855,7 @@ class AGCA{
866
  $k == "color_header" ||
867
  $k == "color_font_header"
868
  ){
869
- ?> updateTargetColor("<?php echo $k;?>","<?php echo $v;?>"); <?php
870
  }
871
 
872
  }
@@ -928,7 +917,7 @@ class AGCA{
928
  <?php } ?>
929
  <?php if(get_option('agca_header_logo_custom')!=""){ ?>
930
 
931
- var img_url = '<?php echo htmlentities(addslashes(get_option('agca_header_logo_custom'))); ?>';
932
 
933
  advanced_url = img_url;
934
  image = jQuery("<img id=\"admin-top-branding-logo\" style='max-width:98%;position:relative;'/>").attr("src",advanced_url);
@@ -939,11 +928,11 @@ class AGCA{
939
  <?php } ?>
940
  <?php if(get_option('agca_wp_logo_custom')!=""){ ?>
941
  jQuery("li#wp-admin-bar-wp-logo a.ab-item span.ab-icon")
942
- .html("<img style=\"height:32px;margin-top:0\" src=\"<?php echo htmlentities(get_option('agca_wp_logo_custom')); ?>\" />")
943
  .css('background-image','none')
944
  .css('width','auto');
945
  jQuery("li#wp-admin-bar-wp-logo > a.ab-item")
946
- .attr('href',"<?php echo get_bloginfo('wpurl'); ?>")
947
  .css('padding', 0);
948
  jQuery("#wpadminbar #wp-admin-bar-root-default > #wp-admin-bar-wp-logo .ab-item:before").attr('title','');
949
  jQuery('body #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon').attr('class','ab-icon2');
@@ -954,10 +943,10 @@ class AGCA{
954
 
955
  <?php } ?>
956
  <?php if(get_option('agca_wp_logo_custom_link')!=""){ ?>
957
- var href = "<?php echo htmlentities(get_option('agca_wp_logo_custom_link')); ?>";
958
- href = href.replace("%BLOG%", "<?php echo get_bloginfo('wpurl'); ?>");
959
  if(href == "%SWITCH%"){
960
- href = "<?php echo get_bloginfo('wpurl'); ?>";
961
  <?php if($this->context == "page"){
962
  ?>href+="/wp-admin";<?php
963
  }
@@ -970,8 +959,7 @@ class AGCA{
970
  jQuery("#wphead #site-heading").css("display","none");
971
  <?php } ?>
972
  <?php if(get_option('agca_custom_site_heading')!=""){ ?>
973
- jQuery("#wphead #site-heading").after(('<h1><?php echo (addslashes(get_option('agca_custom_site_heading'))); ?></h1>'));
974
- jQuery("#wp-admin-bar-site-name a:first").html(('<?php echo (addslashes(get_option('agca_custom_site_heading'))); ?>'));
975
 
976
  <?php } ?>
977
  <?php if(get_option('agca_header')==true && $this->context =='admin'){
@@ -986,12 +974,11 @@ class AGCA{
986
  <?php
987
  $agca_logout_text = ((get_option('agca_logout')=="")?__("Log Out", 'ag-custom-admin'):get_option('agca_logout'));
988
  ?>
989
- jQuery("#wpbody-content").prepend('<a href="<?php echo wp_logout_url(); ?>" tabindex="10" style="float:right;margin-right:20px" class="ab-item agca_logout_button"><?php echo ($agca_logout_text); ?></a>');
990
-
991
 
992
  <?php } ?>
993
  <?php if(get_option('agca_logout')!=""){ ?>
994
- jQuery("ul#wp-admin-bar-user-actions li#wp-admin-bar-logout a").html("<?php echo htmlentities(get_option('agca_logout')); ?>");
995
  <?php } ?>
996
  <?php if(get_option('agca_remove_your_profile')==true){ ?>
997
  jQuery("ul#wp-admin-bar-user-actions li#wp-admin-bar-edit-profile").css("visibility","hidden");
@@ -1028,7 +1015,7 @@ class AGCA{
1028
  $wp_admin_bar->add_menu( array(
1029
  'id' => 'my-account',
1030
  'parent' => 'top-secondary',
1031
- 'title' => $howdy . $avatar,
1032
  'href' => $profile_url,
1033
  'meta' => array(
1034
  'class' => $class,
@@ -1044,9 +1031,9 @@ class AGCA{
1044
  ?>
1045
  function updateAllColors(){
1046
  <?php
1047
- foreach($this->colorizer as $k => $v){
1048
  if(($k !="") and ($v !="")){
1049
- ?> updateTargetColor("<?php echo $k;?>","<?php echo $v;?>"); <?php
1050
  }
1051
  }
1052
  ?>
@@ -1068,8 +1055,7 @@ class AGCA{
1068
  if($selectedValue == ""){
1069
  $selectedValue = "edit_dashboard";
1070
  }
1071
- /*echo $selectedValue;
1072
- die;*/
1073
  ksort($capabs);
1074
  foreach($capabs as $k=>$v){
1075
  $selected = "";
@@ -1077,10 +1063,10 @@ class AGCA{
1077
  if($selectedValue == $k){
1078
  $selected = " selected=\"selected\" ";
1079
  }
1080
- $capabilitySelector .="<option value=\"$k\" $selected >".ucwords(str_replace('_', ' ', $k))."</option>\n";
1081
  }
1082
 
1083
- $this->admin_capabilities = "<select class=\"agca-selectbox\" id=\"agca_admin_capability\" name=\"agca_admin_capability\" val=\"upload_files\" onchange='agca_show_affected_groups()'>".$capabilitySelector."</select>";
1084
  }
1085
 
1086
  function admin_capability(){
@@ -1105,27 +1091,14 @@ class AGCA{
1105
  }
1106
 
1107
  function agcaAdminSession(){
1108
-
1109
- //session_destroy();
1110
- //session_unset();
1111
-
1112
- /*if(!session_id()){
1113
- session_start();
1114
- }*/
1115
-
1116
  if(!isset($_SESSION["AGCA"])){
1117
  $_SESSION["AGCA"] = array();
1118
  }
1119
- //print_r($_SESSION);
1120
-
1121
- if(isset($_SESSION["AGCA"])){
1122
-
1123
- }
1124
  }
1125
 
1126
  function getAGCAColor($name){
1127
  if(isset($this->colorizer[$name])){
1128
- echo htmlspecialchars($this->colorizer[$name]);
1129
  }
1130
  }
1131
 
@@ -1175,7 +1148,6 @@ class AGCA{
1175
  global $menu;
1176
  global $submenu;
1177
 
1178
- //var_dump($menu); die;
1179
  $previousCustomizations = json_decode(get_option('ag_edit_adminmenu_json_new'), true);
1180
 
1181
  $customizationsSet = true;
@@ -1298,13 +1270,9 @@ class AGCA{
1298
  function migrate_menu_customizations($checkboxes, $textboxes){
1299
  $customizations = $this->get_menu_customizations();
1300
  global $menu;
1301
- /*print_r($menu);
1302
- print_r($customizations);
1303
- print_r($textboxes);*/
1304
 
1305
  $oldTopValue = "";
1306
 
1307
-
1308
  //Migrate checkboxes
1309
  foreach($checkboxes as $key=>$value){
1310
  $isTop = false;
@@ -1405,6 +1373,15 @@ class AGCA{
1405
  function isPluginActiveForNetwork($plugin){
1406
  return is_plugin_active_for_network($plugin);
1407
  }
 
 
 
 
 
 
 
 
 
1408
  function print_admin_css()
1409
  {
1410
  global $wp_roles;
@@ -1413,11 +1390,11 @@ class AGCA{
1413
  $currentScreen = get_current_screen();
1414
  ?>
1415
  <script type="text/javascript">
1416
- var wpversion = "<?php echo $wpversion; ?>";
1417
  var agca_debug = <?php echo ($this->agca_debug)?"true":"false"; ?>;
1418
- var agca_version = "<?php echo $this->agca_version; ?>";
1419
  var agca_wp_groups = <?php echo json_encode($wp_roles->roles); ?>;
1420
- var agca_selected_capability = "<?php echo $this->admin_capability(); ?>";
1421
  var errors = false;
1422
  var isSettingsImport = false;
1423
  var isCusminActive = <?php echo $this->isCusminActive()?'true':'false'; ?>;
@@ -1514,13 +1491,13 @@ class AGCA{
1514
  ?>
1515
 
1516
 
1517
- //get saved onfigurations
1518
 
1519
  <?php $buttons = $this->jsonMenuArray(get_option('ag_add_adminmenu_json'),'buttons'); ?>
1520
- var buttons = '<?php echo $buttons; ?>';
1521
 
1522
  <?php $buttonsJq = $this->jsonMenuArray(get_option('ag_add_adminmenu_json'),'buttonsJq'); ?>
1523
- var buttonsJq = '<?php echo $buttonsJq; ?>';
1524
 
1525
  createEditMenuPageNew(agca_admin_menu);
1526
  //createEditMenuPageV32(checkboxes, textboxes);
@@ -1532,26 +1509,26 @@ class AGCA{
1532
  <?php } else{ ?>
1533
  <?php if(get_option('agca_admin_menu_brand')!=""){ ?>
1534
  additionalStyles = ' style="margin-bottom:-4px" ';
1535
- jQuery("#adminmenu").before('<div '+additionalStyles+' id="sidebar_adminmenu_logo"><img width="160" src="<?php echo htmlentities(get_option('agca_admin_menu_brand')); ?>" /></div>');
1536
  <?php } ?>
1537
  <?php if(get_option('agca_admin_menu_brand_link')!=""){ ?>
1538
 
1539
- var href = "<?php echo htmlentities(get_option('agca_admin_menu_brand_link')); ?>";
1540
- href = href.replace("%BLOG%", "<?php echo get_bloginfo('wpurl'); ?>");
1541
 
1542
  jQuery("#sidebar_adminmenu_logo").attr('onclick','window.open(\"'+ href+ '\");');
1543
  jQuery("#sidebar_adminmenu_logo").attr('title',href);
1544
 
1545
  <?php }else{ ?>
1546
- href = "<?php echo get_bloginfo('wpurl'); ?>";
1547
  jQuery("#sidebar_adminmenu_logo").attr('onclick','window.open(\"'+ href+ '\");');
1548
  jQuery("#sidebar_adminmenu_logo").attr('title',href);
1549
  <?php } ?>
1550
 
1551
  <?php if(get_option('agca_admin_menu_submenu_round')==true){ ?>
1552
- jQuery("#adminmenu .wp-submenu").css("border-radius","<?php echo intval(htmlentities(get_option('agca_admin_menu_submenu_round_size'))); ?>px");
1553
  jQuery("#adminmenu .wp-menu-open .wp-submenu").css('border-radius','');
1554
- <?php $roundedSidebarSize = htmlentities(get_option('agca_admin_menu_submenu_round_size')); ?>
1555
  roundedSidberSize = <?php echo intval(($roundedSidebarSize == "") ? "0" : $roundedSidebarSize); ?>;
1556
 
1557
 
@@ -1593,13 +1570,13 @@ class AGCA{
1593
  <?php } ?>
1594
 
1595
  <?php if(get_option('agca_footer_left')!=""){ ?>
1596
- jQuery("#footer-left").html('<?php echo (addslashes(get_option('agca_footer_left'))); ?>');
1597
  <?php } ?>
1598
  <?php if(get_option('agca_footer_left_hide')==true){ ?>
1599
  jQuery("#footer-left").css("display","none");
1600
  <?php } ?>
1601
  <?php if(get_option('agca_footer_right')!=""){ ?>
1602
- jQuery("#footer-upgrade").html('<?php echo (addslashes(get_option('agca_footer_right'))); ?>');
1603
  <?php } ?>
1604
  <?php if(get_option('agca_footer_right_hide')==true){ ?>
1605
  jQuery("#footer-upgrade").css("display","none");
@@ -1615,14 +1592,14 @@ class AGCA{
1615
  }
1616
  <?php } ?>
1617
  <?php if(get_option('agca_dashboard_text')!=""){ ?>
1618
- jQuery("#dashboard-widgets-wrap").parent().find("h1").html("<?php echo (addslashes(get_option('agca_dashboard_text'))); ?>");
1619
  <?php } ?>
1620
  <?php if(get_option('agca_dashboard_text_paragraph')!=""){
1621
  require_once($this->filePath('wp-includes/formatting.php'));
1622
  ?>
1623
  jQuery("#wpbody-content #dashboard-widgets-wrap").before('<div id="agca_custom_dashboard_content"></div>');
1624
 
1625
- jQuery("#agca_custom_dashboard_content").html('<br /><?php echo preg_replace('/(\r\n|\r|\n)/', '\n', addslashes(wpautop(do_shortcode(get_option('agca_dashboard_text_paragraph'))))); ?>');
1626
  <?php } ?>
1627
 
1628
  <?php /*Remove Dashboard widgets*/ ?>
@@ -1797,12 +1774,11 @@ class AGCA{
1797
  }
1798
 
1799
  $this->context = "login";
1800
- //$wpversion = $this->get_wp_version();
1801
 
1802
  ?>
1803
  <script type="text/javascript">
1804
  document.write('<style type="text/css">html{visibility:hidden;}</style>');
1805
- var agca_version = "<?php echo $this->agca_version; ?>";
1806
  <?php //var wpversion = "echo $wpversion; ?>
1807
  var agca_debug = <?php echo ($this->agca_debug)?"true":"false"; ?>;
1808
  var isCusminActive = <?php echo $this->isCusminActive()?'true':'false'; ?>;
@@ -1823,22 +1799,22 @@ class AGCA{
1823
  jQuery(document).ready(function() {
1824
  try{
1825
  <?php if(get_option('agca_login_round_box')==true){ ?>
1826
- jQuery("form#loginform").css("border-radius","<?php echo intval(htmlentities(get_option('agca_login_round_box_size'))); ?>px");
1827
  <?php if(!get_option('agca_login_round_box_skip_logo')){ ?>
1828
- jQuery("#login h1 a").css("border-radius","<?php echo intval(htmlentities(get_option('agca_login_round_box_size'))); ?>px");
1829
  jQuery("#login h1 a").css("margin-bottom",'10px');
1830
  jQuery("#login h1 a").css("padding-bottom",'0');
1831
  <?php } ?>
1832
- jQuery("form#lostpasswordform").css("border-radius","<?php echo intval(htmlentities(get_option('agca_login_round_box_size'))); ?>px");
1833
  <?php } ?>
1834
  <?php if(get_option('agca_login_banner')==true){ ?>
1835
  jQuery("#backtoblog").css("display","none");
1836
  <?php } ?>
1837
  <?php if(get_option('agca_login_banner_text')==true){ ?>
1838
- jQuery("#backtoblog a").html('<?php echo "← " . htmlentities(addslashes(get_option('agca_login_banner_text'))); ?>');
1839
  <?php } ?>
1840
  <?php if(get_option('agca_login_photo_url')==true && get_option('agca_login_photo_remove')!=true){ ?>
1841
- advanced_url = "<?php echo htmlentities(get_option('agca_login_photo_url')); ?>";
1842
  var $url = "url(" + advanced_url + ")";
1843
  jQuery("#login h1 a").css("background",$url+' no-repeat');
1844
  jQuery("#login h1 a").hide();
@@ -1864,8 +1840,8 @@ class AGCA{
1864
  });
1865
  <?php } ?>
1866
  <?php if(get_option('agca_login_photo_href')==true){ ?>
1867
- var $href = "<?php echo htmlentities(get_option('agca_login_photo_href')); ?>";
1868
- $href = $href.replace("%BLOG%", "<?php echo get_bloginfo('wpurl'); ?>");
1869
 
1870
  jQuery("#login h1 a").attr("href",$href);
1871
  <?php } ?>
@@ -1889,7 +1865,7 @@ class AGCA{
1889
  <?php if(get_option('agca_login_register_href')!=""){ ?>
1890
  jQuery('p#nav a').each(function(){
1891
  if(jQuery(this).attr('href').indexOf('register') != -1){
1892
- jQuery(this).attr('href','<?php echo htmlentities(get_option('agca_login_register_href')); ?>');
1893
  }
1894
  });
1895
 
@@ -1911,7 +1887,7 @@ class AGCA{
1911
  <?php //COLORIZER ?>
1912
  <?php if(get_option('agca_colorizer_turnonoff') == 'on'){ ?>
1913
  jQuery('label,h1,h2,h3,h4,h5,h6,a,p,.form-table th,.form-wrap label').css('text-shadow','none');
1914
- jQuery("body.login, html").css("background","<?php echo $this->colorizer['login_color_background'];?>");
1915
 
1916
 
1917
  <?php
@@ -1941,17 +1917,9 @@ class AGCA{
1941
  $wpversion = $this->get_wp_version();
1942
  $this->agca_error_check();
1943
  ?>
1944
- <?php //includes ?>
1945
- <link rel="stylesheet" type="text/css" href="<?php echo $this->pluginUrl(); ?>style/farbtastic.css?ver=<?php echo $wpversion; ?>" />
1946
- <script type="text/javascript" src="<?php echo $this->pluginUrl(); ?>script/farbtastic.js?ver=<?php echo $wpversion; ?>"></script>
1947
-
1948
- <link rel="stylesheet" type="text/css" href="<?php echo $this->pluginUrl(); ?>style/agca_farbtastic.css?ver=<?php echo $wpversion; ?>" />
1949
- <script type="text/javascript" src="<?php echo $this->pluginUrl(); ?>script/agca_farbtastic.js?ver=<?php echo $wpversion; ?>"></script>
1950
-
1951
- <?php //includes ?>
1952
  <div class="wrap">
1953
  <div id="agca-header">
1954
- <h1 id="agca-title"><img src="<?php echo plugins_url( 'images/agca-logo.svg', __FILE__ ) ?>" /><span class="title">absolutely glamorous custom admin</span> <span class="version">(v<?php echo $this->agca_version; ?>)</span></h1>
1955
  <div id="agca-social">
1956
  <div class="fb-like" data-href="https://www.facebook.com/AG-Custom-Admin-892218404232342/timeline" data-layout="button" data-action="like" data-show-faces="true" data-share="true"></div>
1957
  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=agca@cusmin.com&amount=10&item_name=Support+for+AGCA+Development" target="_blank" class="agca-donate-btn" title="Please help us ensure future updates for AGCA. <br/><br/>We can't make them without your support.">Donate <span class="heart">❤</span></a>
@@ -1962,6 +1930,9 @@ class AGCA{
1962
  <form method="post" id="agca_form" action="options.php">
1963
  <?php wp_nonce_field('agca_form','_agca_token'); ?>
1964
  <?php settings_fields( 'agca-options-group' ); ?>
 
 
 
1965
  <div id="agca-your-feedback">
1966
  <strong>
1967
  <span style="color:#005B69">Your feedback:</span>
@@ -2018,42 +1989,19 @@ class AGCA{
2018
 
2019
  $this->print_checkbox(array(
2020
  'name'=>'agca_role_allbutadmin',
2021
- 'label'=>__('Exclude the AGCA admin from the customizations', 'ag-custom-admin'),
2022
- 'title'=>__('<h3>Applying customizations</h3><br><strong>Checked</strong> - apply to all users, except admin<br><strong>Not checked</strong> - apply to everyone</br></br><strong>Q</strong>: Who is AGCA administrator?</br><strong>A</strong>: Go to <i>General -> Security -> AGCA admin capability</i> and change capability option to define administrators. Only the users with selected capability will be AGCA administrators.</br>', 'ag-custom-admin')
2023
  ));
2024
 
2025
- $this->print_options_h3(__('Pages', 'ag-custom-admin'));
2026
-
2027
- $this->print_checkbox(array(
2028
- 'hide'=>true,
2029
- 'name'=>'agca_screen_options_menu',
2030
- 'label'=>__('Hide <b>Screen Options</b> menu', 'ag-custom-admin'),
2031
- 'title'=>__('Hides the menu from the admin pages (located on the top right corner of the page, below the admin bar)', 'ag-custom-admin')
2032
- ));
2033
-
2034
- $this->print_checkbox(array(
2035
- 'hide'=>true,
2036
- 'name'=>'agca_help_menu',
2037
- 'label'=>__('Hide <b>Help</b> menu', 'ag-custom-admin'),
2038
- 'title'=>__('Hides the menu from the admin pages (located on the top right corner of the page, below the admin bar)', 'ag-custom-admin')
2039
- ));
2040
-
2041
- $this->print_checkbox(array(
2042
- 'title'=>__('Hides colors scheme on profile page', 'ag-custom-admin'),
2043
- 'name'=>'agca_profile_color_scheme',
2044
- 'hide'=>true,
2045
- 'label'=>__('Hide User\'s Profile Color Scheme', 'ag-custom-admin')
2046
- ));
2047
-
2048
- $this->print_options_h3(__('Security', 'ag-custom-admin'));
2049
 
2050
  ?>
2051
 
2052
  <tr valign="center">
2053
  <th scope="row">
2054
- <label title="<?php _e('Choose which WordPress capability will be used to distinguish AGCA admin users from other users.</br>AGCA admin users have access to AGCA settings. AGCA administrators can be excluded from customizations if that option is checked', 'ag-custom-admin'); ?>" for="agca_admin_capability"><?php _e('AGCA admin capability', 'ag-custom-admin'); ?>:</label>
2055
  </th>
2056
- <td><?php echo $this->admin_capabilities; ?>&nbsp;&nbsp;<i>(<?php _e('default:&nbsp;<strong>Edit Dashboard</strong>', 'ag-custom-admin'); ?>)</i>
2057
  <p style="margin-left:5px;"><i><?php _e('Find more information about', 'ag-custom-admin'); ?> <a href="https://wordpress.org/support/article/roles-and-capabilities/" target="_blank"><?php _e('WordPress capabilities', 'ag-custom-admin'); ?></a></i></p>
2058
  </td>
2059
  <td>
@@ -2061,7 +2009,7 @@ class AGCA{
2061
  </tr>
2062
  <tr valign="center">
2063
  <td>
2064
- <p>These groups are AGCA administrators:</p>
2065
  </td>
2066
  <td>
2067
  <div id="agca-affected-roles">Loading...</div>
@@ -2073,6 +2021,30 @@ class AGCA{
2073
  </td>
2074
  </tr>
2075
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2076
  $this->print_options_h3(__('Feedback and Support', 'ag-custom-admin'));
2077
 
2078
  ?>
@@ -2166,8 +2138,7 @@ class AGCA{
2166
  $this->print_input(array(
2167
  'title'=>__('Customize WordPress title using custom title template.</br></br>Examples', 'ag-custom-admin').':</br><strong>%BLOG% -- %PAGE%</strong> '.'('.__('will be', 'ag-custom-admin').')'.' <i>My Blog -- Add New Post</i></br><strong>%BLOG%</strong> ('.__('will be', 'ag-custom-admin').') <i>My Blog</i></br><strong>My Company > %BLOG% > %PAGE%</strong> ('.__('will be', 'ag-custom-admin').') <i>My Company > My Blog > Tools</i>',
2168
  'name'=>'agca_custom_title',
2169
- 'disabled' => !$this->is_wp_admin(),
2170
- 'label'=>__('Page title template', 'ag-custom-admin') . $this->getFieldSecurityProtected(),
2171
  'hint' =>__('Please use', 'ag-custom-admin').' <strong>%BLOG%</strong> '.__('and', 'ag-custom-admin'). ' <strong>%PAGE%</strong> '.__('in your title template.', 'ag-custom-admin')
2172
  ));
2173
 
@@ -2279,9 +2250,7 @@ class AGCA{
2279
  $this->print_input(array(
2280
  'title'=>__('Adds custom text in admin top bar.', 'ag-custom-admin'),
2281
  'name'=>'agca_custom_site_heading',
2282
- 'disabled' => !$this->is_wp_admin(),
2283
- 'label'=>__('Custom blog heading', 'ag-custom-admin') . $this->getFieldSecurityProtected(),
2284
- 'hint'=>__('<strong>Tip: </strong>You can use HTML tags like', 'ag-custom-admin')." &lt;h1&gt; ".__('or', 'ag-custom-admin')." &lt;a&gt;"
2285
  ));
2286
 
2287
 
@@ -2297,15 +2266,13 @@ class AGCA{
2297
  $this->print_input(array(
2298
  'name'=>'agca_howdy',
2299
  'title' => '',
2300
- 'disabled' => !$this->is_wp_admin(),
2301
- 'label'=>__('Change Howdy text', 'ag-custom-admin') . $this->getFieldSecurityProtected(),
2302
  ));
2303
 
2304
  $this->print_input(array(
2305
  'title'=>__('Put \'Exit\', for example', 'ag-custom-admin'),
2306
  'name'=>'agca_logout',
2307
- 'disabled' => !$this->is_wp_admin(),
2308
- 'label'=>__('Change Log out text', 'ag-custom-admin') . $this->getFieldSecurityProtected(),
2309
  ));
2310
 
2311
  $this->print_checkbox(array(
@@ -2612,7 +2579,7 @@ class AGCA{
2612
  </td>
2613
  </tr>
2614
  </table>
2615
- <input type="hidden" size="47" id="ag_edit_adminmenu_json" name="ag_edit_adminmenu_json" value="<?php echo htmlspecialchars(get_option('ag_edit_adminmenu_json')); ?>" />
2616
  <input type="hidden" size="47" id="ag_edit_adminmenu_json_new" name="ag_edit_adminmenu_json_new" value="" />
2617
  </td>
2618
  <td></td>
@@ -2655,7 +2622,7 @@ class AGCA{
2655
  </td><td></td>
2656
  </tr>
2657
  </table>
2658
- <input type="hidden" size="47" id="ag_add_adminmenu_json" name="ag_add_adminmenu_json" value="<?php echo htmlspecialchars(get_option('ag_add_adminmenu_json')); ?>" />
2659
  </td>
2660
  <td>
2661
  </td>
@@ -2747,7 +2714,7 @@ class AGCA{
2747
  <table class="form-table" width="500px">
2748
  <tr valign="center" class="ag_table_major_options">
2749
  <td><label for="agca_colorizer_turnonoff"><strong><?php _e('Apply Colorizer customizations', 'ag-custom-admin'); ?></strong></label></td>
2750
- <td><input class="agca-checkbox visibility" type="checkbox" name="agca_colorizer_turnonoff" value="on" <?php if (get_option('agca_colorizer_turnonoff')==true) echo 'checked="checked" '; ?> /></td>
2751
  </tr>
2752
  <?php
2753
  $this->print_options_h3(__('Global Color Options', 'ag-custom-admin'));
@@ -2781,7 +2748,7 @@ class AGCA{
2781
 
2782
  </table>
2783
  <p>Need more Colorizer options? <a href="https://cusmin.com/upgrade-to-cusmin/?ref=agca-colorizer#group-custom-colors" target="_blank">Upgrade to Cusmin</a></p>
2784
- <input type="hidden" size="47" id="ag_colorizer_json" name="ag_colorizer_json" value="<?php echo htmlspecialchars(get_option('ag_colorizer_json')); ?>" />
2785
  <div id="picker"></div>
2786
  </div>
2787
  <div id="section_advanced" style="display:none" class="ag_section">
@@ -2807,7 +2774,7 @@ class AGCA{
2807
  <?php echo !$this->is_wp_admin() ? 'disabled="disabled"' : ''; ?>
2808
  id="agca_custom_css"
2809
  name="agca_custom_css"
2810
- cols="40"><?php echo htmlspecialchars(get_option('agca_custom_css')); ?></textarea>
2811
  </td>
2812
  </tr>
2813
  <tr valign="center">
@@ -2824,7 +2791,7 @@ class AGCA{
2824
  <?php echo !$this->is_wp_admin() ? 'disabled="disabled"' : ''; ?>
2825
  name="agca_custom_js"
2826
  id="agca_custom_js"
2827
- cols="40"><?php echo htmlspecialchars(get_option('agca_custom_js')); ?></textarea>
2828
  </td>
2829
  </tr>
2830
 
@@ -2888,11 +2855,11 @@ class AGCA{
2888
 
2889
  if(isset($data['attributes'])){
2890
  foreach($data['attributes'] as $key=>$val){
2891
- $strAttributes.=' '.$key.'="'.$val.'"';
2892
  }
2893
  }
2894
  if(isset($data['input-class'])){
2895
- $strInputClass = $data['input-class'];
2896
  }
2897
  if(isset($data['hide'])){
2898
  $strInputClass .= " visibility";
@@ -2901,13 +2868,13 @@ class AGCA{
2901
  $strInputAttributes = $data['input-attributes'];
2902
  }
2903
  if(isset($data['onchange'])){
2904
- $strOnchange = $data['onchange'];
2905
  }
2906
  if(!isset($data['title'])){
2907
- $data['title'] = $data['label'];
2908
  }
2909
  if(isset($data['checked'])){
2910
- $isChecked = $data['checked'];
2911
  }else{
2912
  //use default check with the option
2913
  $isChecked = get_option($data['name'])==true;
@@ -2915,10 +2882,10 @@ class AGCA{
2915
  ?>
2916
  <tr valign="center" <?php echo $strAttributes ?> >
2917
  <th>
2918
- <label tabindex="0" title='<?php echo $data['title'] ?>' for="<?php echo $data['name'] ?>" ><?php echo $data['label'] ?></label>
2919
  </th>
2920
  <td>
2921
- <input type="checkbox" class="agca-checkbox <?php echo $strInputClass ?> " <?php echo $strOnchange ?> <?php echo $strInputAttributes ?> title='<?php _e('Toggle on/off', 'ag-custom-admin'); ?>' name="<?php echo $data['name'] ?>" value="true" <?php echo ($isChecked)?' checked="checked"':'' ?> />
2922
  </td>
2923
  </tr>
2924
  <?php
@@ -2929,7 +2896,7 @@ class AGCA{
2929
  $strAttributes = '';
2930
  $parentAttr = '';
2931
  if(isset($data['hint'])){
2932
- $strHint = '&nbsp;<p><i>'.$data['hint'].'</i></p>';
2933
  }
2934
  if(!isset($data['title'])){
2935
  $data['title'] = $data['label'];
@@ -2942,21 +2909,21 @@ class AGCA{
2942
  }
2943
  if(isset($data['attributes'])){
2944
  foreach($data['attributes'] as $key=>$val){
2945
- $strAttributes.=' '.$key.'="'.$val.'"';
2946
  }
2947
  }
2948
  ?>
2949
  <tr valign="center" <?php echo $strAttributes ?> >
2950
  <th >
2951
- <label title="<?php echo $data['title'] ?>" for="<?php echo $data['name'] ?>"><?php echo $data['label'] ?></label>
2952
  </th>
2953
  <td>
2954
- <input id="<?php echo $data['name'] ?>" title="<?php echo $data['title'] ?>" type="text" size="47" class="<?php echo $data['disabled'] ? 'disabled' : ''; ?>" name="<?php echo $data['name'] ?>" value="<?php echo htmlentities(get_option($data['name'])); ?>" <?php echo $data['disabled'] ? 'disabled="disabled"':''; ?> />
2955
  <?php if(!$data['disabled']) { ?>
2956
- <a title="<?php _e('Clear', 'ag-custom-admin'); ?>" class="agca_button clear" onClick="jQuery('#<?php echo $data['name'] ?>').val('');"><span class="dashicons clear dashicons-no-alt"></span></a>
2957
  <?php } ?>
2958
- <?php echo $suffix ?>
2959
- <?php echo $strHint ?>
2960
  </td>
2961
  </tr>
2962
  <?php
@@ -2965,7 +2932,7 @@ class AGCA{
2965
  $strHint = '';
2966
  $strClass = '';
2967
  if(isset($data['hint'])){
2968
- $strHint = '&nbsp;<p><i>'.$data['hint'].'</i>.</p>';
2969
  }
2970
  if(!isset($data['title'])){
2971
  $data['title'] = $data['label'];
@@ -2982,11 +2949,11 @@ class AGCA{
2982
  ?>
2983
  <tr valign="center">
2984
  <th scope="row">
2985
- <label title="<?php echo $data['title'] ?>" for="<?php echo $data['name'] ?>"><?php echo $data['label'] ?></label>
2986
  </th>
2987
  <td>
2988
- <textarea <?php echo !empty($strClass)?'class="'.$strClass.'"':''; ?> title="<?php echo $data['title'] ?>" rows="5" name="<?php echo $data['name'] ?>" cols="40" <?php echo $data['disabled'] ? 'disabled="disabled"':''; ?> ><?php echo htmlspecialchars(get_option($data['name'])); ?></textarea>
2989
- <?php echo $strHint ?>
2990
  </td>
2991
  </tr>
2992
  <?php
@@ -2994,10 +2961,10 @@ class AGCA{
2994
  function print_color($name, $label, $title){
2995
  ?>
2996
  <tr valign="center" class="color">
2997
- <th><label title="<?php echo $title ?>" for="<?php echo $name ?>"><?php echo $label ?></label></th>
2998
- <td><input type="text" placeholder="#" id="<?php echo $name ?>" name="<?php echo $name ?>" class="color_picker" value="<?php echo $this->getAGCAColor($name); ?>" />
2999
- <a title="<?php _e('Pick Color', 'ag-custom-admin'); ?>" alt="<?php echo $name ?>" class="pick_color_button agca_button"><span class="dashicons dashicons-art"></span></a>
3000
- <a title="<?php _e('Clear', 'ag-custom-admin'); ?>" alt="<?php echo $name ?>" class="pick_color_button_clear agca_button" ><span class="dashicons clear dashicons-no-alt"></span></a>
3001
  </td>
3002
  </tr>
3003
  <?php
@@ -3006,7 +2973,7 @@ class AGCA{
3006
  ?>
3007
  <tr valign="center">
3008
  <td colspan="2">
3009
- <div class="ag_table_heading"><h3 tabindex="0"><?php echo $title ?></h3></div>
3010
  </td>
3011
  <td></td>
3012
  </tr>
@@ -3017,7 +2984,7 @@ class AGCA{
3017
 
3018
  <tr valign="center">
3019
  <th><label title="<?php _e('Change submenu item background color', 'ag-custom-admin'); ?>" for="color_admin_menu_submenu_background"><?php _e('Submenu button background color:', 'ag-custom-admin'); ?></label></th>
3020
- <td><input type="text" id="color_admin_menu_submenu_background" name="color_admin_menu_submenu_background" class="color_picker" value="<?php echo $this->getAGCAColor('color_admin_menu_submenu_background'); ?>" />
3021
  <input type="button" alt="color_admin_menu_submenu_background" class="pick_color_button agca_button" value="<?php _e('Pick color', 'ag-custom-admin'); ?>" />
3022
  <input type="button" alt="color_admin_menu_submenu_background" class="pick_color_button_clear agca_button" value="<?php _e('Clear', 'ag-custom-admin'); ?>" />
3023
  </td>
4
  Plugin URI: https://cusmin.com/agca
5
  Description: CHANGE: admin menu, login page, admin bar, dashboard widgets, custom colors, custom CSS & JS, logo & images
6
  Author: Cusmin
7
+ Version: 7.0
8
  Text Domain: ag-custom-admin
9
  Domain Path: /languages
10
  Author URI: https://cusmin.com/
28
  $agca = new AGCA();
29
 
30
  class AGCA{
31
+ private $agca_version = "7.0";
32
  private $colorizer = "";
33
  private $agca_debug = false;
34
  private $admin_capabilities;
42
 
43
  function init(){
44
  $this->reloadScript();
 
45
  $this->checkGET();
46
 
47
  if(function_exists("add_filter")){
55
  add_action('login_head', array(&$this,'print_login_head'));
56
  add_action('admin_menu', array(&$this,'agca_create_menu'));
57
  add_action('wp_head', array(&$this,'print_page'));
 
58
  add_action( 'plugins_loaded', array(&$this,'load_plugin_textdomain') );
59
  register_deactivation_hook(__FILE__, array(&$this,'agca_deactivate'));
60
 
61
  add_action( 'customize_controls_enqueue_scripts', array(&$this,'agca_customizer_php') );
62
 
63
+ add_action( 'admin_bar_menu', array(&$this, 'wp_admin_bar_my_custom_account_menu'), 11 );
64
+ add_action( 'updated_option', array(&$this, 'after_update_option'), 10, 3);
 
 
 
 
 
 
65
 
66
  /*Initialize properties*/
67
  $this->colorizer = $this->jsonMenuArray(get_option('ag_colorizer_json'),'colorizer');
68
 
69
+ if(!get_option('agca_check_js_notice') && get_option('agca_custom_js')) {
70
+ add_action( 'admin_notices', array(&$this, 'agca_check_js_notice') );
71
+ }
72
+
73
+ }
74
+
75
+ function agca_check_js_notice(){
76
+ echo '<div class="notice error">
77
+ <p><h2>IMPORTANT MESSAGE FROM AGCA PLUGIN! (aka Custom Dashboard & Login Page plugin)</h2></p>
78
+ <p>We are enforcing security in AGCA plugin and custom JavaScript code is currently disabled and requires your review. Please go to AGCA plugin settings (Tools > AGCA > Advanced) page and make sure that your JavaScript does not contain any unwanted code. If you are sure that the script looks good to you, please save the settings in AGCA plugin again, to dismiss this notice and re-enable the script again.</p>
79
+ <p><a href="'. get_site_url() .'/wp-admin/tools.php?page=ag-custom-admin%2Fplugin.php#ag-advanced">Click here to revisit and save AGCA settings again</a></p>
80
+ </div>';
81
  }
82
 
83
  function isAGCASettingsPage() {
84
+ if(!is_admin()) {
85
+ return false;
86
+ }
87
+ if(isset($_GET['page']) && $_GET['page'] == 'ag-custom-admin/plugin.php'){
88
+ return true;
89
  }
90
+
91
  return false;
92
  }
93
 
135
  'agca_custom_css',
136
  'agca_footer_left',
137
  'agca_footer_right',
 
 
 
 
138
  'agca_custom_js',
139
+ 'agca_check_js_notice',
140
  ])) {
141
  remove_action( 'updated_option', array(&$this,'after_update_option'));
142
  update_option($option, $old_value);
157
  }
158
 
159
  function admin_init(){
160
+
161
  $this->agca_register_settings();
162
  $this->agca_init_session();
163
  $isAdminUser = current_user_can($this->admin_capability());
166
  remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
167
  }
168
  }
169
+
170
+ $this->enqueue_scripts();
171
  }
172
 
173
  function login_init(){
174
  $this->agca_enqueue_scripts();
175
  }
176
 
177
+ function enqueue_scripts() {
178
+
179
+ $wpversion = $this->get_wp_version();
180
+
181
+ if($this->isAGCASettingsPage()) {
182
+ wp_register_script ( 'agca-farbtastic-script', $this->pluginUrl() . 'script/agca_farbtastic.js', array('farbtastic'), $wpversion );
183
+ wp_register_style('agca-farbtastic-style', $this->pluginUrl() . 'style/agca_farbtastic.css', array('farbtastic'), $wpversion);
184
+
185
+ wp_enqueue_script ( 'farbtastic' );
186
+ wp_enqueue_style( 'farbtastic' );
187
+ wp_enqueue_script ( 'agca-farbtastic-script', array('farbtastic') );
188
+ wp_enqueue_style ( 'agca-farbtastic-style', array('farbtastic') );
189
+
190
+ }
191
+
192
+ if(is_admin()) {
193
+ $agcaStyleFileName = get_option('agca_no_style') == true ? 'ag_style_simple' : 'ag_style';
194
+ wp_register_style('agca-style', $this->pluginUrl() . 'style/' . $agcaStyleFileName . '.css', array('farbtastic'), $this->agca_version);
195
+ wp_enqueue_style( 'agca-style' );
196
+
197
+ wp_register_script ( 'agca-script', $this->pluginUrl() . 'script/ag_script.js', array('jquery'), $this->agca_version );
198
+ wp_enqueue_script ( 'agca-script', array('jquery') );
199
+ }
200
+ }
201
+
202
  function agca_init_session(){
203
  if (!session_id()){
204
  session_start([
208
  }
209
 
210
  function checkGET(){
 
 
211
  if(isset($_GET['agca_debug'])){
212
  if($_GET['agca_debug'] =="true"){
213
  $this->agca_debug = true;
217
  }
218
  }
219
 
 
 
 
220
  function getFieldSecurityProtected(){
221
  if($this->is_wp_admin() && $this->can_save_unfiltered_html()){
222
  return '';
223
  }
224
+ return "<p class=\"agca-field-secured-notice\">(&nbsp;For security reasons, this field is available for editing only to WordPress <b>Administrators</b> with the allowed capability to save unfiltered HTML&nbsp;)</p>";
225
  }
226
 
227
  function verifyPostRequest(){
241
  if (is_user_member_of_blog($user_id, $blog_id)) {
242
  if (!current_user_can('manage_options')) {
243
  _e('Multi-site: Current user is not recognized as administrator.', 'ag-custom-admin');
244
+ echo ' '. $this->sanitize_html($msError);
245
  exit;
246
  }
247
  } else {
251
  $user_id,
252
  $blog_id
253
  );
254
+ echo ' '. $this->sanitize_html($msError);
255
  exit;
256
  }
257
  } else {
269
  }
270
  }
271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  function isGuest(){
273
  global $user_login;
274
  if($user_login) {
285
  $customTitle = get_option('agca_custom_title');
286
  $customTitle = str_replace('%BLOG%',$blog,$customTitle);
287
  $customTitle = str_replace('%PAGE%',$page,$customTitle);
288
+ return $this->sanitize_html(strip_tags($customTitle));
289
  }else{
290
+ return $this->sanitize_html(strip_tags($admin_title));
291
  }
292
  }
293
  function agca_get_includes() {
294
+ if(!((get_option('agca_role_allbutadmin')==true) and (current_user_can($this->admin_capability())))){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  ?>
296
  <style type="text/css">
297
+ <?php echo wp_kses_post(get_option('agca_custom_css')); ?>
298
  </style>
299
+ <?php if(get_option('agca_check_js_notice')) { ?>
300
+ <script type="text/javascript">
301
+ try{
302
+ <?php echo wp_kses_post(get_option('agca_custom_js')); ?>
303
+ }catch(e){
304
+ alert('AGCA: <?php _e('There is an error in your custom JS script. Please fix it:', 'ag-custom-admin'); ?> \n\n' + e + '\n\n (<?php _e('AGCA -> Advanced -> Custom JavaScript', 'ag-custom-admin'); ?>)');
305
+ console.log(e);
306
+ }
307
+ </script>
308
+ <?php } ?>
309
  <?php
310
  }
311
  }
312
 
313
  function agca_enqueue_scripts() {
314
  wp_enqueue_script('jquery');
 
 
315
  }
316
 
317
  function WPSPluginIsLoginPage(){
384
  register_setting( 'agca-options-group', 'agca_footer_left_hide' );
385
  register_setting( 'agca-options-group', 'agca_footer_right' );
386
  register_setting( 'agca-options-group', 'agca_footer_right_hide' );
387
+ register_setting( 'agca-options-group', 'agca_check_js_notice' );
388
 
389
  register_setting( 'agca-options-group', 'agca_login_banner' );
390
  register_setting( 'agca-options-group', 'agca_login_banner_text' );
524
  'agca_footer_left_hide',
525
  'agca_footer_right',
526
  'agca_footer_right_hide',
527
+ 'agca_check_js_notice',
528
  'agca_login_banner',
529
  'agca_login_banner_text',
530
  'agca_login_photo_remove',
615
  $optionNames = $this->getOptions();
616
 
617
  foreach ($optionNames as $optionName){
 
618
  $optionValue = $savedOptions[$optionName];
619
 
620
  if($optionName == "ag_edit_adminmenu_json" || "ag_edit_adminmenu_json_new"|| $optionName == "ag_add_adminmenu_json" ||$optionName == "ag_colorizer_json"){
621
  $optionValue = str_replace("\\\"", "\"", $optionValue);
622
  $optionValue = str_replace("\\\'", "\'", $optionValue);
623
  }else if($optionName == "agca_custom_js" || $optionName == "agca_custom_css"){
624
+
625
  $optionValue = htmlspecialchars_decode($optionValue);
626
  $optionValue = str_replace("\'", '"', $optionValue);
627
  $optionValue = str_replace('\"', "'", $optionValue);
 
 
628
 
629
  }
630
  update_option($optionName, $optionValue);
680
  header("Content-Disposition: attachment; filename=$filename");
681
  header("Content-Type: text/plain; ");
682
  header("Content-Transfer-Encoding: binary");
683
+ echo wp_kses_post($str);
684
  die();
685
  }
686
 
694
  add_management_page('AGCA', 'AGCA', 'administrator', __FILE__, array(&$this,'agca_admin_page') );
695
  }
696
 
697
+ function filter_url($url = ''){
698
+ if (filter_var($url, FILTER_VALIDATE_URL)) {
699
+ return $url;
700
+ }
701
+ return $url;
702
+ }
703
+
704
+ function filter_target($target = '_self'){
705
+ return $target === '_blank' ? '_blank' : '_self';
706
+ }
707
+
708
  function agca_create_admin_button($name,$arr) {
709
 
710
+ $href = $this->filter_url($arr["value"]);
711
+ $target = $this->filter_target($arr["target"]);
712
+
713
+ $button ="<li class=\"wp-not-current-submenu menu-top aaa menu-top-last\" id=\"menu-" . $this->sanitize_html($name) . "\"><a href=\"".$this->sanitize_html($href)."\" target=\"".$this->sanitize_html($target)."\" class=\"wp-not-current-submenu menu-top\"><div class=\"wp-menu-arrow\"><div></div></div><div class=\"wp-menu-image dashicons-before dashicons-admin-".$this->sanitize_html($name)."\" style=\"width:15px\"><br></div><div class=\"wp-menu-name\">".$this->sanitize_html($name)."</div></a></li>";
714
 
715
  return $button;
716
  }
745
  $elements = json_decode($arr[0],true);
746
  if($elements !=""){
747
  foreach($elements as $k => $v){
748
+ $array.='<tr><td colspan="2"><button target="'.$this->sanitize_html($v['target']).'" title="'.$this->sanitize_html($v['value']).'" class="button-secondary" type="button">'.$this->sanitize_html($k).'</button>&nbsp;<a style="cursor:pointer;" title="Edit" class="button_edit"><span class="dashicons dashicons-edit"></span></a>&nbsp;<a style="cursor:pointer" title="Delete" class="button_remove"><span class="dashicons dashicons-no"></span></a></td><td></td></tr>';
749
  }
750
  }
751
  }else{
773
  function remove_dashboard_widget($widget,$side)
774
  {
775
  //side can be 'normal' or 'side'
 
776
  remove_meta_box($widget, 'dashboard', $side);
777
  }
778
 
791
  if(!$this->isGuest()){
792
  ?><style type="text/css">
793
  <?php
794
+ echo $this->sanitize_html(get_option('agca_custom_css'));
795
  if(get_option('agca_menu_remove_customize_button')){
796
  echo '#wp-admin-bar-customize{display:none;}';
797
  }
820
  //$wpversion = $this->get_wp_version();
821
  ?>
822
  <script type="text/javascript">
823
+ var agca_version = "<?php echo $this->sanitize_html($this->agca_version); ?>";
824
  var agca_debug = <?php echo ($this->agca_debug)?"true":"false"; ?>;
825
  var jQueryScriptOutputted = false;
826
  var agca_context = "page";
829
  //if the jQuery object isn't available
830
  if (typeof(jQuery) == 'undefined') {
831
  if (! jQueryScriptOutputted) {
832
+ console.log('AGCA: jQuery not found!!!');
 
 
 
833
  }
 
834
  } else {
835
  jQuery(function() {
836
  try
846
  }
847
  initJQuery();
848
  </script>
 
 
 
 
849
  <script type="text/javascript">
850
  jQuery(document).ready(function(){
851
  <?php if(get_option('agca_colorizer_turnonoff') == 'on' && (get_option('agca_admin_bar_frontend_hide')!=true)){
855
  $k == "color_header" ||
856
  $k == "color_font_header"
857
  ){
858
+ ?> updateTargetColor("<?php echo $this->sanitize_html($k);?>","<?php echo $this->sanitize_html($v);?>"); <?php
859
  }
860
 
861
  }
917
  <?php } ?>
918
  <?php if(get_option('agca_header_logo_custom')!=""){ ?>
919
 
920
+ var img_url = '<?php echo $this->sanitize_html($this->sanitize_html(get_option('agca_header_logo_custom'))); ?>';
921
 
922
  advanced_url = img_url;
923
  image = jQuery("<img id=\"admin-top-branding-logo\" style='max-width:98%;position:relative;'/>").attr("src",advanced_url);
928
  <?php } ?>
929
  <?php if(get_option('agca_wp_logo_custom')!=""){ ?>
930
  jQuery("li#wp-admin-bar-wp-logo a.ab-item span.ab-icon")
931
+ .html("<img alt=\"Logo\" style=\"height:32px;margin-top:0\" src=\"<?php echo $this->sanitize_html(get_option('agca_wp_logo_custom')); ?>\" />")
932
  .css('background-image','none')
933
  .css('width','auto');
934
  jQuery("li#wp-admin-bar-wp-logo > a.ab-item")
935
+ .attr('href',"<?php echo $this->sanitize_html(get_bloginfo('wpurl')); ?>")
936
  .css('padding', 0);
937
  jQuery("#wpadminbar #wp-admin-bar-root-default > #wp-admin-bar-wp-logo .ab-item:before").attr('title','');
938
  jQuery('body #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon').attr('class','ab-icon2');
943
 
944
  <?php } ?>
945
  <?php if(get_option('agca_wp_logo_custom_link')!=""){ ?>
946
+ var href = "<?php echo $this->sanitize_html(get_option('agca_wp_logo_custom_link')); ?>";
947
+ href = href.replace("%BLOG%", "<?php echo $this->sanitize_html(get_bloginfo('wpurl')); ?>");
948
  if(href == "%SWITCH%"){
949
+ href = "<?php echo $this->sanitize_html(get_bloginfo('wpurl')); ?>";
950
  <?php if($this->context == "page"){
951
  ?>href+="/wp-admin";<?php
952
  }
959
  jQuery("#wphead #site-heading").css("display","none");
960
  <?php } ?>
961
  <?php if(get_option('agca_custom_site_heading')!=""){ ?>
962
+ jQuery("#wp-admin-bar-site-name a:first").text('<?php echo ($this->sanitize_html(strip_tags(get_option('agca_custom_site_heading')))); ?>');
 
963
 
964
  <?php } ?>
965
  <?php if(get_option('agca_header')==true && $this->context =='admin'){
974
  <?php
975
  $agca_logout_text = ((get_option('agca_logout')=="")?__("Log Out", 'ag-custom-admin'):get_option('agca_logout'));
976
  ?>
977
+ jQuery("#wpbody-content").prepend('<a href="<?php echo wp_logout_url(); ?>" tabindex="10" style="float:right;margin-right:20px" class="ab-item agca_logout_button"><?php echo $this->sanitize_html(strip_tags($agca_logout_text)); ?></a>');
 
978
 
979
  <?php } ?>
980
  <?php if(get_option('agca_logout')!=""){ ?>
981
+ jQuery("ul#wp-admin-bar-user-actions li#wp-admin-bar-logout a").html("<?php echo $this->sanitize_html(strip_tags(get_option('agca_logout'))); ?>");
982
  <?php } ?>
983
  <?php if(get_option('agca_remove_your_profile')==true){ ?>
984
  jQuery("ul#wp-admin-bar-user-actions li#wp-admin-bar-edit-profile").css("visibility","hidden");
1015
  $wp_admin_bar->add_menu( array(
1016
  'id' => 'my-account',
1017
  'parent' => 'top-secondary',
1018
+ 'title' => $this->sanitize_html(strip_tags($howdy)) . $avatar,
1019
  'href' => $profile_url,
1020
  'meta' => array(
1021
  'class' => $class,
1031
  ?>
1032
  function updateAllColors(){
1033
  <?php
1034
+ foreach((array) $this->colorizer as $k => $v){
1035
  if(($k !="") and ($v !="")){
1036
+ ?> updateTargetColor("<?php echo $this->sanitize_html($k);?>","<?php echo $this->sanitize_html($v);?>"); <?php
1037
  }
1038
  }
1039
  ?>
1055
  if($selectedValue == ""){
1056
  $selectedValue = "edit_dashboard";
1057
  }
1058
+
 
1059
  ksort($capabs);
1060
  foreach($capabs as $k=>$v){
1061
  $selected = "";
1063
  if($selectedValue == $k){
1064
  $selected = " selected=\"selected\" ";
1065
  }
1066
+ $capabilitySelector .="<option value=\"". $this->sanitize_html($k) . "\" $selected >".$this->sanitize_html((ucwords(str_replace('_', ' ', $k))))."</option>\n";
1067
  }
1068
 
1069
+ $this->admin_capabilities = "<select class=\"agca-selectbox\" id=\"agca_admin_capability\" name=\"agca_admin_capability\" val=\"upload_files\" onchange='agca_show_affected_groups()'>".($capabilitySelector)."</select>";
1070
  }
1071
 
1072
  function admin_capability(){
1091
  }
1092
 
1093
  function agcaAdminSession(){
 
 
 
 
 
 
 
 
1094
  if(!isset($_SESSION["AGCA"])){
1095
  $_SESSION["AGCA"] = array();
1096
  }
 
 
 
 
 
1097
  }
1098
 
1099
  function getAGCAColor($name){
1100
  if(isset($this->colorizer[$name])){
1101
+ echo $this->sanitize_html($this->colorizer[$name]);
1102
  }
1103
  }
1104
 
1148
  global $menu;
1149
  global $submenu;
1150
 
 
1151
  $previousCustomizations = json_decode(get_option('ag_edit_adminmenu_json_new'), true);
1152
 
1153
  $customizationsSet = true;
1270
  function migrate_menu_customizations($checkboxes, $textboxes){
1271
  $customizations = $this->get_menu_customizations();
1272
  global $menu;
 
 
 
1273
 
1274
  $oldTopValue = "";
1275
 
 
1276
  //Migrate checkboxes
1277
  foreach($checkboxes as $key=>$value){
1278
  $isTop = false;
1373
  function isPluginActiveForNetwork($plugin){
1374
  return is_plugin_active_for_network($plugin);
1375
  }
1376
+
1377
+ function sanitize($content){
1378
+ return addslashes(wp_kses_post($content));
1379
+ }
1380
+
1381
+ function sanitize_html($content){
1382
+ return htmlentities(wp_kses_post($content));
1383
+ }
1384
+
1385
  function print_admin_css()
1386
  {
1387
  global $wp_roles;
1390
  $currentScreen = get_current_screen();
1391
  ?>
1392
  <script type="text/javascript">
1393
+ var wpversion = "<?php echo $this->sanitize_html($wpversion); ?>";
1394
  var agca_debug = <?php echo ($this->agca_debug)?"true":"false"; ?>;
1395
+ var agca_version = "<?php echo $this->sanitize_html($this->agca_version); ?>";
1396
  var agca_wp_groups = <?php echo json_encode($wp_roles->roles); ?>;
1397
+ var agca_selected_capability = "<?php echo $this->sanitize_html($this->admin_capability()); ?>";
1398
  var errors = false;
1399
  var isSettingsImport = false;
1400
  var isCusminActive = <?php echo $this->isCusminActive()?'true':'false'; ?>;
1491
  ?>
1492
 
1493
 
1494
+ //get saved configurations
1495
 
1496
  <?php $buttons = $this->jsonMenuArray(get_option('ag_add_adminmenu_json'),'buttons'); ?>
1497
+ var buttons = '<?php echo $this->sanitize($buttons); ?>';
1498
 
1499
  <?php $buttonsJq = $this->jsonMenuArray(get_option('ag_add_adminmenu_json'),'buttonsJq'); ?>
1500
+ var buttonsJq = '<?php echo $this->sanitize($buttonsJq); ?>';
1501
 
1502
  createEditMenuPageNew(agca_admin_menu);
1503
  //createEditMenuPageV32(checkboxes, textboxes);
1509
  <?php } else{ ?>
1510
  <?php if(get_option('agca_admin_menu_brand')!=""){ ?>
1511
  additionalStyles = ' style="margin-bottom:-4px" ';
1512
+ jQuery("#adminmenu").before('<div '+additionalStyles+' id="sidebar_adminmenu_logo"><img width="160" src="<?php echo $this->sanitize_html(get_option('agca_admin_menu_brand')); ?>" /></div>');
1513
  <?php } ?>
1514
  <?php if(get_option('agca_admin_menu_brand_link')!=""){ ?>
1515
 
1516
+ var href = "<?php echo $this->sanitize_html(get_option('agca_admin_menu_brand_link')); ?>";
1517
+ href = href.replace("%BLOG%", "<?php echo $this->sanitize_html(get_bloginfo('wpurl')); ?>");
1518
 
1519
  jQuery("#sidebar_adminmenu_logo").attr('onclick','window.open(\"'+ href+ '\");');
1520
  jQuery("#sidebar_adminmenu_logo").attr('title',href);
1521
 
1522
  <?php }else{ ?>
1523
+ href = "<?php echo $this->sanitize_html(get_bloginfo('wpurl')); ?>";
1524
  jQuery("#sidebar_adminmenu_logo").attr('onclick','window.open(\"'+ href+ '\");');
1525
  jQuery("#sidebar_adminmenu_logo").attr('title',href);
1526
  <?php } ?>
1527
 
1528
  <?php if(get_option('agca_admin_menu_submenu_round')==true){ ?>
1529
+ jQuery("#adminmenu .wp-submenu").css("border-radius","<?php echo intval($this->sanitize_html(get_option('agca_admin_menu_submenu_round_size'))); ?>px");
1530
  jQuery("#adminmenu .wp-menu-open .wp-submenu").css('border-radius','');
1531
+ <?php $roundedSidebarSize = $this->sanitize_html(get_option('agca_admin_menu_submenu_round_size')); ?>
1532
  roundedSidberSize = <?php echo intval(($roundedSidebarSize == "") ? "0" : $roundedSidebarSize); ?>;
1533
 
1534
 
1570
  <?php } ?>
1571
 
1572
  <?php if(get_option('agca_footer_left')!=""){ ?>
1573
+ jQuery("#footer-left").html('<?php echo $this->sanitize(get_option('agca_footer_left')); ?>');
1574
  <?php } ?>
1575
  <?php if(get_option('agca_footer_left_hide')==true){ ?>
1576
  jQuery("#footer-left").css("display","none");
1577
  <?php } ?>
1578
  <?php if(get_option('agca_footer_right')!=""){ ?>
1579
+ jQuery("#footer-upgrade").html('<?php echo $this->sanitize(get_option('agca_footer_right')); ?>');
1580
  <?php } ?>
1581
  <?php if(get_option('agca_footer_right_hide')==true){ ?>
1582
  jQuery("#footer-upgrade").css("display","none");
1592
  }
1593
  <?php } ?>
1594
  <?php if(get_option('agca_dashboard_text')!=""){ ?>
1595
+ jQuery("#dashboard-widgets-wrap").parent().find("h1").html("<?php echo $this->sanitize(get_option('agca_dashboard_text')); ?>");
1596
  <?php } ?>
1597
  <?php if(get_option('agca_dashboard_text_paragraph')!=""){
1598
  require_once($this->filePath('wp-includes/formatting.php'));
1599
  ?>
1600
  jQuery("#wpbody-content #dashboard-widgets-wrap").before('<div id="agca_custom_dashboard_content"></div>');
1601
 
1602
+ jQuery("#agca_custom_dashboard_content").html('<br /><?php echo preg_replace('/(\r\n|\r|\n)/', '\n', $this->sanitize(wpautop(do_shortcode(get_option('agca_dashboard_text_paragraph'))))); ?>');
1603
  <?php } ?>
1604
 
1605
  <?php /*Remove Dashboard widgets*/ ?>
1774
  }
1775
 
1776
  $this->context = "login";
 
1777
 
1778
  ?>
1779
  <script type="text/javascript">
1780
  document.write('<style type="text/css">html{visibility:hidden;}</style>');
1781
+ var agca_version = "<?php echo $this->sanitize_html($this->agca_version); ?>";
1782
  <?php //var wpversion = "echo $wpversion; ?>
1783
  var agca_debug = <?php echo ($this->agca_debug)?"true":"false"; ?>;
1784
  var isCusminActive = <?php echo $this->isCusminActive()?'true':'false'; ?>;
1799
  jQuery(document).ready(function() {
1800
  try{
1801
  <?php if(get_option('agca_login_round_box')==true){ ?>
1802
+ jQuery("form#loginform").css("border-radius","<?php echo intval($this->sanitize_html(get_option('agca_login_round_box_size'))); ?>px");
1803
  <?php if(!get_option('agca_login_round_box_skip_logo')){ ?>
1804
+ jQuery("#login h1 a").css("border-radius","<?php echo intval($this->sanitize_html(get_option('agca_login_round_box_size'))); ?>px");
1805
  jQuery("#login h1 a").css("margin-bottom",'10px');
1806
  jQuery("#login h1 a").css("padding-bottom",'0');
1807
  <?php } ?>
1808
+ jQuery("form#lostpasswordform").css("border-radius","<?php echo intval($this->sanitize_html(get_option('agca_login_round_box_size'))); ?>px");
1809
  <?php } ?>
1810
  <?php if(get_option('agca_login_banner')==true){ ?>
1811
  jQuery("#backtoblog").css("display","none");
1812
  <?php } ?>
1813
  <?php if(get_option('agca_login_banner_text')==true){ ?>
1814
+ jQuery("#backtoblog a").html('<?php echo "← " . $this->sanitize_html(strip_tags(get_option('agca_login_banner_text'))); ?>');
1815
  <?php } ?>
1816
  <?php if(get_option('agca_login_photo_url')==true && get_option('agca_login_photo_remove')!=true){ ?>
1817
+ advanced_url = "<?php echo $this->sanitize_html(get_option('agca_login_photo_url')); ?>";
1818
  var $url = "url(" + advanced_url + ")";
1819
  jQuery("#login h1 a").css("background",$url+' no-repeat');
1820
  jQuery("#login h1 a").hide();
1840
  });
1841
  <?php } ?>
1842
  <?php if(get_option('agca_login_photo_href')==true){ ?>
1843
+ var $href = "<?php echo $this->sanitize_html(get_option('agca_login_photo_href')); ?>";
1844
+ $href = $href.replace("%BLOG%", "<?php echo $this->sanitize_html(get_bloginfo('wpurl')); ?>");
1845
 
1846
  jQuery("#login h1 a").attr("href",$href);
1847
  <?php } ?>
1865
  <?php if(get_option('agca_login_register_href')!=""){ ?>
1866
  jQuery('p#nav a').each(function(){
1867
  if(jQuery(this).attr('href').indexOf('register') != -1){
1868
+ jQuery(this).attr('href','<?php echo $this->sanitize_html(get_option('agca_login_register_href')); ?>');
1869
  }
1870
  });
1871
 
1887
  <?php //COLORIZER ?>
1888
  <?php if(get_option('agca_colorizer_turnonoff') == 'on'){ ?>
1889
  jQuery('label,h1,h2,h3,h4,h5,h6,a,p,.form-table th,.form-wrap label').css('text-shadow','none');
1890
+ jQuery("body.login, html").css("background","<?php echo $this->sanitize_html($this->colorizer['login_color_background']);?>");
1891
 
1892
 
1893
  <?php
1917
  $wpversion = $this->get_wp_version();
1918
  $this->agca_error_check();
1919
  ?>
 
 
 
 
 
 
 
 
1920
  <div class="wrap">
1921
  <div id="agca-header">
1922
+ <h1 id="agca-title"><img src="<?php echo plugins_url( 'images/agca-logo.svg', __FILE__ ) ?>" /><span class="title">absolutely glamorous custom admin</span> <span class="version">(v<?php echo $this->sanitize_html($this->agca_version); ?>)</span></h1>
1923
  <div id="agca-social">
1924
  <div class="fb-like" data-href="https://www.facebook.com/AG-Custom-Admin-892218404232342/timeline" data-layout="button" data-action="like" data-show-faces="true" data-share="true"></div>
1925
  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=agca@cusmin.com&amount=10&item_name=Support+for+AGCA+Development" target="_blank" class="agca-donate-btn" title="Please help us ensure future updates for AGCA. <br/><br/>We can't make them without your support.">Donate <span class="heart">❤</span></a>
1930
  <form method="post" id="agca_form" action="options.php">
1931
  <?php wp_nonce_field('agca_form','_agca_token'); ?>
1932
  <?php settings_fields( 'agca-options-group' ); ?>
1933
+ <?php if(get_option('agca_check_js_notice') || (!get_option('agca_check_js_notice') && current_user_can('unfiltered_html'))) { ?>
1934
+ <input type="hidden" name="agca_check_js_notice" value="true" />
1935
+ <?php } ?>
1936
  <div id="agca-your-feedback">
1937
  <strong>
1938
  <span style="color:#005B69">Your feedback:</span>
1989
 
1990
  $this->print_checkbox(array(
1991
  'name'=>'agca_role_allbutadmin',
1992
+ 'label'=>__('Exclude the AGCA safe users from the customizations', 'ag-custom-admin'),
1993
+ 'title'=>__('<h3>Applying customizations</h3><br><strong>Checked</strong> - apply to all users, except AGCA safe users<br><strong>Not checked</strong> - apply to everyone</br></br><strong>Q</strong>: Who are AGCA safe users?</br><strong>A</strong>: Go to <i>General -> AGCA Safe Users -> AGCA safe users capability</i> and change capability option to define AGCA safe users. Only the users with selected capability will be AGCA safe users.</br>', 'ag-custom-admin')
1994
  ));
1995
 
1996
+ $this->print_options_h3(__('AGCA Safe Users', 'ag-custom-admin'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1997
 
1998
  ?>
1999
 
2000
  <tr valign="center">
2001
  <th scope="row">
2002
+ <label title="<?php _e('Choose which WordPress capability will be used to distinguish AGCA safe users from other users.</br>AGCA safe users can be excluded from customizations if that option is checked', 'ag-custom-admin'); ?>" for="agca_admin_capability"><?php _e('AGCA safe users capability', 'ag-custom-admin'); ?>:</label>
2003
  </th>
2004
+ <td><?php echo ($this->admin_capabilities); ?>&nbsp;&nbsp;<i>(<?php _e('default:&nbsp;<strong>Edit Dashboard</strong>', 'ag-custom-admin'); ?>)</i>
2005
  <p style="margin-left:5px;"><i><?php _e('Find more information about', 'ag-custom-admin'); ?> <a href="https://wordpress.org/support/article/roles-and-capabilities/" target="_blank"><?php _e('WordPress capabilities', 'ag-custom-admin'); ?></a></i></p>
2006
  </td>
2007
  <td>
2009
  </tr>
2010
  <tr valign="center">
2011
  <td>
2012
+ <p>These groups are AGCA safe users:</p>
2013
  </td>
2014
  <td>
2015
  <div id="agca-affected-roles">Loading...</div>
2021
  </td>
2022
  </tr>
2023
  <?php
2024
+
2025
+ $this->print_options_h3(__('Pages', 'ag-custom-admin'));
2026
+
2027
+ $this->print_checkbox(array(
2028
+ 'hide'=>true,
2029
+ 'name'=>'agca_screen_options_menu',
2030
+ 'label'=>__('Hide <b>Screen Options</b> menu', 'ag-custom-admin'),
2031
+ 'title'=>__('Hides the menu from the admin pages (located on the top right corner of the page, below the admin bar)', 'ag-custom-admin')
2032
+ ));
2033
+
2034
+ $this->print_checkbox(array(
2035
+ 'hide'=>true,
2036
+ 'name'=>'agca_help_menu',
2037
+ 'label'=>__('Hide <b>Help</b> menu', 'ag-custom-admin'),
2038
+ 'title'=>__('Hides the menu from the admin pages (located on the top right corner of the page, below the admin bar)', 'ag-custom-admin')
2039
+ ));
2040
+
2041
+ $this->print_checkbox(array(
2042
+ 'title'=>__('Hides colors scheme on profile page', 'ag-custom-admin'),
2043
+ 'name'=>'agca_profile_color_scheme',
2044
+ 'hide'=>true,
2045
+ 'label'=>__('Hide User\'s Profile Color Scheme', 'ag-custom-admin')
2046
+ ));
2047
+
2048
  $this->print_options_h3(__('Feedback and Support', 'ag-custom-admin'));
2049
 
2050
  ?>
2138
  $this->print_input(array(
2139
  'title'=>__('Customize WordPress title using custom title template.</br></br>Examples', 'ag-custom-admin').':</br><strong>%BLOG% -- %PAGE%</strong> '.'('.__('will be', 'ag-custom-admin').')'.' <i>My Blog -- Add New Post</i></br><strong>%BLOG%</strong> ('.__('will be', 'ag-custom-admin').') <i>My Blog</i></br><strong>My Company > %BLOG% > %PAGE%</strong> ('.__('will be', 'ag-custom-admin').') <i>My Company > My Blog > Tools</i>',
2140
  'name'=>'agca_custom_title',
2141
+ 'label'=>__('Page title template', 'ag-custom-admin'),
 
2142
  'hint' =>__('Please use', 'ag-custom-admin').' <strong>%BLOG%</strong> '.__('and', 'ag-custom-admin'). ' <strong>%PAGE%</strong> '.__('in your title template.', 'ag-custom-admin')
2143
  ));
2144
 
2250
  $this->print_input(array(
2251
  'title'=>__('Adds custom text in admin top bar.', 'ag-custom-admin'),
2252
  'name'=>'agca_custom_site_heading',
2253
+ 'label'=>__('Custom blog heading', 'ag-custom-admin'),
 
 
2254
  ));
2255
 
2256
 
2266
  $this->print_input(array(
2267
  'name'=>'agca_howdy',
2268
  'title' => '',
2269
+ 'label'=>__('Change Howdy text', 'ag-custom-admin'),
 
2270
  ));
2271
 
2272
  $this->print_input(array(
2273
  'title'=>__('Put \'Exit\', for example', 'ag-custom-admin'),
2274
  'name'=>'agca_logout',
2275
+ 'label'=>__('Change Log out text', 'ag-custom-admin'),
 
2276
  ));
2277
 
2278
  $this->print_checkbox(array(
2579
  </td>
2580
  </tr>
2581
  </table>
2582
+ <input type="hidden" size="47" id="ag_edit_adminmenu_json" name="ag_edit_adminmenu_json" value="<?php echo $this->sanitize_html(get_option('ag_edit_adminmenu_json')); ?>" />
2583
  <input type="hidden" size="47" id="ag_edit_adminmenu_json_new" name="ag_edit_adminmenu_json_new" value="" />
2584
  </td>
2585
  <td></td>
2622
  </td><td></td>
2623
  </tr>
2624
  </table>
2625
+ <input type="hidden" size="47" id="ag_add_adminmenu_json" name="ag_add_adminmenu_json" value="<?php echo $this->sanitize_html(get_option('ag_add_adminmenu_json')); ?>" />
2626
  </td>
2627
  <td>
2628
  </td>
2714
  <table class="form-table" width="500px">
2715
  <tr valign="center" class="ag_table_major_options">
2716
  <td><label for="agca_colorizer_turnonoff"><strong><?php _e('Apply Colorizer customizations', 'ag-custom-admin'); ?></strong></label></td>
2717
+ <td><input class="agca-checkbox visibility" type="checkbox" name="agca_colorizer_turnonoff" value="on" <?php if (get_option('agca_colorizer_turnonoff')==true) { echo 'checked="checked" ';} ?> /></td>
2718
  </tr>
2719
  <?php
2720
  $this->print_options_h3(__('Global Color Options', 'ag-custom-admin'));
2748
 
2749
  </table>
2750
  <p>Need more Colorizer options? <a href="https://cusmin.com/upgrade-to-cusmin/?ref=agca-colorizer#group-custom-colors" target="_blank">Upgrade to Cusmin</a></p>
2751
+ <input type="hidden" size="47" id="ag_colorizer_json" name="ag_colorizer_json" value="<?php echo $this->sanitize_html(get_option('ag_colorizer_json')); ?>" />
2752
  <div id="picker"></div>
2753
  </div>
2754
  <div id="section_advanced" style="display:none" class="ag_section">
2774
  <?php echo !$this->is_wp_admin() ? 'disabled="disabled"' : ''; ?>
2775
  id="agca_custom_css"
2776
  name="agca_custom_css"
2777
+ cols="40"><?php echo htmlentities(get_option('agca_custom_css')); ?></textarea>
2778
  </td>
2779
  </tr>
2780
  <tr valign="center">
2791
  <?php echo !$this->is_wp_admin() ? 'disabled="disabled"' : ''; ?>
2792
  name="agca_custom_js"
2793
  id="agca_custom_js"
2794
+ cols="40"><?php echo htmlentities(get_option('agca_custom_js')); ?></textarea>
2795
  </td>
2796
  </tr>
2797
 
2855
 
2856
  if(isset($data['attributes'])){
2857
  foreach($data['attributes'] as $key=>$val){
2858
+ $strAttributes.=' '.$this->sanitize_html($key).'="'.$this->sanitize_html($val).'"';
2859
  }
2860
  }
2861
  if(isset($data['input-class'])){
2862
+ $strInputClass = $this->sanitize_html($data['input-class']);
2863
  }
2864
  if(isset($data['hide'])){
2865
  $strInputClass .= " visibility";
2868
  $strInputAttributes = $data['input-attributes'];
2869
  }
2870
  if(isset($data['onchange'])){
2871
+ $strOnchange = $this->sanitize_html($data['onchange']);
2872
  }
2873
  if(!isset($data['title'])){
2874
+ $data['title'] = $this->sanitize_html($data['label']);
2875
  }
2876
  if(isset($data['checked'])){
2877
+ $isChecked = (bool) $data['checked'];
2878
  }else{
2879
  //use default check with the option
2880
  $isChecked = get_option($data['name'])==true;
2882
  ?>
2883
  <tr valign="center" <?php echo $strAttributes ?> >
2884
  <th>
2885
+ <label tabindex="0" title='<?php echo $this->sanitize_html($data['title']) ?>' for="<?php echo $this->sanitize_html($data['name']) ?>" ><?php echo wp_kses_post($data['label']) ?></label>
2886
  </th>
2887
  <td>
2888
+ <input type="checkbox" class="agca-checkbox <?php echo $this->sanitize_html($strInputClass) ?> " <?php echo $this->sanitize_html($strOnchange) ?> <?php echo $this->sanitize_html($strInputAttributes) ?> title='<?php _e('Toggle on/off', 'ag-custom-admin'); ?>' name="<?php echo $this->sanitize_html($data['name']) ?>" value="true" <?php echo ($isChecked)?' checked="checked"':'' ?> />
2889
  </td>
2890
  </tr>
2891
  <?php
2896
  $strAttributes = '';
2897
  $parentAttr = '';
2898
  if(isset($data['hint'])){
2899
+ $strHint = '&nbsp;<p><i>'.$this->sanitize($data['hint']).'</i></p>';
2900
  }
2901
  if(!isset($data['title'])){
2902
  $data['title'] = $data['label'];
2909
  }
2910
  if(isset($data['attributes'])){
2911
  foreach($data['attributes'] as $key=>$val){
2912
+ $strAttributes.=' '.$this->sanitize_html($key).'="'.$this->sanitize_html($val).'"';
2913
  }
2914
  }
2915
  ?>
2916
  <tr valign="center" <?php echo $strAttributes ?> >
2917
  <th >
2918
+ <label title="<?php echo $this->sanitize_html($data['title']) ?>" for="<?php echo $this->sanitize_html($data['name']) ?>"><?php echo wp_kses_post($data['label']) ?></label>
2919
  </th>
2920
  <td>
2921
+ <input id="<?php echo $this->sanitize_html($data['name']) ?>" title="<?php echo $this->sanitize_html($data['title']) ?>" type="text" size="47" class="<?php echo $data['disabled'] ? 'disabled' : ''; ?>" name="<?php echo $this->sanitize_html($data['name']) ?>" value="<?php echo $this->sanitize_html(get_option($data['name'])); ?>" <?php echo $data['disabled'] ? 'disabled="disabled"':''; ?> />
2922
  <?php if(!$data['disabled']) { ?>
2923
+ <a title="<?php _e('Clear', 'ag-custom-admin'); ?>" class="agca_button clear" onClick="jQuery('#<?php echo $this->sanitize_html($data['name']) ?>').val('');"><span class="dashicons clear dashicons-no-alt"></span></a>
2924
  <?php } ?>
2925
+ <?php echo $this->sanitize($suffix) ?>
2926
+ <?php echo $this->sanitize($strHint) ?>
2927
  </td>
2928
  </tr>
2929
  <?php
2932
  $strHint = '';
2933
  $strClass = '';
2934
  if(isset($data['hint'])){
2935
+ $strHint = '&nbsp;<p><i>'.$this->sanitize_html($data['hint']).'</i>.</p>';
2936
  }
2937
  if(!isset($data['title'])){
2938
  $data['title'] = $data['label'];
2949
  ?>
2950
  <tr valign="center">
2951
  <th scope="row">
2952
+ <label title="<?php echo $this->sanitize_html($data['title']) ?>" for="<?php echo $this->sanitize_html($data['name']) ?>"><?php echo wp_kses_post($data['label']) ?></label>
2953
  </th>
2954
  <td>
2955
+ <textarea <?php echo !empty($strClass)?'class="'.$this->sanitize_html($strClass).'"':''; ?> title="<?php echo $this->sanitize_html($data['title']) ?>" rows="5" name="<?php echo $this->sanitize_html($data['name']) ?>" cols="40" <?php echo $data['disabled'] ? 'disabled="disabled"':''; ?> ><?php echo $this->sanitize_html(get_option($data['name'])); ?></textarea>
2956
+ <?php echo $this->sanitize($strHint) ?>
2957
  </td>
2958
  </tr>
2959
  <?php
2961
  function print_color($name, $label, $title){
2962
  ?>
2963
  <tr valign="center" class="color">
2964
+ <th><label title="<?php echo $this->sanitize_html($title); ?>" for="<?php echo $this->sanitize_html($name); ?>"><?php echo $this->sanitize_html($label); ?></label></th>
2965
+ <td><input type="text" placeholder="#" id="<?php echo $this->sanitize_html($name); ?>" name="<?php echo $this->sanitize_html($name); ?>" class="color_picker" value="<?php echo $this->sanitize_html($this->getAGCAColor($name)); ?>" />
2966
+ <a title="<?php _e('Pick Color', 'ag-custom-admin'); ?>" alt="<?php echo $this->sanitize_html($name); ?>" class="pick_color_button agca_button"><span class="dashicons dashicons-art"></span></a>
2967
+ <a title="<?php _e('Clear', 'ag-custom-admin'); ?>" alt="<?php echo $this->sanitize_html($name); ?>" class="pick_color_button_clear agca_button" ><span class="dashicons clear dashicons-no-alt"></span></a>
2968
  </td>
2969
  </tr>
2970
  <?php
2973
  ?>
2974
  <tr valign="center">
2975
  <td colspan="2">
2976
+ <div class="ag_table_heading"><h3 tabindex="0"><?php echo $this->sanitize_html($title) ?></h3></div>
2977
  </td>
2978
  <td></td>
2979
  </tr>
2984
 
2985
  <tr valign="center">
2986
  <th><label title="<?php _e('Change submenu item background color', 'ag-custom-admin'); ?>" for="color_admin_menu_submenu_background"><?php _e('Submenu button background color:', 'ag-custom-admin'); ?></label></th>
2987
+ <td><input type="text" id="color_admin_menu_submenu_background" name="color_admin_menu_submenu_background" class="color_picker" value="<?php echo $this->sanitize_html($this->getAGCAColor('color_admin_menu_submenu_background')); ?>" />
2988
  <input type="button" alt="color_admin_menu_submenu_background" class="pick_color_button agca_button" value="<?php _e('Pick color', 'ag-custom-admin'); ?>" />
2989
  <input type="button" alt="color_admin_menu_submenu_background" class="pick_color_button_clear agca_button" value="<?php _e('Clear', 'ag-custom-admin'); ?>" />
2990
  </td>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=agca@cus
4
  Tags: customize dashboard, hide admin bar, customize admin menu, customize login page, hide widgets, admin menu, dashboard, edit admin menu, admin bar, login page, widgets, customize admin
5
  Requires at least: 3.0
6
  Tested up to: 5.8
7
- Stable tag: 6.9.5
8
  License: GPLv3 or later
9
  License URI: https://www.gnu.org/licenses/gpl.txt
10
 
@@ -159,6 +159,13 @@ If you have the latest WordPress and plugin versions, and you still experience s
159
 
160
  == Change Log ==
161
 
 
 
 
 
 
 
 
162
  = 6.9.5 =
163
  * Improved security
164
 
@@ -167,16 +174,13 @@ If you have the latest WordPress and plugin versions, and you still experience s
167
  * Small text improvements
168
  * Fixed an issue with Cusmin compatibility
169
 
170
- = 6.9.3 =
171
- * Fixed blank login page, when jQuery is not defined
172
-
173
- = 6.9.2 =
174
- * Fixed HTML escaping on multiple fields in AGCA, added non-admin restrictions instead
175
-
176
  [SEE ALL LOGS](https://plugins.svn.wordpress.org/ag-custom-admin/trunk/changelog.txt)
177
 
178
  == Upgrade Notice ==
179
 
 
 
 
180
  = 6.9.5 =
181
  * Improved security
182
 
4
  Tags: customize dashboard, hide admin bar, customize admin menu, customize login page, hide widgets, admin menu, dashboard, edit admin menu, admin bar, login page, widgets, customize admin
5
  Requires at least: 3.0
6
  Tested up to: 5.8
7
+ Stable tag: 7.0
8
  License: GPLv3 or later
9
  License URI: https://www.gnu.org/licenses/gpl.txt
10
 
159
 
160
  == Change Log ==
161
 
162
+ = 7.0 =
163
+ * Improved security
164
+ * Code cleanup
165
+ * Removed farbtastic scripts
166
+ * Properly using enqueue for scripts and dependencies
167
+ * Small changes on General fields, better naming AGCA administrators > AGCA safe users
168
+
169
  = 6.9.5 =
170
  * Improved security
171
 
174
  * Small text improvements
175
  * Fixed an issue with Cusmin compatibility
176
 
 
 
 
 
 
 
177
  [SEE ALL LOGS](https://plugins.svn.wordpress.org/ag-custom-admin/trunk/changelog.txt)
178
 
179
  == Upgrade Notice ==
180
 
181
+ = 7.0 =
182
+ * Important security update. Security enforcement.
183
+
184
  = 6.9.5 =
185
  * Improved security
186
 
script/ag_script.js CHANGED
@@ -1,6 +1,5 @@
1
  var afterFormClickCreateJson = true;
2
  var editingButtonNow = false;
3
- var agca_ajax_url = agca_global_plugin_url + "ajax.php";
4
  function booleanToChecked(bool){
5
  if(bool == 'true'){
6
  return 'checked="checked"';
@@ -932,9 +931,6 @@ window.agca_show_affected_groups = function() {
932
  var g = window.agca_wp_groups[slug];
933
  if(g['capabilities'][selCapability]) {
934
  groups.push(g.name);
935
- if(slug === 'subscriber' || slug === 'contributor' || slug === 'author') {
936
- error = '<p style="color: red; filter: none;max-width: 600px;">You have selected a capability that include low level user groups. Please remember that these user groups can make additional changes to AGCA.</p>';
937
- }
938
  }
939
  }
940
  document.getElementById('agca-affected-roles').innerHTML = '<b>' + groups.join(', ') + '</b>' + error;
1
  var afterFormClickCreateJson = true;
2
  var editingButtonNow = false;
 
3
  function booleanToChecked(bool){
4
  if(bool == 'true'){
5
  return 'checked="checked"';
931
  var g = window.agca_wp_groups[slug];
932
  if(g['capabilities'][selCapability]) {
933
  groups.push(g.name);
 
 
 
934
  }
935
  }
936
  document.getElementById('agca-affected-roles').innerHTML = '<b>' + groups.join(', ') + '</b>' + error;
script/farbtastic.js DELETED
@@ -1,346 +0,0 @@
1
- /**
2
- * Farbtastic Color Picker 1.2
3
- * © 2008 Steven Wittens
4
- *
5
- * This program is free software; you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation; either version 2 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program; if not, write to the Free Software
17
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
- */
19
-
20
- jQuery.fn.farbtastic = function (callback) {
21
- jQuery.farbtastic(this, callback);
22
- return this;
23
- };
24
-
25
- jQuery.farbtastic = function (container, callback) {
26
- var container = jQuery(container).get(0);
27
- return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback));
28
- }
29
-
30
- jQuery._farbtastic = function (container, callback) {
31
- // Store farbtastic object
32
- var fb = this;
33
-
34
- // Insert markup
35
- jQuery(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');
36
- var e = jQuery('.farbtastic', container);
37
- fb.wheel = jQuery('.wheel', container).get(0);
38
- // Dimensions
39
- fb.radius = 84;
40
- fb.square = 100;
41
- fb.width = 194;
42
-
43
- // Fix background PNGs in IE6
44
- if (navigator.appVersion.match(/MSIE [0-6]\./)) {
45
- jQuery('*', e).each(function () {
46
- if (this.currentStyle.backgroundImage != 'none') {
47
- var image = this.currentStyle.backgroundImage;
48
- image = this.currentStyle.backgroundImage.substring(5, image.length - 2);
49
- jQuery(this).css({
50
- 'backgroundImage': 'none',
51
- 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
52
- });
53
- }
54
- });
55
- }
56
-
57
- /**
58
- * Link to the given element(s) or callback.
59
- */
60
- fb.linkTo = function (callback) {
61
- // Unbind previous nodes
62
- if (typeof fb.callback == 'object') {
63
- jQuery(fb.callback).unbind('keyup', fb.updateValue);
64
- }
65
-
66
- // Reset color
67
- fb.color = null;
68
-
69
- // Bind callback or elements
70
- if (typeof callback == 'function') {
71
- fb.callback = callback;
72
- }
73
- else if (typeof callback == 'object' || typeof callback == 'string') {
74
- fb.callback = jQuery(callback);
75
- fb.callback.bind('keyup', fb.updateValue);
76
- if (fb.callback.get(0).value) {
77
- fb.setColor(fb.callback.get(0).value);
78
- }
79
- }
80
- return this;
81
- }
82
- fb.updateValue = function (event) {
83
- if (this.value && this.value != fb.color) {
84
- fb.setColor(this.value);
85
- }
86
- }
87
-
88
- /**
89
- * Change color with HTML syntax #123456
90
- */
91
- fb.setColor = function (color) {
92
- var unpack = fb.unpack(color);
93
- if (fb.color != color && unpack) {
94
- fb.color = color;
95
- fb.rgb = unpack;
96
- fb.hsl = fb.RGBToHSL(fb.rgb);
97
- fb.updateDisplay();
98
- }
99
- return this;
100
- }
101
-
102
- /**
103
- * Change color with HSL triplet [0..1, 0..1, 0..1]
104
- */
105
- fb.setHSL = function (hsl) {
106
- fb.hsl = hsl;
107
- fb.rgb = fb.HSLToRGB(hsl);
108
- fb.color = fb.pack(fb.rgb);
109
- fb.updateDisplay();
110
- return this;
111
- }
112
-
113
- /////////////////////////////////////////////////////
114
-
115
- /**
116
- * Retrieve the coordinates of the given event relative to the center
117
- * of the widget.
118
- */
119
- fb.widgetCoords = function (event) {
120
- var x, y;
121
- var el = event.target || event.srcElement;
122
- var reference = fb.wheel;
123
-
124
- if (typeof event.offsetX != 'undefined') {
125
- // Use offset coordinates and find common offsetParent
126
- var pos = { x: event.offsetX, y: event.offsetY };
127
-
128
- // Send the coordinates upwards through the offsetParent chain.
129
- var e = el;
130
- while (e) {
131
- e.mouseX = pos.x;
132
- e.mouseY = pos.y;
133
- pos.x += e.offsetLeft;
134
- pos.y += e.offsetTop;
135
- e = e.offsetParent;
136
- }
137
-
138
- // Look for the coordinates starting from the wheel widget.
139
- var e = reference;
140
- var offset = { x: 0, y: 0 }
141
- while (e) {
142
- if (typeof e.mouseX != 'undefined') {
143
- x = e.mouseX - offset.x;
144
- y = e.mouseY - offset.y;
145
- break;
146
- }
147
- offset.x += e.offsetLeft;
148
- offset.y += e.offsetTop;
149
- e = e.offsetParent;
150
- }
151
-
152
- // Reset stored coordinates
153
- e = el;
154
- while (e) {
155
- e.mouseX = undefined;
156
- e.mouseY = undefined;
157
- e = e.offsetParent;
158
- }
159
- }
160
- else {
161
- // Use absolute coordinates
162
- var pos = fb.absolutePosition(reference);
163
- x = (event.pageX || 0*(event.clientX + jQuery('html').get(0).scrollLeft)) - pos.x;
164
- y = (event.pageY || 0*(event.clientY + jQuery('html').get(0).scrollTop)) - pos.y;
165
- }
166
- // Subtract distance to middle
167
- return { x: x - fb.width / 2, y: y - fb.width / 2 };
168
- }
169
-
170
- /**
171
- * Mousedown handler
172
- */
173
- fb.mousedown = function (event) {
174
- // Capture mouse
175
- if (!document.dragging) {
176
- jQuery(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);
177
- document.dragging = true;
178
- }
179
-
180
- // Check which area is being dragged
181
- var pos = fb.widgetCoords(event);
182
- fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;
183
-
184
- // Process
185
- fb.mousemove(event);
186
- return false;
187
- }
188
-
189
- /**
190
- * Mousemove handler
191
- */
192
- fb.mousemove = function (event) {
193
- // Get coordinates relative to color picker center
194
- var pos = fb.widgetCoords(event);
195
-
196
- // Set new HSL parameters
197
- if (fb.circleDrag) {
198
- var hue = Math.atan2(pos.x, -pos.y) / 6.28;
199
- if (hue < 0) hue += 1;
200
- fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);
201
- }
202
- else {
203
- var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));
204
- var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));
205
- fb.setHSL([fb.hsl[0], sat, lum]);
206
- }
207
- return false;
208
- }
209
-
210
- /**
211
- * Mouseup handler
212
- */
213
- fb.mouseup = function () {
214
- // Uncapture mouse
215
- jQuery(document).unbind('mousemove', fb.mousemove);
216
- jQuery(document).unbind('mouseup', fb.mouseup);
217
- document.dragging = false;
218
- }
219
-
220
- /**
221
- * Update the markers and styles
222
- */
223
- fb.updateDisplay = function () {
224
- // Markers
225
- var angle = fb.hsl[0] * 6.28;
226
- jQuery('.h-marker', e).css({
227
- left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',
228
- top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'
229
- });
230
-
231
- jQuery('.sl-marker', e).css({
232
- left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',
233
- top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'
234
- });
235
-
236
- // Saturation/Luminance gradient
237
- jQuery('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));
238
-
239
- // Linked elements or callback
240
- if (typeof fb.callback == 'object') {
241
- // Set background/foreground color
242
- jQuery(fb.callback).css({
243
- backgroundColor: fb.color,
244
- color: fb.hsl[2] > 0.5 ? '#000' : '#fff'
245
- });
246
-
247
- // Change linked value
248
- jQuery(fb.callback).each(function() {
249
- if (this.value && this.value != fb.color) {
250
- this.value = fb.color;
251
- }
252
- });
253
- }
254
- else if (typeof fb.callback == 'function') {
255
- fb.callback.call(fb, fb.color);
256
- }
257
- //farbasticCallback(callback);
258
- }
259
-
260
- /**
261
- * Get absolute position of element
262
- */
263
- fb.absolutePosition = function (el) {
264
- var r = { x: el.offsetLeft, y: el.offsetTop };
265
- // Resolve relative to offsetParent
266
- if (el.offsetParent) {
267
- var tmp = fb.absolutePosition(el.offsetParent);
268
- r.x += tmp.x;
269
- r.y += tmp.y;
270
- }
271
- return r;
272
- };
273
-
274
- /* Various color utility functions */
275
- fb.pack = function (rgb) {
276
- var r = Math.round(rgb[0] * 255);
277
- var g = Math.round(rgb[1] * 255);
278
- var b = Math.round(rgb[2] * 255);
279
- return '#' + (r < 16 ? '0' : '') + r.toString(16) +
280
- (g < 16 ? '0' : '') + g.toString(16) +
281
- (b < 16 ? '0' : '') + b.toString(16);
282
- }
283
-
284
- fb.unpack = function (color) {
285
- if (color.length == 7) {
286
- return [parseInt('0x' + color.substring(1, 3)) / 255,
287
- parseInt('0x' + color.substring(3, 5)) / 255,
288
- parseInt('0x' + color.substring(5, 7)) / 255];
289
- }
290
- else if (color.length == 4) {
291
- return [parseInt('0x' + color.substring(1, 2)) / 15,
292
- parseInt('0x' + color.substring(2, 3)) / 15,
293
- parseInt('0x' + color.substring(3, 4)) / 15];
294
- }
295
- }
296
-
297
- fb.HSLToRGB = function (hsl) {
298
- var m1, m2, r, g, b;
299
- var h = hsl[0], s = hsl[1], l = hsl[2];
300
- m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;
301
- m1 = l * 2 - m2;
302
- return [this.hueToRGB(m1, m2, h+0.33333),
303
- this.hueToRGB(m1, m2, h),
304
- this.hueToRGB(m1, m2, h-0.33333)];
305
- }
306
-
307
- fb.hueToRGB = function (m1, m2, h) {
308
- h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);
309
- if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
310
- if (h * 2 < 1) return m2;
311
- if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;
312
- return m1;
313
- }
314
-
315
- fb.RGBToHSL = function (rgb) {
316
- var min, max, delta, h, s, l;
317
- var r = rgb[0], g = rgb[1], b = rgb[2];
318
- min = Math.min(r, Math.min(g, b));
319
- max = Math.max(r, Math.max(g, b));
320
- delta = max - min;
321
- l = (min + max) / 2;
322
- s = 0;
323
- if (l > 0 && l < 1) {
324
- s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
325
- }
326
- h = 0;
327
- if (delta > 0) {
328
- if (max == r && max != g) h += (g - b) / delta;
329
- if (max == g && max != b) h += (2 + (b - r) / delta);
330
- if (max == b && max != r) h += (4 + (r - g) / delta);
331
- h /= 6;
332
- }
333
- return [h, s, l];
334
- }
335
-
336
- // Install mousedown handler (the others are set on the document on-demand)
337
- jQuery('*', e).mousedown(fb.mousedown);
338
-
339
- // Init color
340
- fb.setColor('#000000');
341
-
342
- // Set linked elements/callback
343
- if (callback) {
344
- fb.linkTo(callback);
345
- }
346
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
style/ag_style.css CHANGED
@@ -1117,6 +1117,10 @@ td.ag_admin_menu_parent:hover {
1117
  margin-top: -2px;
1118
  }
1119
 
 
 
 
 
1120
  @media (max-width: 600px) {
1121
  .tools_page_ag-custom-admin-plugin #agca-header {
1122
  margin-top: 50px;
1117
  margin-top: -2px;
1118
  }
1119
 
1120
+ #agca_form .agca-field-secured-notice {
1121
+ color: red;
1122
+ }
1123
+
1124
  @media (max-width: 600px) {
1125
  .tools_page_ag-custom-admin-plugin #agca-header {
1126
  margin-top: 50px;
style/farbtastic.css DELETED
@@ -1,51 +0,0 @@
1
- /**
2
- * Farbtastic Color Picker 1.2
3
- * © 2008 Steven Wittens
4
- *
5
- * This program is free software; you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation; either version 2 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program; if not, write to the Free Software
17
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
- */
19
- .farbtastic {
20
- position: relative;
21
- }
22
- .farbtastic * {
23
- position: absolute;
24
- cursor: crosshair;
25
- }
26
- .farbtastic, .farbtastic .wheel {
27
- width: 195px;
28
- height: 195px;
29
- }
30
- .farbtastic .color, .farbtastic .overlay {
31
- top: 47px;
32
- left: 47px;
33
- width: 101px;
34
- height: 101px;
35
- }
36
- .farbtastic .wheel {
37
- background: url(wheel.png) no-repeat;
38
- width: 195px;
39
- height: 195px;
40
- }
41
- .farbtastic .overlay {
42
- background: url(mask.png) no-repeat;
43
- }
44
- .farbtastic .marker {
45
- width: 17px;
46
- height: 17px;
47
- margin: -8px 0 0 -8px;
48
- overflow: hidden;
49
- background: url(marker.png) no-repeat;
50
- }
51
-