Menu Image - Version 2.9.1

Version Description

Download this release

Release Info

Developer zviryatko
Plugin Icon 128x128 Menu Image
Version 2.9.1
Comparing to
See all releases

Code changes from version 2.4 to 2.9.1

.env.default ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WP_ROOT_FOLDER="/tmp/wp"
2
+ WP_ADMIN_PATH="/wp-admin"
3
+ DB_NAME="wordpress"
4
+ DB_HOST="localhost"
5
+ DB_USER="travis"
6
+ DB_PASSWORD=""
7
+ TABLE_PREFIX="wp_"
8
+ WP_URL="http://localhost:8080/"
9
+ WP_DOMAIN="example.com"
10
+ ADMIN_EMAIL="admin@example.com"
11
+ ADMIN_USERNAME="admin"
12
+ ADMIN_PASSWORD="password"
13
+ SERVER_URL="localhost:8080"
.gitignore CHANGED
@@ -1 +1,3 @@
1
  node_modules/
 
 
1
  node_modules/
2
+ vendor
3
+ .env
.travis.yml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ language: php
2
+
3
+ branches:
4
+ only:
5
+ - master
6
+ - /^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/
7
+
8
+ services:
9
+ - mysql
10
+
11
+ cache:
12
+ apt: true
13
+ directories:
14
+ - $HOME/.composer/cache/files
15
+
16
+ notifications:
17
+ email:
18
+ on_success: never
19
+ on_failure: change
20
+
21
+ php:
22
+ - 7.1
23
+ - 7.2
24
+ - nightly
25
+
26
+ env:
27
+ global:
28
+ - COMPOSER_NO_INTERACTION=1
29
+ matrix:
30
+ - WP_VERSION=nightly WP_THEME=twentyseventeen
31
+ - WP_VERSION=nightly WP_THEME=twentysixteen
32
+ - WP_VERSION=nightly WP_THEME=twentyfifteen
33
+ - WP_VERSION=latest WP_THEME=twentyseventeen
34
+ - WP_VERSION=latest WP_THEME=twentysixteen
35
+ - WP_VERSION=latest WP_THEME=twentyfifteen
36
+
37
+ matrix:
38
+ allow_failures:
39
+ - php: nightly
40
+ - env: WP_VERSION=nightly
41
+ fast_finish: true
42
+
43
+ before_install:
44
+ - export PATH="$TRAVIS_BUILD_DIR/vendor/bin:$PATH"
45
+ - export PATH="$TRAVIS_BUILD_DIR/bin:$PATH"
46
+ - wget -qO- https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar xj -C /tmp
47
+
48
+ install:
49
+ - composer install --quiet --dev --prefer-dist --no-suggest
50
+ - ./vendor/bin/wp core download --version=$WP_VERSION --path=/tmp/wp
51
+ - cp .env.default .env
52
+ - bash -v tests/setup.sh
53
+
54
+ before_script:
55
+ - /tmp/phantomjs-1.9.8-linux-x86_64/bin/phantomjs --webdriver=4444 > /dev/null 2>&1 &
56
+ - php -S localhost:8080 -t /tmp/wp > /dev/null 2>&1 &
57
+
58
+ script:
59
+ - ./vendor/bin/codecept run
Gruntfile.js CHANGED
@@ -4,9 +4,12 @@ module.exports = function(grunt){
4
  grunt.initConfig({
5
  wp_readme_to_markdown: {
6
  your_target: {
7
- files: {
8
- 'README.md': 'readme.txt'
9
- },
 
 
 
10
  },
11
  },
12
  });
4
  grunt.initConfig({
5
  wp_readme_to_markdown: {
6
  your_target: {
7
+ files: {
8
+ 'README.md': 'readme.txt'
9
+ },
10
+ options: {
11
+ screenshot_url: "https://ps.w.org/{plugin}/assets/{screenshot}.png",
12
+ },
13
  },
14
  },
15
  });
README.md CHANGED
@@ -1,10 +1,10 @@
1
  # Menu Image #
2
- **Contributors:** zviryatko
3
  **Tags:** menu, image, field, hover, wpml
4
  **Donate link:** http://makeyoulivebetter.org.ua/buy-beer
5
- **Requires at least:** 3.5.1
6
- **Tested up to:** 4.0
7
- **Stable tag:** 2.4
8
  **License:** GPLv2 or later
9
  **License URI:** http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -30,43 +30,118 @@ Now WPML compliant!
30
 
31
  ## Frequently Asked Questions ##
32
 
 
 
 
 
33
  ### How to wrap menu link text in `span` html element ###
34
 
35
- Where you show your menu with function `<?php wp_nav_menu(); ?>` as param you can add `array('link_before' => '<span>', 'link_after' => '</span>')`.
36
- It makes css markup easier.
37
 
38
  ### How to add another size for the image? ###
39
 
40
  To add a new size (or remove an old one) add a function to the `menu_image_default_sizes` filter. For example
41
 
42
- `
43
- <?php
44
- add_filter( 'menu_image_default_sizes', function($sizes){
45
 
46
- // remove the default 36x36 size
47
- unset($sizes['menu-36x36']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- // add a new size
50
- $sizes['menu-50x50'] = array(50,50);
51
 
52
- // return $sizes (required)
53
- return $sizes;
 
 
 
 
 
 
 
 
 
54
 
55
- });
56
- ?>
57
- `
58
 
59
  ## Screenshots ##
60
 
61
  ### 1. Admin screen ###
62
- ![Admin screen](http://ps.w.org/menu-image/assets/screenshot-1.png)
63
 
64
  ### 2. Menu preview in standard twenty-thirteen theme ###
65
- ![Menu preview in standard twenty-thirteen theme](http://ps.w.org/menu-image/assets/screenshot-2.png)
66
 
67
 
68
  ## Changelog ##
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  ### 2.4 ###
71
  * Fix compatibility with some modules and themes to according to [this topic](http://shazdeh.me/2014/06/25/custom-fields-nav-menu-items/)
72
  * Fix Jetpack Phonon frontend bug
@@ -99,6 +174,9 @@ add_filter( 'menu_image_default_sizes', function($sizes){
99
 
100
  ## Upgrade Notice ##
101
 
 
 
 
102
  ### 2.4 ###
103
  If your are using Jetpack Phonon module now menu icons will be look good.
104
 
1
  # Menu Image #
2
+ **Contributors:** [zviryatko](https://profiles.wordpress.org/zviryatko)
3
  **Tags:** menu, image, field, hover, wpml
4
  **Donate link:** http://makeyoulivebetter.org.ua/buy-beer
5
+ **Requires at least:** 4.4.0
6
+ **Tested up to:** 4.7
7
+ **Stable tag:** 2.9.0
8
  **License:** GPLv2 or later
9
  **License URI:** http://www.gnu.org/licenses/gpl-2.0.html
10
 
30
 
31
  ## Frequently Asked Questions ##
32
 
33
+ ### How to add custom attributes to menu item link (useful for integration with dropdown menus) ###
34
+
35
+ Use core `nav_menu_link_attributes` and `nav_menu_item_title` filters.
36
+
37
  ### How to wrap menu link text in `span` html element ###
38
 
39
+ Menu link text is already wrapped in `span.menu-image-title`.
 
40
 
41
  ### How to add another size for the image? ###
42
 
43
  To add a new size (or remove an old one) add a function to the `menu_image_default_sizes` filter. For example
44
 
 
 
 
45
 
46
+ <?php
47
+ add_filter( 'menu_image_default_sizes', function($sizes) {
48
+
49
+ // remove the default 36x36 size
50
+ unset($sizes['menu-36x36']);
51
+
52
+ // add a new size
53
+ $sizes['menu-50x50'] = array(50,50);
54
+
55
+ // return $sizes (required)
56
+ return $sizes;
57
+
58
+ });
59
+ ?>
60
+
61
+
62
+ ### How to make hovered image visible on current page of menu item? ###
63
+
64
+ Add this link to style.css
65
+
66
+ .menu-item.current-menu-item > a.menu-image-hovered img.hovered-image {
67
+ opacity: 1;
68
+ }
69
 
 
 
70
 
71
+ = If you have problem with srcset image problem on Wordpress version >= 4.4 and Azure hosting =
72
+
73
+ If you srcset property look like this:
74
+ `<img width="36" height="36" src="http://static.mywebsite.com/website/myaction_express_menu_icon-36x36.png" class="attachment-menu-36x36 size-menu-36x36" alt="myaction_express_menu_icon" srcset="http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-50x50.png 50w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-75x75.png 75w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-24x24.png 24w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-36x36.png 36w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-48x48.png 48w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon.png 80w" sizes="(max-width: 36px) 100vw, 36px">`
75
+ Then you can disable srcset (add it to your function.php):
76
+
77
+ /**
78
+ * Fix for broken images on azure & wordpress 4.4
79
+ * @see https://wordpress.org/support/topic/wordpress-adding-absolute-paths
80
+ */
81
+ add_filter( 'wp_calculate_image_srcset', '__return_false' );
82
 
 
 
 
83
 
84
  ## Screenshots ##
85
 
86
  ### 1. Admin screen ###
87
+ ![Admin screen](https://ps.w.org/menu-image/assets/screenshot-1.png)
88
 
89
  ### 2. Menu preview in standard twenty-thirteen theme ###
90
+ ![Menu preview in standard twenty-thirteen theme](https://ps.w.org/menu-image/assets/screenshot-2.png)
91
 
92
 
93
  ## Changelog ##
94
 
95
+ ### 2.9.0 ###
96
+ * Update admin part copy regarding to new wp version.
97
+ * Fix support url.
98
+ * Fix php warning.
99
+
100
+ ### 2.8.0 ###
101
+ * Use core `nav_menu_link_attributes`, `nav_menu_item_title` filters to add image and class instead of `walker_nav_menu_start_el` filter.
102
+ * Drop support of core version < 4.4.0.
103
+
104
+ ### 2.7.0 ###
105
+ * Remove notification plugin. It was not a good idea btw.
106
+
107
+ ### 2.6.9 ###
108
+ * Revert back php <=5.2 support, https://wordpress.org/support/topic/upgrade-to-wp-453-and-268-and-got-this-error. Reported by @itmnetcom and @cjg79
109
+
110
+ ### 2.6.8 ###
111
+ * Fix `wp_nav_menu_item_custom_fields` filter usage https://wordpress.org/support/topic/blocked-on-36x36-image. Reported by @vladimir-slonska
112
+ * Fix php warning in notifier component https://wordpress.org/support/topic/invalid-argument-supplied-for-foreach-in-4. Reported by @susanmarshallva
113
+
114
+ ### 2.6.7 ###
115
+ * Add `menu_image_link_attributes` filter, fix bug with menu dropdown in Flatsome theme https://wordpress.org/support/topic/bug-image-menu-dropdown. Reported by @apardo
116
+
117
+ ### 2.6.6 ###
118
+ * Fix various php errors.
119
+
120
+ ### 2.6.5 ###
121
+ * Add notification plugin.
122
+
123
+ ### 2.6.4 ###
124
+ * Fixing a clearing bug for WordPress 4.5+. Thanx @kau-boy
125
+
126
+ ### 2.6.3 ###
127
+ * Fix php warning 'Invalid Argument foreach()' https://wordpress.org/support/topic/invalid-argument-foreach-in-menu-imagephp-line-126. Thanx @majancart
128
+
129
+ ### 2.6.2 ###
130
+ * Update FAQ to dial with srcset and Azure hosting https://wordpress.org/support/topic/wordpress-adding-absolute-paths. Thanx @GeertvanHorrik
131
+
132
+ ### 2.6.1 ###
133
+ * Fix php warning https://wordpress.org/support/topic/bug-fix-error-in-the-file-menu-imagephp
134
+
135
+ ### 2.6 ###
136
+ * Fix bug on attachment page.
137
+ * Add french translation. Thanx @CreativeJuiz
138
+
139
+ ### 2.5 ###
140
+ * Add above and below title. Thanx @alhoseany
141
+ * Add original image size. Thanx @alhoseany
142
+ * Fix the loss of choices on size and title when updating image by ajax. Thanx @alhoseany
143
+ * Fix hidden title on responsive select menu.
144
+
145
  ### 2.4 ###
146
  * Fix compatibility with some modules and themes to according to [this topic](http://shazdeh.me/2014/06/25/custom-fields-nav-menu-items/)
147
  * Fix Jetpack Phonon frontend bug
174
 
175
  ## Upgrade Notice ##
176
 
177
+ ### 2.5 ###
178
+ Now you can set link title below and above image, thanx @alhoseany.
179
+
180
  ### 2.4 ###
181
  If your are using Jetpack Phonon module now menu icons will be look good.
182
 
codeception.yml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ paths:
2
+ tests: tests
3
+ output: tests/_output
4
+ data: tests/_data
5
+ support: tests/_support
6
+ envs: tests/_envs
7
+ actor_suffix: Tester
8
+ extensions:
9
+ enabled:
10
+ - Codeception\Extension\RunFailed
11
+ - Codeception\Extension\Logger
12
+ commands:
13
+ - Codeception\Command\GenerateWPUnit
14
+ - Codeception\Command\GenerateWPRestApi
15
+ - Codeception\Command\GenerateWPRestController
16
+ - Codeception\Command\GenerateWPRestPostTypeController
17
+ - Codeception\Command\GenerateWPAjax
18
+ - Codeception\Command\GenerateWPCanonical
19
+ - Codeception\Command\GenerateWPXMLRPC
20
+ - Codeception\Command\DbSnapshot
21
+ - tad\Codeception\Command\SearchReplace
22
+ params:
23
+ - .env
composer.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "zviryatko/menu-image",
3
+ "description": "Adds a field to load the image in a menu item and displays the image inside the link in the menu before the text.",
4
+ "type": "wordpress-plugin",
5
+ "license": "GPLv2 or later",
6
+ "authors": [
7
+ {
8
+ "name": "Alex Davyskiba",
9
+ "email": "sanya.davyskiba@gmail.com"
10
+ }
11
+ ],
12
+ "require": {},
13
+ "require-dev": {
14
+ "lucatume/wp-browser": "^2.1",
15
+ "monolog/monolog": "^1.23"
16
+ }
17
+ }
composer.lock ADDED
@@ -0,0 +1,6228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ "content-hash": "b31a12b7aaefc28652731a46c26a75ed",
8
+ "packages": [],
9
+ "packages-dev": [
10
+ {
11
+ "name": "antecedent/patchwork",
12
+ "version": "2.1.8",
13
+ "source": {
14
+ "type": "git",
15
+ "url": "https://github.com/antecedent/patchwork.git",
16
+ "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7"
17
+ },
18
+ "dist": {
19
+ "type": "zip",
20
+ "url": "https://api.github.com/repos/antecedent/patchwork/zipball/3bb81ace3914c220aa273d1c0603d5e1b454c0d7",
21
+ "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7",
22
+ "shasum": ""
23
+ },
24
+ "require": {
25
+ "php": ">=5.4.0"
26
+ },
27
+ "type": "library",
28
+ "notification-url": "https://packagist.org/downloads/",
29
+ "license": [
30
+ "MIT"
31
+ ],
32
+ "authors": [
33
+ {
34
+ "name": "Ignas Rudaitis",
35
+ "email": "ignas.rudaitis@gmail.com"
36
+ }
37
+ ],
38
+ "description": "Method redefinition (monkey-patching) functionality for PHP.",
39
+ "homepage": "http://patchwork2.org/",
40
+ "keywords": [
41
+ "aop",
42
+ "aspect",
43
+ "interception",
44
+ "monkeypatching",
45
+ "redefinition",
46
+ "runkit",
47
+ "testing"
48
+ ],
49
+ "time": "2018-02-19T18:52:50+00:00"
50
+ },
51
+ {
52
+ "name": "bacon/bacon-string-utils",
53
+ "version": "1.1.0",
54
+ "source": {
55
+ "type": "git",
56
+ "url": "https://github.com/Bacon/BaconStringUtils.git",
57
+ "reference": "3d7818aca25190149a9a2415a0928d4964d6007e"
58
+ },
59
+ "dist": {
60
+ "type": "zip",
61
+ "url": "https://api.github.com/repos/Bacon/BaconStringUtils/zipball/3d7818aca25190149a9a2415a0928d4964d6007e",
62
+ "reference": "3d7818aca25190149a9a2415a0928d4964d6007e",
63
+ "shasum": ""
64
+ },
65
+ "require": {
66
+ "php": ">=5.3.3"
67
+ },
68
+ "require-dev": {
69
+ "phpunit/phpunit": "~3.7",
70
+ "satooshi/php-coveralls": "~0.6",
71
+ "squizlabs/php_codesniffer": "~1.5",
72
+ "zendframework/zendframework": "~2.0"
73
+ },
74
+ "suggest": {
75
+ "zendframework/zend-filter": "To use the Slugifier as a Zend\\Filter instance."
76
+ },
77
+ "type": "library",
78
+ "extra": {
79
+ "branch-alias": {
80
+ "dev-master": "1.0-dev"
81
+ }
82
+ },
83
+ "autoload": {
84
+ "psr-0": {
85
+ "BaconStringUtils": "src/"
86
+ }
87
+ },
88
+ "notification-url": "https://packagist.org/downloads/",
89
+ "license": [
90
+ "BSD-2-Clause"
91
+ ],
92
+ "authors": [
93
+ {
94
+ "name": "Ben Scholzen 'DASPRiD'",
95
+ "email": "mail@dasprids.de",
96
+ "homepage": "http://www.dasprids.de",
97
+ "role": "Developer"
98
+ }
99
+ ],
100
+ "description": "BaconStringUtils contain utitilies to work with strings.",
101
+ "homepage": "https://github.com/Bacon/BaconStringUtils",
102
+ "time": "2014-10-11T16:58:02+00:00"
103
+ },
104
+ {
105
+ "name": "behat/gherkin",
106
+ "version": "v4.5.1",
107
+ "source": {
108
+ "type": "git",
109
+ "url": "https://github.com/Behat/Gherkin.git",
110
+ "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a"
111
+ },
112
+ "dist": {
113
+ "type": "zip",
114
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a",
115
+ "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a",
116
+ "shasum": ""
117
+ },
118
+ "require": {
119
+ "php": ">=5.3.1"
120
+ },
121
+ "require-dev": {
122
+ "phpunit/phpunit": "~4.5|~5",
123
+ "symfony/phpunit-bridge": "~2.7|~3",
124
+ "symfony/yaml": "~2.3|~3"
125
+ },
126
+ "suggest": {
127
+ "symfony/yaml": "If you want to parse features, represented in YAML files"
128
+ },
129
+ "type": "library",
130
+ "extra": {
131
+ "branch-alias": {
132
+ "dev-master": "4.4-dev"
133
+ }
134
+ },
135
+ "autoload": {
136
+ "psr-0": {
137
+ "Behat\\Gherkin": "src/"
138
+ }
139
+ },
140
+ "notification-url": "https://packagist.org/downloads/",
141
+ "license": [
142
+ "MIT"
143
+ ],
144
+ "authors": [
145
+ {
146
+ "name": "Konstantin Kudryashov",
147
+ "email": "ever.zet@gmail.com",
148
+ "homepage": "http://everzet.com"
149
+ }
150
+ ],
151
+ "description": "Gherkin DSL parser for PHP 5.3",
152
+ "homepage": "http://behat.org/",
153
+ "keywords": [
154
+ "BDD",
155
+ "Behat",
156
+ "Cucumber",
157
+ "DSL",
158
+ "gherkin",
159
+ "parser"
160
+ ],
161
+ "time": "2017-08-30T11:04:43+00:00"
162
+ },
163
+ {
164
+ "name": "codeception/codeception",
165
+ "version": "2.4.1",
166
+ "source": {
167
+ "type": "git",
168
+ "url": "https://github.com/Codeception/Codeception.git",
169
+ "reference": "bca3547632556875f1cdd567d6057cc14fe472b8"
170
+ },
171
+ "dist": {
172
+ "type": "zip",
173
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/bca3547632556875f1cdd567d6057cc14fe472b8",
174
+ "reference": "bca3547632556875f1cdd567d6057cc14fe472b8",
175
+ "shasum": ""
176
+ },
177
+ "require": {
178
+ "behat/gherkin": "^4.4.0",
179
+ "codeception/phpunit-wrapper": "^6.0.9|^7.0.6",
180
+ "codeception/stub": "^1.0",
181
+ "ext-json": "*",
182
+ "ext-mbstring": "*",
183
+ "facebook/webdriver": ">=1.1.3 <2.0",
184
+ "guzzlehttp/guzzle": ">=4.1.4 <7.0",
185
+ "guzzlehttp/psr7": "~1.0",
186
+ "php": ">=5.4.0 <8.0",
187
+ "symfony/browser-kit": ">=2.7 <5.0",
188
+ "symfony/console": ">=2.7 <5.0",
189
+ "symfony/css-selector": ">=2.7 <5.0",
190
+ "symfony/dom-crawler": ">=2.7 <5.0",
191
+ "symfony/event-dispatcher": ">=2.7 <5.0",
192
+ "symfony/finder": ">=2.7 <5.0",
193
+ "symfony/yaml": ">=2.7 <5.0"
194
+ },
195
+ "require-dev": {
196
+ "codeception/specify": "~0.3",
197
+ "facebook/graph-sdk": "~5.3",
198
+ "flow/jsonpath": "~0.2",
199
+ "monolog/monolog": "~1.8",
200
+ "pda/pheanstalk": "~3.0",
201
+ "php-amqplib/php-amqplib": "~2.4",
202
+ "predis/predis": "^1.0",
203
+ "squizlabs/php_codesniffer": "~2.0",
204
+ "symfony/process": ">=2.7 <5.0",
205
+ "vlucas/phpdotenv": "^2.4.0"
206
+ },
207
+ "suggest": {
208
+ "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module",
209
+ "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests",
210
+ "codeception/specify": "BDD-style code blocks",
211
+ "codeception/verify": "BDD-style assertions",
212
+ "flow/jsonpath": "For using JSONPath in REST module",
213
+ "league/factory-muffin": "For DataFactory module",
214
+ "league/factory-muffin-faker": "For Faker support in DataFactory module",
215
+ "phpseclib/phpseclib": "for SFTP option in FTP Module",
216
+ "stecman/symfony-console-completion": "For BASH autocompletion",
217
+ "symfony/phpunit-bridge": "For phpunit-bridge support"
218
+ },
219
+ "bin": [
220
+ "codecept"
221
+ ],
222
+ "type": "library",
223
+ "extra": {
224
+ "branch-alias": []
225
+ },
226
+ "autoload": {
227
+ "psr-4": {
228
+ "Codeception\\": "src\\Codeception",
229
+ "Codeception\\Extension\\": "ext"
230
+ }
231
+ },
232
+ "notification-url": "https://packagist.org/downloads/",
233
+ "license": [
234
+ "MIT"
235
+ ],
236
+ "authors": [
237
+ {
238
+ "name": "Michael Bodnarchuk",
239
+ "email": "davert@mail.ua",
240
+ "homepage": "http://codegyre.com"
241
+ }
242
+ ],
243
+ "description": "BDD-style testing framework",
244
+ "homepage": "http://codeception.com/",
245
+ "keywords": [
246
+ "BDD",
247
+ "TDD",
248
+ "acceptance testing",
249
+ "functional testing",
250
+ "unit testing"
251
+ ],
252
+ "time": "2018-03-31T22:30:43+00:00"
253
+ },
254
+ {
255
+ "name": "codeception/phpunit-wrapper",
256
+ "version": "6.0.9",
257
+ "source": {
258
+ "type": "git",
259
+ "url": "https://github.com/Codeception/phpunit-wrapper.git",
260
+ "reference": "450f1cfc5f49539c421061e64338f5edb8baad6a"
261
+ },
262
+ "dist": {
263
+ "type": "zip",
264
+ "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/450f1cfc5f49539c421061e64338f5edb8baad6a",
265
+ "reference": "450f1cfc5f49539c421061e64338f5edb8baad6a",
266
+ "shasum": ""
267
+ },
268
+ "require": {
269
+ "phpunit/php-code-coverage": ">=2.2.4 <6.0",
270
+ "phpunit/phpunit": ">=4.8.28 <5.0.0 || >=5.6.3 <7.0",
271
+ "sebastian/comparator": ">1.1 <3.0",
272
+ "sebastian/diff": ">=1.4 <4.0"
273
+ },
274
+ "replace": {
275
+ "codeception/phpunit-wrapper": "*"
276
+ },
277
+ "require-dev": {
278
+ "codeception/specify": "*",
279
+ "vlucas/phpdotenv": "^2.4"
280
+ },
281
+ "type": "library",
282
+ "autoload": {
283
+ "psr-4": {
284
+ "Codeception\\PHPUnit\\": "src\\"
285
+ }
286
+ },
287
+ "notification-url": "https://packagist.org/downloads/",
288
+ "license": [
289
+ "MIT"
290
+ ],
291
+ "authors": [
292
+ {
293
+ "name": "Davert",
294
+ "email": "davert.php@resend.cc"
295
+ }
296
+ ],
297
+ "description": "PHPUnit classes used by Codeception",
298
+ "time": "2018-03-31T18:50:01+00:00"
299
+ },
300
+ {
301
+ "name": "codeception/stub",
302
+ "version": "1.0.2",
303
+ "source": {
304
+ "type": "git",
305
+ "url": "https://github.com/Codeception/Stub.git",
306
+ "reference": "95fb7a36b81890dd2e5163e7ab31310df6f1bb99"
307
+ },
308
+ "dist": {
309
+ "type": "zip",
310
+ "url": "https://api.github.com/repos/Codeception/Stub/zipball/95fb7a36b81890dd2e5163e7ab31310df6f1bb99",
311
+ "reference": "95fb7a36b81890dd2e5163e7ab31310df6f1bb99",
312
+ "shasum": ""
313
+ },
314
+ "require": {
315
+ "phpunit/phpunit-mock-objects": ">2.3 <7.0"
316
+ },
317
+ "require-dev": {
318
+ "phpunit/phpunit": ">=4.8 <8.0"
319
+ },
320
+ "type": "library",
321
+ "autoload": {
322
+ "psr-4": {
323
+ "Codeception\\": "src/"
324
+ }
325
+ },
326
+ "notification-url": "https://packagist.org/downloads/",
327
+ "license": [
328
+ "MIT"
329
+ ],
330
+ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
331
+ "time": "2018-02-18T13:56:56+00:00"
332
+ },
333
+ {
334
+ "name": "composer/ca-bundle",
335
+ "version": "1.1.1",
336
+ "source": {
337
+ "type": "git",
338
+ "url": "https://github.com/composer/ca-bundle.git",
339
+ "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169"
340
+ },
341
+ "dist": {
342
+ "type": "zip",
343
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169",
344
+ "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169",
345
+ "shasum": ""
346
+ },
347
+ "require": {
348
+ "ext-openssl": "*",
349
+ "ext-pcre": "*",
350
+ "php": "^5.3.2 || ^7.0"
351
+ },
352
+ "require-dev": {
353
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
354
+ "psr/log": "^1.0",
355
+ "symfony/process": "^2.5 || ^3.0 || ^4.0"
356
+ },
357
+ "type": "library",
358
+ "extra": {
359
+ "branch-alias": {
360
+ "dev-master": "1.x-dev"
361
+ }
362
+ },
363
+ "autoload": {
364
+ "psr-4": {
365
+ "Composer\\CaBundle\\": "src"
366
+ }
367
+ },
368
+ "notification-url": "https://packagist.org/downloads/",
369
+ "license": [
370
+ "MIT"
371
+ ],
372
+ "authors": [
373
+ {
374
+ "name": "Jordi Boggiano",
375
+ "email": "j.boggiano@seld.be",
376
+ "homepage": "http://seld.be"
377
+ }
378
+ ],
379
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
380
+ "keywords": [
381
+ "cabundle",
382
+ "cacert",
383
+ "certificate",
384
+ "ssl",
385
+ "tls"
386
+ ],
387
+ "time": "2018-03-29T19:57:20+00:00"
388
+ },
389
+ {
390
+ "name": "composer/composer",
391
+ "version": "1.6.5",
392
+ "source": {
393
+ "type": "git",
394
+ "url": "https://github.com/composer/composer.git",
395
+ "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9"
396
+ },
397
+ "dist": {
398
+ "type": "zip",
399
+ "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9",
400
+ "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9",
401
+ "shasum": ""
402
+ },
403
+ "require": {
404
+ "composer/ca-bundle": "^1.0",
405
+ "composer/semver": "^1.0",
406
+ "composer/spdx-licenses": "^1.2",
407
+ "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
408
+ "php": "^5.3.2 || ^7.0",
409
+ "psr/log": "^1.0",
410
+ "seld/cli-prompt": "^1.0",
411
+ "seld/jsonlint": "^1.4",
412
+ "seld/phar-utils": "^1.0",
413
+ "symfony/console": "^2.7 || ^3.0 || ^4.0",
414
+ "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
415
+ "symfony/finder": "^2.7 || ^3.0 || ^4.0",
416
+ "symfony/process": "^2.7 || ^3.0 || ^4.0"
417
+ },
418
+ "conflict": {
419
+ "symfony/console": "2.8.38"
420
+ },
421
+ "require-dev": {
422
+ "phpunit/phpunit": "^4.8.35 || ^5.7",
423
+ "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
424
+ },
425
+ "suggest": {
426
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
427
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
428
+ "ext-zlib": "Allow gzip compression of HTTP requests"
429
+ },
430
+ "bin": [
431
+ "bin/composer"
432
+ ],
433
+ "type": "library",
434
+ "extra": {
435
+ "branch-alias": {
436
+ "dev-master": "1.6-dev"
437
+ }
438
+ },
439
+ "autoload": {
440
+ "psr-4": {
441
+ "Composer\\": "src/Composer"
442
+ }
443
+ },
444
+ "notification-url": "https://packagist.org/downloads/",
445
+ "license": [
446
+ "MIT"
447
+ ],
448
+ "authors": [
449
+ {
450
+ "name": "Nils Adermann",
451
+ "email": "naderman@naderman.de",
452
+ "homepage": "http://www.naderman.de"
453
+ },
454
+ {
455
+ "name": "Jordi Boggiano",
456
+ "email": "j.boggiano@seld.be",
457
+ "homepage": "http://seld.be"
458
+ }
459
+ ],
460
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
461
+ "homepage": "https://getcomposer.org/",
462
+ "keywords": [
463
+ "autoload",
464
+ "dependency",
465
+ "package"
466
+ ],
467
+ "time": "2018-05-04T09:44:59+00:00"
468
+ },
469
+ {
470
+ "name": "composer/semver",
471
+ "version": "1.4.2",
472
+ "source": {
473
+ "type": "git",
474
+ "url": "https://github.com/composer/semver.git",
475
+ "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
476
+ },
477
+ "dist": {
478
+ "type": "zip",
479
+ "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
480
+ "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
481
+ "shasum": ""
482
+ },
483
+ "require": {
484
+ "php": "^5.3.2 || ^7.0"
485
+ },
486
+ "require-dev": {
487
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
488
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
489
+ },
490
+ "type": "library",
491
+ "extra": {
492
+ "branch-alias": {
493
+ "dev-master": "1.x-dev"
494
+ }
495
+ },
496
+ "autoload": {
497
+ "psr-4": {
498
+ "Composer\\Semver\\": "src"
499
+ }
500
+ },
501
+ "notification-url": "https://packagist.org/downloads/",
502
+ "license": [
503
+ "MIT"
504
+ ],
505
+ "authors": [
506
+ {
507
+ "name": "Nils Adermann",
508
+ "email": "naderman@naderman.de",
509
+ "homepage": "http://www.naderman.de"
510
+ },
511
+ {
512
+ "name": "Jordi Boggiano",
513
+ "email": "j.boggiano@seld.be",
514
+ "homepage": "http://seld.be"
515
+ },
516
+ {
517
+ "name": "Rob Bast",
518
+ "email": "rob.bast@gmail.com",
519
+ "homepage": "http://robbast.nl"
520
+ }
521
+ ],
522
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
523
+ "keywords": [
524
+ "semantic",
525
+ "semver",
526
+ "validation",
527
+ "versioning"
528
+ ],
529
+ "time": "2016-08-30T16:08:34+00:00"
530
+ },
531
+ {
532
+ "name": "composer/spdx-licenses",
533
+ "version": "1.4.0",
534
+ "source": {
535
+ "type": "git",
536
+ "url": "https://github.com/composer/spdx-licenses.git",
537
+ "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b"
538
+ },
539
+ "dist": {
540
+ "type": "zip",
541
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/cb17687e9f936acd7e7245ad3890f953770dec1b",
542
+ "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b",
543
+ "shasum": ""
544
+ },
545
+ "require": {
546
+ "php": "^5.3.2 || ^7.0"
547
+ },
548
+ "require-dev": {
549
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
550
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
551
+ },
552
+ "type": "library",
553
+ "extra": {
554
+ "branch-alias": {
555
+ "dev-master": "1.x-dev"
556
+ }
557
+ },
558
+ "autoload": {
559
+ "psr-4": {
560
+ "Composer\\Spdx\\": "src"
561
+ }
562
+ },
563
+ "notification-url": "https://packagist.org/downloads/",
564
+ "license": [
565
+ "MIT"
566
+ ],
567
+ "authors": [
568
+ {
569
+ "name": "Nils Adermann",
570
+ "email": "naderman@naderman.de",
571
+ "homepage": "http://www.naderman.de"
572
+ },
573
+ {
574
+ "name": "Jordi Boggiano",
575
+ "email": "j.boggiano@seld.be",
576
+ "homepage": "http://seld.be"
577
+ },
578
+ {
579
+ "name": "Rob Bast",
580
+ "email": "rob.bast@gmail.com",
581
+ "homepage": "http://robbast.nl"
582
+ }
583
+ ],
584
+ "description": "SPDX licenses list and validation library.",
585
+ "keywords": [
586
+ "license",
587
+ "spdx",
588
+ "validator"
589
+ ],
590
+ "time": "2018-04-30T10:33:04+00:00"
591
+ },
592
+ {
593
+ "name": "dg/mysql-dump",
594
+ "version": "v1.4.0",
595
+ "source": {
596
+ "type": "git",
597
+ "url": "https://github.com/dg/MySQL-dump.git",
598
+ "reference": "8970328c9a8665e65f3855c849f5d4de94075f13"
599
+ },
600
+ "dist": {
601
+ "type": "zip",
602
+ "url": "https://api.github.com/repos/dg/MySQL-dump/zipball/8970328c9a8665e65f3855c849f5d4de94075f13",
603
+ "reference": "8970328c9a8665e65f3855c849f5d4de94075f13",
604
+ "shasum": ""
605
+ },
606
+ "type": "library",
607
+ "autoload": {
608
+ "classmap": [
609
+ "src/"
610
+ ]
611
+ },
612
+ "notification-url": "https://packagist.org/downloads/",
613
+ "license": [
614
+ "BSD-3-Clause"
615
+ ],
616
+ "authors": [
617
+ {
618
+ "name": "David Grudl",
619
+ "homepage": "http://davidgrudl.com"
620
+ }
621
+ ],
622
+ "description": "MySQL database dump.",
623
+ "homepage": "https://github.com/dg/MySQL-dump",
624
+ "keywords": [
625
+ "mysql"
626
+ ],
627
+ "time": "2017-05-24T12:44:51+00:00"
628
+ },
629
+ {
630
+ "name": "doctrine/inflector",
631
+ "version": "v1.3.0",
632
+ "source": {
633
+ "type": "git",
634
+ "url": "https://github.com/doctrine/inflector.git",
635
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
636
+ },
637
+ "dist": {
638
+ "type": "zip",
639
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
640
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
641
+ "shasum": ""
642
+ },
643
+ "require": {
644
+ "php": "^7.1"
645
+ },
646
+ "require-dev": {
647
+ "phpunit/phpunit": "^6.2"
648
+ },
649
+ "type": "library",
650
+ "extra": {
651
+ "branch-alias": {
652
+ "dev-master": "1.3.x-dev"
653
+ }
654
+ },
655
+ "autoload": {
656
+ "psr-4": {
657
+ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
658
+ }
659
+ },
660
+ "notification-url": "https://packagist.org/downloads/",
661
+ "license": [
662
+ "MIT"
663
+ ],
664
+ "authors": [
665
+ {
666
+ "name": "Roman Borschel",
667
+ "email": "roman@code-factory.org"
668
+ },
669
+ {
670
+ "name": "Benjamin Eberlei",
671
+ "email": "kontakt@beberlei.de"
672
+ },
673
+ {
674
+ "name": "Guilherme Blanco",
675
+ "email": "guilhermeblanco@gmail.com"
676
+ },
677
+ {
678
+ "name": "Jonathan Wage",
679
+ "email": "jonwage@gmail.com"
680
+ },
681
+ {
682
+ "name": "Johannes Schmitt",
683
+ "email": "schmittjoh@gmail.com"
684
+ }
685
+ ],
686
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
687
+ "homepage": "http://www.doctrine-project.org",
688
+ "keywords": [
689
+ "inflection",
690
+ "pluralize",
691
+ "singularize",
692
+ "string"
693
+ ],
694
+ "time": "2018-01-09T20:05:19+00:00"
695
+ },
696
+ {
697
+ "name": "doctrine/instantiator",
698
+ "version": "1.1.0",
699
+ "source": {
700
+ "type": "git",
701
+ "url": "https://github.com/doctrine/instantiator.git",
702
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
703
+ },
704
+ "dist": {
705
+ "type": "zip",
706
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
707
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
708
+ "shasum": ""
709
+ },
710
+ "require": {
711
+ "php": "^7.1"
712
+ },
713
+ "require-dev": {
714
+ "athletic/athletic": "~0.1.8",
715
+ "ext-pdo": "*",
716
+ "ext-phar": "*",
717
+ "phpunit/phpunit": "^6.2.3",
718
+ "squizlabs/php_codesniffer": "^3.0.2"
719
+ },
720
+ "type": "library",
721
+ "extra": {
722
+ "branch-alias": {
723
+ "dev-master": "1.2.x-dev"
724
+ }
725
+ },
726
+ "autoload": {
727
+ "psr-4": {
728
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
729
+ }
730
+ },
731
+ "notification-url": "https://packagist.org/downloads/",
732
+ "license": [
733
+ "MIT"
734
+ ],
735
+ "authors": [
736
+ {
737
+ "name": "Marco Pivetta",
738
+ "email": "ocramius@gmail.com",
739
+ "homepage": "http://ocramius.github.com/"
740
+ }
741
+ ],
742
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
743
+ "homepage": "https://github.com/doctrine/instantiator",
744
+ "keywords": [
745
+ "constructor",
746
+ "instantiate"
747
+ ],
748
+ "time": "2017-07-22T11:58:36+00:00"
749
+ },
750
+ {
751
+ "name": "electrolinux/phpquery",
752
+ "version": "0.9.6",
753
+ "source": {
754
+ "type": "git",
755
+ "url": "https://github.com/electrolinux/phpquery.git",
756
+ "reference": "6cb8afcfe8cd4ce45f2f8c27d561383037c27a3a"
757
+ },
758
+ "dist": {
759
+ "type": "zip",
760
+ "url": "https://api.github.com/repos/electrolinux/phpquery/zipball/6cb8afcfe8cd4ce45f2f8c27d561383037c27a3a",
761
+ "reference": "6cb8afcfe8cd4ce45f2f8c27d561383037c27a3a",
762
+ "shasum": ""
763
+ },
764
+ "type": "library",
765
+ "autoload": {
766
+ "classmap": [
767
+ "phpQuery/"
768
+ ]
769
+ },
770
+ "notification-url": "https://packagist.org/downloads/",
771
+ "license": [
772
+ "MIT"
773
+ ],
774
+ "authors": [
775
+ {
776
+ "name": "Tobiasz Cudnik",
777
+ "email": "tobiasz.cudnik@gmail.com",
778
+ "homepage": "https://github.com/TobiaszCudnik",
779
+ "role": "Developer"
780
+ },
781
+ {
782
+ "name": "didier Belot",
783
+ "role": "Packager"
784
+ }
785
+ ],
786
+ "description": "phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library",
787
+ "homepage": "http://code.google.com/p/phpquery/",
788
+ "time": "2013-03-21T12:39:33+00:00"
789
+ },
790
+ {
791
+ "name": "facebook/webdriver",
792
+ "version": "1.5.0",
793
+ "source": {
794
+ "type": "git",
795
+ "url": "https://github.com/facebook/php-webdriver.git",
796
+ "reference": "86b5ca2f67173c9d34340845dd690149c886a605"
797
+ },
798
+ "dist": {
799
+ "type": "zip",
800
+ "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/86b5ca2f67173c9d34340845dd690149c886a605",
801
+ "reference": "86b5ca2f67173c9d34340845dd690149c886a605",
802
+ "shasum": ""
803
+ },
804
+ "require": {
805
+ "ext-curl": "*",
806
+ "ext-zip": "*",
807
+ "php": "^5.6 || ~7.0",
808
+ "symfony/process": "^2.8 || ^3.1 || ^4.0"
809
+ },
810
+ "require-dev": {
811
+ "friendsofphp/php-cs-fixer": "^2.0",
812
+ "guzzle/guzzle": "^3.4.1",
813
+ "php-coveralls/php-coveralls": "^1.0.2",
814
+ "php-mock/php-mock-phpunit": "^1.1",
815
+ "phpunit/phpunit": "^5.7",
816
+ "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0",
817
+ "squizlabs/php_codesniffer": "^2.6",
818
+ "symfony/var-dumper": "^3.3 || ^4.0"
819
+ },
820
+ "type": "library",
821
+ "extra": {
822
+ "branch-alias": {
823
+ "dev-community": "1.5-dev"
824
+ }
825
+ },
826
+ "autoload": {
827
+ "psr-4": {
828
+ "Facebook\\WebDriver\\": "lib/"
829
+ }
830
+ },
831
+ "notification-url": "https://packagist.org/downloads/",
832
+ "license": [
833
+ "Apache-2.0"
834
+ ],
835
+ "description": "A PHP client for Selenium WebDriver",
836
+ "homepage": "https://github.com/facebook/php-webdriver",
837
+ "keywords": [
838
+ "facebook",
839
+ "php",
840
+ "selenium",
841
+ "webdriver"
842
+ ],
843
+ "time": "2017-11-15T11:08:09+00:00"
844
+ },
845
+ {
846
+ "name": "gumlet/php-image-resize",
847
+ "version": "1.8.0",
848
+ "source": {
849
+ "type": "git",
850
+ "url": "https://github.com/gumlet/php-image-resize.git",
851
+ "reference": "203210e94849c809bdb97fff4f803a7932e2bc62"
852
+ },
853
+ "dist": {
854
+ "type": "zip",
855
+ "url": "https://api.github.com/repos/gumlet/php-image-resize/zipball/203210e94849c809bdb97fff4f803a7932e2bc62",
856
+ "reference": "203210e94849c809bdb97fff4f803a7932e2bc62",
857
+ "shasum": ""
858
+ },
859
+ "require": {
860
+ "ext-fileinfo": "*",
861
+ "ext-gd": "*",
862
+ "php": ">=5.4.0"
863
+ },
864
+ "require-dev": {
865
+ "ext-exif": "*",
866
+ "ext-gd": "*",
867
+ "php-coveralls/php-coveralls": "dev-master || ^1.0",
868
+ "phpunit/phpunit": "^4.8"
869
+ },
870
+ "suggest": {
871
+ "ext-exif": "Auto-rotate jpeg files"
872
+ },
873
+ "type": "library",
874
+ "autoload": {
875
+ "psr-4": {
876
+ "Gumlet\\": "lib/"
877
+ }
878
+ },
879
+ "notification-url": "https://packagist.org/downloads/",
880
+ "license": [
881
+ "MIT"
882
+ ],
883
+ "authors": [
884
+ {
885
+ "name": "Aditya Patadia",
886
+ "homepage": "http://aditya.patadia.org/"
887
+ }
888
+ ],
889
+ "description": "PHP class to re-size and scale images",
890
+ "homepage": "https://github.com/gumlet/php-image-resize",
891
+ "keywords": [
892
+ "image",
893
+ "php",
894
+ "resize",
895
+ "scale"
896
+ ],
897
+ "time": "2018-02-10T05:20:52+00:00"
898
+ },
899
+ {
900
+ "name": "guzzlehttp/guzzle",
901
+ "version": "6.3.3",
902
+ "source": {
903
+ "type": "git",
904
+ "url": "https://github.com/guzzle/guzzle.git",
905
+ "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
906
+ },
907
+ "dist": {
908
+ "type": "zip",
909
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
910
+ "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
911
+ "shasum": ""
912
+ },
913
+ "require": {
914
+ "guzzlehttp/promises": "^1.0",
915
+ "guzzlehttp/psr7": "^1.4",
916
+ "php": ">=5.5"
917
+ },
918
+ "require-dev": {
919
+ "ext-curl": "*",
920
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
921
+ "psr/log": "^1.0"
922
+ },
923
+ "suggest": {
924
+ "psr/log": "Required for using the Log middleware"
925
+ },
926
+ "type": "library",
927
+ "extra": {
928
+ "branch-alias": {
929
+ "dev-master": "6.3-dev"
930
+ }
931
+ },
932
+ "autoload": {
933
+ "files": [
934
+ "src/functions_include.php"
935
+ ],
936
+ "psr-4": {
937
+ "GuzzleHttp\\": "src/"
938
+ }
939
+ },
940
+ "notification-url": "https://packagist.org/downloads/",
941
+ "license": [
942
+ "MIT"
943
+ ],
944
+ "authors": [
945
+ {
946
+ "name": "Michael Dowling",
947
+ "email": "mtdowling@gmail.com",
948
+ "homepage": "https://github.com/mtdowling"
949
+ }
950
+ ],
951
+ "description": "Guzzle is a PHP HTTP client library",
952
+ "homepage": "http://guzzlephp.org/",
953
+ "keywords": [
954
+ "client",
955
+ "curl",
956
+ "framework",
957
+ "http",
958
+ "http client",
959
+ "rest",
960
+ "web service"
961
+ ],
962
+ "time": "2018-04-22T15:46:56+00:00"
963
+ },
964
+ {
965
+ "name": "guzzlehttp/promises",
966
+ "version": "v1.3.1",
967
+ "source": {
968
+ "type": "git",
969
+ "url": "https://github.com/guzzle/promises.git",
970
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
971
+ },
972
+ "dist": {
973
+ "type": "zip",
974
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
975
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
976
+ "shasum": ""
977
+ },
978
+ "require": {
979
+ "php": ">=5.5.0"
980
+ },
981
+ "require-dev": {
982
+ "phpunit/phpunit": "^4.0"
983
+ },
984
+ "type": "library",
985
+ "extra": {
986
+ "branch-alias": {
987
+ "dev-master": "1.4-dev"
988
+ }
989
+ },
990
+ "autoload": {
991
+ "psr-4": {
992
+ "GuzzleHttp\\Promise\\": "src/"
993
+ },
994
+ "files": [
995
+ "src/functions_include.php"
996
+ ]
997
+ },
998
+ "notification-url": "https://packagist.org/downloads/",
999
+ "license": [
1000
+ "MIT"
1001
+ ],
1002
+ "authors": [
1003
+ {
1004
+ "name": "Michael Dowling",
1005
+ "email": "mtdowling@gmail.com",
1006
+ "homepage": "https://github.com/mtdowling"
1007
+ }
1008
+ ],
1009
+ "description": "Guzzle promises library",
1010
+ "keywords": [
1011
+ "promise"
1012
+ ],
1013
+ "time": "2016-12-20T10:07:11+00:00"
1014
+ },
1015
+ {
1016
+ "name": "guzzlehttp/psr7",
1017
+ "version": "1.4.2",
1018
+ "source": {
1019
+ "type": "git",
1020
+ "url": "https://github.com/guzzle/psr7.git",
1021
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
1022
+ },
1023
+ "dist": {
1024
+ "type": "zip",
1025
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
1026
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
1027
+ "shasum": ""
1028
+ },
1029
+ "require": {
1030
+ "php": ">=5.4.0",
1031
+ "psr/http-message": "~1.0"
1032
+ },
1033
+ "provide": {
1034
+ "psr/http-message-implementation": "1.0"
1035
+ },
1036
+ "require-dev": {
1037
+ "phpunit/phpunit": "~4.0"
1038
+ },
1039
+ "type": "library",
1040
+ "extra": {
1041
+ "branch-alias": {
1042
+ "dev-master": "1.4-dev"
1043
+ }
1044
+ },
1045
+ "autoload": {
1046
+ "psr-4": {
1047
+ "GuzzleHttp\\Psr7\\": "src/"
1048
+ },
1049
+ "files": [
1050
+ "src/functions_include.php"
1051
+ ]
1052
+ },
1053
+ "notification-url": "https://packagist.org/downloads/",
1054
+ "license": [
1055
+ "MIT"
1056
+ ],
1057
+ "authors": [
1058
+ {
1059
+ "name": "Michael Dowling",
1060
+ "email": "mtdowling@gmail.com",
1061
+ "homepage": "https://github.com/mtdowling"
1062
+ },
1063
+ {
1064
+ "name": "Tobias Schultze",
1065
+ "homepage": "https://github.com/Tobion"
1066
+ }
1067
+ ],
1068
+ "description": "PSR-7 message implementation that also provides common utility methods",
1069
+ "keywords": [
1070
+ "http",
1071
+ "message",
1072
+ "request",
1073
+ "response",
1074
+ "stream",
1075
+ "uri",
1076
+ "url"
1077
+ ],
1078
+ "time": "2017-03-20T17:10:46+00:00"
1079
+ },
1080
+ {
1081
+ "name": "hautelook/phpass",
1082
+ "version": "0.3.5",
1083
+ "source": {
1084
+ "type": "git",
1085
+ "url": "https://github.com/hautelook/phpass.git",
1086
+ "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd"
1087
+ },
1088
+ "dist": {
1089
+ "type": "zip",
1090
+ "url": "https://api.github.com/repos/hautelook/phpass/zipball/b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd",
1091
+ "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd",
1092
+ "shasum": ""
1093
+ },
1094
+ "require": {
1095
+ "php": ">=5.3.3"
1096
+ },
1097
+ "type": "library",
1098
+ "autoload": {
1099
+ "psr-0": {
1100
+ "Hautelook": "src/"
1101
+ }
1102
+ },
1103
+ "notification-url": "https://packagist.org/downloads/",
1104
+ "license": [
1105
+ "Public Domain"
1106
+ ],
1107
+ "authors": [
1108
+ {
1109
+ "name": "Solar Designer",
1110
+ "email": "solar@openwall.com",
1111
+ "homepage": "http://openwall.com/phpass/"
1112
+ }
1113
+ ],
1114
+ "description": "Portable PHP password hashing framework",
1115
+ "homepage": "http://github.com/hautelook/phpass/",
1116
+ "keywords": [
1117
+ "blowfish",
1118
+ "crypt",
1119
+ "password",
1120
+ "security"
1121
+ ],
1122
+ "time": "2012-08-31T00:00:00+00:00"
1123
+ },
1124
+ {
1125
+ "name": "illuminate/contracts",
1126
+ "version": "v5.6.21",
1127
+ "source": {
1128
+ "type": "git",
1129
+ "url": "https://github.com/illuminate/contracts.git",
1130
+ "reference": "6a11fbccbc7da16a85fcd1d4b08e51b5658de0d4"
1131
+ },
1132
+ "dist": {
1133
+ "type": "zip",
1134
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/6a11fbccbc7da16a85fcd1d4b08e51b5658de0d4",
1135
+ "reference": "6a11fbccbc7da16a85fcd1d4b08e51b5658de0d4",
1136
+ "shasum": ""
1137
+ },
1138
+ "require": {
1139
+ "php": "^7.1.3",
1140
+ "psr/container": "~1.0",
1141
+ "psr/simple-cache": "~1.0"
1142
+ },
1143
+ "type": "library",
1144
+ "extra": {
1145
+ "branch-alias": {
1146
+ "dev-master": "5.6-dev"
1147
+ }
1148
+ },
1149
+ "autoload": {
1150
+ "psr-4": {
1151
+ "Illuminate\\Contracts\\": ""
1152
+ }
1153
+ },
1154
+ "notification-url": "https://packagist.org/downloads/",
1155
+ "license": [
1156
+ "MIT"
1157
+ ],
1158
+ "authors": [
1159
+ {
1160
+ "name": "Taylor Otwell",
1161
+ "email": "taylor@laravel.com"
1162
+ }
1163
+ ],
1164
+ "description": "The Illuminate Contracts package.",
1165
+ "homepage": "https://laravel.com",
1166
+ "time": "2018-05-08T13:22:33+00:00"
1167
+ },
1168
+ {
1169
+ "name": "illuminate/support",
1170
+ "version": "v5.6.21",
1171
+ "source": {
1172
+ "type": "git",
1173
+ "url": "https://github.com/illuminate/support.git",
1174
+ "reference": "6e84d4140310246ace38fdb0909da5b2fb22eadf"
1175
+ },
1176
+ "dist": {
1177
+ "type": "zip",
1178
+ "url": "https://api.github.com/repos/illuminate/support/zipball/6e84d4140310246ace38fdb0909da5b2fb22eadf",
1179
+ "reference": "6e84d4140310246ace38fdb0909da5b2fb22eadf",
1180
+ "shasum": ""
1181
+ },
1182
+ "require": {
1183
+ "doctrine/inflector": "~1.1",
1184
+ "ext-mbstring": "*",
1185
+ "illuminate/contracts": "5.6.*",
1186
+ "nesbot/carbon": "^1.24.1",
1187
+ "php": "^7.1.3"
1188
+ },
1189
+ "conflict": {
1190
+ "tightenco/collect": "<5.5.33"
1191
+ },
1192
+ "suggest": {
1193
+ "illuminate/filesystem": "Required to use the composer class (5.6.*).",
1194
+ "symfony/process": "Required to use the composer class (~4.0).",
1195
+ "symfony/var-dumper": "Required to use the dd function (~4.0)."
1196
+ },
1197
+ "type": "library",
1198
+ "extra": {
1199
+ "branch-alias": {
1200
+ "dev-master": "5.6-dev"
1201
+ }
1202
+ },
1203
+ "autoload": {
1204
+ "psr-4": {
1205
+ "Illuminate\\Support\\": ""
1206
+ },
1207
+ "files": [
1208
+ "helpers.php"
1209
+ ]
1210
+ },
1211
+ "notification-url": "https://packagist.org/downloads/",
1212
+ "license": [
1213
+ "MIT"
1214
+ ],
1215
+ "authors": [
1216
+ {
1217
+ "name": "Taylor Otwell",
1218
+ "email": "taylor@laravel.com"
1219
+ }
1220
+ ],
1221
+ "description": "The Illuminate Support package.",
1222
+ "homepage": "https://laravel.com",
1223
+ "time": "2018-05-07T14:12:37+00:00"
1224
+ },
1225
+ {
1226
+ "name": "justinrainbow/json-schema",
1227
+ "version": "5.2.7",
1228
+ "source": {
1229
+ "type": "git",
1230
+ "url": "https://github.com/justinrainbow/json-schema.git",
1231
+ "reference": "8560d4314577199ba51bf2032f02cd1315587c23"
1232
+ },
1233
+ "dist": {
1234
+ "type": "zip",
1235
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23",
1236
+ "reference": "8560d4314577199ba51bf2032f02cd1315587c23",
1237
+ "shasum": ""
1238
+ },
1239
+ "require": {
1240
+ "php": ">=5.3.3"
1241
+ },
1242
+ "require-dev": {
1243
+ "friendsofphp/php-cs-fixer": "^2.1",
1244
+ "json-schema/json-schema-test-suite": "1.2.0",
1245
+ "phpunit/phpunit": "^4.8.35"
1246
+ },
1247
+ "bin": [
1248
+ "bin/validate-json"
1249
+ ],
1250
+ "type": "library",
1251
+ "extra": {
1252
+ "branch-alias": {
1253
+ "dev-master": "5.0.x-dev"
1254
+ }
1255
+ },
1256
+ "autoload": {
1257
+ "psr-4": {
1258
+ "JsonSchema\\": "src/JsonSchema/"
1259
+ }
1260
+ },
1261
+ "notification-url": "https://packagist.org/downloads/",
1262
+ "license": [
1263
+ "MIT"
1264
+ ],
1265
+ "authors": [
1266
+ {
1267
+ "name": "Bruno Prieto Reis",
1268
+ "email": "bruno.p.reis@gmail.com"
1269
+ },
1270
+ {
1271
+ "name": "Justin Rainbow",
1272
+ "email": "justin.rainbow@gmail.com"
1273
+ },
1274
+ {
1275
+ "name": "Igor Wiedler",
1276
+ "email": "igor@wiedler.ch"
1277
+ },
1278
+ {
1279
+ "name": "Robert Schönthal",
1280
+ "email": "seroscho@googlemail.com"
1281
+ }
1282
+ ],
1283
+ "description": "A library to validate a json schema.",
1284
+ "homepage": "https://github.com/justinrainbow/json-schema",
1285
+ "keywords": [
1286
+ "json",
1287
+ "schema"
1288
+ ],
1289
+ "time": "2018-02-14T22:26:30+00:00"
1290
+ },
1291
+ {
1292
+ "name": "lucatume/codeception-setup-local",
1293
+ "version": "1.0.3",
1294
+ "source": {
1295
+ "type": "git",
1296
+ "url": "https://github.com/lucatume/codeception-setup-local.git",
1297
+ "reference": "0020cb2d1756d7262782c5cfd966dd9a93188c79"
1298
+ },
1299
+ "dist": {
1300
+ "type": "zip",
1301
+ "url": "https://api.github.com/repos/lucatume/codeception-setup-local/zipball/0020cb2d1756d7262782c5cfd966dd9a93188c79",
1302
+ "reference": "0020cb2d1756d7262782c5cfd966dd9a93188c79",
1303
+ "shasum": ""
1304
+ },
1305
+ "require": {
1306
+ "codeception/codeception": "^2.1",
1307
+ "lucatume/wp-browser-commons": "^1.0"
1308
+ },
1309
+ "require-dev": {
1310
+ "codeception/codeception": "^2.1",
1311
+ "mikey179/vfsstream": "^1.6"
1312
+ },
1313
+ "type": "library",
1314
+ "autoload": {
1315
+ "psr-4": {
1316
+ "tad\\Codeception\\Command\\": "src/Command",
1317
+ "tad\\Codeception\\Command\\Helpers\\": "src/Helpers"
1318
+ }
1319
+ },
1320
+ "notification-url": "https://packagist.org/downloads/",
1321
+ "license": [
1322
+ "MIT"
1323
+ ],
1324
+ "authors": [
1325
+ {
1326
+ "name": "Luca Tumedei",
1327
+ "email": "luca@theaveragedev.com"
1328
+ }
1329
+ ],
1330
+ "description": "Flexible local setup for Codeception",
1331
+ "time": "2017-06-01T09:49:40+00:00"
1332
+ },
1333
+ {
1334
+ "name": "lucatume/wp-browser",
1335
+ "version": "2.1.4",
1336
+ "source": {
1337
+ "type": "git",
1338
+ "url": "https://github.com/lucatume/wp-browser.git",
1339
+ "reference": "d08225e45ddcb2936bf1c4aa66243409099a519e"
1340
+ },
1341
+ "dist": {
1342
+ "type": "zip",
1343
+ "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/d08225e45ddcb2936bf1c4aa66243409099a519e",
1344
+ "reference": "d08225e45ddcb2936bf1c4aa66243409099a519e",
1345
+ "shasum": ""
1346
+ },
1347
+ "require": {
1348
+ "antecedent/patchwork": "^2.0",
1349
+ "codeception/codeception": "^2.3",
1350
+ "gumlet/php-image-resize": "^1.6",
1351
+ "lucatume/codeception-setup-local": "~1.0",
1352
+ "lucatume/wp-browser-commons": "^1.2.5",
1353
+ "lucatume/wp-snaphot-assertions": "~1.0",
1354
+ "php": "^7.0",
1355
+ "symfony/process": ">=2.7 <5.0",
1356
+ "vlucas/phpdotenv": "^2.4",
1357
+ "wp-cli/wp-cli": "^1.1"
1358
+ },
1359
+ "require-dev": {
1360
+ "mikey179/vfsstream": "^1.6",
1361
+ "ofbeaton/console-tester": "^1.1",
1362
+ "site5/phantoman": "^1.1"
1363
+ },
1364
+ "bin": [
1365
+ "wpcept"
1366
+ ],
1367
+ "type": "library",
1368
+ "autoload": {
1369
+ "psr-4": {
1370
+ "Codeception\\": "src\\Codeception",
1371
+ "tad\\": "src\\tad"
1372
+ },
1373
+ "files": [
1374
+ "src/tad/WPBrowser/functions.php"
1375
+ ]
1376
+ },
1377
+ "notification-url": "https://packagist.org/downloads/",
1378
+ "license": [
1379
+ "MIT"
1380
+ ],
1381
+ "authors": [
1382
+ {
1383
+ "name": "theAverageDev (Luca Tumedei)",
1384
+ "email": "luca@theaveragedev.com",
1385
+ "homepage": "http://theaveragedev.com",
1386
+ "role": "Developer"
1387
+ }
1388
+ ],
1389
+ "description": "WordPress extension of the PhpBrowser class.",
1390
+ "homepage": "http://github.com/lucatume/wp-browser",
1391
+ "keywords": [
1392
+ "codeception",
1393
+ "wordpress"
1394
+ ],
1395
+ "time": "2018-05-08T08:39:23+00:00"
1396
+ },
1397
+ {
1398
+ "name": "lucatume/wp-browser-commons",
1399
+ "version": "1.2.8.2",
1400
+ "source": {
1401
+ "type": "git",
1402
+ "url": "https://github.com/lucatume/wp-browser-commons.git",
1403
+ "reference": "bc979467dfa6945032c73ab39143aa5a331d298e"
1404
+ },
1405
+ "dist": {
1406
+ "type": "zip",
1407
+ "url": "https://api.github.com/repos/lucatume/wp-browser-commons/zipball/bc979467dfa6945032c73ab39143aa5a331d298e",
1408
+ "reference": "bc979467dfa6945032c73ab39143aa5a331d298e",
1409
+ "shasum": ""
1410
+ },
1411
+ "require": {
1412
+ "bacon/bacon-string-utils": "~1.0",
1413
+ "codeception/codeception": "~2.1",
1414
+ "dg/mysql-dump": "^1.3",
1415
+ "mikemclin/laravel-wp-password": "~2.0.0",
1416
+ "php": ">=5.4.0",
1417
+ "symfony/filesystem": "^2.7",
1418
+ "xamin/handlebars.php": "~0.10"
1419
+ },
1420
+ "require-dev": {
1421
+ "mikey179/vfsstream": "^1.6"
1422
+ },
1423
+ "type": "library",
1424
+ "autoload": {
1425
+ "psr-4": {
1426
+ "tad\\": "src\\tad"
1427
+ }
1428
+ },
1429
+ "notification-url": "https://packagist.org/downloads/",
1430
+ "license": [
1431
+ "GPL v2.0"
1432
+ ],
1433
+ "authors": [
1434
+ {
1435
+ "name": "Luca Tumedei",
1436
+ "email": "luca@theaveragedev.com"
1437
+ }
1438
+ ],
1439
+ "description": "Common libraries of the WP-Browser package.",
1440
+ "time": "2017-01-25T18:09:43+00:00"
1441
+ },
1442
+ {
1443
+ "name": "lucatume/wp-snaphot-assertions",
1444
+ "version": "1.0.0",
1445
+ "source": {
1446
+ "type": "git",
1447
+ "url": "https://github.com/lucatume/wp-snapshot-assertions.git",
1448
+ "reference": "b44c9716cf497f969f04dd0663bbe85917443512"
1449
+ },
1450
+ "dist": {
1451
+ "type": "zip",
1452
+ "url": "https://api.github.com/repos/lucatume/wp-snapshot-assertions/zipball/b44c9716cf497f969f04dd0663bbe85917443512",
1453
+ "reference": "b44c9716cf497f969f04dd0663bbe85917443512",
1454
+ "shasum": ""
1455
+ },
1456
+ "require": {
1457
+ "electrolinux/phpquery": "^0.9.6",
1458
+ "php": ">=7.0",
1459
+ "spatie/phpunit-snapshot-assertions": "^1.2"
1460
+ },
1461
+ "type": "library",
1462
+ "autoload": {
1463
+ "psr-4": {
1464
+ "tad\\WP\\Snapshots\\": "src/"
1465
+ }
1466
+ },
1467
+ "notification-url": "https://packagist.org/downloads/",
1468
+ "license": [
1469
+ "GPL-2.0"
1470
+ ],
1471
+ "authors": [
1472
+ {
1473
+ "name": "theAverageDev (Luca Tumedei)",
1474
+ "email": "luca@theaveragedev.com"
1475
+ }
1476
+ ],
1477
+ "description": "A set of utilities to support snapshot testing of WordPress code.",
1478
+ "homepage": "https://github.com/lucatume/wp-snaphot-assertions",
1479
+ "keywords": [
1480
+ "snapshot",
1481
+ "testing",
1482
+ "wordpress"
1483
+ ],
1484
+ "time": "2018-03-10T13:04:35+00:00"
1485
+ },
1486
+ {
1487
+ "name": "mikemclin/laravel-wp-password",
1488
+ "version": "2.0.1",
1489
+ "source": {
1490
+ "type": "git",
1491
+ "url": "https://github.com/mikemclin/laravel-wp-password.git",
1492
+ "reference": "84ff1113ff6866cdb0350c176dc3c843383e4819"
1493
+ },
1494
+ "dist": {
1495
+ "type": "zip",
1496
+ "url": "https://api.github.com/repos/mikemclin/laravel-wp-password/zipball/84ff1113ff6866cdb0350c176dc3c843383e4819",
1497
+ "reference": "84ff1113ff6866cdb0350c176dc3c843383e4819",
1498
+ "shasum": ""
1499
+ },
1500
+ "require": {
1501
+ "hautelook/phpass": "0.3.*",
1502
+ "illuminate/support": ">=4.0.0",
1503
+ "php": ">=5.3.0"
1504
+ },
1505
+ "replace": {
1506
+ "mikemclin/laravel-wp-password": "self.version"
1507
+ },
1508
+ "require-dev": {
1509
+ "mockery/mockery": "~0.9",
1510
+ "phpunit/phpunit": "~4.0",
1511
+ "satooshi/php-coveralls": "dev-master"
1512
+ },
1513
+ "type": "laravel-package",
1514
+ "extra": {
1515
+ "laravel": {
1516
+ "providers": [
1517
+ "MikeMcLin\\WpPassword\\WpPasswordProvider"
1518
+ ],
1519
+ "aliases": {
1520
+ "WpPassword": "MikeMcLin\\WpPassword\\Facades\\WpPassword"
1521
+ }
1522
+ }
1523
+ },
1524
+ "autoload": {
1525
+ "psr-4": {
1526
+ "MikeMcLin\\WpPassword\\": "src/"
1527
+ }
1528
+ },
1529
+ "notification-url": "https://packagist.org/downloads/",
1530
+ "license": [
1531
+ "MIT"
1532
+ ],
1533
+ "authors": [
1534
+ {
1535
+ "name": "Mike McLin",
1536
+ "email": "mike@mikemclin.com",
1537
+ "homepage": "http://mikemclin.net"
1538
+ }
1539
+ ],
1540
+ "description": "Laravel package that checks and creates WordPress password hashes",
1541
+ "homepage": "https://github.com/mikemclin/laravel-wp-password",
1542
+ "keywords": [
1543
+ "hashing",
1544
+ "laravel",
1545
+ "password",
1546
+ "wordpress"
1547
+ ],
1548
+ "time": "2018-01-11T14:12:02+00:00"
1549
+ },
1550
+ {
1551
+ "name": "monolog/monolog",
1552
+ "version": "1.23.0",
1553
+ "source": {
1554
+ "type": "git",
1555
+ "url": "https://github.com/Seldaek/monolog.git",
1556
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
1557
+ },
1558
+ "dist": {
1559
+ "type": "zip",
1560
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
1561
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
1562
+ "shasum": ""
1563
+ },
1564
+ "require": {
1565
+ "php": ">=5.3.0",
1566
+ "psr/log": "~1.0"
1567
+ },
1568
+ "provide": {
1569
+ "psr/log-implementation": "1.0.0"
1570
+ },
1571
+ "require-dev": {
1572
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
1573
+ "doctrine/couchdb": "~1.0@dev",
1574
+ "graylog2/gelf-php": "~1.0",
1575
+ "jakub-onderka/php-parallel-lint": "0.9",
1576
+ "php-amqplib/php-amqplib": "~2.4",
1577
+ "php-console/php-console": "^3.1.3",
1578
+ "phpunit/phpunit": "~4.5",
1579
+ "phpunit/phpunit-mock-objects": "2.3.0",
1580
+ "ruflin/elastica": ">=0.90 <3.0",
1581
+ "sentry/sentry": "^0.13",
1582
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
1583
+ },
1584
+ "suggest": {
1585
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
1586
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
1587
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
1588
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
1589
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
1590
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
1591
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
1592
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
1593
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
1594
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
1595
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
1596
+ },
1597
+ "type": "library",
1598
+ "extra": {
1599
+ "branch-alias": {
1600
+ "dev-master": "2.0.x-dev"
1601
+ }
1602
+ },
1603
+ "autoload": {
1604
+ "psr-4": {
1605
+ "Monolog\\": "src/Monolog"
1606
+ }
1607
+ },
1608
+ "notification-url": "https://packagist.org/downloads/",
1609
+ "license": [
1610
+ "MIT"
1611
+ ],
1612
+ "authors": [
1613
+ {
1614
+ "name": "Jordi Boggiano",
1615
+ "email": "j.boggiano@seld.be",
1616
+ "homepage": "http://seld.be"
1617
+ }
1618
+ ],
1619
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
1620
+ "homepage": "http://github.com/Seldaek/monolog",
1621
+ "keywords": [
1622
+ "log",
1623
+ "logging",
1624
+ "psr-3"
1625
+ ],
1626
+ "time": "2017-06-19T01:22:40+00:00"
1627
+ },
1628
+ {
1629
+ "name": "mustache/mustache",
1630
+ "version": "v2.12.0",
1631
+ "source": {
1632
+ "type": "git",
1633
+ "url": "https://github.com/bobthecow/mustache.php.git",
1634
+ "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e"
1635
+ },
1636
+ "dist": {
1637
+ "type": "zip",
1638
+ "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e",
1639
+ "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e",
1640
+ "shasum": ""
1641
+ },
1642
+ "require": {
1643
+ "php": ">=5.2.4"
1644
+ },
1645
+ "require-dev": {
1646
+ "friendsofphp/php-cs-fixer": "~1.11",
1647
+ "phpunit/phpunit": "~3.7|~4.0|~5.0"
1648
+ },
1649
+ "type": "library",
1650
+ "autoload": {
1651
+ "psr-0": {
1652
+ "Mustache": "src/"
1653
+ }
1654
+ },
1655
+ "notification-url": "https://packagist.org/downloads/",
1656
+ "license": [
1657
+ "MIT"
1658
+ ],
1659
+ "authors": [
1660
+ {
1661
+ "name": "Justin Hileman",
1662
+ "email": "justin@justinhileman.info",
1663
+ "homepage": "http://justinhileman.com"
1664
+ }
1665
+ ],
1666
+ "description": "A Mustache implementation in PHP.",
1667
+ "homepage": "https://github.com/bobthecow/mustache.php",
1668
+ "keywords": [
1669
+ "mustache",
1670
+ "templating"
1671
+ ],
1672
+ "time": "2017-07-11T12:54:05+00:00"
1673
+ },
1674
+ {
1675
+ "name": "myclabs/deep-copy",
1676
+ "version": "1.7.0",
1677
+ "source": {
1678
+ "type": "git",
1679
+ "url": "https://github.com/myclabs/DeepCopy.git",
1680
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
1681
+ },
1682
+ "dist": {
1683
+ "type": "zip",
1684
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
1685
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
1686
+ "shasum": ""
1687
+ },
1688
+ "require": {
1689
+ "php": "^5.6 || ^7.0"
1690
+ },
1691
+ "require-dev": {
1692
+ "doctrine/collections": "^1.0",
1693
+ "doctrine/common": "^2.6",
1694
+ "phpunit/phpunit": "^4.1"
1695
+ },
1696
+ "type": "library",
1697
+ "autoload": {
1698
+ "psr-4": {
1699
+ "DeepCopy\\": "src/DeepCopy/"
1700
+ },
1701
+ "files": [
1702
+ "src/DeepCopy/deep_copy.php"
1703
+ ]
1704
+ },
1705
+ "notification-url": "https://packagist.org/downloads/",
1706
+ "license": [
1707
+ "MIT"
1708
+ ],
1709
+ "description": "Create deep copies (clones) of your objects",
1710
+ "keywords": [
1711
+ "clone",
1712
+ "copy",
1713
+ "duplicate",
1714
+ "object",
1715
+ "object graph"
1716
+ ],
1717
+ "time": "2017-10-19T19:58:43+00:00"
1718
+ },
1719
+ {
1720
+ "name": "nb/oxymel",
1721
+ "version": "v0.1.0",
1722
+ "source": {
1723
+ "type": "git",
1724
+ "url": "https://github.com/nb/oxymel.git",
1725
+ "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c"
1726
+ },
1727
+ "dist": {
1728
+ "type": "zip",
1729
+ "url": "https://api.github.com/repos/nb/oxymel/zipball/cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c",
1730
+ "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c",
1731
+ "shasum": ""
1732
+ },
1733
+ "require": {
1734
+ "php": ">=5.2.4"
1735
+ },
1736
+ "type": "library",
1737
+ "autoload": {
1738
+ "psr-0": {
1739
+ "Oxymel": ""
1740
+ }
1741
+ },
1742
+ "notification-url": "https://packagist.org/downloads/",
1743
+ "license": [
1744
+ "MIT"
1745
+ ],
1746
+ "authors": [
1747
+ {
1748
+ "name": "Nikolay Bachiyski",
1749
+ "email": "nb@nikolay.bg",
1750
+ "homepage": "http://extrapolate.me/"
1751
+ }
1752
+ ],
1753
+ "description": "A sweet XML builder",
1754
+ "homepage": "https://github.com/nb/oxymel",
1755
+ "keywords": [
1756
+ "xml"
1757
+ ],
1758
+ "time": "2013-02-24T15:01:54+00:00"
1759
+ },
1760
+ {
1761
+ "name": "nesbot/carbon",
1762
+ "version": "1.27.0",
1763
+ "source": {
1764
+ "type": "git",
1765
+ "url": "https://github.com/briannesbitt/Carbon.git",
1766
+ "reference": "ef81c39b67200dcd7401c24363dcac05ac3a4fe9"
1767
+ },
1768
+ "dist": {
1769
+ "type": "zip",
1770
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ef81c39b67200dcd7401c24363dcac05ac3a4fe9",
1771
+ "reference": "ef81c39b67200dcd7401c24363dcac05ac3a4fe9",
1772
+ "shasum": ""
1773
+ },
1774
+ "require": {
1775
+ "php": ">=5.3.9",
1776
+ "symfony/translation": "~2.6 || ~3.0 || ~4.0"
1777
+ },
1778
+ "require-dev": {
1779
+ "friendsofphp/php-cs-fixer": "~2",
1780
+ "phpunit/phpunit": "^4.8.35 || ^5.7"
1781
+ },
1782
+ "type": "library",
1783
+ "autoload": {
1784
+ "psr-4": {
1785
+ "": "src/"
1786
+ }
1787
+ },
1788
+ "notification-url": "https://packagist.org/downloads/",
1789
+ "license": [
1790
+ "MIT"
1791
+ ],
1792
+ "authors": [
1793
+ {
1794
+ "name": "Brian Nesbitt",
1795
+ "email": "brian@nesbot.com",
1796
+ "homepage": "http://nesbot.com"
1797
+ }
1798
+ ],
1799
+ "description": "A simple API extension for DateTime.",
1800
+ "homepage": "http://carbon.nesbot.com",
1801
+ "keywords": [
1802
+ "date",
1803
+ "datetime",
1804
+ "time"
1805
+ ],
1806
+ "time": "2018-04-23T09:02:57+00:00"
1807
+ },
1808
+ {
1809
+ "name": "phpdocumentor/reflection-common",
1810
+ "version": "1.0.1",
1811
+ "source": {
1812
+ "type": "git",
1813
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1814
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
1815
+ },
1816
+ "dist": {
1817
+ "type": "zip",
1818
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
1819
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
1820
+ "shasum": ""
1821
+ },
1822
+ "require": {
1823
+ "php": ">=5.5"
1824
+ },
1825
+ "require-dev": {
1826
+ "phpunit/phpunit": "^4.6"
1827
+ },
1828
+ "type": "library",
1829
+ "extra": {
1830
+ "branch-alias": {
1831
+ "dev-master": "1.0.x-dev"
1832
+ }
1833
+ },
1834
+ "autoload": {
1835
+ "psr-4": {
1836
+ "phpDocumentor\\Reflection\\": [
1837
+ "src"
1838
+ ]
1839
+ }
1840
+ },
1841
+ "notification-url": "https://packagist.org/downloads/",
1842
+ "license": [
1843
+ "MIT"
1844
+ ],
1845
+ "authors": [
1846
+ {
1847
+ "name": "Jaap van Otterdijk",
1848
+ "email": "opensource@ijaap.nl"
1849
+ }
1850
+ ],
1851
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1852
+ "homepage": "http://www.phpdoc.org",
1853
+ "keywords": [
1854
+ "FQSEN",
1855
+ "phpDocumentor",
1856
+ "phpdoc",
1857
+ "reflection",
1858
+ "static analysis"
1859
+ ],
1860
+ "time": "2017-09-11T18:02:19+00:00"
1861
+ },
1862
+ {
1863
+ "name": "phpdocumentor/reflection-docblock",
1864
+ "version": "4.3.0",
1865
+ "source": {
1866
+ "type": "git",
1867
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1868
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
1869
+ },
1870
+ "dist": {
1871
+ "type": "zip",
1872
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
1873
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
1874
+ "shasum": ""
1875
+ },
1876
+ "require": {
1877
+ "php": "^7.0",
1878
+ "phpdocumentor/reflection-common": "^1.0.0",
1879
+ "phpdocumentor/type-resolver": "^0.4.0",
1880
+ "webmozart/assert": "^1.0"
1881
+ },
1882
+ "require-dev": {
1883
+ "doctrine/instantiator": "~1.0.5",
1884
+ "mockery/mockery": "^1.0",
1885
+ "phpunit/phpunit": "^6.4"
1886
+ },
1887
+ "type": "library",
1888
+ "extra": {
1889
+ "branch-alias": {
1890
+ "dev-master": "4.x-dev"
1891
+ }
1892
+ },
1893
+ "autoload": {
1894
+ "psr-4": {
1895
+ "phpDocumentor\\Reflection\\": [
1896
+ "src/"
1897
+ ]
1898
+ }
1899
+ },
1900
+ "notification-url": "https://packagist.org/downloads/",
1901
+ "license": [
1902
+ "MIT"
1903
+ ],
1904
+ "authors": [
1905
+ {
1906
+ "name": "Mike van Riel",
1907
+ "email": "me@mikevanriel.com"
1908
+ }
1909
+ ],
1910
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1911
+ "time": "2017-11-30T07:14:17+00:00"
1912
+ },
1913
+ {
1914
+ "name": "phpdocumentor/type-resolver",
1915
+ "version": "0.4.0",
1916
+ "source": {
1917
+ "type": "git",
1918
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
1919
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
1920
+ },
1921
+ "dist": {
1922
+ "type": "zip",
1923
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
1924
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
1925
+ "shasum": ""
1926
+ },
1927
+ "require": {
1928
+ "php": "^5.5 || ^7.0",
1929
+ "phpdocumentor/reflection-common": "^1.0"
1930
+ },
1931
+ "require-dev": {
1932
+ "mockery/mockery": "^0.9.4",
1933
+ "phpunit/phpunit": "^5.2||^4.8.24"
1934
+ },
1935
+ "type": "library",
1936
+ "extra": {
1937
+ "branch-alias": {
1938
+ "dev-master": "1.0.x-dev"
1939
+ }
1940
+ },
1941
+ "autoload": {
1942
+ "psr-4": {
1943
+ "phpDocumentor\\Reflection\\": [
1944
+ "src/"
1945
+ ]
1946
+ }
1947
+ },
1948
+ "notification-url": "https://packagist.org/downloads/",
1949
+ "license": [
1950
+ "MIT"
1951
+ ],
1952
+ "authors": [
1953
+ {
1954
+ "name": "Mike van Riel",
1955
+ "email": "me@mikevanriel.com"
1956
+ }
1957
+ ],
1958
+ "time": "2017-07-14T14:27:02+00:00"
1959
+ },
1960
+ {
1961
+ "name": "phpspec/prophecy",
1962
+ "version": "1.7.6",
1963
+ "source": {
1964
+ "type": "git",
1965
+ "url": "https://github.com/phpspec/prophecy.git",
1966
+ "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
1967
+ },
1968
+ "dist": {
1969
+ "type": "zip",
1970
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
1971
+ "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
1972
+ "shasum": ""
1973
+ },
1974
+ "require": {
1975
+ "doctrine/instantiator": "^1.0.2",
1976
+ "php": "^5.3|^7.0",
1977
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
1978
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
1979
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
1980
+ },
1981
+ "require-dev": {
1982
+ "phpspec/phpspec": "^2.5|^3.2",
1983
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
1984
+ },
1985
+ "type": "library",
1986
+ "extra": {
1987
+ "branch-alias": {
1988
+ "dev-master": "1.7.x-dev"
1989
+ }
1990
+ },
1991
+ "autoload": {
1992
+ "psr-0": {
1993
+ "Prophecy\\": "src/"
1994
+ }
1995
+ },
1996
+ "notification-url": "https://packagist.org/downloads/",
1997
+ "license": [
1998
+ "MIT"
1999
+ ],
2000
+ "authors": [
2001
+ {
2002
+ "name": "Konstantin Kudryashov",
2003
+ "email": "ever.zet@gmail.com",
2004
+ "homepage": "http://everzet.com"
2005
+ },
2006
+ {
2007
+ "name": "Marcello Duarte",
2008
+ "email": "marcello.duarte@gmail.com"
2009
+ }
2010
+ ],
2011
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
2012
+ "homepage": "https://github.com/phpspec/prophecy",
2013
+ "keywords": [
2014
+ "Double",
2015
+ "Dummy",
2016
+ "fake",
2017
+ "mock",
2018
+ "spy",
2019
+ "stub"
2020
+ ],
2021
+ "time": "2018-04-18T13:57:24+00:00"
2022
+ },
2023
+ {
2024
+ "name": "phpunit/php-code-coverage",
2025
+ "version": "5.2.0",
2026
+ "source": {
2027
+ "type": "git",
2028
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
2029
+ "reference": "e648abfd8ffb1d54ad549b027b75e376e9055d02"
2030
+ },
2031
+ "dist": {
2032
+ "type": "zip",
2033
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e648abfd8ffb1d54ad549b027b75e376e9055d02",
2034
+ "reference": "e648abfd8ffb1d54ad549b027b75e376e9055d02",
2035
+ "shasum": ""
2036
+ },
2037
+ "require": {
2038
+ "ext-dom": "*",
2039
+ "ext-xmlwriter": "*",
2040
+ "php": "^7.0",
2041
+ "phpunit/php-file-iterator": "^1.3",
2042
+ "phpunit/php-text-template": "^1.2",
2043
+ "phpunit/php-token-stream": "^1.4.11 || ^2.0",
2044
+ "sebastian/code-unit-reverse-lookup": "^1.0",
2045
+ "sebastian/environment": "^2.0",
2046
+ "sebastian/version": "^2.0",
2047
+ "theseer/tokenizer": "^1.1"
2048
+ },
2049
+ "require-dev": {
2050
+ "ext-xdebug": "^2.5",
2051
+ "phpunit/phpunit": "^6.0"
2052
+ },
2053
+ "suggest": {
2054
+ "ext-xdebug": "^2.5.3"
2055
+ },
2056
+ "type": "library",
2057
+ "extra": {
2058
+ "branch-alias": {
2059
+ "dev-master": "5.2.x-dev"
2060
+ }
2061
+ },
2062
+ "autoload": {
2063
+ "classmap": [
2064
+ "src/"
2065
+ ]
2066
+ },
2067
+ "notification-url": "https://packagist.org/downloads/",
2068
+ "license": [
2069
+ "BSD-3-Clause"
2070
+ ],
2071
+ "authors": [
2072
+ {
2073
+ "name": "Sebastian Bergmann",
2074
+ "email": "sb@sebastian-bergmann.de",
2075
+ "role": "lead"
2076
+ }
2077
+ ],
2078
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
2079
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
2080
+ "keywords": [
2081
+ "coverage",
2082
+ "testing",
2083
+ "xunit"
2084
+ ],
2085
+ "time": "2017-04-20T10:00:57+00:00"
2086
+ },
2087
+ {
2088
+ "name": "phpunit/php-file-iterator",
2089
+ "version": "1.4.5",
2090
+ "source": {
2091
+ "type": "git",
2092
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
2093
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
2094
+ },
2095
+ "dist": {
2096
+ "type": "zip",
2097
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
2098
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
2099
+ "shasum": ""
2100
+ },
2101
+ "require": {
2102
+ "php": ">=5.3.3"
2103
+ },
2104
+ "type": "library",
2105
+ "extra": {
2106
+ "branch-alias": {
2107
+ "dev-master": "1.4.x-dev"
2108
+ }
2109
+ },
2110
+ "autoload": {
2111
+ "classmap": [
2112
+ "src/"
2113
+ ]
2114
+ },
2115
+ "notification-url": "https://packagist.org/downloads/",
2116
+ "license": [
2117
+ "BSD-3-Clause"
2118
+ ],
2119
+ "authors": [
2120
+ {
2121
+ "name": "Sebastian Bergmann",
2122
+ "email": "sb@sebastian-bergmann.de",
2123
+ "role": "lead"
2124
+ }
2125
+ ],
2126
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
2127
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
2128
+ "keywords": [
2129
+ "filesystem",
2130
+ "iterator"
2131
+ ],
2132
+ "time": "2017-11-27T13:52:08+00:00"
2133
+ },
2134
+ {
2135
+ "name": "phpunit/php-text-template",
2136
+ "version": "1.2.1",
2137
+ "source": {
2138
+ "type": "git",
2139
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
2140
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
2141
+ },
2142
+ "dist": {
2143
+ "type": "zip",
2144
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
2145
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
2146
+ "shasum": ""
2147
+ },
2148
+ "require": {
2149
+ "php": ">=5.3.3"
2150
+ },
2151
+ "type": "library",
2152
+ "autoload": {
2153
+ "classmap": [
2154
+ "src/"
2155
+ ]
2156
+ },
2157
+ "notification-url": "https://packagist.org/downloads/",
2158
+ "license": [
2159
+ "BSD-3-Clause"
2160
+ ],
2161
+ "authors": [
2162
+ {
2163
+ "name": "Sebastian Bergmann",
2164
+ "email": "sebastian@phpunit.de",
2165
+ "role": "lead"
2166
+ }
2167
+ ],
2168
+ "description": "Simple template engine.",
2169
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
2170
+ "keywords": [
2171
+ "template"
2172
+ ],
2173
+ "time": "2015-06-21T13:50:34+00:00"
2174
+ },
2175
+ {
2176
+ "name": "phpunit/php-timer",
2177
+ "version": "1.0.9",
2178
+ "source": {
2179
+ "type": "git",
2180
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
2181
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
2182
+ },
2183
+ "dist": {
2184
+ "type": "zip",
2185
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
2186
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
2187
+ "shasum": ""
2188
+ },
2189
+ "require": {
2190
+ "php": "^5.3.3 || ^7.0"
2191
+ },
2192
+ "require-dev": {
2193
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
2194
+ },
2195
+ "type": "library",
2196
+ "extra": {
2197
+ "branch-alias": {
2198
+ "dev-master": "1.0-dev"
2199
+ }
2200
+ },
2201
+ "autoload": {
2202
+ "classmap": [
2203
+ "src/"
2204
+ ]
2205
+ },
2206
+ "notification-url": "https://packagist.org/downloads/",
2207
+ "license": [
2208
+ "BSD-3-Clause"
2209
+ ],
2210
+ "authors": [
2211
+ {
2212
+ "name": "Sebastian Bergmann",
2213
+ "email": "sb@sebastian-bergmann.de",
2214
+ "role": "lead"
2215
+ }
2216
+ ],
2217
+ "description": "Utility class for timing",
2218
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
2219
+ "keywords": [
2220
+ "timer"
2221
+ ],
2222
+ "time": "2017-02-26T11:10:40+00:00"
2223
+ },
2224
+ {
2225
+ "name": "phpunit/php-token-stream",
2226
+ "version": "2.0.2",
2227
+ "source": {
2228
+ "type": "git",
2229
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
2230
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
2231
+ },
2232
+ "dist": {
2233
+ "type": "zip",
2234
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
2235
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
2236
+ "shasum": ""
2237
+ },
2238
+ "require": {
2239
+ "ext-tokenizer": "*",
2240
+ "php": "^7.0"
2241
+ },
2242
+ "require-dev": {
2243
+ "phpunit/phpunit": "^6.2.4"
2244
+ },
2245
+ "type": "library",
2246
+ "extra": {
2247
+ "branch-alias": {
2248
+ "dev-master": "2.0-dev"
2249
+ }
2250
+ },
2251
+ "autoload": {
2252
+ "classmap": [
2253
+ "src/"
2254
+ ]
2255
+ },
2256
+ "notification-url": "https://packagist.org/downloads/",
2257
+ "license": [
2258
+ "BSD-3-Clause"
2259
+ ],
2260
+ "authors": [
2261
+ {
2262
+ "name": "Sebastian Bergmann",
2263
+ "email": "sebastian@phpunit.de"
2264
+ }
2265
+ ],
2266
+ "description": "Wrapper around PHP's tokenizer extension.",
2267
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
2268
+ "keywords": [
2269
+ "tokenizer"
2270
+ ],
2271
+ "time": "2017-11-27T05:48:46+00:00"
2272
+ },
2273
+ {
2274
+ "name": "phpunit/phpunit",
2275
+ "version": "6.0.13",
2276
+ "source": {
2277
+ "type": "git",
2278
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
2279
+ "reference": "df38633f62b45fbb9612275274b4553c34a863b2"
2280
+ },
2281
+ "dist": {
2282
+ "type": "zip",
2283
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/df38633f62b45fbb9612275274b4553c34a863b2",
2284
+ "reference": "df38633f62b45fbb9612275274b4553c34a863b2",
2285
+ "shasum": ""
2286
+ },
2287
+ "require": {
2288
+ "ext-dom": "*",
2289
+ "ext-json": "*",
2290
+ "ext-libxml": "*",
2291
+ "ext-mbstring": "*",
2292
+ "ext-xml": "*",
2293
+ "myclabs/deep-copy": "^1.3",
2294
+ "php": "^7.0",
2295
+ "phpspec/prophecy": "^1.7",
2296
+ "phpunit/php-code-coverage": "^5.0",
2297
+ "phpunit/php-file-iterator": "^1.4",
2298
+ "phpunit/php-text-template": "^1.2",
2299
+ "phpunit/php-timer": "^1.0.6",
2300
+ "phpunit/phpunit-mock-objects": "^4.0",
2301
+ "sebastian/comparator": "^2.0",
2302
+ "sebastian/diff": "^1.2",
2303
+ "sebastian/environment": "^2.0",
2304
+ "sebastian/exporter": "^3.0",
2305
+ "sebastian/global-state": "^1.1 || ^2.0",
2306
+ "sebastian/object-enumerator": "^3.0.2",
2307
+ "sebastian/resource-operations": "^1.0",
2308
+ "sebastian/version": "^2.0"
2309
+ },
2310
+ "conflict": {
2311
+ "phpdocumentor/reflection-docblock": "3.0.2",
2312
+ "phpunit/dbunit": "<3.0"
2313
+ },
2314
+ "require-dev": {
2315
+ "ext-pdo": "*"
2316
+ },
2317
+ "suggest": {
2318
+ "ext-xdebug": "*",
2319
+ "phpunit/php-invoker": "^1.1"
2320
+ },
2321
+ "bin": [
2322
+ "phpunit"
2323
+ ],
2324
+ "type": "library",
2325
+ "extra": {
2326
+ "branch-alias": {
2327
+ "dev-master": "6.0.x-dev"
2328
+ }
2329
+ },
2330
+ "autoload": {
2331
+ "classmap": [
2332
+ "src/"
2333
+ ]
2334
+ },
2335
+ "notification-url": "https://packagist.org/downloads/",
2336
+ "license": [
2337
+ "BSD-3-Clause"
2338
+ ],
2339
+ "authors": [
2340
+ {
2341
+ "name": "Sebastian Bergmann",
2342
+ "email": "sebastian@phpunit.de",
2343
+ "role": "lead"
2344
+ }
2345
+ ],
2346
+ "description": "The PHP Unit Testing framework.",
2347
+ "homepage": "https://phpunit.de/",
2348
+ "keywords": [
2349
+ "phpunit",
2350
+ "testing",
2351
+ "xunit"
2352
+ ],
2353
+ "time": "2017-04-03T02:25:33+00:00"
2354
+ },
2355
+ {
2356
+ "name": "phpunit/phpunit-mock-objects",
2357
+ "version": "4.0.4",
2358
+ "source": {
2359
+ "type": "git",
2360
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
2361
+ "reference": "2f789b59ab89669015ad984afa350c4ec577ade0"
2362
+ },
2363
+ "dist": {
2364
+ "type": "zip",
2365
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0",
2366
+ "reference": "2f789b59ab89669015ad984afa350c4ec577ade0",
2367
+ "shasum": ""
2368
+ },
2369
+ "require": {
2370
+ "doctrine/instantiator": "^1.0.5",
2371
+ "php": "^7.0",
2372
+ "phpunit/php-text-template": "^1.2.1",
2373
+ "sebastian/exporter": "^3.0"
2374
+ },
2375
+ "conflict": {
2376
+ "phpunit/phpunit": "<6.0"
2377
+ },
2378
+ "require-dev": {
2379
+ "phpunit/phpunit": "^6.0"
2380
+ },
2381
+ "suggest": {
2382
+ "ext-soap": "*"
2383
+ },
2384
+ "type": "library",
2385
+ "extra": {
2386
+ "branch-alias": {
2387
+ "dev-master": "4.0.x-dev"
2388
+ }
2389
+ },
2390
+ "autoload": {
2391
+ "classmap": [
2392
+ "src/"
2393
+ ]
2394
+ },
2395
+ "notification-url": "https://packagist.org/downloads/",
2396
+ "license": [
2397
+ "BSD-3-Clause"
2398
+ ],
2399
+ "authors": [
2400
+ {
2401
+ "name": "Sebastian Bergmann",
2402
+ "email": "sb@sebastian-bergmann.de",
2403
+ "role": "lead"
2404
+ }
2405
+ ],
2406
+ "description": "Mock Object library for PHPUnit",
2407
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
2408
+ "keywords": [
2409
+ "mock",
2410
+ "xunit"
2411
+ ],
2412
+ "time": "2017-08-03T14:08:16+00:00"
2413
+ },
2414
+ {
2415
+ "name": "psr/container",
2416
+ "version": "1.0.0",
2417
+ "source": {
2418
+ "type": "git",
2419
+ "url": "https://github.com/php-fig/container.git",
2420
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
2421
+ },
2422
+ "dist": {
2423
+ "type": "zip",
2424
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
2425
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
2426
+ "shasum": ""
2427
+ },
2428
+ "require": {
2429
+ "php": ">=5.3.0"
2430
+ },
2431
+ "type": "library",
2432
+ "extra": {
2433
+ "branch-alias": {
2434
+ "dev-master": "1.0.x-dev"
2435
+ }
2436
+ },
2437
+ "autoload": {
2438
+ "psr-4": {
2439
+ "Psr\\Container\\": "src/"
2440
+ }
2441
+ },
2442
+ "notification-url": "https://packagist.org/downloads/",
2443
+ "license": [
2444
+ "MIT"
2445
+ ],
2446
+ "authors": [
2447
+ {
2448
+ "name": "PHP-FIG",
2449
+ "homepage": "http://www.php-fig.org/"
2450
+ }
2451
+ ],
2452
+ "description": "Common Container Interface (PHP FIG PSR-11)",
2453
+ "homepage": "https://github.com/php-fig/container",
2454
+ "keywords": [
2455
+ "PSR-11",
2456
+ "container",
2457
+ "container-interface",
2458
+ "container-interop",
2459
+ "psr"
2460
+ ],
2461
+ "time": "2017-02-14T16:28:37+00:00"
2462
+ },
2463
+ {
2464
+ "name": "psr/http-message",
2465
+ "version": "1.0.1",
2466
+ "source": {
2467
+ "type": "git",
2468
+ "url": "https://github.com/php-fig/http-message.git",
2469
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
2470
+ },
2471
+ "dist": {
2472
+ "type": "zip",
2473
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
2474
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
2475
+ "shasum": ""
2476
+ },
2477
+ "require": {
2478
+ "php": ">=5.3.0"
2479
+ },
2480
+ "type": "library",
2481
+ "extra": {
2482
+ "branch-alias": {
2483
+ "dev-master": "1.0.x-dev"
2484
+ }
2485
+ },
2486
+ "autoload": {
2487
+ "psr-4": {
2488
+ "Psr\\Http\\Message\\": "src/"
2489
+ }
2490
+ },
2491
+ "notification-url": "https://packagist.org/downloads/",
2492
+ "license": [
2493
+ "MIT"
2494
+ ],
2495
+ "authors": [
2496
+ {
2497
+ "name": "PHP-FIG",
2498
+ "homepage": "http://www.php-fig.org/"
2499
+ }
2500
+ ],
2501
+ "description": "Common interface for HTTP messages",
2502
+ "homepage": "https://github.com/php-fig/http-message",
2503
+ "keywords": [
2504
+ "http",
2505
+ "http-message",
2506
+ "psr",
2507
+ "psr-7",
2508
+ "request",
2509
+ "response"
2510
+ ],
2511
+ "time": "2016-08-06T14:39:51+00:00"
2512
+ },
2513
+ {
2514
+ "name": "psr/log",
2515
+ "version": "1.0.2",
2516
+ "source": {
2517
+ "type": "git",
2518
+ "url": "https://github.com/php-fig/log.git",
2519
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
2520
+ },
2521
+ "dist": {
2522
+ "type": "zip",
2523
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
2524
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
2525
+ "shasum": ""
2526
+ },
2527
+ "require": {
2528
+ "php": ">=5.3.0"
2529
+ },
2530
+ "type": "library",
2531
+ "extra": {
2532
+ "branch-alias": {
2533
+ "dev-master": "1.0.x-dev"
2534
+ }
2535
+ },
2536
+ "autoload": {
2537
+ "psr-4": {
2538
+ "Psr\\Log\\": "Psr/Log/"
2539
+ }
2540
+ },
2541
+ "notification-url": "https://packagist.org/downloads/",
2542
+ "license": [
2543
+ "MIT"
2544
+ ],
2545
+ "authors": [
2546
+ {
2547
+ "name": "PHP-FIG",
2548
+ "homepage": "http://www.php-fig.org/"
2549
+ }
2550
+ ],
2551
+ "description": "Common interface for logging libraries",
2552
+ "homepage": "https://github.com/php-fig/log",
2553
+ "keywords": [
2554
+ "log",
2555
+ "psr",
2556
+ "psr-3"
2557
+ ],
2558
+ "time": "2016-10-10T12:19:37+00:00"
2559
+ },
2560
+ {
2561
+ "name": "psr/simple-cache",
2562
+ "version": "1.0.1",
2563
+ "source": {
2564
+ "type": "git",
2565
+ "url": "https://github.com/php-fig/simple-cache.git",
2566
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
2567
+ },
2568
+ "dist": {
2569
+ "type": "zip",
2570
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
2571
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
2572
+ "shasum": ""
2573
+ },
2574
+ "require": {
2575
+ "php": ">=5.3.0"
2576
+ },
2577
+ "type": "library",
2578
+ "extra": {
2579
+ "branch-alias": {
2580
+ "dev-master": "1.0.x-dev"
2581
+ }
2582
+ },
2583
+ "autoload": {
2584
+ "psr-4": {
2585
+ "Psr\\SimpleCache\\": "src/"
2586
+ }
2587
+ },
2588
+ "notification-url": "https://packagist.org/downloads/",
2589
+ "license": [
2590
+ "MIT"
2591
+ ],
2592
+ "authors": [
2593
+ {
2594
+ "name": "PHP-FIG",
2595
+ "homepage": "http://www.php-fig.org/"
2596
+ }
2597
+ ],
2598
+ "description": "Common interfaces for simple caching",
2599
+ "keywords": [
2600
+ "cache",
2601
+ "caching",
2602
+ "psr",
2603
+ "psr-16",
2604
+ "simple-cache"
2605
+ ],
2606
+ "time": "2017-10-23T01:57:42+00:00"
2607
+ },
2608
+ {
2609
+ "name": "ramsey/array_column",
2610
+ "version": "1.1.3",
2611
+ "source": {
2612
+ "type": "git",
2613
+ "url": "https://github.com/ramsey/array_column.git",
2614
+ "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db"
2615
+ },
2616
+ "dist": {
2617
+ "type": "zip",
2618
+ "url": "https://api.github.com/repos/ramsey/array_column/zipball/f8e52eb28e67eb50e613b451dd916abcf783c1db",
2619
+ "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db",
2620
+ "shasum": ""
2621
+ },
2622
+ "require-dev": {
2623
+ "jakub-onderka/php-parallel-lint": "0.8.*",
2624
+ "phpunit/phpunit": "~4.5",
2625
+ "satooshi/php-coveralls": "0.6.*",
2626
+ "squizlabs/php_codesniffer": "~2.2"
2627
+ },
2628
+ "type": "library",
2629
+ "autoload": {
2630
+ "files": [
2631
+ "src/array_column.php"
2632
+ ]
2633
+ },
2634
+ "notification-url": "https://packagist.org/downloads/",
2635
+ "license": [
2636
+ "MIT"
2637
+ ],
2638
+ "authors": [
2639
+ {
2640
+ "name": "Ben Ramsey",
2641
+ "homepage": "http://benramsey.com"
2642
+ }
2643
+ ],
2644
+ "description": "Provides functionality for array_column() to projects using PHP earlier than version 5.5.",
2645
+ "homepage": "https://github.com/ramsey/array_column",
2646
+ "keywords": [
2647
+ "array",
2648
+ "array_column",
2649
+ "column"
2650
+ ],
2651
+ "time": "2015-03-20T22:07:39+00:00"
2652
+ },
2653
+ {
2654
+ "name": "rmccue/requests",
2655
+ "version": "v1.7.0",
2656
+ "source": {
2657
+ "type": "git",
2658
+ "url": "https://github.com/rmccue/Requests.git",
2659
+ "reference": "87932f52ffad70504d93f04f15690cf16a089546"
2660
+ },
2661
+ "dist": {
2662
+ "type": "zip",
2663
+ "url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546",
2664
+ "reference": "87932f52ffad70504d93f04f15690cf16a089546",
2665
+ "shasum": ""
2666
+ },
2667
+ "require": {
2668
+ "php": ">=5.2"
2669
+ },
2670
+ "require-dev": {
2671
+ "requests/test-server": "dev-master"
2672
+ },
2673
+ "type": "library",
2674
+ "autoload": {
2675
+ "psr-0": {
2676
+ "Requests": "library/"
2677
+ }
2678
+ },
2679
+ "notification-url": "https://packagist.org/downloads/",
2680
+ "license": [
2681
+ "ISC"
2682
+ ],
2683
+ "authors": [
2684
+ {
2685
+ "name": "Ryan McCue",
2686
+ "homepage": "http://ryanmccue.info"
2687
+ }
2688
+ ],
2689
+ "description": "A HTTP library written in PHP, for human beings.",
2690
+ "homepage": "http://github.com/rmccue/Requests",
2691
+ "keywords": [
2692
+ "curl",
2693
+ "fsockopen",
2694
+ "http",
2695
+ "idna",
2696
+ "ipv6",
2697
+ "iri",
2698
+ "sockets"
2699
+ ],
2700
+ "time": "2016-10-13T00:11:37+00:00"
2701
+ },
2702
+ {
2703
+ "name": "sebastian/code-unit-reverse-lookup",
2704
+ "version": "1.0.1",
2705
+ "source": {
2706
+ "type": "git",
2707
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
2708
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
2709
+ },
2710
+ "dist": {
2711
+ "type": "zip",
2712
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
2713
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
2714
+ "shasum": ""
2715
+ },
2716
+ "require": {
2717
+ "php": "^5.6 || ^7.0"
2718
+ },
2719
+ "require-dev": {
2720
+ "phpunit/phpunit": "^5.7 || ^6.0"
2721
+ },
2722
+ "type": "library",
2723
+ "extra": {
2724
+ "branch-alias": {
2725
+ "dev-master": "1.0.x-dev"
2726
+ }
2727
+ },
2728
+ "autoload": {
2729
+ "classmap": [
2730
+ "src/"
2731
+ ]
2732
+ },
2733
+ "notification-url": "https://packagist.org/downloads/",
2734
+ "license": [
2735
+ "BSD-3-Clause"
2736
+ ],
2737
+ "authors": [
2738
+ {
2739
+ "name": "Sebastian Bergmann",
2740
+ "email": "sebastian@phpunit.de"
2741
+ }
2742
+ ],
2743
+ "description": "Looks up which function or method a line of code belongs to",
2744
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2745
+ "time": "2017-03-04T06:30:41+00:00"
2746
+ },
2747
+ {
2748
+ "name": "sebastian/comparator",
2749
+ "version": "2.0.0",
2750
+ "source": {
2751
+ "type": "git",
2752
+ "url": "https://github.com/sebastianbergmann/comparator.git",
2753
+ "reference": "20f84f468cb67efee293246e6a09619b891f55f0"
2754
+ },
2755
+ "dist": {
2756
+ "type": "zip",
2757
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0",
2758
+ "reference": "20f84f468cb67efee293246e6a09619b891f55f0",
2759
+ "shasum": ""
2760
+ },
2761
+ "require": {
2762
+ "php": "^7.0",
2763
+ "sebastian/diff": "^1.2",
2764
+ "sebastian/exporter": "^3.0"
2765
+ },
2766
+ "require-dev": {
2767
+ "phpunit/phpunit": "^6.0"
2768
+ },
2769
+ "type": "library",
2770
+ "extra": {
2771
+ "branch-alias": {
2772
+ "dev-master": "2.0.x-dev"
2773
+ }
2774
+ },
2775
+ "autoload": {
2776
+ "classmap": [
2777
+ "src/"
2778
+ ]
2779
+ },
2780
+ "notification-url": "https://packagist.org/downloads/",
2781
+ "license": [
2782
+ "BSD-3-Clause"
2783
+ ],
2784
+ "authors": [
2785
+ {
2786
+ "name": "Jeff Welch",
2787
+ "email": "whatthejeff@gmail.com"
2788
+ },
2789
+ {
2790
+ "name": "Volker Dusch",
2791
+ "email": "github@wallbash.com"
2792
+ },
2793
+ {
2794
+ "name": "Bernhard Schussek",
2795
+ "email": "bschussek@2bepublished.at"
2796
+ },
2797
+ {
2798
+ "name": "Sebastian Bergmann",
2799
+ "email": "sebastian@phpunit.de"
2800
+ }
2801
+ ],
2802
+ "description": "Provides the functionality to compare PHP values for equality",
2803
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
2804
+ "keywords": [
2805
+ "comparator",
2806
+ "compare",
2807
+ "equality"
2808
+ ],
2809
+ "time": "2017-03-03T06:26:08+00:00"
2810
+ },
2811
+ {
2812
+ "name": "sebastian/diff",
2813
+ "version": "1.4.3",
2814
+ "source": {
2815
+ "type": "git",
2816
+ "url": "https://github.com/sebastianbergmann/diff.git",
2817
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
2818
+ },
2819
+ "dist": {
2820
+ "type": "zip",
2821
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
2822
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
2823
+ "shasum": ""
2824
+ },
2825
+ "require": {
2826
+ "php": "^5.3.3 || ^7.0"
2827
+ },
2828
+ "require-dev": {
2829
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
2830
+ },
2831
+ "type": "library",
2832
+ "extra": {
2833
+ "branch-alias": {
2834
+ "dev-master": "1.4-dev"
2835
+ }
2836
+ },
2837
+ "autoload": {
2838
+ "classmap": [
2839
+ "src/"
2840
+ ]
2841
+ },
2842
+ "notification-url": "https://packagist.org/downloads/",
2843
+ "license": [
2844
+ "BSD-3-Clause"
2845
+ ],
2846
+ "authors": [
2847
+ {
2848
+ "name": "Kore Nordmann",
2849
+ "email": "mail@kore-nordmann.de"
2850
+ },
2851
+ {
2852
+ "name": "Sebastian Bergmann",
2853
+ "email": "sebastian@phpunit.de"
2854
+ }
2855
+ ],
2856
+ "description": "Diff implementation",
2857
+ "homepage": "https://github.com/sebastianbergmann/diff",
2858
+ "keywords": [
2859
+ "diff"
2860
+ ],
2861
+ "time": "2017-05-22T07:24:03+00:00"
2862
+ },
2863
+ {
2864
+ "name": "sebastian/environment",
2865
+ "version": "2.0.0",
2866
+ "source": {
2867
+ "type": "git",
2868
+ "url": "https://github.com/sebastianbergmann/environment.git",
2869
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
2870
+ },
2871
+ "dist": {
2872
+ "type": "zip",
2873
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
2874
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
2875
+ "shasum": ""
2876
+ },
2877
+ "require": {
2878
+ "php": "^5.6 || ^7.0"
2879
+ },
2880
+ "require-dev": {
2881
+ "phpunit/phpunit": "^5.0"
2882
+ },
2883
+ "type": "library",
2884
+ "extra": {
2885
+ "branch-alias": {
2886
+ "dev-master": "2.0.x-dev"
2887
+ }
2888
+ },
2889
+ "autoload": {
2890
+ "classmap": [
2891
+ "src/"
2892
+ ]
2893
+ },
2894
+ "notification-url": "https://packagist.org/downloads/",
2895
+ "license": [
2896
+ "BSD-3-Clause"
2897
+ ],
2898
+ "authors": [
2899
+ {
2900
+ "name": "Sebastian Bergmann",
2901
+ "email": "sebastian@phpunit.de"
2902
+ }
2903
+ ],
2904
+ "description": "Provides functionality to handle HHVM/PHP environments",
2905
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
2906
+ "keywords": [
2907
+ "Xdebug",
2908
+ "environment",
2909
+ "hhvm"
2910
+ ],
2911
+ "time": "2016-11-26T07:53:53+00:00"
2912
+ },
2913
+ {
2914
+ "name": "sebastian/exporter",
2915
+ "version": "3.1.0",
2916
+ "source": {
2917
+ "type": "git",
2918
+ "url": "https://github.com/sebastianbergmann/exporter.git",
2919
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
2920
+ },
2921
+ "dist": {
2922
+ "type": "zip",
2923
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
2924
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
2925
+ "shasum": ""
2926
+ },
2927
+ "require": {
2928
+ "php": "^7.0",
2929
+ "sebastian/recursion-context": "^3.0"
2930
+ },
2931
+ "require-dev": {
2932
+ "ext-mbstring": "*",
2933
+ "phpunit/phpunit": "^6.0"
2934
+ },
2935
+ "type": "library",
2936
+ "extra": {
2937
+ "branch-alias": {
2938
+ "dev-master": "3.1.x-dev"
2939
+ }
2940
+ },
2941
+ "autoload": {
2942
+ "classmap": [
2943
+ "src/"
2944
+ ]
2945
+ },
2946
+ "notification-url": "https://packagist.org/downloads/",
2947
+ "license": [
2948
+ "BSD-3-Clause"
2949
+ ],
2950
+ "authors": [
2951
+ {
2952
+ "name": "Jeff Welch",
2953
+ "email": "whatthejeff@gmail.com"
2954
+ },
2955
+ {
2956
+ "name": "Volker Dusch",
2957
+ "email": "github@wallbash.com"
2958
+ },
2959
+ {
2960
+ "name": "Bernhard Schussek",
2961
+ "email": "bschussek@2bepublished.at"
2962
+ },
2963
+ {
2964
+ "name": "Sebastian Bergmann",
2965
+ "email": "sebastian@phpunit.de"
2966
+ },
2967
+ {
2968
+ "name": "Adam Harvey",
2969
+ "email": "aharvey@php.net"
2970
+ }
2971
+ ],
2972
+ "description": "Provides the functionality to export PHP variables for visualization",
2973
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
2974
+ "keywords": [
2975
+ "export",
2976
+ "exporter"
2977
+ ],
2978
+ "time": "2017-04-03T13:19:02+00:00"
2979
+ },
2980
+ {
2981
+ "name": "sebastian/global-state",
2982
+ "version": "2.0.0",
2983
+ "source": {
2984
+ "type": "git",
2985
+ "url": "https://github.com/sebastianbergmann/global-state.git",
2986
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
2987
+ },
2988
+ "dist": {
2989
+ "type": "zip",
2990
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
2991
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
2992
+ "shasum": ""
2993
+ },
2994
+ "require": {
2995
+ "php": "^7.0"
2996
+ },
2997
+ "require-dev": {
2998
+ "phpunit/phpunit": "^6.0"
2999
+ },
3000
+ "suggest": {
3001
+ "ext-uopz": "*"
3002
+ },
3003
+ "type": "library",
3004
+ "extra": {
3005
+ "branch-alias": {
3006
+ "dev-master": "2.0-dev"
3007
+ }
3008
+ },
3009
+ "autoload": {
3010
+ "classmap": [
3011
+ "src/"
3012
+ ]
3013
+ },
3014
+ "notification-url": "https://packagist.org/downloads/",
3015
+ "license": [
3016
+ "BSD-3-Clause"
3017
+ ],
3018
+ "authors": [
3019
+ {
3020
+ "name": "Sebastian Bergmann",
3021
+ "email": "sebastian@phpunit.de"
3022
+ }
3023
+ ],
3024
+ "description": "Snapshotting of global state",
3025
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
3026
+ "keywords": [
3027
+ "global state"
3028
+ ],
3029
+ "time": "2017-04-27T15:39:26+00:00"
3030
+ },
3031
+ {
3032
+ "name": "sebastian/object-enumerator",
3033
+ "version": "3.0.3",
3034
+ "source": {
3035
+ "type": "git",
3036
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
3037
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
3038
+ },
3039
+ "dist": {
3040
+ "type": "zip",
3041
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
3042
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
3043
+ "shasum": ""
3044
+ },
3045
+ "require": {
3046
+ "php": "^7.0",
3047
+ "sebastian/object-reflector": "^1.1.1",
3048
+ "sebastian/recursion-context": "^3.0"
3049
+ },
3050
+ "require-dev": {
3051
+ "phpunit/phpunit": "^6.0"
3052
+ },
3053
+ "type": "library",
3054
+ "extra": {
3055
+ "branch-alias": {
3056
+ "dev-master": "3.0.x-dev"
3057
+ }
3058
+ },
3059
+ "autoload": {
3060
+ "classmap": [
3061
+ "src/"
3062
+ ]
3063
+ },
3064
+ "notification-url": "https://packagist.org/downloads/",
3065
+ "license": [
3066
+ "BSD-3-Clause"
3067
+ ],
3068
+ "authors": [
3069
+ {
3070
+ "name": "Sebastian Bergmann",
3071
+ "email": "sebastian@phpunit.de"
3072
+ }
3073
+ ],
3074
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
3075
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
3076
+ "time": "2017-08-03T12:35:26+00:00"
3077
+ },
3078
+ {
3079
+ "name": "sebastian/object-reflector",
3080
+ "version": "1.1.1",
3081
+ "source": {
3082
+ "type": "git",
3083
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
3084
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
3085
+ },
3086
+ "dist": {
3087
+ "type": "zip",
3088
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
3089
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
3090
+ "shasum": ""
3091
+ },
3092
+ "require": {
3093
+ "php": "^7.0"
3094
+ },
3095
+ "require-dev": {
3096
+ "phpunit/phpunit": "^6.0"
3097
+ },
3098
+ "type": "library",
3099
+ "extra": {
3100
+ "branch-alias": {
3101
+ "dev-master": "1.1-dev"
3102
+ }
3103
+ },
3104
+ "autoload": {
3105
+ "classmap": [
3106
+ "src/"
3107
+ ]
3108
+ },
3109
+ "notification-url": "https://packagist.org/downloads/",
3110
+ "license": [
3111
+ "BSD-3-Clause"
3112
+ ],
3113
+ "authors": [
3114
+ {
3115
+ "name": "Sebastian Bergmann",
3116
+ "email": "sebastian@phpunit.de"
3117
+ }
3118
+ ],
3119
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
3120
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
3121
+ "time": "2017-03-29T09:07:27+00:00"
3122
+ },
3123
+ {
3124
+ "name": "sebastian/recursion-context",
3125
+ "version": "3.0.0",
3126
+ "source": {
3127
+ "type": "git",
3128
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
3129
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
3130
+ },
3131
+ "dist": {
3132
+ "type": "zip",
3133
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
3134
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
3135
+ "shasum": ""
3136
+ },
3137
+ "require": {
3138
+ "php": "^7.0"
3139
+ },
3140
+ "require-dev": {
3141
+ "phpunit/phpunit": "^6.0"
3142
+ },
3143
+ "type": "library",
3144
+ "extra": {
3145
+ "branch-alias": {
3146
+ "dev-master": "3.0.x-dev"
3147
+ }
3148
+ },
3149
+ "autoload": {
3150
+ "classmap": [
3151
+ "src/"
3152
+ ]
3153
+ },
3154
+ "notification-url": "https://packagist.org/downloads/",
3155
+ "license": [
3156
+ "BSD-3-Clause"
3157
+ ],
3158
+ "authors": [
3159
+ {
3160
+ "name": "Jeff Welch",
3161
+ "email": "whatthejeff@gmail.com"
3162
+ },
3163
+ {
3164
+ "name": "Sebastian Bergmann",
3165
+ "email": "sebastian@phpunit.de"
3166
+ },
3167
+ {
3168
+ "name": "Adam Harvey",
3169
+ "email": "aharvey@php.net"
3170
+ }
3171
+ ],
3172
+ "description": "Provides functionality to recursively process PHP variables",
3173
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
3174
+ "time": "2017-03-03T06:23:57+00:00"
3175
+ },
3176
+ {
3177
+ "name": "sebastian/resource-operations",
3178
+ "version": "1.0.0",
3179
+ "source": {
3180
+ "type": "git",
3181
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
3182
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
3183
+ },
3184
+ "dist": {
3185
+ "type": "zip",
3186
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
3187
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
3188
+ "shasum": ""
3189
+ },
3190
+ "require": {
3191
+ "php": ">=5.6.0"
3192
+ },
3193
+ "type": "library",
3194
+ "extra": {
3195
+ "branch-alias": {
3196
+ "dev-master": "1.0.x-dev"
3197
+ }
3198
+ },
3199
+ "autoload": {
3200
+ "classmap": [
3201
+ "src/"
3202
+ ]
3203
+ },
3204
+ "notification-url": "https://packagist.org/downloads/",
3205
+ "license": [
3206
+ "BSD-3-Clause"
3207
+ ],
3208
+ "authors": [
3209
+ {
3210
+ "name": "Sebastian Bergmann",
3211
+ "email": "sebastian@phpunit.de"
3212
+ }
3213
+ ],
3214
+ "description": "Provides a list of PHP built-in functions that operate on resources",
3215
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
3216
+ "time": "2015-07-28T20:34:47+00:00"
3217
+ },
3218
+ {
3219
+ "name": "sebastian/version",
3220
+ "version": "2.0.1",
3221
+ "source": {
3222
+ "type": "git",
3223
+ "url": "https://github.com/sebastianbergmann/version.git",
3224
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
3225
+ },
3226
+ "dist": {
3227
+ "type": "zip",
3228
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
3229
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
3230
+ "shasum": ""
3231
+ },
3232
+ "require": {
3233
+ "php": ">=5.6"
3234
+ },
3235
+ "type": "library",
3236
+ "extra": {
3237
+ "branch-alias": {
3238
+ "dev-master": "2.0.x-dev"
3239
+ }
3240
+ },
3241
+ "autoload": {
3242
+ "classmap": [
3243
+ "src/"
3244
+ ]
3245
+ },
3246
+ "notification-url": "https://packagist.org/downloads/",
3247
+ "license": [
3248
+ "BSD-3-Clause"
3249
+ ],
3250
+ "authors": [
3251
+ {
3252
+ "name": "Sebastian Bergmann",
3253
+ "email": "sebastian@phpunit.de",
3254
+ "role": "lead"
3255
+ }
3256
+ ],
3257
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
3258
+ "homepage": "https://github.com/sebastianbergmann/version",
3259
+ "time": "2016-10-03T07:35:21+00:00"
3260
+ },
3261
+ {
3262
+ "name": "seld/cli-prompt",
3263
+ "version": "1.0.3",
3264
+ "source": {
3265
+ "type": "git",
3266
+ "url": "https://github.com/Seldaek/cli-prompt.git",
3267
+ "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd"
3268
+ },
3269
+ "dist": {
3270
+ "type": "zip",
3271
+ "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd",
3272
+ "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd",
3273
+ "shasum": ""
3274
+ },
3275
+ "require": {
3276
+ "php": ">=5.3"
3277
+ },
3278
+ "type": "library",
3279
+ "extra": {
3280
+ "branch-alias": {
3281
+ "dev-master": "1.x-dev"
3282
+ }
3283
+ },
3284
+ "autoload": {
3285
+ "psr-4": {
3286
+ "Seld\\CliPrompt\\": "src/"
3287
+ }
3288
+ },
3289
+ "notification-url": "https://packagist.org/downloads/",
3290
+ "license": [
3291
+ "MIT"
3292
+ ],
3293
+ "authors": [
3294
+ {
3295
+ "name": "Jordi Boggiano",
3296
+ "email": "j.boggiano@seld.be"
3297
+ }
3298
+ ],
3299
+ "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type",
3300
+ "keywords": [
3301
+ "cli",
3302
+ "console",
3303
+ "hidden",
3304
+ "input",
3305
+ "prompt"
3306
+ ],
3307
+ "time": "2017-03-18T11:32:45+00:00"
3308
+ },
3309
+ {
3310
+ "name": "seld/jsonlint",
3311
+ "version": "1.7.1",
3312
+ "source": {
3313
+ "type": "git",
3314
+ "url": "https://github.com/Seldaek/jsonlint.git",
3315
+ "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
3316
+ },
3317
+ "dist": {
3318
+ "type": "zip",
3319
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
3320
+ "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
3321
+ "shasum": ""
3322
+ },
3323
+ "require": {
3324
+ "php": "^5.3 || ^7.0"
3325
+ },
3326
+ "require-dev": {
3327
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
3328
+ },
3329
+ "bin": [
3330
+ "bin/jsonlint"
3331
+ ],
3332
+ "type": "library",
3333
+ "autoload": {
3334
+ "psr-4": {
3335
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
3336
+ }
3337
+ },
3338
+ "notification-url": "https://packagist.org/downloads/",
3339
+ "license": [
3340
+ "MIT"
3341
+ ],
3342
+ "authors": [
3343
+ {
3344
+ "name": "Jordi Boggiano",
3345
+ "email": "j.boggiano@seld.be",
3346
+ "homepage": "http://seld.be"
3347
+ }
3348
+ ],
3349
+ "description": "JSON Linter",
3350
+ "keywords": [
3351
+ "json",
3352
+ "linter",
3353
+ "parser",
3354
+ "validator"
3355
+ ],
3356
+ "time": "2018-01-24T12:46:19+00:00"
3357
+ },
3358
+ {
3359
+ "name": "seld/phar-utils",
3360
+ "version": "1.0.1",
3361
+ "source": {
3362
+ "type": "git",
3363
+ "url": "https://github.com/Seldaek/phar-utils.git",
3364
+ "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
3365
+ },
3366
+ "dist": {
3367
+ "type": "zip",
3368
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
3369
+ "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
3370
+ "shasum": ""
3371
+ },
3372
+ "require": {
3373
+ "php": ">=5.3"
3374
+ },
3375
+ "type": "library",
3376
+ "extra": {
3377
+ "branch-alias": {
3378
+ "dev-master": "1.x-dev"
3379
+ }
3380
+ },
3381
+ "autoload": {
3382
+ "psr-4": {
3383
+ "Seld\\PharUtils\\": "src/"
3384
+ }
3385
+ },
3386
+ "notification-url": "https://packagist.org/downloads/",
3387
+ "license": [
3388
+ "MIT"
3389
+ ],
3390
+ "authors": [
3391
+ {
3392
+ "name": "Jordi Boggiano",
3393
+ "email": "j.boggiano@seld.be"
3394
+ }
3395
+ ],
3396
+ "description": "PHAR file format utilities, for when PHP phars you up",
3397
+ "keywords": [
3398
+ "phra"
3399
+ ],
3400
+ "time": "2015-10-13T18:44:15+00:00"
3401
+ },
3402
+ {
3403
+ "name": "spatie/phpunit-snapshot-assertions",
3404
+ "version": "1.2.3",
3405
+ "source": {
3406
+ "type": "git",
3407
+ "url": "https://github.com/spatie/phpunit-snapshot-assertions.git",
3408
+ "reference": "bb8f919800cf753da12bd12702d975d10aa55824"
3409
+ },
3410
+ "dist": {
3411
+ "type": "zip",
3412
+ "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/bb8f919800cf753da12bd12702d975d10aa55824",
3413
+ "reference": "bb8f919800cf753da12bd12702d975d10aa55824",
3414
+ "shasum": ""
3415
+ },
3416
+ "require": {
3417
+ "php": "^7.0",
3418
+ "phpunit/phpunit": "~6.0.5|^7.0"
3419
+ },
3420
+ "type": "library",
3421
+ "autoload": {
3422
+ "psr-4": {
3423
+ "Spatie\\Snapshots\\": "src"
3424
+ }
3425
+ },
3426
+ "notification-url": "https://packagist.org/downloads/",
3427
+ "license": [
3428
+ "MIT"
3429
+ ],
3430
+ "authors": [
3431
+ {
3432
+ "name": "Sebastian De Deyne",
3433
+ "email": "sebastian@spatie.be",
3434
+ "homepage": "https://spatie.be",
3435
+ "role": "Developer"
3436
+ }
3437
+ ],
3438
+ "description": "Snapshot testing with PHPUnit",
3439
+ "homepage": "https://github.com/spatie/phpunit-snapshot-assertions",
3440
+ "keywords": [
3441
+ "assert",
3442
+ "phpunit",
3443
+ "phpunit-snapshot-assertions",
3444
+ "snapshot",
3445
+ "spatie",
3446
+ "testing"
3447
+ ],
3448
+ "time": "2018-03-15T10:21:29+00:00"
3449
+ },
3450
+ {
3451
+ "name": "symfony/browser-kit",
3452
+ "version": "v4.0.9",
3453
+ "source": {
3454
+ "type": "git",
3455
+ "url": "https://github.com/symfony/browser-kit.git",
3456
+ "reference": "c43bfa0182363b3fd64331b5e64e467349ff4670"
3457
+ },
3458
+ "dist": {
3459
+ "type": "zip",
3460
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c43bfa0182363b3fd64331b5e64e467349ff4670",
3461
+ "reference": "c43bfa0182363b3fd64331b5e64e467349ff4670",
3462
+ "shasum": ""
3463
+ },
3464
+ "require": {
3465
+ "php": "^7.1.3",
3466
+ "symfony/dom-crawler": "~3.4|~4.0"
3467
+ },
3468
+ "require-dev": {
3469
+ "symfony/css-selector": "~3.4|~4.0",
3470
+ "symfony/process": "~3.4|~4.0"
3471
+ },
3472
+ "suggest": {
3473
+ "symfony/process": ""
3474
+ },
3475
+ "type": "library",
3476
+ "extra": {
3477
+ "branch-alias": {
3478
+ "dev-master": "4.0-dev"
3479
+ }
3480
+ },
3481
+ "autoload": {
3482
+ "psr-4": {
3483
+ "Symfony\\Component\\BrowserKit\\": ""
3484
+ },
3485
+ "exclude-from-classmap": [
3486
+ "/Tests/"
3487
+ ]
3488
+ },
3489
+ "notification-url": "https://packagist.org/downloads/",
3490
+ "license": [
3491
+ "MIT"
3492
+ ],
3493
+ "authors": [
3494
+ {
3495
+ "name": "Fabien Potencier",
3496
+ "email": "fabien@symfony.com"
3497
+ },
3498
+ {
3499
+ "name": "Symfony Community",
3500
+ "homepage": "https://symfony.com/contributors"
3501
+ }
3502
+ ],
3503
+ "description": "Symfony BrowserKit Component",
3504
+ "homepage": "https://symfony.com",
3505
+ "time": "2018-03-19T22:35:49+00:00"
3506
+ },
3507
+ {
3508
+ "name": "symfony/config",
3509
+ "version": "v3.4.9",
3510
+ "source": {
3511
+ "type": "git",
3512
+ "url": "https://github.com/symfony/config.git",
3513
+ "reference": "7c2a9d44f4433863e9bca682e7f03609234657f9"
3514
+ },
3515
+ "dist": {
3516
+ "type": "zip",
3517
+ "url": "https://api.github.com/repos/symfony/config/zipball/7c2a9d44f4433863e9bca682e7f03609234657f9",
3518
+ "reference": "7c2a9d44f4433863e9bca682e7f03609234657f9",
3519
+ "shasum": ""
3520
+ },
3521
+ "require": {
3522
+ "php": "^5.5.9|>=7.0.8",
3523
+ "symfony/filesystem": "~2.8|~3.0|~4.0"
3524
+ },
3525
+ "conflict": {
3526
+ "symfony/dependency-injection": "<3.3",
3527
+ "symfony/finder": "<3.3"
3528
+ },
3529
+ "require-dev": {
3530
+ "symfony/dependency-injection": "~3.3|~4.0",
3531
+ "symfony/event-dispatcher": "~3.3|~4.0",
3532
+ "symfony/finder": "~3.3|~4.0",
3533
+ "symfony/yaml": "~3.0|~4.0"
3534
+ },
3535
+ "suggest": {
3536
+ "symfony/yaml": "To use the yaml reference dumper"
3537
+ },
3538
+ "type": "library",
3539
+ "extra": {
3540
+ "branch-alias": {
3541
+ "dev-master": "3.4-dev"
3542
+ }
3543
+ },
3544
+ "autoload": {
3545
+ "psr-4": {
3546
+ "Symfony\\Component\\Config\\": ""
3547
+ },
3548
+ "exclude-from-classmap": [
3549
+ "/Tests/"
3550
+ ]
3551
+ },
3552
+ "notification-url": "https://packagist.org/downloads/",
3553
+ "license": [
3554
+ "MIT"
3555
+ ],
3556
+ "authors": [
3557
+ {
3558
+ "name": "Fabien Potencier",
3559
+ "email": "fabien@symfony.com"
3560
+ },
3561
+ {
3562
+ "name": "Symfony Community",
3563
+ "homepage": "https://symfony.com/contributors"
3564
+ }
3565
+ ],
3566
+ "description": "Symfony Config Component",
3567
+ "homepage": "https://symfony.com",
3568
+ "time": "2018-03-19T22:32:39+00:00"
3569
+ },
3570
+ {
3571
+ "name": "symfony/console",
3572
+ "version": "v3.4.9",
3573
+ "source": {
3574
+ "type": "git",
3575
+ "url": "https://github.com/symfony/console.git",
3576
+ "reference": "5b1fdfa8eb93464bcc36c34da39cedffef822cdf"
3577
+ },
3578
+ "dist": {
3579
+ "type": "zip",
3580
+ "url": "https://api.github.com/repos/symfony/console/zipball/5b1fdfa8eb93464bcc36c34da39cedffef822cdf",
3581
+ "reference": "5b1fdfa8eb93464bcc36c34da39cedffef822cdf",
3582
+ "shasum": ""
3583
+ },
3584
+ "require": {
3585
+ "php": "^5.5.9|>=7.0.8",
3586
+ "symfony/debug": "~2.8|~3.0|~4.0",
3587
+ "symfony/polyfill-mbstring": "~1.0"
3588
+ },
3589
+ "conflict": {
3590
+ "symfony/dependency-injection": "<3.4",
3591
+ "symfony/process": "<3.3"
3592
+ },
3593
+ "require-dev": {
3594
+ "psr/log": "~1.0",
3595
+ "symfony/config": "~3.3|~4.0",
3596
+ "symfony/dependency-injection": "~3.4|~4.0",
3597
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
3598
+ "symfony/lock": "~3.4|~4.0",
3599
+ "symfony/process": "~3.3|~4.0"
3600
+ },
3601
+ "suggest": {
3602
+ "psr/log-implementation": "For using the console logger",
3603
+ "symfony/event-dispatcher": "",
3604
+ "symfony/lock": "",
3605
+ "symfony/process": ""
3606
+ },
3607
+ "type": "library",
3608
+ "extra": {
3609
+ "branch-alias": {
3610
+ "dev-master": "3.4-dev"
3611
+ }
3612
+ },
3613
+ "autoload": {
3614
+ "psr-4": {
3615
+ "Symfony\\Component\\Console\\": ""
3616
+ },
3617
+ "exclude-from-classmap": [
3618
+ "/Tests/"
3619
+ ]
3620
+ },
3621
+ "notification-url": "https://packagist.org/downloads/",
3622
+ "license": [
3623
+ "MIT"
3624
+ ],
3625
+ "authors": [
3626
+ {
3627
+ "name": "Fabien Potencier",
3628
+ "email": "fabien@symfony.com"
3629
+ },
3630
+ {
3631
+ "name": "Symfony Community",
3632
+ "homepage": "https://symfony.com/contributors"
3633
+ }
3634
+ ],
3635
+ "description": "Symfony Console Component",
3636
+ "homepage": "https://symfony.com",
3637
+ "time": "2018-04-30T01:22:56+00:00"
3638
+ },
3639
+ {
3640
+ "name": "symfony/css-selector",
3641
+ "version": "v4.0.9",
3642
+ "source": {
3643
+ "type": "git",
3644
+ "url": "https://github.com/symfony/css-selector.git",
3645
+ "reference": "03f965583147957f1ecbad7ea1c9d6fd5e525ec2"
3646
+ },
3647
+ "dist": {
3648
+ "type": "zip",
3649
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/03f965583147957f1ecbad7ea1c9d6fd5e525ec2",
3650
+ "reference": "03f965583147957f1ecbad7ea1c9d6fd5e525ec2",
3651
+ "shasum": ""
3652
+ },
3653
+ "require": {
3654
+ "php": "^7.1.3"
3655
+ },
3656
+ "type": "library",
3657
+ "extra": {
3658
+ "branch-alias": {
3659
+ "dev-master": "4.0-dev"
3660
+ }
3661
+ },
3662
+ "autoload": {
3663
+ "psr-4": {
3664
+ "Symfony\\Component\\CssSelector\\": ""
3665
+ },
3666
+ "exclude-from-classmap": [
3667
+ "/Tests/"
3668
+ ]
3669
+ },
3670
+ "notification-url": "https://packagist.org/downloads/",
3671
+ "license": [
3672
+ "MIT"
3673
+ ],
3674
+ "authors": [
3675
+ {
3676
+ "name": "Jean-François Simon",
3677
+ "email": "jeanfrancois.simon@sensiolabs.com"
3678
+ },
3679
+ {
3680
+ "name": "Fabien Potencier",
3681
+ "email": "fabien@symfony.com"
3682
+ },
3683
+ {
3684
+ "name": "Symfony Community",
3685
+ "homepage": "https://symfony.com/contributors"
3686
+ }
3687
+ ],
3688
+ "description": "Symfony CssSelector Component",
3689
+ "homepage": "https://symfony.com",
3690
+ "time": "2018-03-19T22:35:49+00:00"
3691
+ },
3692
+ {
3693
+ "name": "symfony/debug",
3694
+ "version": "v3.4.9",
3695
+ "source": {
3696
+ "type": "git",
3697
+ "url": "https://github.com/symfony/debug.git",
3698
+ "reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f"
3699
+ },
3700
+ "dist": {
3701
+ "type": "zip",
3702
+ "url": "https://api.github.com/repos/symfony/debug/zipball/1b95888cfd996484527cb41e8952d9a5eaf7454f",
3703
+ "reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f",
3704
+ "shasum": ""
3705
+ },
3706
+ "require": {
3707
+ "php": "^5.5.9|>=7.0.8",
3708
+ "psr/log": "~1.0"
3709
+ },
3710
+ "conflict": {
3711
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
3712
+ },
3713
+ "require-dev": {
3714
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
3715
+ },
3716
+ "type": "library",
3717
+ "extra": {
3718
+ "branch-alias": {
3719
+ "dev-master": "3.4-dev"
3720
+ }
3721
+ },
3722
+ "autoload": {
3723
+ "psr-4": {
3724
+ "Symfony\\Component\\Debug\\": ""
3725
+ },
3726
+ "exclude-from-classmap": [
3727
+ "/Tests/"
3728
+ ]
3729
+ },
3730
+ "notification-url": "https://packagist.org/downloads/",
3731
+ "license": [
3732
+ "MIT"
3733
+ ],
3734
+ "authors": [
3735
+ {
3736
+ "name": "Fabien Potencier",
3737
+ "email": "fabien@symfony.com"
3738
+ },
3739
+ {
3740
+ "name": "Symfony Community",
3741
+ "homepage": "https://symfony.com/contributors"
3742
+ }
3743
+ ],
3744
+ "description": "Symfony Debug Component",
3745
+ "homepage": "https://symfony.com",
3746
+ "time": "2018-04-30T16:53:52+00:00"
3747
+ },
3748
+ {
3749
+ "name": "symfony/dependency-injection",
3750
+ "version": "v3.4.9",
3751
+ "source": {
3752
+ "type": "git",
3753
+ "url": "https://github.com/symfony/dependency-injection.git",
3754
+ "reference": "54ff9d78b56429f9a1ac12e60bfb6d169c0468e3"
3755
+ },
3756
+ "dist": {
3757
+ "type": "zip",
3758
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54ff9d78b56429f9a1ac12e60bfb6d169c0468e3",
3759
+ "reference": "54ff9d78b56429f9a1ac12e60bfb6d169c0468e3",
3760
+ "shasum": ""
3761
+ },
3762
+ "require": {
3763
+ "php": "^5.5.9|>=7.0.8",
3764
+ "psr/container": "^1.0"
3765
+ },
3766
+ "conflict": {
3767
+ "symfony/config": "<3.3.7",
3768
+ "symfony/finder": "<3.3",
3769
+ "symfony/proxy-manager-bridge": "<3.4",
3770
+ "symfony/yaml": "<3.4"
3771
+ },
3772
+ "provide": {
3773
+ "psr/container-implementation": "1.0"
3774
+ },
3775
+ "require-dev": {
3776
+ "symfony/config": "~3.3|~4.0",
3777
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
3778
+ "symfony/yaml": "~3.4|~4.0"
3779
+ },
3780
+ "suggest": {
3781
+ "symfony/config": "",
3782
+ "symfony/expression-language": "For using expressions in service container configuration",
3783
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
3784
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
3785
+ "symfony/yaml": ""
3786
+ },
3787
+ "type": "library",
3788
+ "extra": {
3789
+ "branch-alias": {
3790
+ "dev-master": "3.4-dev"
3791
+ }
3792
+ },
3793
+ "autoload": {
3794
+ "psr-4": {
3795
+ "Symfony\\Component\\DependencyInjection\\": ""
3796
+ },
3797
+ "exclude-from-classmap": [
3798
+ "/Tests/"
3799
+ ]
3800
+ },
3801
+ "notification-url": "https://packagist.org/downloads/",
3802
+ "license": [
3803
+ "MIT"
3804
+ ],
3805
+ "authors": [
3806
+ {
3807
+ "name": "Fabien Potencier",
3808
+ "email": "fabien@symfony.com"
3809
+ },
3810
+ {
3811
+ "name": "Symfony Community",
3812
+ "homepage": "https://symfony.com/contributors"
3813
+ }
3814
+ ],
3815
+ "description": "Symfony DependencyInjection Component",
3816
+ "homepage": "https://symfony.com",
3817
+ "time": "2018-04-29T14:04:08+00:00"
3818
+ },
3819
+ {
3820
+ "name": "symfony/dom-crawler",
3821
+ "version": "v4.0.9",
3822
+ "source": {
3823
+ "type": "git",
3824
+ "url": "https://github.com/symfony/dom-crawler.git",
3825
+ "reference": "d6c04c7532535b5e0b63db45b543cd60818e0fbc"
3826
+ },
3827
+ "dist": {
3828
+ "type": "zip",
3829
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d6c04c7532535b5e0b63db45b543cd60818e0fbc",
3830
+ "reference": "d6c04c7532535b5e0b63db45b543cd60818e0fbc",
3831
+ "shasum": ""
3832
+ },
3833
+ "require": {
3834
+ "php": "^7.1.3",
3835
+ "symfony/polyfill-mbstring": "~1.0"
3836
+ },
3837
+ "require-dev": {
3838
+ "symfony/css-selector": "~3.4|~4.0"
3839
+ },
3840
+ "suggest": {
3841
+ "symfony/css-selector": ""
3842
+ },
3843
+ "type": "library",
3844
+ "extra": {
3845
+ "branch-alias": {
3846
+ "dev-master": "4.0-dev"
3847
+ }
3848
+ },
3849
+ "autoload": {
3850
+ "psr-4": {
3851
+ "Symfony\\Component\\DomCrawler\\": ""
3852
+ },
3853
+ "exclude-from-classmap": [
3854
+ "/Tests/"
3855
+ ]
3856
+ },
3857
+ "notification-url": "https://packagist.org/downloads/",
3858
+ "license": [
3859
+ "MIT"
3860
+ ],
3861
+ "authors": [
3862
+ {
3863
+ "name": "Fabien Potencier",
3864
+ "email": "fabien@symfony.com"
3865
+ },
3866
+ {
3867
+ "name": "Symfony Community",
3868
+ "homepage": "https://symfony.com/contributors"
3869
+ }
3870
+ ],
3871
+ "description": "Symfony DomCrawler Component",
3872
+ "homepage": "https://symfony.com",
3873
+ "time": "2018-03-19T22:35:49+00:00"
3874
+ },
3875
+ {
3876
+ "name": "symfony/event-dispatcher",
3877
+ "version": "v3.4.9",
3878
+ "source": {
3879
+ "type": "git",
3880
+ "url": "https://github.com/symfony/event-dispatcher.git",
3881
+ "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8"
3882
+ },
3883
+ "dist": {
3884
+ "type": "zip",
3885
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fdd5abcebd1061ec647089c6c41a07ed60af09f8",
3886
+ "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8",
3887
+ "shasum": ""
3888
+ },
3889
+ "require": {
3890
+ "php": "^5.5.9|>=7.0.8"
3891
+ },
3892
+ "conflict": {
3893
+ "symfony/dependency-injection": "<3.3"
3894
+ },
3895
+ "require-dev": {
3896
+ "psr/log": "~1.0",
3897
+ "symfony/config": "~2.8|~3.0|~4.0",
3898
+ "symfony/dependency-injection": "~3.3|~4.0",
3899
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
3900
+ "symfony/stopwatch": "~2.8|~3.0|~4.0"
3901
+ },
3902
+ "suggest": {
3903
+ "symfony/dependency-injection": "",
3904
+ "symfony/http-kernel": ""
3905
+ },
3906
+ "type": "library",
3907
+ "extra": {
3908
+ "branch-alias": {
3909
+ "dev-master": "3.4-dev"
3910
+ }
3911
+ },
3912
+ "autoload": {
3913
+ "psr-4": {
3914
+ "Symfony\\Component\\EventDispatcher\\": ""
3915
+ },
3916
+ "exclude-from-classmap": [
3917
+ "/Tests/"
3918
+ ]
3919
+ },
3920
+ "notification-url": "https://packagist.org/downloads/",
3921
+ "license": [
3922
+ "MIT"
3923
+ ],
3924
+ "authors": [
3925
+ {
3926
+ "name": "Fabien Potencier",
3927
+ "email": "fabien@symfony.com"
3928
+ },
3929
+ {
3930
+ "name": "Symfony Community",
3931
+ "homepage": "https://symfony.com/contributors"
3932
+ }
3933
+ ],
3934
+ "description": "Symfony EventDispatcher Component",
3935
+ "homepage": "https://symfony.com",
3936
+ "time": "2018-04-06T07:35:25+00:00"
3937
+ },
3938
+ {
3939
+ "name": "symfony/filesystem",
3940
+ "version": "v2.8.39",
3941
+ "source": {
3942
+ "type": "git",
3943
+ "url": "https://github.com/symfony/filesystem.git",
3944
+ "reference": "125403a59e4cb4e3ebf46d0162fabcde613d2b97"
3945
+ },
3946
+ "dist": {
3947
+ "type": "zip",
3948
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/125403a59e4cb4e3ebf46d0162fabcde613d2b97",
3949
+ "reference": "125403a59e4cb4e3ebf46d0162fabcde613d2b97",
3950
+ "shasum": ""
3951
+ },
3952
+ "require": {
3953
+ "php": ">=5.3.9"
3954
+ },
3955
+ "type": "library",
3956
+ "extra": {
3957
+ "branch-alias": {
3958
+ "dev-master": "2.8-dev"
3959
+ }
3960
+ },
3961
+ "autoload": {
3962
+ "psr-4": {
3963
+ "Symfony\\Component\\Filesystem\\": ""
3964
+ },
3965
+ "exclude-from-classmap": [
3966
+ "/Tests/"
3967
+ ]
3968
+ },
3969
+ "notification-url": "https://packagist.org/downloads/",
3970
+ "license": [
3971
+ "MIT"
3972
+ ],
3973
+ "authors": [
3974
+ {
3975
+ "name": "Fabien Potencier",
3976
+ "email": "fabien@symfony.com"
3977
+ },
3978
+ {
3979
+ "name": "Symfony Community",
3980
+ "homepage": "https://symfony.com/contributors"
3981
+ }
3982
+ ],
3983
+ "description": "Symfony Filesystem Component",
3984
+ "homepage": "https://symfony.com",
3985
+ "time": "2018-02-19T16:23:47+00:00"
3986
+ },
3987
+ {
3988
+ "name": "symfony/finder",
3989
+ "version": "v3.4.9",
3990
+ "source": {
3991
+ "type": "git",
3992
+ "url": "https://github.com/symfony/finder.git",
3993
+ "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433"
3994
+ },
3995
+ "dist": {
3996
+ "type": "zip",
3997
+ "url": "https://api.github.com/repos/symfony/finder/zipball/bd14efe8b1fabc4de82bf50dce62f05f9a102433",
3998
+ "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433",
3999
+ "shasum": ""
4000
+ },
4001
+ "require": {
4002
+ "php": "^5.5.9|>=7.0.8"
4003
+ },
4004
+ "type": "library",
4005
+ "extra": {
4006
+ "branch-alias": {
4007
+ "dev-master": "3.4-dev"
4008
+ }
4009
+ },
4010
+ "autoload": {
4011
+ "psr-4": {
4012
+ "Symfony\\Component\\Finder\\": ""
4013
+ },
4014
+ "exclude-from-classmap": [
4015
+ "/Tests/"
4016
+ ]
4017
+ },
4018
+ "notification-url": "https://packagist.org/downloads/",
4019
+ "license": [
4020
+ "MIT"
4021
+ ],
4022
+ "authors": [
4023
+ {
4024
+ "name": "Fabien Potencier",
4025
+ "email": "fabien@symfony.com"
4026
+ },
4027
+ {
4028
+ "name": "Symfony Community",
4029
+ "homepage": "https://symfony.com/contributors"
4030
+ }
4031
+ ],
4032
+ "description": "Symfony Finder Component",
4033
+ "homepage": "https://symfony.com",
4034
+ "time": "2018-04-04T05:07:11+00:00"
4035
+ },
4036
+ {
4037
+ "name": "symfony/polyfill-mbstring",
4038
+ "version": "v1.8.0",
4039
+ "source": {
4040
+ "type": "git",
4041
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
4042
+ "reference": "3296adf6a6454a050679cde90f95350ad604b171"
4043
+ },
4044
+ "dist": {
4045
+ "type": "zip",
4046
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
4047
+ "reference": "3296adf6a6454a050679cde90f95350ad604b171",
4048
+ "shasum": ""
4049
+ },
4050
+ "require": {
4051
+ "php": ">=5.3.3"
4052
+ },
4053
+ "suggest": {
4054
+ "ext-mbstring": "For best performance"
4055
+ },
4056
+ "type": "library",
4057
+ "extra": {
4058
+ "branch-alias": {
4059
+ "dev-master": "1.8-dev"
4060
+ }
4061
+ },
4062
+ "autoload": {
4063
+ "psr-4": {
4064
+ "Symfony\\Polyfill\\Mbstring\\": ""
4065
+ },
4066
+ "files": [
4067
+ "bootstrap.php"
4068
+ ]
4069
+ },
4070
+ "notification-url": "https://packagist.org/downloads/",
4071
+ "license": [
4072
+ "MIT"
4073
+ ],
4074
+ "authors": [
4075
+ {
4076
+ "name": "Nicolas Grekas",
4077
+ "email": "p@tchwork.com"
4078
+ },
4079
+ {
4080
+ "name": "Symfony Community",
4081
+ "homepage": "https://symfony.com/contributors"
4082
+ }
4083
+ ],
4084
+ "description": "Symfony polyfill for the Mbstring extension",
4085
+ "homepage": "https://symfony.com",
4086
+ "keywords": [
4087
+ "compatibility",
4088
+ "mbstring",
4089
+ "polyfill",
4090
+ "portable",
4091
+ "shim"
4092
+ ],
4093
+ "time": "2018-04-26T10:06:28+00:00"
4094
+ },
4095
+ {
4096
+ "name": "symfony/process",
4097
+ "version": "v3.4.9",
4098
+ "source": {
4099
+ "type": "git",
4100
+ "url": "https://github.com/symfony/process.git",
4101
+ "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b"
4102
+ },
4103
+ "dist": {
4104
+ "type": "zip",
4105
+ "url": "https://api.github.com/repos/symfony/process/zipball/4b7d64e852886319e93ddfdecff0d744ab87658b",
4106
+ "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b",
4107
+ "shasum": ""
4108
+ },
4109
+ "require": {
4110
+ "php": "^5.5.9|>=7.0.8"
4111
+ },
4112
+ "type": "library",
4113
+ "extra": {
4114
+ "branch-alias": {
4115
+ "dev-master": "3.4-dev"
4116
+ }
4117
+ },
4118
+ "autoload": {
4119
+ "psr-4": {
4120
+ "Symfony\\Component\\Process\\": ""
4121
+ },
4122
+ "exclude-from-classmap": [
4123
+ "/Tests/"
4124
+ ]
4125
+ },
4126
+ "notification-url": "https://packagist.org/downloads/",
4127
+ "license": [
4128
+ "MIT"
4129
+ ],
4130
+ "authors": [
4131
+ {
4132
+ "name": "Fabien Potencier",
4133
+ "email": "fabien@symfony.com"
4134
+ },
4135
+ {
4136
+ "name": "Symfony Community",
4137
+ "homepage": "https://symfony.com/contributors"
4138
+ }
4139
+ ],
4140
+ "description": "Symfony Process Component",
4141
+ "homepage": "https://symfony.com",
4142
+ "time": "2018-04-03T05:22:50+00:00"
4143
+ },
4144
+ {
4145
+ "name": "symfony/translation",
4146
+ "version": "v3.4.9",
4147
+ "source": {
4148
+ "type": "git",
4149
+ "url": "https://github.com/symfony/translation.git",
4150
+ "reference": "d4af50f46cd8171fd5c1cdebdb9a8bbcd8078c6c"
4151
+ },
4152
+ "dist": {
4153
+ "type": "zip",
4154
+ "url": "https://api.github.com/repos/symfony/translation/zipball/d4af50f46cd8171fd5c1cdebdb9a8bbcd8078c6c",
4155
+ "reference": "d4af50f46cd8171fd5c1cdebdb9a8bbcd8078c6c",
4156
+ "shasum": ""
4157
+ },
4158
+ "require": {
4159
+ "php": "^5.5.9|>=7.0.8",
4160
+ "symfony/polyfill-mbstring": "~1.0"
4161
+ },
4162
+ "conflict": {
4163
+ "symfony/config": "<2.8",
4164
+ "symfony/dependency-injection": "<3.4",
4165
+ "symfony/yaml": "<3.4"
4166
+ },
4167
+ "require-dev": {
4168
+ "psr/log": "~1.0",
4169
+ "symfony/config": "~2.8|~3.0|~4.0",
4170
+ "symfony/dependency-injection": "~3.4|~4.0",
4171
+ "symfony/finder": "~2.8|~3.0|~4.0",
4172
+ "symfony/intl": "^2.8.18|^3.2.5|~4.0",
4173
+ "symfony/yaml": "~3.4|~4.0"
4174
+ },
4175
+ "suggest": {
4176
+ "psr/log-implementation": "To use logging capability in translator",
4177
+ "symfony/config": "",
4178
+ "symfony/yaml": ""
4179
+ },
4180
+ "type": "library",
4181
+ "extra": {
4182
+ "branch-alias": {
4183
+ "dev-master": "3.4-dev"
4184
+ }
4185
+ },
4186
+ "autoload": {
4187
+ "psr-4": {
4188
+ "Symfony\\Component\\Translation\\": ""
4189
+ },
4190
+ "exclude-from-classmap": [
4191
+ "/Tests/"
4192
+ ]
4193
+ },
4194
+ "notification-url": "https://packagist.org/downloads/",
4195
+ "license": [
4196
+ "MIT"
4197
+ ],
4198
+ "authors": [
4199
+ {
4200
+ "name": "Fabien Potencier",
4201
+ "email": "fabien@symfony.com"
4202
+ },
4203
+ {
4204
+ "name": "Symfony Community",
4205
+ "homepage": "https://symfony.com/contributors"
4206
+ }
4207
+ ],
4208
+ "description": "Symfony Translation Component",
4209
+ "homepage": "https://symfony.com",
4210
+ "time": "2018-04-30T01:22:56+00:00"
4211
+ },
4212
+ {
4213
+ "name": "symfony/yaml",
4214
+ "version": "v3.4.9",
4215
+ "source": {
4216
+ "type": "git",
4217
+ "url": "https://github.com/symfony/yaml.git",
4218
+ "reference": "033cfa61ef06ee0847e056e530201842b6e926c3"
4219
+ },
4220
+ "dist": {
4221
+ "type": "zip",
4222
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/033cfa61ef06ee0847e056e530201842b6e926c3",
4223
+ "reference": "033cfa61ef06ee0847e056e530201842b6e926c3",
4224
+ "shasum": ""
4225
+ },
4226
+ "require": {
4227
+ "php": "^5.5.9|>=7.0.8"
4228
+ },
4229
+ "conflict": {
4230
+ "symfony/console": "<3.4"
4231
+ },
4232
+ "require-dev": {
4233
+ "symfony/console": "~3.4|~4.0"
4234
+ },
4235
+ "suggest": {
4236
+ "symfony/console": "For validating YAML files using the lint command"
4237
+ },
4238
+ "type": "library",
4239
+ "extra": {
4240
+ "branch-alias": {
4241
+ "dev-master": "3.4-dev"
4242
+ }
4243
+ },
4244
+ "autoload": {
4245
+ "psr-4": {
4246
+ "Symfony\\Component\\Yaml\\": ""
4247
+ },
4248
+ "exclude-from-classmap": [
4249
+ "/Tests/"
4250
+ ]
4251
+ },
4252
+ "notification-url": "https://packagist.org/downloads/",
4253
+ "license": [
4254
+ "MIT"
4255
+ ],
4256
+ "authors": [
4257
+ {
4258
+ "name": "Fabien Potencier",
4259
+ "email": "fabien@symfony.com"
4260
+ },
4261
+ {
4262
+ "name": "Symfony Community",
4263
+ "homepage": "https://symfony.com/contributors"
4264
+ }
4265
+ ],
4266
+ "description": "Symfony Yaml Component",
4267
+ "homepage": "https://symfony.com",
4268
+ "time": "2018-04-08T08:21:29+00:00"
4269
+ },
4270
+ {
4271
+ "name": "theseer/tokenizer",
4272
+ "version": "1.1.0",
4273
+ "source": {
4274
+ "type": "git",
4275
+ "url": "https://github.com/theseer/tokenizer.git",
4276
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
4277
+ },
4278
+ "dist": {
4279
+ "type": "zip",
4280
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
4281
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
4282
+ "shasum": ""
4283
+ },
4284
+ "require": {
4285
+ "ext-dom": "*",
4286
+ "ext-tokenizer": "*",
4287
+ "ext-xmlwriter": "*",
4288
+ "php": "^7.0"
4289
+ },
4290
+ "type": "library",
4291
+ "autoload": {
4292
+ "classmap": [
4293
+ "src/"
4294
+ ]
4295
+ },
4296
+ "notification-url": "https://packagist.org/downloads/",
4297
+ "license": [
4298
+ "BSD-3-Clause"
4299
+ ],
4300
+ "authors": [
4301
+ {
4302
+ "name": "Arne Blankerts",
4303
+ "email": "arne@blankerts.de",
4304
+ "role": "Developer"
4305
+ }
4306
+ ],
4307
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4308
+ "time": "2017-04-07T12:08:54+00:00"
4309
+ },
4310
+ {
4311
+ "name": "vlucas/phpdotenv",
4312
+ "version": "v2.4.0",
4313
+ "source": {
4314
+ "type": "git",
4315
+ "url": "https://github.com/vlucas/phpdotenv.git",
4316
+ "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c"
4317
+ },
4318
+ "dist": {
4319
+ "type": "zip",
4320
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
4321
+ "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
4322
+ "shasum": ""
4323
+ },
4324
+ "require": {
4325
+ "php": ">=5.3.9"
4326
+ },
4327
+ "require-dev": {
4328
+ "phpunit/phpunit": "^4.8 || ^5.0"
4329
+ },
4330
+ "type": "library",
4331
+ "extra": {
4332
+ "branch-alias": {
4333
+ "dev-master": "2.4-dev"
4334
+ }
4335
+ },
4336
+ "autoload": {
4337
+ "psr-4": {
4338
+ "Dotenv\\": "src/"
4339
+ }
4340
+ },
4341
+ "notification-url": "https://packagist.org/downloads/",
4342
+ "license": [
4343
+ "BSD-3-Clause-Attribution"
4344
+ ],
4345
+ "authors": [
4346
+ {
4347
+ "name": "Vance Lucas",
4348
+ "email": "vance@vancelucas.com",
4349
+ "homepage": "http://www.vancelucas.com"
4350
+ }
4351
+ ],
4352
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
4353
+ "keywords": [
4354
+ "dotenv",
4355
+ "env",
4356
+ "environment"
4357
+ ],
4358
+ "time": "2016-09-01T10:05:43+00:00"
4359
+ },
4360
+ {
4361
+ "name": "webmozart/assert",
4362
+ "version": "1.3.0",
4363
+ "source": {
4364
+ "type": "git",
4365
+ "url": "https://github.com/webmozart/assert.git",
4366
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
4367
+ },
4368
+ "dist": {
4369
+ "type": "zip",
4370
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
4371
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
4372
+ "shasum": ""
4373
+ },
4374
+ "require": {
4375
+ "php": "^5.3.3 || ^7.0"
4376
+ },
4377
+ "require-dev": {
4378
+ "phpunit/phpunit": "^4.6",
4379
+ "sebastian/version": "^1.0.1"
4380
+ },
4381
+ "type": "library",
4382
+ "extra": {
4383
+ "branch-alias": {
4384
+ "dev-master": "1.3-dev"
4385
+ }
4386
+ },
4387
+ "autoload": {
4388
+ "psr-4": {
4389
+ "Webmozart\\Assert\\": "src/"
4390
+ }
4391
+ },
4392
+ "notification-url": "https://packagist.org/downloads/",
4393
+ "license": [
4394
+ "MIT"
4395
+ ],
4396
+ "authors": [
4397
+ {
4398
+ "name": "Bernhard Schussek",
4399
+ "email": "bschussek@gmail.com"
4400
+ }
4401
+ ],
4402
+ "description": "Assertions to validate method input/output with nice error messages.",
4403
+ "keywords": [
4404
+ "assert",
4405
+ "check",
4406
+ "validate"
4407
+ ],
4408
+ "time": "2018-01-29T19:49:41+00:00"
4409
+ },
4410
+ {
4411
+ "name": "wp-cli/autoload-splitter",
4412
+ "version": "v0.1.5",
4413
+ "source": {
4414
+ "type": "git",
4415
+ "url": "https://github.com/wp-cli/autoload-splitter.git",
4416
+ "reference": "fb4302da26390811d2631c62b42b75976d224bb8"
4417
+ },
4418
+ "dist": {
4419
+ "type": "zip",
4420
+ "url": "https://api.github.com/repos/wp-cli/autoload-splitter/zipball/fb4302da26390811d2631c62b42b75976d224bb8",
4421
+ "reference": "fb4302da26390811d2631c62b42b75976d224bb8",
4422
+ "shasum": ""
4423
+ },
4424
+ "require": {
4425
+ "composer-plugin-api": "^1.1"
4426
+ },
4427
+ "type": "composer-plugin",
4428
+ "extra": {
4429
+ "class": "WP_CLI\\AutoloadSplitter\\ComposerPlugin"
4430
+ },
4431
+ "autoload": {
4432
+ "psr-4": {
4433
+ "WP_CLI\\AutoloadSplitter\\": "src"
4434
+ }
4435
+ },
4436
+ "notification-url": "https://packagist.org/downloads/",
4437
+ "license": [
4438
+ "MIT"
4439
+ ],
4440
+ "authors": [
4441
+ {
4442
+ "name": "Alain Schlesser",
4443
+ "email": "alain.schlesser@gmail.com",
4444
+ "homepage": "https://www.alainschlesser.com"
4445
+ }
4446
+ ],
4447
+ "description": "Composer plugin for splitting a generated autoloader into two distinct parts.",
4448
+ "homepage": "https://wp-cli.org",
4449
+ "time": "2017-08-03T08:40:16+00:00"
4450
+ },
4451
+ {
4452
+ "name": "wp-cli/cache-command",
4453
+ "version": "v1.0.6",
4454
+ "source": {
4455
+ "type": "git",
4456
+ "url": "https://github.com/wp-cli/cache-command.git",
4457
+ "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa"
4458
+ },
4459
+ "dist": {
4460
+ "type": "zip",
4461
+ "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d82cba9effa198f17847dce5771c8fb20c443ffa",
4462
+ "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa",
4463
+ "shasum": ""
4464
+ },
4465
+ "require-dev": {
4466
+ "behat/behat": "~2.5",
4467
+ "wp-cli/wp-cli": "*"
4468
+ },
4469
+ "type": "wp-cli-package",
4470
+ "extra": {
4471
+ "branch-alias": {
4472
+ "dev-master": "1.x-dev"
4473
+ },
4474
+ "bundled": true,
4475
+ "commands": [
4476
+ "cache",
4477
+ "cache add",
4478
+ "cache decr",
4479
+ "cache delete",
4480
+ "cache flush",
4481
+ "cache get",
4482
+ "cache incr",
4483
+ "cache replace",
4484
+ "cache set",
4485
+ "cache type",
4486
+ "transient",
4487
+ "transient delete",
4488
+ "transient get",
4489
+ "transient set",
4490
+ "transient type"
4491
+ ]
4492
+ },
4493
+ "autoload": {
4494
+ "psr-4": {
4495
+ "": "src/"
4496
+ },
4497
+ "files": [
4498
+ "cache-command.php"
4499
+ ]
4500
+ },
4501
+ "notification-url": "https://packagist.org/downloads/",
4502
+ "license": [
4503
+ "MIT"
4504
+ ],
4505
+ "authors": [
4506
+ {
4507
+ "name": "Daniel Bachhuber",
4508
+ "email": "daniel@runcommand.io",
4509
+ "homepage": "https://runcommand.io"
4510
+ }
4511
+ ],
4512
+ "description": "Manages object and transient caches.",
4513
+ "homepage": "https://github.com/wp-cli/cache-command",
4514
+ "time": "2017-12-14T19:21:19+00:00"
4515
+ },
4516
+ {
4517
+ "name": "wp-cli/checksum-command",
4518
+ "version": "v1.0.9",
4519
+ "source": {
4520
+ "type": "git",
4521
+ "url": "https://github.com/wp-cli/checksum-command.git",
4522
+ "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb"
4523
+ },
4524
+ "dist": {
4525
+ "type": "zip",
4526
+ "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/89a319440651f2867f282339c2223cfe5e9cc3fb",
4527
+ "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb",
4528
+ "shasum": ""
4529
+ },
4530
+ "require-dev": {
4531
+ "behat/behat": "~2.5",
4532
+ "wp-cli/wp-cli": "^1.5"
4533
+ },
4534
+ "type": "wp-cli-package",
4535
+ "extra": {
4536
+ "branch-alias": {
4537
+ "dev-master": "1.x-dev"
4538
+ },
4539
+ "bundled": true,
4540
+ "commands": [
4541
+ "core verify-checksums",
4542
+ "plugin verify-checksums"
4543
+ ]
4544
+ },
4545
+ "autoload": {
4546
+ "psr-4": {
4547
+ "": "src/"
4548
+ },
4549
+ "files": [
4550
+ "checksum-command.php"
4551
+ ]
4552
+ },
4553
+ "notification-url": "https://packagist.org/downloads/",
4554
+ "license": [
4555
+ "MIT"
4556
+ ],
4557
+ "authors": [
4558
+ {
4559
+ "name": "Daniel Bachhuber",
4560
+ "email": "daniel@runcommand.io",
4561
+ "homepage": "https://runcommand.io"
4562
+ }
4563
+ ],
4564
+ "description": "Verifies file integrity by comparing to published checksums.",
4565
+ "homepage": "https://github.com/wp-cli/checksum-command",
4566
+ "time": "2018-04-20T07:47:27+00:00"
4567
+ },
4568
+ {
4569
+ "name": "wp-cli/config-command",
4570
+ "version": "v1.2.0",
4571
+ "source": {
4572
+ "type": "git",
4573
+ "url": "https://github.com/wp-cli/config-command.git",
4574
+ "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b"
4575
+ },
4576
+ "dist": {
4577
+ "type": "zip",
4578
+ "url": "https://api.github.com/repos/wp-cli/config-command/zipball/7bec9b4685b4022ab511630422dd6acccadfca9b",
4579
+ "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b",
4580
+ "shasum": ""
4581
+ },
4582
+ "require": {
4583
+ "wp-cli/wp-config-transformer": "^1.2.1"
4584
+ },
4585
+ "require-dev": {
4586
+ "behat/behat": "~2.5",
4587
+ "wp-cli/wp-cli": "*"
4588
+ },
4589
+ "type": "wp-cli-package",
4590
+ "extra": {
4591
+ "branch-alias": {
4592
+ "dev-master": "1.x-dev"
4593
+ },
4594
+ "bundled": true,
4595
+ "commands": [
4596
+ "config",
4597
+ "config edit",
4598
+ "config delete",
4599
+ "config create",
4600
+ "config get",
4601
+ "config has",
4602
+ "config list",
4603
+ "config path",
4604
+ "config set"
4605
+ ]
4606
+ },
4607
+ "autoload": {
4608
+ "psr-4": {
4609
+ "": "src/"
4610
+ },
4611
+ "files": [
4612
+ "config-command.php"
4613
+ ]
4614
+ },
4615
+ "notification-url": "https://packagist.org/downloads/",
4616
+ "license": [
4617
+ "MIT"
4618
+ ],
4619
+ "authors": [
4620
+ {
4621
+ "name": "Daniel Bachhuber",
4622
+ "email": "daniel@runcommand.io",
4623
+ "homepage": "https://runcommand.io"
4624
+ },
4625
+ {
4626
+ "name": "Alain Schlesser",
4627
+ "email": "alain.schlesser@gmail.com",
4628
+ "homepage": "https://www.alainschlesser.com"
4629
+ }
4630
+ ],
4631
+ "description": "Generates and reads the wp-config.php file.",
4632
+ "homepage": "https://github.com/wp-cli/config-command",
4633
+ "time": "2018-04-20T08:03:51+00:00"
4634
+ },
4635
+ {
4636
+ "name": "wp-cli/core-command",
4637
+ "version": "v1.0.9",
4638
+ "source": {
4639
+ "type": "git",
4640
+ "url": "https://github.com/wp-cli/core-command.git",
4641
+ "reference": "0e825668d2c060c40ec1d7debbee94bc08eec9b3"
4642
+ },
4643
+ "dist": {
4644
+ "type": "zip",
4645
+ "url": "https://api.github.com/repos/wp-cli/core-command/zipball/0e825668d2c060c40ec1d7debbee94bc08eec9b3",
4646
+ "reference": "0e825668d2c060c40ec1d7debbee94bc08eec9b3",
4647
+ "shasum": ""
4648
+ },
4649
+ "require-dev": {
4650
+ "behat/behat": "~2.5",
4651
+ "wp-cli/wp-cli": "*"
4652
+ },
4653
+ "type": "wp-cli-package",
4654
+ "extra": {
4655
+ "branch-alias": {
4656
+ "dev-master": "1.x-dev"
4657
+ },
4658
+ "bundled": true,
4659
+ "commands": [
4660
+ "core",
4661
+ "core check-update",
4662
+ "core download",
4663
+ "core install",
4664
+ "core is-installed",
4665
+ "core multisite-convert",
4666
+ "core multisite-install",
4667
+ "core update",
4668
+ "core update-db",
4669
+ "core version"
4670
+ ]
4671
+ },
4672
+ "autoload": {
4673
+ "psr-4": {
4674
+ "": "src/"
4675
+ },
4676
+ "files": [
4677
+ "core-command.php"
4678
+ ]
4679
+ },
4680
+ "notification-url": "https://packagist.org/downloads/",
4681
+ "license": [
4682
+ "MIT"
4683
+ ],
4684
+ "authors": [
4685
+ {
4686
+ "name": "Daniel Bachhuber",
4687
+ "email": "daniel@runcommand.io",
4688
+ "homepage": "https://runcommand.io"
4689
+ }
4690
+ ],
4691
+ "description": "Downloads, installs, updates, and manages a WordPress installation.",
4692
+ "homepage": "https://github.com/wp-cli/core-command",
4693
+ "time": "2018-01-30T06:57:10+00:00"
4694
+ },
4695
+ {
4696
+ "name": "wp-cli/cron-command",
4697
+ "version": "v1.0.5",
4698
+ "source": {
4699
+ "type": "git",
4700
+ "url": "https://github.com/wp-cli/cron-command.git",
4701
+ "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef"
4702
+ },
4703
+ "dist": {
4704
+ "type": "zip",
4705
+ "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef",
4706
+ "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef",
4707
+ "shasum": ""
4708
+ },
4709
+ "require-dev": {
4710
+ "behat/behat": "~2.5",
4711
+ "wp-cli/wp-cli": "*"
4712
+ },
4713
+ "type": "wp-cli-package",
4714
+ "extra": {
4715
+ "branch-alias": {
4716
+ "dev-master": "1.x-dev"
4717
+ },
4718
+ "bundled": true,
4719
+ "commands": [
4720
+ "cron",
4721
+ "cron test",
4722
+ "cron event",
4723
+ "cron event delete",
4724
+ "cron event list",
4725
+ "cron event run",
4726
+ "cron event schedule",
4727
+ "cron schedule",
4728
+ "cron schedule list"
4729
+ ]
4730
+ },
4731
+ "autoload": {
4732
+ "psr-4": {
4733
+ "": "src/"
4734
+ },
4735
+ "files": [
4736
+ "cron-command.php"
4737
+ ]
4738
+ },
4739
+ "notification-url": "https://packagist.org/downloads/",
4740
+ "license": [
4741
+ "MIT"
4742
+ ],
4743
+ "authors": [
4744
+ {
4745
+ "name": "Daniel Bachhuber",
4746
+ "email": "daniel@runcommand.io",
4747
+ "homepage": "https://runcommand.io"
4748
+ }
4749
+ ],
4750
+ "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.",
4751
+ "homepage": "https://github.com/wp-cli/cron-command",
4752
+ "time": "2017-12-08T15:09:54+00:00"
4753
+ },
4754
+ {
4755
+ "name": "wp-cli/db-command",
4756
+ "version": "v1.3.3",
4757
+ "source": {
4758
+ "type": "git",
4759
+ "url": "https://github.com/wp-cli/db-command.git",
4760
+ "reference": "7d361a15ffe34dfc9d798a81208fe61b8a2f049a"
4761
+ },
4762
+ "dist": {
4763
+ "type": "zip",
4764
+ "url": "https://api.github.com/repos/wp-cli/db-command/zipball/7d361a15ffe34dfc9d798a81208fe61b8a2f049a",
4765
+ "reference": "7d361a15ffe34dfc9d798a81208fe61b8a2f049a",
4766
+ "shasum": ""
4767
+ },
4768
+ "require-dev": {
4769
+ "behat/behat": "~2.5",
4770
+ "wp-cli/wp-cli": "^1.5"
4771
+ },
4772
+ "type": "wp-cli-package",
4773
+ "extra": {
4774
+ "branch-alias": {
4775
+ "dev-master": "1.x-dev"
4776
+ },
4777
+ "bundled": true,
4778
+ "commands": [
4779
+ "db",
4780
+ "db create",
4781
+ "db drop",
4782
+ "db reset",
4783
+ "db check",
4784
+ "db optimize",
4785
+ "db prefix",
4786
+ "db repair",
4787
+ "db cli",
4788
+ "db query",
4789
+ "db export",
4790
+ "db import",
4791
+ "db search",
4792
+ "db tables",
4793
+ "db size"
4794
+ ]
4795
+ },
4796
+ "autoload": {
4797
+ "psr-4": {
4798
+ "": "src/"
4799
+ },
4800
+ "files": [
4801
+ "db-command.php"
4802
+ ]
4803
+ },
4804
+ "notification-url": "https://packagist.org/downloads/",
4805
+ "license": [
4806
+ "MIT"
4807
+ ],
4808
+ "authors": [
4809
+ {
4810
+ "name": "Daniel Bachhuber",
4811
+ "email": "daniel@runcommand.io",
4812
+ "homepage": "https://runcommand.io"
4813
+ }
4814
+ ],
4815
+ "description": "Performs basic database operations using credentials stored in wp-config.php.",
4816
+ "homepage": "https://github.com/wp-cli/db-command",
4817
+ "time": "2018-01-29T02:30:16+00:00"
4818
+ },
4819
+ {
4820
+ "name": "wp-cli/embed-command",
4821
+ "version": "v1.0.0",
4822
+ "source": {
4823
+ "type": "git",
4824
+ "url": "https://github.com/wp-cli/embed-command.git",
4825
+ "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497"
4826
+ },
4827
+ "dist": {
4828
+ "type": "zip",
4829
+ "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/81319d4243a8dfe096389bf54cdc4fc3dec53497",
4830
+ "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497",
4831
+ "shasum": ""
4832
+ },
4833
+ "require-dev": {
4834
+ "behat/behat": "~2.5",
4835
+ "wp-cli/wp-cli": "^1.5"
4836
+ },
4837
+ "type": "wp-cli-package",
4838
+ "extra": {
4839
+ "branch-alias": {
4840
+ "dev-master": "1.x-dev"
4841
+ },
4842
+ "bundled": true,
4843
+ "commands": [
4844
+ "embed",
4845
+ "embed fetch",
4846
+ "embed provider list",
4847
+ "embed provider match",
4848
+ "embed handler list",
4849
+ "embed cache clear",
4850
+ "embed cache find",
4851
+ "embed cache trigger"
4852
+ ]
4853
+ },
4854
+ "autoload": {
4855
+ "psr-4": {
4856
+ "WP_CLI\\Embeds\\": "src/"
4857
+ },
4858
+ "files": [
4859
+ "embed-command.php"
4860
+ ]
4861
+ },
4862
+ "notification-url": "https://packagist.org/downloads/",
4863
+ "license": [
4864
+ "MIT"
4865
+ ],
4866
+ "authors": [
4867
+ {
4868
+ "name": "Pascal Birchler",
4869
+ "homepage": "https://pascalbirchler.com/"
4870
+ }
4871
+ ],
4872
+ "description": "Inspects oEmbed providers, clears embed cache, and more.",
4873
+ "homepage": "https://github.com/wp-cli/embed-command",
4874
+ "time": "2018-01-22T21:26:48+00:00"
4875
+ },
4876
+ {
4877
+ "name": "wp-cli/entity-command",
4878
+ "version": "v1.2.0",
4879
+ "source": {
4880
+ "type": "git",
4881
+ "url": "https://github.com/wp-cli/entity-command.git",
4882
+ "reference": "035b74ea16912f5b14db7d28036a6d123eb90547"
4883
+ },
4884
+ "dist": {
4885
+ "type": "zip",
4886
+ "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/035b74ea16912f5b14db7d28036a6d123eb90547",
4887
+ "reference": "035b74ea16912f5b14db7d28036a6d123eb90547",
4888
+ "shasum": ""
4889
+ },
4890
+ "require-dev": {
4891
+ "behat/behat": "~2.5",
4892
+ "phpunit/phpunit": "^4.8",
4893
+ "wp-cli/wp-cli": "^1.5"
4894
+ },
4895
+ "type": "wp-cli-package",
4896
+ "extra": {
4897
+ "branch-alias": {
4898
+ "dev-master": "1.x-dev"
4899
+ },
4900
+ "bundled": true,
4901
+ "commands": [
4902
+ "comment",
4903
+ "comment approve",
4904
+ "comment count",
4905
+ "comment create",
4906
+ "comment delete",
4907
+ "comment exists",
4908
+ "comment generate",
4909
+ "comment get",
4910
+ "comment list",
4911
+ "comment meta",
4912
+ "comment meta add",
4913
+ "comment meta delete",
4914
+ "comment meta get",
4915
+ "comment meta list",
4916
+ "comment meta patch",
4917
+ "comment meta pluck",
4918
+ "comment meta update",
4919
+ "comment recount",
4920
+ "comment spam",
4921
+ "comment status",
4922
+ "comment trash",
4923
+ "comment unapprove",
4924
+ "comment unspam",
4925
+ "comment untrash",
4926
+ "comment update",
4927
+ "menu",
4928
+ "menu create",
4929
+ "menu delete",
4930
+ "menu item",
4931
+ "menu item add-custom",
4932
+ "menu item add-post",
4933
+ "menu item add-term",
4934
+ "menu item delete",
4935
+ "menu item list",
4936
+ "menu item update",
4937
+ "menu list",
4938
+ "menu location",
4939
+ "menu location assign",
4940
+ "menu location list",
4941
+ "menu location remove",
4942
+ "network meta",
4943
+ "network meta add",
4944
+ "network meta delete",
4945
+ "network meta get",
4946
+ "network meta list",
4947
+ "network meta patch",
4948
+ "network meta pluck",
4949
+ "network meta update",
4950
+ "option",
4951
+ "option add",
4952
+ "option delete",
4953
+ "option get",
4954
+ "option list",
4955
+ "option patch",
4956
+ "option pluck",
4957
+ "option update",
4958
+ "post",
4959
+ "post create",
4960
+ "post delete",
4961
+ "post edit",
4962
+ "post generate",
4963
+ "post get",
4964
+ "post list",
4965
+ "post meta",
4966
+ "post meta add",
4967
+ "post meta delete",
4968
+ "post meta get",
4969
+ "post meta list",
4970
+ "post meta patch",
4971
+ "post meta pluck",
4972
+ "post meta update",
4973
+ "post term",
4974
+ "post term add",
4975
+ "post term list",
4976
+ "post term remove",
4977
+ "post term set",
4978
+ "post update",
4979
+ "post-type",
4980
+ "post-type get",
4981
+ "post-type list",
4982
+ "site",
4983
+ "site activate",
4984
+ "site archive",
4985
+ "site create",
4986
+ "site deactivate",
4987
+ "site delete",
4988
+ "site empty",
4989
+ "site list",
4990
+ "site mature",
4991
+ "site option",
4992
+ "site private",
4993
+ "site public",
4994
+ "site spam",
4995
+ "site unarchive",
4996
+ "site unmature",
4997
+ "site unspam",
4998
+ "taxonomy",
4999
+ "taxonomy get",
5000
+ "taxonomy list",
5001
+ "term",
5002
+ "term create",
5003
+ "term delete",
5004
+ "term generate",
5005
+ "term get",
5006
+ "term list",
5007
+ "term meta",
5008
+ "term meta add",
5009
+ "term meta delete",
5010
+ "term meta get",
5011
+ "term meta list",
5012
+ "term meta patch",
5013
+ "term meta pluck",
5014
+ "term meta update",
5015
+ "term recount",
5016
+ "term update",
5017
+ "user",
5018
+ "user add-cap",
5019
+ "user add-role",
5020
+ "user create",
5021
+ "user delete",
5022
+ "user generate",
5023
+ "user get",
5024
+ "user import-csv",
5025
+ "user list",
5026
+ "user list-caps",
5027
+ "user meta",
5028
+ "user meta add",
5029
+ "user meta delete",
5030
+ "user meta get",
5031
+ "user meta list",
5032
+ "user meta patch",
5033
+ "user meta pluck",
5034
+ "user meta update",
5035
+ "user remove-cap",
5036
+ "user remove-role",
5037
+ "user reset-password",
5038
+ "user session",
5039
+ "user session destroy",
5040
+ "user session list",
5041
+ "user set-role",
5042
+ "user spam",
5043
+ "user term",
5044
+ "user term add",
5045
+ "user term list",
5046
+ "user term remove",
5047
+ "user term set",
5048
+ "user unspam",
5049
+ "user update"
5050
+ ]
5051
+ },
5052
+ "autoload": {
5053
+ "psr-4": {
5054
+ "": "src/",
5055
+ "WP_CLI\\": "src/WP_CLI"
5056
+ },
5057
+ "files": [
5058
+ "entity-command.php"
5059
+ ]
5060
+ },
5061
+ "notification-url": "https://packagist.org/downloads/",
5062
+ "license": [
5063
+ "MIT"
5064
+ ],
5065
+ "authors": [
5066
+ {
5067
+ "name": "Daniel Bachhuber",
5068
+ "email": "daniel@runcommand.io",
5069
+ "homepage": "https://runcommand.io"
5070
+ }
5071
+ ],
5072
+ "description": "Manage WordPress core entities.",
5073
+ "homepage": "https://github.com/wp-cli/entity-command",
5074
+ "time": "2018-01-29T15:10:05+00:00"
5075
+ },
5076
+ {
5077
+ "name": "wp-cli/eval-command",
5078
+ "version": "v1.0.5",
5079
+ "source": {
5080
+ "type": "git",
5081
+ "url": "https://github.com/wp-cli/eval-command.git",
5082
+ "reference": "9640d40ab28cd86590396f08f8c382e659f57321"
5083
+ },
5084
+ "dist": {
5085
+ "type": "zip",
5086
+ "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/9640d40ab28cd86590396f08f8c382e659f57321",
5087
+ "reference": "9640d40ab28cd86590396f08f8c382e659f57321",
5088
+ "shasum": ""
5089
+ },
5090
+ "require": {
5091
+ "wp-cli/wp-cli": "*"
5092
+ },
5093
+ "require-dev": {
5094
+ "behat/behat": "~2.5"
5095
+ },
5096
+ "type": "wp-cli-package",
5097
+ "extra": {
5098
+ "branch-alias": {
5099
+ "dev-master": "1.x-dev"
5100
+ },
5101
+ "bundled": true,
5102
+ "commands": [
5103
+ "eval",
5104
+ "eval-file"
5105
+ ]
5106
+ },
5107
+ "autoload": {
5108
+ "psr-4": {
5109
+ "": "src/"
5110
+ },
5111
+ "files": [
5112
+ "eval-command.php"
5113
+ ]
5114
+ },
5115
+ "notification-url": "https://packagist.org/downloads/",
5116
+ "license": [
5117
+ "MIT"
5118
+ ],
5119
+ "authors": [
5120
+ {
5121
+ "name": "Daniel Bachhuber",
5122
+ "email": "daniel@runcommand.io",
5123
+ "homepage": "https://runcommand.io"
5124
+ }
5125
+ ],
5126
+ "description": "Executes arbitrary PHP code or files.",
5127
+ "homepage": "https://github.com/wp-cli/eval-command",
5128
+ "time": "2017-12-08T14:33:34+00:00"
5129
+ },
5130
+ {
5131
+ "name": "wp-cli/export-command",
5132
+ "version": "v1.0.6",
5133
+ "source": {
5134
+ "type": "git",
5135
+ "url": "https://github.com/wp-cli/export-command.git",
5136
+ "reference": "4ae43d370ed6ed0cffd166dd84cfc6c8c2f3f633"
5137
+ },
5138
+ "dist": {
5139
+ "type": "zip",
5140
+ "url": "https://api.github.com/repos/wp-cli/export-command/zipball/4ae43d370ed6ed0cffd166dd84cfc6c8c2f3f633",
5141
+ "reference": "4ae43d370ed6ed0cffd166dd84cfc6c8c2f3f633",
5142
+ "shasum": ""
5143
+ },
5144
+ "require": {
5145
+ "nb/oxymel": "~0.1.0"
5146
+ },
5147
+ "require-dev": {
5148
+ "behat/behat": "~2.5",
5149
+ "wp-cli/wp-cli": "^1.5"
5150
+ },
5151
+ "type": "wp-cli-package",
5152
+ "extra": {
5153
+ "branch-alias": {
5154
+ "dev-master": "1.x-dev"
5155
+ },
5156
+ "bundled": true,
5157
+ "commands": [
5158
+ "export"
5159
+ ]
5160
+ },
5161
+ "autoload": {
5162
+ "psr-4": {
5163
+ "": "src/"
5164
+ },
5165
+ "files": [
5166
+ "export-command.php"
5167
+ ]
5168
+ },
5169
+ "notification-url": "https://packagist.org/downloads/",
5170
+ "license": [
5171
+ "MIT"
5172
+ ],
5173
+ "authors": [
5174
+ {
5175
+ "name": "Daniel Bachhuber",
5176
+ "email": "daniel@runcommand.io",
5177
+ "homepage": "https://runcommand.io"
5178
+ }
5179
+ ],
5180
+ "description": "Exports WordPress content to a WXR file.",
5181
+ "homepage": "https://github.com/wp-cli/export-command",
5182
+ "time": "2018-01-29T02:33:05+00:00"
5183
+ },
5184
+ {
5185
+ "name": "wp-cli/extension-command",
5186
+ "version": "v1.1.10",
5187
+ "source": {
5188
+ "type": "git",
5189
+ "url": "https://github.com/wp-cli/extension-command.git",
5190
+ "reference": "3fd9ff469311bb2d6935997bc7d7e9f157fe29e6"
5191
+ },
5192
+ "dist": {
5193
+ "type": "zip",
5194
+ "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/3fd9ff469311bb2d6935997bc7d7e9f157fe29e6",
5195
+ "reference": "3fd9ff469311bb2d6935997bc7d7e9f157fe29e6",
5196
+ "shasum": ""
5197
+ },
5198
+ "require-dev": {
5199
+ "behat/behat": "~2.5",
5200
+ "wp-cli/wp-cli": "*"
5201
+ },
5202
+ "type": "wp-cli-package",
5203
+ "extra": {
5204
+ "branch-alias": {
5205
+ "dev-master": "1.x-dev"
5206
+ },
5207
+ "bundled": true,
5208
+ "commands": [
5209
+ "plugin",
5210
+ "plugin activate",
5211
+ "plugin deactivate",
5212
+ "plugin delete",
5213
+ "plugin get",
5214
+ "plugin install",
5215
+ "plugin is-installed",
5216
+ "plugin list",
5217
+ "plugin path",
5218
+ "plugin search",
5219
+ "plugin status",
5220
+ "plugin toggle",
5221
+ "plugin uninstall",
5222
+ "plugin update",
5223
+ "theme",
5224
+ "theme activate",
5225
+ "theme delete",
5226
+ "theme disable",
5227
+ "theme enable",
5228
+ "theme get",
5229
+ "theme install",
5230
+ "theme is-installed",
5231
+ "theme list",
5232
+ "theme mod",
5233
+ "theme mod get",
5234
+ "theme mod set",
5235
+ "theme mod remove",
5236
+ "theme path",
5237
+ "theme search",
5238
+ "theme status",
5239
+ "theme update"
5240
+ ]
5241
+ },
5242
+ "autoload": {
5243
+ "psr-4": {
5244
+ "": "src/"
5245
+ },
5246
+ "files": [
5247
+ "extension-command.php"
5248
+ ]
5249
+ },
5250
+ "notification-url": "https://packagist.org/downloads/",
5251
+ "license": [
5252
+ "MIT"
5253
+ ],
5254
+ "authors": [
5255
+ {
5256
+ "name": "Daniel Bachhuber",
5257
+ "email": "daniel@runcommand.io",
5258
+ "homepage": "https://runcommand.io"
5259
+ }
5260
+ ],
5261
+ "description": "Manages plugins and themes, including installs, activations, and updates.",
5262
+ "homepage": "https://github.com/wp-cli/extension-command",
5263
+ "time": "2018-03-02T13:26:40+00:00"
5264
+ },
5265
+ {
5266
+ "name": "wp-cli/import-command",
5267
+ "version": "v1.0.6",
5268
+ "source": {
5269
+ "type": "git",
5270
+ "url": "https://github.com/wp-cli/import-command.git",
5271
+ "reference": "d2c21d590a1bfae6ac4e289a0b57fb1870b5990c"
5272
+ },
5273
+ "dist": {
5274
+ "type": "zip",
5275
+ "url": "https://api.github.com/repos/wp-cli/import-command/zipball/d2c21d590a1bfae6ac4e289a0b57fb1870b5990c",
5276
+ "reference": "d2c21d590a1bfae6ac4e289a0b57fb1870b5990c",
5277
+ "shasum": ""
5278
+ },
5279
+ "require": {
5280
+ "wp-cli/wp-cli": "*"
5281
+ },
5282
+ "require-dev": {
5283
+ "behat/behat": "~2.5"
5284
+ },
5285
+ "type": "wp-cli-package",
5286
+ "extra": {
5287
+ "branch-alias": {
5288
+ "dev-master": "1.x-dev"
5289
+ },
5290
+ "bundled": true,
5291
+ "commands": [
5292
+ "import"
5293
+ ]
5294
+ },
5295
+ "autoload": {
5296
+ "psr-4": {
5297
+ "": "src/"
5298
+ },
5299
+ "files": [
5300
+ "import-command.php"
5301
+ ]
5302
+ },
5303
+ "notification-url": "https://packagist.org/downloads/",
5304
+ "license": [
5305
+ "MIT"
5306
+ ],
5307
+ "authors": [
5308
+ {
5309
+ "name": "Daniel Bachhuber",
5310
+ "email": "daniel@runcommand.io",
5311
+ "homepage": "https://runcommand.io"
5312
+ }
5313
+ ],
5314
+ "description": "Imports content from a given WXR file.",
5315
+ "homepage": "https://github.com/wp-cli/import-command",
5316
+ "time": "2017-12-08T15:13:36+00:00"
5317
+ },
5318
+ {
5319
+ "name": "wp-cli/language-command",
5320
+ "version": "v1.0.6",
5321
+ "source": {
5322
+ "type": "git",
5323
+ "url": "https://github.com/wp-cli/language-command.git",
5324
+ "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209"
5325
+ },
5326
+ "dist": {
5327
+ "type": "zip",
5328
+ "url": "https://api.github.com/repos/wp-cli/language-command/zipball/2a3d1ce5a722a4d70809619a065087aa933f6209",
5329
+ "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209",
5330
+ "shasum": ""
5331
+ },
5332
+ "require-dev": {
5333
+ "behat/behat": "~2.5",
5334
+ "wp-cli/wp-cli": "*"
5335
+ },
5336
+ "type": "wp-cli-package",
5337
+ "extra": {
5338
+ "branch-alias": {
5339
+ "dev-master": "1.x-dev"
5340
+ },
5341
+ "commands": [
5342
+ "language",
5343
+ "language core",
5344
+ "language core activate",
5345
+ "language core install",
5346
+ "language core list",
5347
+ "language core uninstall",
5348
+ "language core update"
5349
+ ],
5350
+ "bundled": true
5351
+ },
5352
+ "autoload": {
5353
+ "psr-4": {
5354
+ "": "src/"
5355
+ },
5356
+ "files": [
5357
+ "language-command.php"
5358
+ ]
5359
+ },
5360
+ "notification-url": "https://packagist.org/downloads/",
5361
+ "license": [
5362
+ "MIT"
5363
+ ],
5364
+ "authors": [
5365
+ {
5366
+ "name": "Daniel Bachhuber",
5367
+ "email": "daniel@runcommand.io",
5368
+ "homepage": "https://runcommand.io"
5369
+ }
5370
+ ],
5371
+ "description": "Installs, activates, and manages language packs.",
5372
+ "homepage": "https://github.com/wp-cli/language-command",
5373
+ "time": "2017-12-08T17:50:26+00:00"
5374
+ },
5375
+ {
5376
+ "name": "wp-cli/media-command",
5377
+ "version": "v1.1.4",
5378
+ "source": {
5379
+ "type": "git",
5380
+ "url": "https://github.com/wp-cli/media-command.git",
5381
+ "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c"
5382
+ },
5383
+ "dist": {
5384
+ "type": "zip",
5385
+ "url": "https://api.github.com/repos/wp-cli/media-command/zipball/7f8664ba722505446b3ef3dbc6717e8e7f20265c",
5386
+ "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c",
5387
+ "shasum": ""
5388
+ },
5389
+ "require-dev": {
5390
+ "behat/behat": "~2.5",
5391
+ "wp-cli/wp-cli": "^1.5"
5392
+ },
5393
+ "type": "wp-cli-package",
5394
+ "extra": {
5395
+ "branch-alias": {
5396
+ "dev-master": "1.x-dev"
5397
+ },
5398
+ "bundled": true,
5399
+ "commands": [
5400
+ "media",
5401
+ "media import",
5402
+ "media regenerate",
5403
+ "media image-size"
5404
+ ]
5405
+ },
5406
+ "autoload": {
5407
+ "psr-4": {
5408
+ "": "src/"
5409
+ },
5410
+ "files": [
5411
+ "media-command.php"
5412
+ ]
5413
+ },
5414
+ "notification-url": "https://packagist.org/downloads/",
5415
+ "license": [
5416
+ "MIT"
5417
+ ],
5418
+ "authors": [
5419
+ {
5420
+ "name": "Daniel Bachhuber",
5421
+ "email": "daniel@runcommand.io",
5422
+ "homepage": "https://runcommand.io"
5423
+ }
5424
+ ],
5425
+ "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.",
5426
+ "homepage": "https://github.com/wp-cli/media-command",
5427
+ "time": "2018-01-29T02:17:56+00:00"
5428
+ },
5429
+ {
5430
+ "name": "wp-cli/mustangostang-spyc",
5431
+ "version": "0.6.3",
5432
+ "source": {
5433
+ "type": "git",
5434
+ "url": "https://github.com/wp-cli/spyc.git",
5435
+ "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7"
5436
+ },
5437
+ "dist": {
5438
+ "type": "zip",
5439
+ "url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7",
5440
+ "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7",
5441
+ "shasum": ""
5442
+ },
5443
+ "require": {
5444
+ "php": ">=5.3.1"
5445
+ },
5446
+ "require-dev": {
5447
+ "phpunit/phpunit": "4.3.*@dev"
5448
+ },
5449
+ "type": "library",
5450
+ "extra": {
5451
+ "branch-alias": {
5452
+ "dev-master": "0.5.x-dev"
5453
+ }
5454
+ },
5455
+ "autoload": {
5456
+ "psr-4": {
5457
+ "Mustangostang\\": "src/"
5458
+ },
5459
+ "files": [
5460
+ "includes/functions.php"
5461
+ ]
5462
+ },
5463
+ "notification-url": "https://packagist.org/downloads/",
5464
+ "license": [
5465
+ "MIT"
5466
+ ],
5467
+ "authors": [
5468
+ {
5469
+ "name": "mustangostang",
5470
+ "email": "vlad.andersen@gmail.com"
5471
+ }
5472
+ ],
5473
+ "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)",
5474
+ "homepage": "https://github.com/mustangostang/spyc/",
5475
+ "time": "2017-04-25T11:26:20+00:00"
5476
+ },
5477
+ {
5478
+ "name": "wp-cli/package-command",
5479
+ "version": "v1.0.13",
5480
+ "source": {
5481
+ "type": "git",
5482
+ "url": "https://github.com/wp-cli/package-command.git",
5483
+ "reference": "c912f5bbad216997d7496d46fc5c05af0e16fc5b"
5484
+ },
5485
+ "dist": {
5486
+ "type": "zip",
5487
+ "url": "https://api.github.com/repos/wp-cli/package-command/zipball/c912f5bbad216997d7496d46fc5c05af0e16fc5b",
5488
+ "reference": "c912f5bbad216997d7496d46fc5c05af0e16fc5b",
5489
+ "shasum": ""
5490
+ },
5491
+ "require": {
5492
+ "composer/composer": "^1.2.0"
5493
+ },
5494
+ "require-dev": {
5495
+ "behat/behat": "~2.5",
5496
+ "wp-cli/wp-cli": "^1.5"
5497
+ },
5498
+ "type": "wp-cli-package",
5499
+ "extra": {
5500
+ "branch-alias": {
5501
+ "dev-master": "1.x-dev"
5502
+ },
5503
+ "bundled": true,
5504
+ "commands": [
5505
+ "package",
5506
+ "package browse",
5507
+ "package install",
5508
+ "package list",
5509
+ "package update",
5510
+ "package uninstall"
5511
+ ]
5512
+ },
5513
+ "autoload": {
5514
+ "psr-4": {
5515
+ "": "src/"
5516
+ },
5517
+ "files": [
5518
+ "package-command.php"
5519
+ ]
5520
+ },
5521
+ "notification-url": "https://packagist.org/downloads/",
5522
+ "license": [
5523
+ "MIT"
5524
+ ],
5525
+ "authors": [
5526
+ {
5527
+ "name": "Daniel Bachhuber",
5528
+ "email": "daniel@runcommand.io",
5529
+ "homepage": "https://runcommand.io"
5530
+ }
5531
+ ],
5532
+ "description": "Lists, installs, and removes WP-CLI packages.",
5533
+ "homepage": "https://github.com/wp-cli/package-command",
5534
+ "time": "2018-04-20T23:33:22+00:00"
5535
+ },
5536
+ {
5537
+ "name": "wp-cli/php-cli-tools",
5538
+ "version": "v0.11.9",
5539
+ "source": {
5540
+ "type": "git",
5541
+ "url": "https://github.com/wp-cli/php-cli-tools.git",
5542
+ "reference": "766653b45f99c817edb2b05dc23f7ee9a893768d"
5543
+ },
5544
+ "dist": {
5545
+ "type": "zip",
5546
+ "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/766653b45f99c817edb2b05dc23f7ee9a893768d",
5547
+ "reference": "766653b45f99c817edb2b05dc23f7ee9a893768d",
5548
+ "shasum": ""
5549
+ },
5550
+ "require": {
5551
+ "php": ">= 5.3.0"
5552
+ },
5553
+ "type": "library",
5554
+ "autoload": {
5555
+ "psr-0": {
5556
+ "cli": "lib/"
5557
+ },
5558
+ "files": [
5559
+ "lib/cli/cli.php"
5560
+ ]
5561
+ },
5562
+ "notification-url": "https://packagist.org/downloads/",
5563
+ "license": [
5564
+ "MIT"
5565
+ ],
5566
+ "authors": [
5567
+ {
5568
+ "name": "James Logsdon",
5569
+ "email": "jlogsdon@php.net",
5570
+ "role": "Developer"
5571
+ },
5572
+ {
5573
+ "name": "Daniel Bachhuber",
5574
+ "email": "daniel@handbuilt.co",
5575
+ "role": "Maintainer"
5576
+ }
5577
+ ],
5578
+ "description": "Console utilities for PHP",
5579
+ "homepage": "http://github.com/wp-cli/php-cli-tools",
5580
+ "keywords": [
5581
+ "cli",
5582
+ "console"
5583
+ ],
5584
+ "time": "2018-04-20T08:11:30+00:00"
5585
+ },
5586
+ {
5587
+ "name": "wp-cli/rewrite-command",
5588
+ "version": "v1.0.5",
5589
+ "source": {
5590
+ "type": "git",
5591
+ "url": "https://github.com/wp-cli/rewrite-command.git",
5592
+ "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408"
5593
+ },
5594
+ "dist": {
5595
+ "type": "zip",
5596
+ "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/6b1695887e289ffad14c8f4ea86b5f1d92757408",
5597
+ "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408",
5598
+ "shasum": ""
5599
+ },
5600
+ "require-dev": {
5601
+ "behat/behat": "~2.5",
5602
+ "wp-cli/wp-cli": "*"
5603
+ },
5604
+ "type": "wp-cli-package",
5605
+ "extra": {
5606
+ "branch-alias": {
5607
+ "dev-master": "1.x-dev"
5608
+ },
5609
+ "commands": [
5610
+ "rewrite",
5611
+ "rewrite flush",
5612
+ "rewrite list",
5613
+ "rewrite structure"
5614
+ ],
5615
+ "bundled": true
5616
+ },
5617
+ "autoload": {
5618
+ "psr-4": {
5619
+ "": "src/"
5620
+ },
5621
+ "files": [
5622
+ "rewrite-command.php"
5623
+ ]
5624
+ },
5625
+ "notification-url": "https://packagist.org/downloads/",
5626
+ "license": [
5627
+ "MIT"
5628
+ ],
5629
+ "authors": [
5630
+ {
5631
+ "name": "Daniel Bachhuber",
5632
+ "email": "daniel@runcommand.io",
5633
+ "homepage": "https://runcommand.io"
5634
+ }
5635
+ ],
5636
+ "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.",
5637
+ "homepage": "https://github.com/wp-cli/rewrite-command",
5638
+ "time": "2017-12-08T17:51:04+00:00"
5639
+ },
5640
+ {
5641
+ "name": "wp-cli/role-command",
5642
+ "version": "v1.1.0",
5643
+ "source": {
5644
+ "type": "git",
5645
+ "url": "https://github.com/wp-cli/role-command.git",
5646
+ "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716"
5647
+ },
5648
+ "dist": {
5649
+ "type": "zip",
5650
+ "url": "https://api.github.com/repos/wp-cli/role-command/zipball/f50134ea9c27c108b1069cf044f7395c8f9bf716",
5651
+ "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716",
5652
+ "shasum": ""
5653
+ },
5654
+ "require-dev": {
5655
+ "behat/behat": "~2.5",
5656
+ "wp-cli/wp-cli": "*"
5657
+ },
5658
+ "type": "wp-cli-package",
5659
+ "extra": {
5660
+ "branch-alias": {
5661
+ "dev-master": "1.x-dev"
5662
+ },
5663
+ "commands": [
5664
+ "role",
5665
+ "role create",
5666
+ "role delete",
5667
+ "role exists",
5668
+ "role list",
5669
+ "role reset",
5670
+ "cap",
5671
+ "cap add",
5672
+ "cap list",
5673
+ "cap remove"
5674
+ ],
5675
+ "bundled": true
5676
+ },
5677
+ "autoload": {
5678
+ "psr-4": {
5679
+ "": "src/"
5680
+ },
5681
+ "files": [
5682
+ "role-command.php"
5683
+ ]
5684
+ },
5685
+ "notification-url": "https://packagist.org/downloads/",
5686
+ "license": [
5687
+ "MIT"
5688
+ ],
5689
+ "authors": [
5690
+ {
5691
+ "name": "Daniel Bachhuber",
5692
+ "email": "daniel@runcommand.io",
5693
+ "homepage": "https://runcommand.io"
5694
+ }
5695
+ ],
5696
+ "description": "Adds, removes, lists, and resets roles and capabilities.",
5697
+ "homepage": "https://github.com/wp-cli/role-command",
5698
+ "time": "2018-04-20T08:05:51+00:00"
5699
+ },
5700
+ {
5701
+ "name": "wp-cli/scaffold-command",
5702
+ "version": "v1.1.3",
5703
+ "source": {
5704
+ "type": "git",
5705
+ "url": "https://github.com/wp-cli/scaffold-command.git",
5706
+ "reference": "659348f05ebb47e70d7286b2e989146893a3c588"
5707
+ },
5708
+ "dist": {
5709
+ "type": "zip",
5710
+ "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/659348f05ebb47e70d7286b2e989146893a3c588",
5711
+ "reference": "659348f05ebb47e70d7286b2e989146893a3c588",
5712
+ "shasum": ""
5713
+ },
5714
+ "require-dev": {
5715
+ "behat/behat": "~2.5",
5716
+ "wp-cli/wp-cli": "^1.5"
5717
+ },
5718
+ "type": "wp-cli-package",
5719
+ "extra": {
5720
+ "branch-alias": {
5721
+ "dev-master": "1.x-dev"
5722
+ },
5723
+ "bundled": true,
5724
+ "commands": [
5725
+ "scaffold",
5726
+ "scaffold _s",
5727
+ "scaffold block",
5728
+ "scaffold child-theme",
5729
+ "scaffold plugin",
5730
+ "scaffold plugin-tests",
5731
+ "scaffold post-type",
5732
+ "scaffold taxonomy",
5733
+ "scaffold theme-tests"
5734
+ ]
5735
+ },
5736
+ "autoload": {
5737
+ "psr-4": {
5738
+ "": "src/"
5739
+ },
5740
+ "files": [
5741
+ "scaffold-command.php"
5742
+ ]
5743
+ },
5744
+ "notification-url": "https://packagist.org/downloads/",
5745
+ "license": [
5746
+ "MIT"
5747
+ ],
5748
+ "authors": [
5749
+ {
5750
+ "name": "Daniel Bachhuber",
5751
+ "email": "daniel@runcommand.io",
5752
+ "homepage": "https://runcommand.io"
5753
+ }
5754
+ ],
5755
+ "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.",
5756
+ "homepage": "https://github.com/wp-cli/scaffold-command",
5757
+ "time": "2018-04-20T18:37:18+00:00"
5758
+ },
5759
+ {
5760
+ "name": "wp-cli/search-replace-command",
5761
+ "version": "v1.3.0",
5762
+ "source": {
5763
+ "type": "git",
5764
+ "url": "https://github.com/wp-cli/search-replace-command.git",
5765
+ "reference": "df1092f65a5953dddace5fc060a9155f430a560e"
5766
+ },
5767
+ "dist": {
5768
+ "type": "zip",
5769
+ "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/df1092f65a5953dddace5fc060a9155f430a560e",
5770
+ "reference": "df1092f65a5953dddace5fc060a9155f430a560e",
5771
+ "shasum": ""
5772
+ },
5773
+ "require-dev": {
5774
+ "behat/behat": "~2.5",
5775
+ "wp-cli/wp-cli": "^1.5"
5776
+ },
5777
+ "type": "wp-cli-package",
5778
+ "extra": {
5779
+ "branch-alias": {
5780
+ "dev-master": "1.x-dev"
5781
+ },
5782
+ "bundled": true,
5783
+ "commands": [
5784
+ "search-replace"
5785
+ ]
5786
+ },
5787
+ "autoload": {
5788
+ "psr-4": {
5789
+ "": "src/"
5790
+ },
5791
+ "files": [
5792
+ "search-replace-command.php"
5793
+ ]
5794
+ },
5795
+ "notification-url": "https://packagist.org/downloads/",
5796
+ "license": [
5797
+ "MIT"
5798
+ ],
5799
+ "authors": [
5800
+ {
5801
+ "name": "Daniel Bachhuber",
5802
+ "email": "daniel@runcommand.io",
5803
+ "homepage": "https://runcommand.io"
5804
+ }
5805
+ ],
5806
+ "description": "Searches/replaces strings in the database.",
5807
+ "homepage": "https://github.com/wp-cli/search-replace-command",
5808
+ "time": "2018-04-21T01:30:44+00:00"
5809
+ },
5810
+ {
5811
+ "name": "wp-cli/server-command",
5812
+ "version": "v1.0.9",
5813
+ "source": {
5814
+ "type": "git",
5815
+ "url": "https://github.com/wp-cli/server-command.git",
5816
+ "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a"
5817
+ },
5818
+ "dist": {
5819
+ "type": "zip",
5820
+ "url": "https://api.github.com/repos/wp-cli/server-command/zipball/6192e6d7becd07e4c11a8f1560655c73a3b3526a",
5821
+ "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a",
5822
+ "shasum": ""
5823
+ },
5824
+ "require": {
5825
+ "wp-cli/wp-cli": "*"
5826
+ },
5827
+ "require-dev": {
5828
+ "behat/behat": "~2.5"
5829
+ },
5830
+ "type": "wp-cli-package",
5831
+ "extra": {
5832
+ "branch-alias": {
5833
+ "dev-master": "1.x-dev"
5834
+ },
5835
+ "commands": [
5836
+ "server"
5837
+ ],
5838
+ "bundled": true
5839
+ },
5840
+ "autoload": {
5841
+ "psr-4": {
5842
+ "": "src/"
5843
+ },
5844
+ "files": [
5845
+ "server-command.php"
5846
+ ]
5847
+ },
5848
+ "notification-url": "https://packagist.org/downloads/",
5849
+ "license": [
5850
+ "MIT"
5851
+ ],
5852
+ "authors": [
5853
+ {
5854
+ "name": "Daniel Bachhuber",
5855
+ "email": "daniel@runcommand.io",
5856
+ "homepage": "https://runcommand.io"
5857
+ }
5858
+ ],
5859
+ "description": "Launches PHP's built-in web server for a specific WordPress installation.",
5860
+ "homepage": "https://github.com/wp-cli/server-command",
5861
+ "time": "2017-12-14T20:06:24+00:00"
5862
+ },
5863
+ {
5864
+ "name": "wp-cli/shell-command",
5865
+ "version": "v1.0.5",
5866
+ "source": {
5867
+ "type": "git",
5868
+ "url": "https://github.com/wp-cli/shell-command.git",
5869
+ "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e"
5870
+ },
5871
+ "dist": {
5872
+ "type": "zip",
5873
+ "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/507603a8994d984b6c4d5bd26e31ede6d9cce37e",
5874
+ "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e",
5875
+ "shasum": ""
5876
+ },
5877
+ "require": {
5878
+ "wp-cli/wp-cli": "*"
5879
+ },
5880
+ "require-dev": {
5881
+ "behat/behat": "~2.5"
5882
+ },
5883
+ "type": "wp-cli-package",
5884
+ "extra": {
5885
+ "branch-alias": {
5886
+ "dev-master": "1.x-dev"
5887
+ },
5888
+ "commands": [
5889
+ "shell"
5890
+ ],
5891
+ "bundled": true
5892
+ },
5893
+ "autoload": {
5894
+ "psr-4": {
5895
+ "": "src/",
5896
+ "WP_CLI\\": "src/WP_CLI"
5897
+ },
5898
+ "files": [
5899
+ "shell-command.php"
5900
+ ]
5901
+ },
5902
+ "notification-url": "https://packagist.org/downloads/",
5903
+ "license": [
5904
+ "MIT"
5905
+ ],
5906
+ "authors": [
5907
+ {
5908
+ "name": "Daniel Bachhuber",
5909
+ "email": "daniel@runcommand.io",
5910
+ "homepage": "https://runcommand.io"
5911
+ }
5912
+ ],
5913
+ "description": "Opens an interactive PHP console for running and testing PHP code.",
5914
+ "homepage": "https://github.com/wp-cli/shell-command",
5915
+ "time": "2017-12-08T16:03:53+00:00"
5916
+ },
5917
+ {
5918
+ "name": "wp-cli/super-admin-command",
5919
+ "version": "v1.0.6",
5920
+ "source": {
5921
+ "type": "git",
5922
+ "url": "https://github.com/wp-cli/super-admin-command.git",
5923
+ "reference": "2982d2e6514dbb318561d72d0577746a3a37181e"
5924
+ },
5925
+ "dist": {
5926
+ "type": "zip",
5927
+ "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/2982d2e6514dbb318561d72d0577746a3a37181e",
5928
+ "reference": "2982d2e6514dbb318561d72d0577746a3a37181e",
5929
+ "shasum": ""
5930
+ },
5931
+ "require-dev": {
5932
+ "behat/behat": "~2.5",
5933
+ "wp-cli/wp-cli": "*"
5934
+ },
5935
+ "type": "wp-cli-package",
5936
+ "extra": {
5937
+ "branch-alias": {
5938
+ "dev-master": "1.x-dev"
5939
+ },
5940
+ "commands": [
5941
+ "super-admin",
5942
+ "super-admin add",
5943
+ "super-admin list",
5944
+ "super-admin remove"
5945
+ ],
5946
+ "bundled": true
5947
+ },
5948
+ "autoload": {
5949
+ "psr-4": {
5950
+ "": "src/"
5951
+ },
5952
+ "files": [
5953
+ "super-admin-command.php"
5954
+ ]
5955
+ },
5956
+ "notification-url": "https://packagist.org/downloads/",
5957
+ "license": [
5958
+ "MIT"
5959
+ ],
5960
+ "authors": [
5961
+ {
5962
+ "name": "Daniel Bachhuber",
5963
+ "email": "daniel@runcommand.io",
5964
+ "homepage": "https://runcommand.io"
5965
+ }
5966
+ ],
5967
+ "description": "Lists, adds, or removes super admin users on a multisite installation.",
5968
+ "homepage": "https://github.com/wp-cli/super-admin-command",
5969
+ "time": "2017-12-08T17:43:53+00:00"
5970
+ },
5971
+ {
5972
+ "name": "wp-cli/widget-command",
5973
+ "version": "v1.0.5",
5974
+ "source": {
5975
+ "type": "git",
5976
+ "url": "https://github.com/wp-cli/widget-command.git",
5977
+ "reference": "657e0f77d80c892f8f72f90a3a25112c254386df"
5978
+ },
5979
+ "dist": {
5980
+ "type": "zip",
5981
+ "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/657e0f77d80c892f8f72f90a3a25112c254386df",
5982
+ "reference": "657e0f77d80c892f8f72f90a3a25112c254386df",
5983
+ "shasum": ""
5984
+ },
5985
+ "require-dev": {
5986
+ "behat/behat": "~2.5",
5987
+ "wp-cli/wp-cli": "*"
5988
+ },
5989
+ "type": "wp-cli-package",
5990
+ "extra": {
5991
+ "branch-alias": {
5992
+ "dev-master": "1.x-dev"
5993
+ },
5994
+ "commands": [
5995
+ "widget",
5996
+ "widget add",
5997
+ "widget deactivate",
5998
+ "widget delete",
5999
+ "widget list",
6000
+ "widget move",
6001
+ "widget reset",
6002
+ "widget update",
6003
+ "sidebar",
6004
+ "sidebar list"
6005
+ ],
6006
+ "bundled": true
6007
+ },
6008
+ "autoload": {
6009
+ "psr-4": {
6010
+ "": "src/"
6011
+ },
6012
+ "files": [
6013
+ "widget-command.php"
6014
+ ]
6015
+ },
6016
+ "notification-url": "https://packagist.org/downloads/",
6017
+ "license": [
6018
+ "MIT"
6019
+ ],
6020
+ "authors": [
6021
+ {
6022
+ "name": "Daniel Bachhuber",
6023
+ "email": "daniel@runcommand.io",
6024
+ "homepage": "https://runcommand.io"
6025
+ }
6026
+ ],
6027
+ "description": "Adds, moves, and removes widgets; lists sidebars.",
6028
+ "homepage": "https://github.com/wp-cli/widget-command",
6029
+ "time": "2017-12-08T17:45:57+00:00"
6030
+ },
6031
+ {
6032
+ "name": "wp-cli/wp-cli",
6033
+ "version": "v1.5.1",
6034
+ "source": {
6035
+ "type": "git",
6036
+ "url": "https://github.com/wp-cli/wp-cli.git",
6037
+ "reference": "76ee045996169a50b3466dac518e38cdf24109a7"
6038
+ },
6039
+ "dist": {
6040
+ "type": "zip",
6041
+ "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/76ee045996169a50b3466dac518e38cdf24109a7",
6042
+ "reference": "76ee045996169a50b3466dac518e38cdf24109a7",
6043
+ "shasum": ""
6044
+ },
6045
+ "require": {
6046
+ "composer/composer": "^1.2.0",
6047
+ "composer/semver": "~1.0",
6048
+ "justinrainbow/json-schema": "~5.2.5",
6049
+ "mustache/mustache": "~2.4",
6050
+ "php": ">=5.3.29",
6051
+ "ramsey/array_column": "~1.1",
6052
+ "rmccue/requests": "~1.6",
6053
+ "symfony/config": "^2.7|^3.0",
6054
+ "symfony/console": "^2.7|^3.0",
6055
+ "symfony/debug": "^2.7|^3.0",
6056
+ "symfony/dependency-injection": "^2.7|^3.0",
6057
+ "symfony/event-dispatcher": "^2.7|^3.0",
6058
+ "symfony/filesystem": "^2.7|^3.0",
6059
+ "symfony/finder": "^2.7|^3.0",
6060
+ "symfony/process": "^2.1|^3.0",
6061
+ "symfony/translation": "^2.7|^3.0",
6062
+ "symfony/yaml": "^2.7|^3.0",
6063
+ "wp-cli/autoload-splitter": "^0.1.5",
6064
+ "wp-cli/cache-command": "^1.0",
6065
+ "wp-cli/checksum-command": "^1.0",
6066
+ "wp-cli/config-command": "^1.0",
6067
+ "wp-cli/core-command": "^1.0",
6068
+ "wp-cli/cron-command": "^1.0",
6069
+ "wp-cli/db-command": "^1.0",
6070
+ "wp-cli/embed-command": "^1.0",
6071
+ "wp-cli/entity-command": "^1.0",
6072
+ "wp-cli/eval-command": "^1.0",
6073
+ "wp-cli/export-command": "^1.0",
6074
+ "wp-cli/extension-command": "^1.0",
6075
+ "wp-cli/import-command": "^1.0",
6076
+ "wp-cli/language-command": "^1.0",
6077
+ "wp-cli/media-command": "^1.0",
6078
+ "wp-cli/mustangostang-spyc": "^0.6.3",
6079
+ "wp-cli/package-command": "^1.0",
6080
+ "wp-cli/php-cli-tools": "~0.11.2",
6081
+ "wp-cli/rewrite-command": "^1.0",
6082
+ "wp-cli/role-command": "^1.0",
6083
+ "wp-cli/scaffold-command": "^1.0",
6084
+ "wp-cli/search-replace-command": "^1.0",
6085
+ "wp-cli/server-command": "^1.0",
6086
+ "wp-cli/shell-command": "^1.0",
6087
+ "wp-cli/super-admin-command": "^1.0",
6088
+ "wp-cli/widget-command": "^1.0"
6089
+ },
6090
+ "require-dev": {
6091
+ "behat/behat": "2.5.*",
6092
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3",
6093
+ "phpunit/phpunit": "3.7.*",
6094
+ "roave/security-advisories": "dev-master",
6095
+ "wimg/php-compatibility": "^8.0",
6096
+ "wp-coding-standards/wpcs": "^0.13.1"
6097
+ },
6098
+ "suggest": {
6099
+ "psy/psysh": "Enhanced `wp shell` functionality"
6100
+ },
6101
+ "bin": [
6102
+ "bin/wp.bat",
6103
+ "bin/wp"
6104
+ ],
6105
+ "type": "library",
6106
+ "extra": {
6107
+ "branch-alias": {
6108
+ "dev-master": "1.5.x-dev"
6109
+ },
6110
+ "autoload-splitter": {
6111
+ "splitter-logic": "WP_CLI\\AutoloadSplitter",
6112
+ "splitter-location": "php/WP_CLI/AutoloadSplitter.php",
6113
+ "split-target-prefix-true": "autoload_commands",
6114
+ "split-target-prefix-false": "autoload_framework"
6115
+ }
6116
+ },
6117
+ "autoload": {
6118
+ "psr-0": {
6119
+ "WP_CLI": "php"
6120
+ },
6121
+ "psr-4": {
6122
+ "": "php/commands/src"
6123
+ }
6124
+ },
6125
+ "notification-url": "https://packagist.org/downloads/",
6126
+ "license": [
6127
+ "MIT"
6128
+ ],
6129
+ "description": "The command line interface for WordPress",
6130
+ "homepage": "https://wp-cli.org",
6131
+ "keywords": [
6132
+ "cli",
6133
+ "wordpress"
6134
+ ],
6135
+ "time": "2018-04-14T14:35:48+00:00"
6136
+ },
6137
+ {
6138
+ "name": "wp-cli/wp-config-transformer",
6139
+ "version": "v1.2.1",
6140
+ "source": {
6141
+ "type": "git",
6142
+ "url": "https://github.com/wp-cli/wp-config-transformer.git",
6143
+ "reference": "6ce0a9fae09d53145c9c9c79486a69684598488d"
6144
+ },
6145
+ "dist": {
6146
+ "type": "zip",
6147
+ "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/6ce0a9fae09d53145c9c9c79486a69684598488d",
6148
+ "reference": "6ce0a9fae09d53145c9c9c79486a69684598488d",
6149
+ "shasum": ""
6150
+ },
6151
+ "require": {
6152
+ "php": ">=5.3.29"
6153
+ },
6154
+ "require-dev": {
6155
+ "composer/composer": "^1.5.6",
6156
+ "phpunit/phpunit": "^6.5.5",
6157
+ "wp-coding-standards/wpcs": "^0.14.0"
6158
+ },
6159
+ "type": "library",
6160
+ "autoload": {
6161
+ "files": [
6162
+ "src/WPConfigTransformer.php"
6163
+ ]
6164
+ },
6165
+ "notification-url": "https://packagist.org/downloads/",
6166
+ "license": [
6167
+ "MIT"
6168
+ ],
6169
+ "authors": [
6170
+ {
6171
+ "name": "Frankie Jarrett",
6172
+ "email": "fjarrett@gmail.com"
6173
+ }
6174
+ ],
6175
+ "description": "Programmatically edit a wp-config.php file.",
6176
+ "time": "2018-03-20T16:19:27+00:00"
6177
+ },
6178
+ {
6179
+ "name": "xamin/handlebars.php",
6180
+ "version": "v0.10.4",
6181
+ "source": {
6182
+ "type": "git",
6183
+ "url": "https://github.com/XaminProject/handlebars.php.git",
6184
+ "reference": "b85cee07eae96db0e1eec224ca90f5ce1e4d857a"
6185
+ },
6186
+ "dist": {
6187
+ "type": "zip",
6188
+ "url": "https://api.github.com/repos/XaminProject/handlebars.php/zipball/b85cee07eae96db0e1eec224ca90f5ce1e4d857a",
6189
+ "reference": "b85cee07eae96db0e1eec224ca90f5ce1e4d857a",
6190
+ "shasum": ""
6191
+ },
6192
+ "require-dev": {
6193
+ "phpunit/phpunit": "~4.4",
6194
+ "squizlabs/php_codesniffer": "~1.5"
6195
+ },
6196
+ "type": "library",
6197
+ "autoload": {
6198
+ "psr-0": {
6199
+ "Handlebars": "src/"
6200
+ }
6201
+ },
6202
+ "notification-url": "https://packagist.org/downloads/",
6203
+ "license": [
6204
+ "MIT"
6205
+ ],
6206
+ "authors": [
6207
+ {
6208
+ "name": "fzerorubigd",
6209
+ "email": "fzerorubigd@gmail.com"
6210
+ },
6211
+ {
6212
+ "name": "Behrooz Shabani (everplays)",
6213
+ "email": "everplays@gmail.com"
6214
+ }
6215
+ ],
6216
+ "description": "Handlebars processor for php",
6217
+ "homepage": "https://github.com/XaminProject/handlebars.php",
6218
+ "time": "2016-12-12T13:51:02+00:00"
6219
+ }
6220
+ ],
6221
+ "aliases": [],
6222
+ "minimum-stability": "stable",
6223
+ "stability-flags": [],
6224
+ "prefer-stable": false,
6225
+ "prefer-lowest": false,
6226
+ "platform": [],
6227
+ "platform-dev": []
6228
+ }
languages/menu-image-fr_FR.mo ADDED
Binary file
languages/menu-image-fr_FR.po ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Menu Image\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2014-05-17 16:56+0300\n"
6
+ "PO-Revision-Date: 2015-06-23 19:51+0100\n"
7
+ "Last-Translator: Alex Davyskiba <sanya.davyskiba@gmail.com>\n"
8
+ "Language-Team: MakeYouLiveBetter <team@makeyoulivebetter.org.ua>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "X-Generator: Poedit 1.7.3\n"
15
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
16
+ "Language: fr_FR\n"
17
+ "X-Poedit-SearchPath-0: ..\n"
18
+
19
+ #: ../menu-image.php:83
20
+ msgid "Image"
21
+ msgstr "Image"
22
+
23
+ #: ../menu-image.php:211
24
+ msgid "Chose menu image"
25
+ msgstr "Choisir une image de menu"
26
+
27
+ #: ../menu-image.php:252
28
+ msgid "Menu image"
29
+ msgstr "Image de menu"
30
+
31
+ #: ../menu-image.php:253
32
+ msgid "Change menu item image"
33
+ msgstr "Changer l'image"
34
+
35
+ #: ../menu-image.php:253
36
+ msgid "Set menu item image"
37
+ msgstr "Choisir une image"
38
+
39
+ #: ../menu-image.php:256
40
+ msgid "Set image"
41
+ msgstr "Choisir une image"
42
+
43
+ #: ../menu-image.php:257 ../menu-image.php:267 ../menu-image.php:541
44
+ msgid "Remove"
45
+ msgstr "Retirer"
46
+
47
+ #: ../menu-image.php:262
48
+ msgid "Image on hover"
49
+ msgstr "Image au survol"
50
+
51
+ #: ../menu-image.php:263
52
+ msgid "Change menu item image on hover"
53
+ msgstr "Changer l'image au survol"
54
+
55
+ #: ../menu-image.php:263
56
+ msgid "Set menu item image on hover"
57
+ msgstr "Choisir l'image au survol"
58
+
59
+ #: ../menu-image.php:266
60
+ msgid "Set image on hover"
61
+ msgstr "Choisir l'image au survol"
62
+
63
+ #: ../menu-image.php:279
64
+ msgid "Image size"
65
+ msgstr "Taille de l'image"
66
+
67
+ #: ../menu-image.php:294
68
+ msgid "Title position"
69
+ msgstr "Position du titre"
70
+
71
+ #: ../menu-image.php:297
72
+ msgid "Before"
73
+ msgstr "Avant"
74
+
75
+ #: ../menu-image.php:298
76
+ msgid "Hide"
77
+ msgstr "Cacher"
78
+
79
+ #: ../menu-image.php:299
80
+ msgid "After"
81
+ msgstr "Après"
menu-image-admin.js CHANGED
@@ -8,7 +8,7 @@
8
  is_hover: is_hover ? 1 : 0,
9
  _wpnonce: menuImage.settings.nonce
10
  }).done( function( html ) {
11
- $('.field-image', '#menu-item-' + item_id).html( html );
12
  });
13
  };
14
 
@@ -36,4 +36,4 @@
36
  menuImageUpdate( item_id, -1, $(this).hasClass('hover-image') );
37
  });
38
  });
39
- })(jQuery);
8
  is_hover: is_hover ? 1 : 0,
9
  _wpnonce: menuImage.settings.nonce
10
  }).done( function( html ) {
11
+ $('.menu-item-images', '#menu-item-' + item_id).html( html );
12
  });
13
  };
14
 
36
  menuImageUpdate( item_id, -1, $(this).hasClass('hover-image') );
37
  });
38
  });
39
+ })(jQuery);
menu-image.css CHANGED
@@ -3,6 +3,7 @@
3
  box-shadow: none;
4
  vertical-align: middle;
5
  width: auto;
 
6
  }
7
  .menu-item a.menu-image-hovered img.hovered-image,
8
  .menu-item a.menu-image-hovered:hover img.menu-image {
@@ -19,4 +20,23 @@
19
  .menu-item a.menu-image-title-before.menu-image-not-hovered img,
20
  .menu-item a.menu-image-hovered.menu-image-title-before .menu-image-hover-wrapper {
21
  padding-left: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  }
3
  box-shadow: none;
4
  vertical-align: middle;
5
  width: auto;
6
+ display: inline;
7
  }
8
  .menu-item a.menu-image-hovered img.hovered-image,
9
  .menu-item a.menu-image-hovered:hover img.menu-image {
20
  .menu-item a.menu-image-title-before.menu-image-not-hovered img,
21
  .menu-item a.menu-image-hovered.menu-image-title-before .menu-image-hover-wrapper {
22
  padding-left: 10px;
23
+ }
24
+ .menu-item a.menu-image-title-above,
25
+ .menu-item a.menu-image-title-below {
26
+ text-align: center;
27
+ }
28
+ .menu-item a.menu-image-title-above.menu-image-not-hovered img,
29
+ .menu-item a.menu-image-hovered.menu-image-title-above .menu-image-hover-wrapper {
30
+ display: block;
31
+ padding-top: 10px;
32
+ margin: 0 auto !important;
33
+ }
34
+ .menu-item a.menu-image-title-below.menu-image-not-hovered img,
35
+ .menu-item a.menu-image-hovered.menu-image-title-below .menu-image-hover-wrapper {
36
+ display: block;
37
+ padding-bottom: 10px;
38
+ margin: 0 auto !important;
39
+ }
40
+ .menu-item a.menu-image-title-hide .menu-image-title {
41
+ display: none;
42
  }
menu-image.php CHANGED
@@ -1,16 +1,16 @@
1
  <?php
2
  /**
3
  * @package Menu_Image
4
- * @version 2.4
5
  * @licence GPLv2
6
  */
7
 
8
  /*
9
  Plugin Name: Menu Image
10
- Plugin URI: http://html-and-cms.com/plugins/menu-image/
11
  Description: Provide uploading images to menu item
12
  Author: Alex Davyskiba aka Zviryatko
13
- Version: 2.4
14
  Author URI: http://makeyoulivebetter.org.ua/
15
  */
16
 
@@ -36,11 +36,18 @@ Author URI: http://makeyoulivebetter.org.ua/
36
  * @package Menu_Image
37
  */
38
  class Menu_Image_Plugin {
 
 
 
 
 
 
39
  protected $image_sizes = array(
40
  'menu-24x24' => array( 24, 24, false ),
41
  'menu-36x36' => array( 36, 36, false ),
42
  'menu-48x48' => array( 48, 48, false ),
43
  );
 
44
  /**
45
  * List of used attachment ids grouped by size.
46
  *
@@ -49,18 +56,25 @@ class Menu_Image_Plugin {
49
  * @var array
50
  */
51
  private $used_attachments = array();
 
52
  /**
 
 
53
  * @var array
54
  */
55
- private $additionalDisplayableImageExtensions = array('ico');
56
 
 
 
 
57
  public function __construct() {
58
  add_action( 'init', array( $this, 'menu_image_init' ) );
59
  add_filter( 'manage_nav-menus_columns', array( $this, 'menu_image_nav_menu_manage_columns' ), 11 );
60
  add_action( 'save_post_nav_menu_item', array( $this, 'menu_image_save_post_action' ), 10, 3 );
61
  add_action( 'admin_head-nav-menus.php', array( $this, 'menu_image_admin_head_nav_menus_action' ) );
62
  add_filter( 'wp_setup_nav_menu_item', array( $this, 'menu_image_wp_setup_nav_menu_item' ) );
63
- add_filter( 'walker_nav_menu_start_el', array( $this, 'menu_image_nav_menu_item_filter' ), 10, 4 );
 
64
  add_action( 'wp_enqueue_scripts', array( $this, 'menu_image_add_inline_style_action' ) );
65
  add_action( 'admin_action_delete-menu-item-image', array( $this, 'menu_image_delete_menu_item_image_action' ) );
66
  add_action( 'wp_ajax_set-menu-item-thumbnail', array( $this, 'wp_ajax_set_menu_item_thumbnail' ) );
@@ -70,6 +84,7 @@ class Menu_Image_Plugin {
70
  add_action( 'wp_update_nav_menu_item', array( $this, 'wp_update_nav_menu_item_action' ), 10, 2 );
71
  add_action( 'admin_init', array( $this, 'admin_init' ), 99 );
72
  add_filter( 'jetpack_photon_override_image_downsize', array( $this, 'jetpack_photon_override_image_downsize_filter' ), 10, 2 );
 
73
  }
74
 
75
  /**
@@ -77,24 +92,28 @@ class Menu_Image_Plugin {
77
  */
78
  public function admin_init() {
79
  // Add custom field for menu edit walker
80
- if (!has_action('wp_nav_menu_item_custom_fields')) {
81
  add_filter( 'wp_edit_nav_menu_walker', array( $this, 'menu_image_edit_nav_menu_walker_filter' ) );
82
  }
83
- add_action( 'wp_nav_menu_item_custom_fields', array( $this, 'menu_item_custom_fields' ), 10, 1 );
84
  }
85
 
86
- /**
87
- * Filter adds additional validation for image type
88
- *
89
- * @param bool $result
90
- * @param string $path
91
- * @return bool
92
- */
93
- public function file_is_displayable_image($result, $path) {
94
- if ($result) { return true; }
95
- $fileExtension = pathinfo($path, PATHINFO_EXTENSION);
96
- return in_array($fileExtension, $this->additionalDisplayableImageExtensions);
97
- }
 
 
 
 
98
 
99
  /**
100
  * Initialization action.
@@ -106,10 +125,12 @@ class Menu_Image_Plugin {
106
  add_post_type_support( 'nav_menu_item', array( 'thumbnail' ) );
107
 
108
  $this->image_sizes = apply_filters( 'menu_image_default_sizes', $this->image_sizes );
109
- foreach ( $this->image_sizes as $name => $params ) {
110
- add_image_size( $name, $params[0], $params[1], $params[2] );
 
 
111
  }
112
- load_plugin_textdomain('menu-image', false, basename( dirname( __FILE__ ) ) . '/languages' );
113
  }
114
 
115
  /**
@@ -117,7 +138,8 @@ class Menu_Image_Plugin {
117
  *
118
  * If not checked screen option 'image', uploading form not showed.
119
  *
120
- * @param $columns
 
121
  * @return array
122
  */
123
  public function menu_image_nav_menu_manage_columns( $columns ) {
@@ -129,8 +151,8 @@ class Menu_Image_Plugin {
129
  *
130
  * Saving uploaded images and attach/detach to image post type.
131
  *
132
- * @param $post_id
133
- * @param $post
134
  */
135
  public function menu_image_save_post_action( $post_id, $post ) {
136
  $menu_image_settings = array(
@@ -138,9 +160,9 @@ class Menu_Image_Plugin {
138
  'menu_item_image_title_position'
139
  );
140
  foreach ( $menu_image_settings as $setting_name ) {
141
- if ( isset( $_POST[$setting_name][$post_id] ) && !empty( $_POST[$setting_name][$post_id] ) ) {
142
- if ($post->{"_$setting_name"} != $_POST[$setting_name][$post_id]) {
143
- update_post_meta( $post_id, "_$setting_name", esc_sql( $_POST[$setting_name][$post_id] ) );
144
  }
145
  }
146
  }
@@ -165,7 +187,7 @@ class Menu_Image_Plugin {
165
 
166
  // iterate synchronized menus
167
  foreach ( $icl_menus_sync->menus as $menu_id => $menu_data ) {
168
- if ( !isset( $_POST['sync']['add'][$menu_id] ) ) {
169
  continue;
170
  }
171
 
@@ -175,32 +197,32 @@ class Menu_Image_Plugin {
175
  wp_cache_delete( $cache_key, $cache_group );
176
  $lang = $sitepress->get_language_for_element( $item_menu_id, 'tax_nav_menu' );
177
 
178
- if ( !isset( $run_times[$menu_id][$lang] ) ) {
179
- $run_times[$menu_id][$lang] = 0;
180
  }
181
 
182
  // Count static var for each menu id and saved item language
183
  // and get original item id from counted position of synchronized
184
  // items from POST data. That's all magic.
185
  $post_item_ids = array();
186
- foreach ($_POST['sync']['add'][$menu_id] as $id => $lang_array) {
187
- if (array_key_exists($lang, $lang_array)) {
188
- $post_item_ids[] = $id;
189
  }
190
  }
191
- if ( !array_key_exists( $run_times[$menu_id][$lang], $post_item_ids ) ) {
192
  continue;
193
  }
194
- $orig_item_id = $post_item_ids[$run_times[$menu_id][$lang]];
195
 
196
  // iterate all item settings and save it for new item
197
  $orig_item_meta = get_metadata( 'post', $orig_item_id );
198
  foreach ( $menu_image_settings as $meta ) {
199
- if ( isset( $orig_item_meta["_$meta"] ) && isset( $orig_item_meta["_$meta"][0] ) ) {
200
- update_post_meta( $menu_item_db_id, "_$meta", $orig_item_meta["_$meta"][0] );
201
  }
202
  }
203
- $run_times[$menu_id][$lang]++;
204
  break;
205
  }
206
  }
@@ -237,59 +259,88 @@ class Menu_Image_Plugin {
237
  return $item;
238
  }
239
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
  /**
241
  * Replacement default menu item output.
242
  *
243
- * @param string $item_output Default item output
244
- * @param object $item Menu item data object.
245
- * @param int $depth Depth of menu item. Used for padding.
246
  * @param object $args
 
247
  * @return string
248
  */
249
- public function menu_image_nav_menu_item_filter( $item_output, $item, $depth, $args ) {
250
- $attributes = !empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) . '"' : '';
251
- $attributes .= !empty( $item->target ) ? ' target="' . esc_attr( $item->target ) . '"' : '';
252
- $attributes .= !empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) . '"' : '';
253
- $attributes .= !empty( $item->url ) ? ' href="' . esc_attr( $item->url ) . '"' : '';
254
-
255
  $image_size = $item->image_size ? $item->image_size : apply_filters( 'menu_image_default_size', 'menu-36x36' );
256
  $position = $item->title_position ? $item->title_position : apply_filters( 'menu_image_default_title_position', 'after' );
257
  $class = "menu-image-title-{$position}";
258
- $this->setUsedAttachments($image_size, $item->thumbnail_id);
 
259
  if ( $item->thumbnail_hover_id ) {
260
- $this->setUsedAttachments($image_size, $item->thumbnail_hover_id);
261
  $hover_image_src = wp_get_attachment_image_src( $item->thumbnail_hover_id, $image_size );
262
- $margin_size = $hover_image_src[1];
263
- $image = "<span class='menu-image-hover-wrapper'>";
264
  $image .= wp_get_attachment_image( $item->thumbnail_id, $image_size, false, "class=menu-image {$class}" );
265
- $image .= wp_get_attachment_image( $item->thumbnail_hover_id, $image_size, false, array(
266
- 'class' => "hovered-image {$class}",
267
- 'style' => "margin-left: -{$margin_size}px;",
268
- ));
 
 
269
  $image .= '</span>';;
270
- $class .= ' menu-image-hovered';
271
- } else {
272
  $image = wp_get_attachment_image( $item->thumbnail_id, $image_size, false, "class=menu-image {$class}" );
273
- $class .= ' menu-image-not-hovered';
274
  }
275
-
276
- $item_output = "{$args->before}<a{$attributes} class='{$class}'>";
277
- $link = $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
278
  switch ( $position ) {
279
  case 'hide':
280
- $item_output .= $image;
281
- break;
282
  case 'before':
283
- $item_output .= $link . $image;
 
284
  break;
285
  case 'after':
286
  default:
287
- $item_output .= $image . $link;
288
  break;
289
  }
290
- $item_output .= "</a>{$args->after}";
291
 
292
- return $item_output;
293
  }
294
 
295
  /**
@@ -308,18 +359,20 @@ class Menu_Image_Plugin {
308
  * @since 2.0
309
  */
310
  public function menu_image_admin_head_nav_menus_action() {
311
- wp_enqueue_script('menu-image-admin', plugins_url( 'menu-image-admin.js' , __FILE__ ), array('jquery'));
312
- wp_localize_script('menu-image-admin', 'menuImage', array(
313
- 'l10n' => array(
314
- 'uploaderTitle' => __( 'Chose menu image', 'menu-image' ),
315
- 'uploaderButtonText' => __( 'Select', 'menu-image' ),
316
- ),
317
- 'settings' => array(
318
- 'nonce' => wp_create_nonce( 'update-menu-item' ),
319
- ),
320
- ));
 
 
321
  wp_enqueue_media();
322
- wp_enqueue_style('editor-buttons');
323
  }
324
 
325
  /**
@@ -327,32 +380,34 @@ class Menu_Image_Plugin {
327
  */
328
  public function menu_image_delete_menu_item_image_action() {
329
 
330
- $menu_item_id = (int) $_REQUEST['menu-item'];
331
 
332
  check_admin_referer( 'delete-menu_item_image_' . $menu_item_id );
333
 
334
  if ( is_nav_menu_item( $menu_item_id ) && has_post_thumbnail( $menu_item_id ) ) {
335
  delete_post_thumbnail( $menu_item_id );
336
- delete_post_meta( $menu_item_id, '_thumbnail_hover_id');
337
- delete_post_meta( $menu_item_id, '_menu_item_image_size');
338
- delete_post_meta( $menu_item_id, '_menu_item_image_title_position');
339
  }
340
  }
341
 
342
  /**
343
- * Output HTML for the menu item images section.
344
  *
345
  * @since 2.0
346
  *
347
  * @param int $item_id The post ID or object associated with the thumbnail, defaults to global $post.
 
348
  * @return string html
349
  */
350
- public function wp_post_thumbnail_html( $item_id ) {
351
- $default_size = apply_filters( 'menu_image_default_size', 'menu-36x36' );;
352
  $markup = '<p class="description description-thin" ><label>%s<br /><a title="%s" href="#" class="set-post-thumbnail button%s" data-item-id="%s" style="height: auto;">%s</a>%s</label></p>';
353
 
354
  $thumbnail_id = get_post_thumbnail_id( $item_id );
355
- $content = sprintf( $markup,
 
356
  esc_html__( 'Menu image', 'menu-image' ),
357
  $thumbnail_id ? esc_attr__( 'Change menu item image', 'menu-image' ) : esc_attr__( 'Set menu item image', 'menu-image' ),
358
  '',
@@ -362,7 +417,8 @@ class Menu_Image_Plugin {
362
  );
363
 
364
  $hover_id = get_post_meta( $item_id, '_thumbnail_hover_id', true );
365
- $content .= sprintf( $markup,
 
366
  esc_html__( 'Image on hover', 'menu-image' ),
367
  $hover_id ? esc_attr__( 'Change menu item image on hover', 'menu-image' ) : esc_attr__( 'Set menu item image on hover', 'menu-image' ),
368
  ' hover-image',
@@ -371,46 +427,72 @@ class Menu_Image_Plugin {
371
  $hover_id ? '<a href="#" class="remove-post-thumbnail hover-image">' . __( 'Remove', 'menu-image' ) . '</a>' : ''
372
  );
373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  $image_size = get_post_meta( $item_id, '_menu_item_image_size', true );
375
- if (!$image_size) $image_size = $default_size;
 
 
376
  $title_position = get_post_meta( $item_id, '_menu_item_image_title_position', true );
377
- if (!$title_position) $title_position = apply_filters( 'menu_image_default_title_position', 'after' );
 
 
378
 
379
  ob_start(); ?>
380
 
381
  <div class="menu-item-image-options">
382
- <p class="description description-thin">
383
- <label for="edit-menu-item-image-size-<?php echo $item_id; ?>"><?php _e( 'Image size', 'menu-image' ); ?><br/>
 
384
  <select id="edit-menu-item-image-size-<?php echo $item_id; ?>"
385
- class="widefat edit-menu-item-image-size"
386
- name="menu_item_image_size[<?php echo $item_id; ?>]">
 
387
  <?php foreach ( get_intermediate_image_sizes() as $size ) :
388
- printf("<option value='%s'%s>%s</option>\n",
389
- esc_attr($size),
 
390
  $image_size == $size ? ' selected="selected"' : '',
391
- ucfirst($size)
392
  ); ?>
393
  <?php endforeach; ?>
394
  </select>
395
  </label>
396
  </p>
397
- <p class="description description-thin">
398
- <label><?php _e( 'Title position', 'menu-image' ); ?></label><br/>
399
- <?php
400
- $positions = array(
401
- 'before' => __( 'Before', 'menu-image' ),
402
- 'hide' => __( 'Hide', 'menu-image' ),
403
- 'after' => __( 'After', 'menu-image' ),
 
 
 
 
 
 
 
 
 
 
 
404
  );
405
- foreach ( $positions as $position => $label) :
406
- printf("<label><input type='radio' name='menu_item_image_title_position[%s]' value='%s'%s/> %s</label>%s",
407
- $item_id,
408
- esc_attr($position),
409
- $title_position == $position ? ' checked="checked"' : '',
410
- $label,
411
- $position != 'after' ? ' | ' : ''
412
- );
413
- endforeach; ?>
414
 
415
  </p>
416
  </div>
@@ -424,7 +506,7 @@ class Menu_Image_Plugin {
424
  * @since 2.0
425
  *
426
  * @param string $content Admin menu item images HTML markup.
427
- * @param int $item_id Post ID.
428
  */
429
  return apply_filters( 'admin_menu_item_thumbnail_html', $content, $item_id );
430
  }
@@ -435,14 +517,15 @@ class Menu_Image_Plugin {
435
  * @since 2.0
436
  */
437
  public function wp_ajax_set_menu_item_thumbnail() {
438
- $json = ! empty( $_REQUEST['json'] );
439
 
440
- $post_ID = intval( $_POST['post_id'] );
441
- if ( ! current_user_can( 'edit_post', $post_ID ) )
442
- wp_die( -1 );
 
443
 
444
- $thumbnail_id = intval( $_POST['thumbnail_id'] );
445
- $is_hovered = (bool) $_POST['is_hover'];
446
 
447
  check_ajax_referer( "update-menu-item" );
448
 
@@ -454,14 +537,14 @@ class Menu_Image_Plugin {
454
  }
455
  } else {
456
  if ( $is_hovered ) {
457
- $success = update_post_meta( $post_ID, '_thumbnail_hover_id', $thumbnail_id);
458
  } else {
459
  $success = set_post_thumbnail( $post_ID, $thumbnail_id );
460
  }
461
  }
462
 
463
- if ($success) {
464
- $return = $this->wp_post_thumbnail_html( $post_ID );
465
  $json ? wp_send_json_success( $return ) : wp_die( $return );
466
  }
467
 
@@ -469,11 +552,23 @@ class Menu_Image_Plugin {
469
  }
470
 
471
  /**
472
- * Add custom fields to menu item as suggest to http://shazdeh.me/2014/06/25/custom-fields-nav-menu-items/
 
 
 
 
 
 
 
 
473
  */
474
- public function menu_item_custom_fields( $item_id ) { ?>
 
 
 
 
475
  <div class="field-image hide-if-no-js wp-media-buttons">
476
- <?php echo $this->wp_post_thumbnail_html( $item_id) ?>
477
  </div>
478
  <?php
479
  }
@@ -487,7 +582,7 @@ class Menu_Image_Plugin {
487
  * @return bool
488
  */
489
  public function jetpack_photon_override_image_downsize_filter( $prevent, $data ) {
490
- return $this->isAttachmentUsed( $data['size'], $data['attachment_id'] );
491
  }
492
 
493
  /**
@@ -497,28 +592,58 @@ class Menu_Image_Plugin {
497
  * @param int $id
498
  */
499
  public function setUsedAttachments( $size, $id ) {
500
- $this->used_attachments[$size][] = $id;
501
  }
502
 
503
  /**
504
  * Check if attachment is used in menu items.
505
  *
506
- * @param string $size
507
  * @param int $id
 
508
  *
509
  * @return bool
510
  */
511
- public function isAttachmentUsed( $size, $id ) {
512
- return isset( $this->used_attachments[$size] ) && in_array( $id, $this->used_attachments[$size] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
513
  }
514
  }
515
 
516
  $menu_image = new Menu_Image_Plugin();
517
 
518
  require_once(ABSPATH . 'wp-admin/includes/nav-menu.php');
 
519
  class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
520
 
521
- function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
522
  global $_wp_nav_menu_max_depth;
523
  $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
524
 
@@ -533,7 +658,7 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
533
  '_wpnonce',
534
  );
535
 
536
- $original_title = '';
537
  if ( 'taxonomy' == $item->type ) {
538
  $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
539
  if ( is_wp_error( $original_title ) )
@@ -541,6 +666,11 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
541
  } elseif ( 'post_type' == $item->type ) {
542
  $original_object = get_post( $item->object_id );
543
  $original_title = get_the_title( $original_object->ID );
 
 
 
 
 
544
  }
545
 
546
  $classes = array(
@@ -569,8 +699,8 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
569
 
570
  ?>
571
  <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
572
- <dl class="menu-item-bar">
573
- <dt class="menu-item-handle">
574
  <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
575
  <span class="item-controls">
576
  <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
@@ -586,7 +716,7 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
586
  ),
587
  'move-menu_item'
588
  );
589
- ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">&#8593;</abbr></a>
590
  |
591
  <a href="<?php
592
  echo wp_nonce_url(
@@ -599,17 +729,17 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
599
  ),
600
  'move-menu_item'
601
  );
602
- ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">&#8595;</abbr></a>
603
  </span>
604
- <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php
605
  echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
606
- ?>"><?php _e( 'Edit Menu Item' ); ?></a>
607
  </span>
608
- </dt>
609
- </dl>
610
 
611
- <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
612
- <?php if( 'custom' == $item->type ) : ?>
613
  <p class="field-url description description-wide">
614
  <label for="edit-menu-item-url-<?php echo $item_id; ?>">
615
  <?php _e( 'URL' ); ?><br />
@@ -617,13 +747,13 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
617
  </label>
618
  </p>
619
  <?php endif; ?>
620
- <p class="description description-thin">
621
  <label for="edit-menu-item-title-<?php echo $item_id; ?>">
622
  <?php _e( 'Navigation Label' ); ?><br />
623
  <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
624
  </label>
625
  </p>
626
- <p class="description description-thin">
627
  <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
628
  <?php _e( 'Title Attribute' ); ?><br />
629
  <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
@@ -632,7 +762,7 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
632
  <p class="field-link-target description">
633
  <label for="edit-menu-item-target-<?php echo $item_id; ?>">
634
  <input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
635
- <?php _e( 'Open link in a new window/tab' ); ?>
636
  </label>
637
  </p>
638
  <p class="field-css-classes description description-thin">
@@ -662,19 +792,17 @@ class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
662
  </label>
663
  </p>
664
 
665
- <p class="field-move hide-if-no-js description description-wide">
666
- <label>
667
- <span><?php _e( 'Move' ); ?></span>
668
- <a href="#" class="menus-move-up"><?php _e( 'Up one' ); ?></a>
669
- <a href="#" class="menus-move-down"><?php _e( 'Down one' ); ?></a>
670
- <a href="#" class="menus-move-left"></a>
671
- <a href="#" class="menus-move-right"></a>
672
- <a href="#" class="menus-move-top"><?php _e( 'To the top' ); ?></a>
673
- </label>
674
- </p>
675
 
676
  <div class="menu-item-actions description-wide submitbox">
677
- <?php if( 'custom' != $item->type && $original_title !== false ) : ?>
678
  <p class="link-to-original">
679
  <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
680
  </p>
1
  <?php
2
  /**
3
  * @package Menu_Image
4
+ * @version 2.6.4
5
  * @licence GPLv2
6
  */
7
 
8
  /*
9
  Plugin Name: Menu Image
10
+ Plugin URI: https://makeyoulivebetter.org.ua/menu-image/
11
  Description: Provide uploading images to menu item
12
  Author: Alex Davyskiba aka Zviryatko
13
+ Version: 2.9.1
14
  Author URI: http://makeyoulivebetter.org.ua/
15
  */
16
 
36
  * @package Menu_Image
37
  */
38
  class Menu_Image_Plugin {
39
+
40
+ /**
41
+ * Self provided image sizes for most menu usage.
42
+ *
43
+ * @var array
44
+ */
45
  protected $image_sizes = array(
46
  'menu-24x24' => array( 24, 24, false ),
47
  'menu-36x36' => array( 36, 36, false ),
48
  'menu-48x48' => array( 48, 48, false ),
49
  );
50
+
51
  /**
52
  * List of used attachment ids grouped by size.
53
  *
56
  * @var array
57
  */
58
  private $used_attachments = array();
59
+
60
  /**
61
+ * List of file extensions that allowed to resize and display as image.
62
+ *
63
  * @var array
64
  */
65
+ private $additionalDisplayableImageExtensions = array( 'ico' );
66
 
67
+ /**
68
+ * Plugin constructor, add all filters and actions.
69
+ */
70
  public function __construct() {
71
  add_action( 'init', array( $this, 'menu_image_init' ) );
72
  add_filter( 'manage_nav-menus_columns', array( $this, 'menu_image_nav_menu_manage_columns' ), 11 );
73
  add_action( 'save_post_nav_menu_item', array( $this, 'menu_image_save_post_action' ), 10, 3 );
74
  add_action( 'admin_head-nav-menus.php', array( $this, 'menu_image_admin_head_nav_menus_action' ) );
75
  add_filter( 'wp_setup_nav_menu_item', array( $this, 'menu_image_wp_setup_nav_menu_item' ) );
76
+ add_filter( 'nav_menu_link_attributes', array( $this, 'menu_image_nav_menu_link_attributes_filter' ), 10, 4 );
77
+ add_filter( 'nav_menu_item_title', array( $this, 'menu_image_nav_menu_item_title_filter' ), 10, 4 );
78
  add_action( 'wp_enqueue_scripts', array( $this, 'menu_image_add_inline_style_action' ) );
79
  add_action( 'admin_action_delete-menu-item-image', array( $this, 'menu_image_delete_menu_item_image_action' ) );
80
  add_action( 'wp_ajax_set-menu-item-thumbnail', array( $this, 'wp_ajax_set_menu_item_thumbnail' ) );
84
  add_action( 'wp_update_nav_menu_item', array( $this, 'wp_update_nav_menu_item_action' ), 10, 2 );
85
  add_action( 'admin_init', array( $this, 'admin_init' ), 99 );
86
  add_filter( 'jetpack_photon_override_image_downsize', array( $this, 'jetpack_photon_override_image_downsize_filter' ), 10, 2 );
87
+ add_filter( 'wp_get_attachment_image_attributes', array($this, 'wp_get_attachment_image_attributes'), 99, 3 );
88
  }
89
 
90
  /**
92
  */
93
  public function admin_init() {
94
  // Add custom field for menu edit walker
95
+ if ( !has_action( 'wp_nav_menu_item_custom_fields' ) ) {
96
  add_filter( 'wp_edit_nav_menu_walker', array( $this, 'menu_image_edit_nav_menu_walker_filter' ) );
97
  }
98
+ add_action( 'wp_nav_menu_item_custom_fields', array( $this, 'menu_item_custom_fields' ), 10, 4 );
99
  }
100
 
101
+ /**
102
+ * Filter adds additional validation for image type
103
+ *
104
+ * @param bool $result
105
+ * @param string $path
106
+ *
107
+ * @return bool
108
+ */
109
+ public function file_is_displayable_image( $result, $path ) {
110
+ if ( $result ) {
111
+ return true;
112
+ }
113
+ $fileExtension = pathinfo( $path, PATHINFO_EXTENSION );
114
+
115
+ return in_array( $fileExtension, $this->additionalDisplayableImageExtensions );
116
+ }
117
 
118
  /**
119
  * Initialization action.
125
  add_post_type_support( 'nav_menu_item', array( 'thumbnail' ) );
126
 
127
  $this->image_sizes = apply_filters( 'menu_image_default_sizes', $this->image_sizes );
128
+ if (is_array($this->image_sizes)) {
129
+ foreach ($this->image_sizes as $name => $params) {
130
+ add_image_size($name, $params[0], $params[1], ( array_key_exists(2, $params) ? $params[2] : false ) );
131
+ }
132
  }
133
+ load_plugin_textdomain( 'menu-image', false, basename( dirname( __FILE__ ) ) . '/languages' );
134
  }
135
 
136
  /**
138
  *
139
  * If not checked screen option 'image', uploading form not showed.
140
  *
141
+ * @param array $columns
142
+ *
143
  * @return array
144
  */
145
  public function menu_image_nav_menu_manage_columns( $columns ) {
151
  *
152
  * Saving uploaded images and attach/detach to image post type.
153
  *
154
+ * @param int $post_id
155
+ * @param WP_Post $post
156
  */
157
  public function menu_image_save_post_action( $post_id, $post ) {
158
  $menu_image_settings = array(
160
  'menu_item_image_title_position'
161
  );
162
  foreach ( $menu_image_settings as $setting_name ) {
163
+ if ( isset( $_POST[ $setting_name ][ $post_id ] ) && !empty( $_POST[ $setting_name ][ $post_id ] ) ) {
164
+ if ( $post->{"_$setting_name"} != $_POST[ $setting_name ][ $post_id ] ) {
165
+ update_post_meta( $post_id, "_$setting_name", esc_sql( $_POST[ $setting_name ][ $post_id ] ) );
166
  }
167
  }
168
  }
187
 
188
  // iterate synchronized menus
189
  foreach ( $icl_menus_sync->menus as $menu_id => $menu_data ) {
190
+ if ( !isset( $_POST[ 'sync' ][ 'add' ][ $menu_id ] ) ) {
191
  continue;
192
  }
193
 
197
  wp_cache_delete( $cache_key, $cache_group );
198
  $lang = $sitepress->get_language_for_element( $item_menu_id, 'tax_nav_menu' );
199
 
200
+ if ( !isset( $run_times[ $menu_id ][ $lang ] ) ) {
201
+ $run_times[ $menu_id ][ $lang ] = 0;
202
  }
203
 
204
  // Count static var for each menu id and saved item language
205
  // and get original item id from counted position of synchronized
206
  // items from POST data. That's all magic.
207
  $post_item_ids = array();
208
+ foreach ( $_POST[ 'sync' ][ 'add' ][ $menu_id ] as $id => $lang_array ) {
209
+ if ( array_key_exists( $lang, $lang_array ) ) {
210
+ $post_item_ids[ ] = $id;
211
  }
212
  }
213
+ if ( !array_key_exists( $run_times[ $menu_id ][ $lang ], $post_item_ids ) ) {
214
  continue;
215
  }
216
+ $orig_item_id = $post_item_ids[ $run_times[ $menu_id ][ $lang ] ];
217
 
218
  // iterate all item settings and save it for new item
219
  $orig_item_meta = get_metadata( 'post', $orig_item_id );
220
  foreach ( $menu_image_settings as $meta ) {
221
+ if ( isset( $orig_item_meta[ "_$meta" ] ) && isset( $orig_item_meta[ "_$meta" ][ 0 ] ) ) {
222
+ update_post_meta( $menu_item_db_id, "_$meta", $orig_item_meta[ "_$meta" ][ 0 ] );
223
  }
224
  }
225
+ $run_times[ $menu_id ][ $lang ] ++;
226
  break;
227
  }
228
  }
259
  return $item;
260
  }
261
 
262
+ /**
263
+ * Filters the HTML attributes applied to a menu item's anchor element.
264
+ *
265
+ * @param array $atts {
266
+ * The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored.
267
+ *
268
+ * @type string $title Title attribute.
269
+ * @type string $target Target attribute.
270
+ * @type string $rel The rel attribute.
271
+ * @type string $href The href attribute.
272
+ * }
273
+ * @param WP_Post $item The current menu item.
274
+ * @param stdClass $args An object of wp_nav_menu() arguments.
275
+ * @param int $depth Depth of menu item. Used for padding.
276
+ *
277
+ * @return array Link attributes.
278
+ */
279
+ public function menu_image_nav_menu_link_attributes_filter( $atts, $item, $args, $depth = null ) {
280
+ $position = $item->title_position ? $item->title_position : apply_filters( 'menu_image_default_title_position', 'after' );
281
+ $class = ! empty( $atts[ 'class' ] ) ? $atts[ 'class' ] : '';
282
+ $class .= " menu-image-title-{$position}";
283
+ if ( $item->thumbnail_hover_id ) {
284
+ $class .= ' menu-image-hovered';
285
+ } elseif ( $item->thumbnail_id ) {
286
+ $class .= ' menu-image-not-hovered';
287
+ }
288
+ // Fix dropdown menu for Flatsome theme.
289
+ if ( ! empty( $args->walker ) && class_exists( 'FlatsomeNavDropdown' ) && $args->walker instanceof FlatsomeNavDropdown && ! is_null( $depth ) && $depth === 0 ) {
290
+ $class .= ' nav-top-link';
291
+ }
292
+ $atts[ 'class' ] = trim( $class );
293
+
294
+ return $atts;
295
+ }
296
+
297
  /**
298
  * Replacement default menu item output.
299
  *
300
+ * @param string $title Default item output
301
+ * @param object $item Menu item data object.
302
+ * @param int $depth Depth of menu item. Used for padding.
303
  * @param object $args
304
+ *
305
  * @return string
306
  */
307
+ public function menu_image_nav_menu_item_title_filter( $title, $item, $depth, $args ) {
 
 
 
 
 
308
  $image_size = $item->image_size ? $item->image_size : apply_filters( 'menu_image_default_size', 'menu-36x36' );
309
  $position = $item->title_position ? $item->title_position : apply_filters( 'menu_image_default_title_position', 'after' );
310
  $class = "menu-image-title-{$position}";
311
+ $this->setUsedAttachments( $image_size, $item->thumbnail_id );
312
+ $image = '';
313
  if ( $item->thumbnail_hover_id ) {
314
+ $this->setUsedAttachments( $image_size, $item->thumbnail_hover_id );
315
  $hover_image_src = wp_get_attachment_image_src( $item->thumbnail_hover_id, $image_size );
316
+ $margin_size = $hover_image_src[ 1 ];
317
+ $image = "<span class='menu-image-hover-wrapper'>";
318
  $image .= wp_get_attachment_image( $item->thumbnail_id, $image_size, false, "class=menu-image {$class}" );
319
+ $image .= wp_get_attachment_image(
320
+ $item->thumbnail_hover_id, $image_size, false, array(
321
+ 'class' => "hovered-image {$class}",
322
+ 'style' => "margin-left: -{$margin_size}px;",
323
+ )
324
+ );
325
  $image .= '</span>';;
326
+ } elseif ( $item->thumbnail_id ) {
 
327
  $image = wp_get_attachment_image( $item->thumbnail_id, $image_size, false, "class=menu-image {$class}" );
 
328
  }
329
+ $none = ''; // Sugar.
 
 
330
  switch ( $position ) {
331
  case 'hide':
 
 
332
  case 'before':
333
+ case 'above':
334
+ $item_args = array( $none, $title, $image );
335
  break;
336
  case 'after':
337
  default:
338
+ $item_args = array( $image, $title, $none );
339
  break;
340
  }
341
+ $title = vsprintf( '%s<span class="menu-image-title">%s</span>%s', $item_args );
342
 
343
+ return $title;
344
  }
345
 
346
  /**
359
  * @since 2.0
360
  */
361
  public function menu_image_admin_head_nav_menus_action() {
362
+ wp_enqueue_script( 'menu-image-admin', plugins_url( 'menu-image-admin.js', __FILE__ ), array( 'jquery' ) );
363
+ wp_localize_script(
364
+ 'menu-image-admin', 'menuImage', array(
365
+ 'l10n' => array(
366
+ 'uploaderTitle' => __( 'Chose menu image', 'menu-image' ),
367
+ 'uploaderButtonText' => __( 'Select', 'menu-image' ),
368
+ ),
369
+ 'settings' => array(
370
+ 'nonce' => wp_create_nonce( 'update-menu-item' ),
371
+ ),
372
+ )
373
+ );
374
  wp_enqueue_media();
375
+ wp_enqueue_style( 'editor-buttons' );
376
  }
377
 
378
  /**
380
  */
381
  public function menu_image_delete_menu_item_image_action() {
382
 
383
+ $menu_item_id = (int) $_REQUEST[ 'menu-item' ];
384
 
385
  check_admin_referer( 'delete-menu_item_image_' . $menu_item_id );
386
 
387
  if ( is_nav_menu_item( $menu_item_id ) && has_post_thumbnail( $menu_item_id ) ) {
388
  delete_post_thumbnail( $menu_item_id );
389
+ delete_post_meta( $menu_item_id, '_thumbnail_hover_id' );
390
+ delete_post_meta( $menu_item_id, '_menu_item_image_size' );
391
+ delete_post_meta( $menu_item_id, '_menu_item_image_title_position' );
392
  }
393
  }
394
 
395
  /**
396
+ * Output HTML for the menu item images.
397
  *
398
  * @since 2.0
399
  *
400
  * @param int $item_id The post ID or object associated with the thumbnail, defaults to global $post.
401
+ *
402
  * @return string html
403
  */
404
+ public function wp_post_thumbnail_only_html( $item_id ) {
405
+ $default_size = apply_filters( 'menu_image_default_size', 'menu-36x36' );
406
  $markup = '<p class="description description-thin" ><label>%s<br /><a title="%s" href="#" class="set-post-thumbnail button%s" data-item-id="%s" style="height: auto;">%s</a>%s</label></p>';
407
 
408
  $thumbnail_id = get_post_thumbnail_id( $item_id );
409
+ $content = sprintf(
410
+ $markup,
411
  esc_html__( 'Menu image', 'menu-image' ),
412
  $thumbnail_id ? esc_attr__( 'Change menu item image', 'menu-image' ) : esc_attr__( 'Set menu item image', 'menu-image' ),
413
  '',
417
  );
418
 
419
  $hover_id = get_post_meta( $item_id, '_thumbnail_hover_id', true );
420
+ $content .= sprintf(
421
+ $markup,
422
  esc_html__( 'Image on hover', 'menu-image' ),
423
  $hover_id ? esc_attr__( 'Change menu item image on hover', 'menu-image' ) : esc_attr__( 'Set menu item image on hover', 'menu-image' ),
424
  ' hover-image',
427
  $hover_id ? '<a href="#" class="remove-post-thumbnail hover-image">' . __( 'Remove', 'menu-image' ) . '</a>' : ''
428
  );
429
 
430
+ return $content;
431
+ }
432
+
433
+ /**
434
+ * Output HTML for the menu item images section.
435
+ *
436
+ * @since 2.0
437
+ *
438
+ * @param int $item_id The post ID or object associated with the thumbnail, defaults to global $post.
439
+ *
440
+ * @return string html
441
+ */
442
+ public function wp_post_thumbnail_html( $item_id ) {
443
+ $default_size = apply_filters( 'menu_image_default_size', 'menu-36x36' );
444
+ $content = $this->wp_post_thumbnail_only_html( $item_id );
445
+
446
  $image_size = get_post_meta( $item_id, '_menu_item_image_size', true );
447
+ if ( !$image_size ) {
448
+ $image_size = $default_size;
449
+ }
450
  $title_position = get_post_meta( $item_id, '_menu_item_image_title_position', true );
451
+ if ( !$title_position ) {
452
+ $title_position = apply_filters( 'menu_image_default_title_position', 'after' );
453
+ }
454
 
455
  ob_start(); ?>
456
 
457
  <div class="menu-item-image-options">
458
+ <p class="description description-wide">
459
+ <label for="edit-menu-item-image-size-<?php echo $item_id; ?>"><?php _e( 'Image size', 'menu-image' ); ?>
460
+ <br />
461
  <select id="edit-menu-item-image-size-<?php echo $item_id; ?>"
462
+ class="widefat edit-menu-item-image-size"
463
+ name="menu_item_image_size[<?php echo $item_id; ?>]">
464
+ <option value='full' <?php echo $image_size == 'full' ? ' selected="selected"' : '' ?>><?php _e( 'Original Size', 'menu-image' ) ?></option>
465
  <?php foreach ( get_intermediate_image_sizes() as $size ) :
466
+ printf(
467
+ "<option value='%s'%s>%s</option>\n",
468
+ esc_attr( $size ),
469
  $image_size == $size ? ' selected="selected"' : '',
470
+ ucfirst( $size )
471
  ); ?>
472
  <?php endforeach; ?>
473
  </select>
474
  </label>
475
  </p>
476
+ <p class="description description-wide">
477
+ <label><?php _e( 'Title position', 'menu-image' ); ?></label><br />
478
+ <?php
479
+ $positions = array(
480
+ 'hide' => __( 'Hide', 'menu-image' ),
481
+ 'above' => __( 'Above', 'menu-image' ),
482
+ 'below' => __( 'Below', 'menu-image' ),
483
+ 'before' => __( 'Before', 'menu-image' ),
484
+ 'after' => __( 'After', 'menu-image' ),
485
+ );
486
+ foreach ( $positions as $position => $label ) :
487
+ printf(
488
+ "<label><input type='radio' name='menu_item_image_title_position[%s]' value='%s'%s/> %s</label>%s",
489
+ $item_id,
490
+ esc_attr( $position ),
491
+ $title_position == $position ? ' checked="checked"' : '',
492
+ $label,
493
+ $position != 'after' ? ' | ' : ''
494
  );
495
+ endforeach; ?>
 
 
 
 
 
 
 
 
496
 
497
  </p>
498
  </div>
506
  * @since 2.0
507
  *
508
  * @param string $content Admin menu item images HTML markup.
509
+ * @param int $item_id Post ID.
510
  */
511
  return apply_filters( 'admin_menu_item_thumbnail_html', $content, $item_id );
512
  }
517
  * @since 2.0
518
  */
519
  public function wp_ajax_set_menu_item_thumbnail() {
520
+ $json = !empty( $_REQUEST[ 'json' ] );
521
 
522
+ $post_ID = intval( $_POST[ 'post_id' ] );
523
+ if ( !current_user_can( 'edit_post', $post_ID ) ) {
524
+ wp_die( - 1 );
525
+ }
526
 
527
+ $thumbnail_id = intval( $_POST[ 'thumbnail_id' ] );
528
+ $is_hovered = (bool) $_POST[ 'is_hover' ];
529
 
530
  check_ajax_referer( "update-menu-item" );
531
 
537
  }
538
  } else {
539
  if ( $is_hovered ) {
540
+ $success = update_post_meta( $post_ID, '_thumbnail_hover_id', $thumbnail_id );
541
  } else {
542
  $success = set_post_thumbnail( $post_ID, $thumbnail_id );
543
  }
544
  }
545
 
546
+ if ( $success ) {
547
+ $return = $this->wp_post_thumbnail_only_html( $post_ID );
548
  $json ? wp_send_json_success( $return ) : wp_die( $return );
549
  }
550
 
552
  }
553
 
554
  /**
555
+ * Add custom fields to menu item.
556
+ *
557
+ * @param int $item_id
558
+ * @param object $item
559
+ * @param int $depth
560
+ * @param array $args
561
+ *
562
+ * @see http://web.archive.org/web/20141021012233/http://shazdeh.me/2014/06/25/custom-fields-nav-menu-items
563
+ * @see https://core.trac.wordpress.org/ticket/18584
564
  */
565
+ public function menu_item_custom_fields( $item_id, $item, $depth, $args ) {
566
+ if (!$item_id && isset($item->ID)) {
567
+ $item_id = $item->ID;
568
+ }
569
+ ?>
570
  <div class="field-image hide-if-no-js wp-media-buttons">
571
+ <?php echo $this->wp_post_thumbnail_html( $item_id ) ?>
572
  </div>
573
  <?php
574
  }
582
  * @return bool
583
  */
584
  public function jetpack_photon_override_image_downsize_filter( $prevent, $data ) {
585
+ return $this->isAttachmentUsed( $data[ 'attachment_id' ], $data[ 'size' ] );
586
  }
587
 
588
  /**
592
  * @param int $id
593
  */
594
  public function setUsedAttachments( $size, $id ) {
595
+ $this->used_attachments[ $size ][ ] = $id;
596
  }
597
 
598
  /**
599
  * Check if attachment is used in menu items.
600
  *
 
601
  * @param int $id
602
+ * @param string $size
603
  *
604
  * @return bool
605
  */
606
+ public function isAttachmentUsed( $id, $size = null ) {
607
+ if ( ! is_null( $size ) ) {
608
+ return is_string( $size ) && isset( $this->used_attachments[ $size ] ) && in_array( $id, $this->used_attachments[ $size ] );
609
+ } else {
610
+ foreach ( $this->used_attachments as $used_attachment ) {
611
+ if ( in_array( $id, $used_attachment ) ) {
612
+ return true;
613
+ }
614
+ }
615
+ return false;
616
+ }
617
+ }
618
+
619
+ /**
620
+ * Filters the list of attachment image attributes.
621
+ *
622
+ * @since 2.8.0
623
+ *
624
+ * @param array $attr Attributes for the image markup.
625
+ * @param WP_Post $attachment Image attachment post.
626
+ * @param string|array $size Requested size. Image size or array of width and height values
627
+ * (in that order). Default 'thumbnail'.
628
+ *
629
+ * @return array Valid array of image attributes.
630
+ */
631
+ public function wp_get_attachment_image_attributes( $attr, $attachment, $size ) {
632
+ if ( $this->isAttachmentUsed( $attachment->ID, $size ) ) {
633
+ unset( $attr['sizes'], $attr['srcset'] );
634
+ }
635
+
636
+ return $attr;
637
  }
638
  }
639
 
640
  $menu_image = new Menu_Image_Plugin();
641
 
642
  require_once(ABSPATH . 'wp-admin/includes/nav-menu.php');
643
+
644
  class Menu_Image_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
645
 
646
+ public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
647
  global $_wp_nav_menu_max_depth;
648
  $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
649
 
658
  '_wpnonce',
659
  );
660
 
661
+ $original_title = false;
662
  if ( 'taxonomy' == $item->type ) {
663
  $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
664
  if ( is_wp_error( $original_title ) )
666
  } elseif ( 'post_type' == $item->type ) {
667
  $original_object = get_post( $item->object_id );
668
  $original_title = get_the_title( $original_object->ID );
669
+ } elseif ( 'post_type_archive' == $item->type ) {
670
+ $original_object = get_post_type_object( $item->object );
671
+ if ( $original_object ) {
672
+ $original_title = $original_object->labels->archives;
673
+ }
674
  }
675
 
676
  $classes = array(
699
 
700
  ?>
701
  <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
702
+ <div class="menu-item-bar">
703
+ <div class="menu-item-handle">
704
  <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
705
  <span class="item-controls">
706
  <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
716
  ),
717
  'move-menu_item'
718
  );
719
+ ?>" class="item-move-up" aria-label="<?php esc_attr_e( 'Move up' ) ?>">&#8593;</a>
720
  |
721
  <a href="<?php
722
  echo wp_nonce_url(
729
  ),
730
  'move-menu_item'
731
  );
732
+ ?>" class="item-move-down" aria-label="<?php esc_attr_e( 'Move down' ) ?>">&#8595;</a>
733
  </span>
734
+ <a class="item-edit" id="edit-<?php echo $item_id; ?>" href="<?php
735
  echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
736
+ ?>" aria-label="<?php esc_attr_e( 'Edit menu item' ); ?>"><span class="screen-reader-text"><?php _e( 'Edit' ); ?></span></a>
737
  </span>
738
+ </div>
739
+ </div>
740
 
741
+ <div class="menu-item-settings wp-clearfix" id="menu-item-settings-<?php echo $item_id; ?>">
742
+ <?php if ( 'custom' == $item->type ) : ?>
743
  <p class="field-url description description-wide">
744
  <label for="edit-menu-item-url-<?php echo $item_id; ?>">
745
  <?php _e( 'URL' ); ?><br />
747
  </label>
748
  </p>
749
  <?php endif; ?>
750
+ <p class="description description-wide">
751
  <label for="edit-menu-item-title-<?php echo $item_id; ?>">
752
  <?php _e( 'Navigation Label' ); ?><br />
753
  <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
754
  </label>
755
  </p>
756
+ <p class="field-title-attribute field-attr-title description description-wide">
757
  <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
758
  <?php _e( 'Title Attribute' ); ?><br />
759
  <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
762
  <p class="field-link-target description">
763
  <label for="edit-menu-item-target-<?php echo $item_id; ?>">
764
  <input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
765
+ <?php _e( 'Open link in a new tab' ); ?>
766
  </label>
767
  </p>
768
  <p class="field-css-classes description description-thin">
792
  </label>
793
  </p>
794
 
795
+ <fieldset class="field-move hide-if-no-js description description-wide">
796
+ <span class="field-move-visual-label" aria-hidden="true"><?php _e( 'Move' ); ?></span>
797
+ <button type="button" class="button-link menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></button>
798
+ <button type="button" class="button-link menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></button>
799
+ <button type="button" class="button-link menus-move menus-move-left" data-dir="left"></button>
800
+ <button type="button" class="button-link menus-move menus-move-right" data-dir="right"></button>
801
+ <button type="button" class="button-link menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></button>
802
+ </fieldset>
 
 
803
 
804
  <div class="menu-item-actions description-wide submitbox">
805
+ <?php if ( 'custom' != $item->type && $original_title !== false ) : ?>
806
  <p class="link-to-original">
807
  <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
808
  </p>
package.json CHANGED
@@ -1,8 +1,8 @@
1
  {
2
  "name": "menu-image",
3
- "version": "2.2.0",
4
  "devDependencies": {
5
  "grunt": "^0.4.5",
6
- "grunt-wp-readme-to-markdown": "^0.8.0"
7
  }
8
  }
1
  {
2
  "name": "menu-image",
3
+ "version": "2.8.0",
4
  "devDependencies": {
5
  "grunt": "^0.4.5",
6
+ "grunt-wp-readme-to-markdown": "^2.0"
7
  }
8
  }
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: zviryatko
3
  Tags: menu, image, field, hover, wpml
4
  Donate link: http://makeyoulivebetter.org.ua/buy-beer
5
- Requires at least: 3.5.1
6
- Tested up to: 4.0
7
- Stable tag: 2.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -30,10 +30,13 @@ Now WPML compliant!
30
 
31
  == Frequently Asked Questions ==
32
 
 
 
 
 
33
  = How to wrap menu link text in `span` html element =
34
 
35
- Where you show your menu with function `<?php wp_nav_menu(); ?>` as param you can add `array('link_before' => '<span>', 'link_after' => '</span>')`.
36
- It makes css markup easier.
37
 
38
  = How to add another size for the image? =
39
 
@@ -41,7 +44,7 @@ To add a new size (or remove an old one) add a function to the `menu_image_defau
41
 
42
  `
43
  <?php
44
- add_filter( 'menu_image_default_sizes', function($sizes){
45
 
46
  // remove the default 36x36 size
47
  unset($sizes['menu-36x36']);
@@ -56,6 +59,28 @@ add_filter( 'menu_image_default_sizes', function($sizes){
56
  ?>
57
  `
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  == Screenshots ==
60
 
61
  1. Admin screen
@@ -63,6 +88,61 @@ add_filter( 'menu_image_default_sizes', function($sizes){
63
 
64
  == Changelog ==
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  = 2.4 =
67
  * Fix compatibility with some modules and themes to according to [this topic](http://shazdeh.me/2014/06/25/custom-fields-nav-menu-items/)
68
  * Fix Jetpack Phonon frontend bug
@@ -95,6 +175,9 @@ add_filter( 'menu_image_default_sizes', function($sizes){
95
 
96
  == Upgrade Notice ==
97
 
 
 
 
98
  = 2.4 =
99
  If your are using Jetpack Phonon module now menu icons will be look good.
100
 
2
  Contributors: zviryatko
3
  Tags: menu, image, field, hover, wpml
4
  Donate link: http://makeyoulivebetter.org.ua/buy-beer
5
+ Requires at least: 4.4.0
6
+ Tested up to: 4.7
7
+ Stable tag: 2.9.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
30
 
31
  == Frequently Asked Questions ==
32
 
33
+ = How to add custom attributes to menu item link (useful for integration with dropdown menus) =
34
+
35
+ Use core `nav_menu_link_attributes` and `nav_menu_item_title` filters.
36
+
37
  = How to wrap menu link text in `span` html element =
38
 
39
+ Menu link text is already wrapped in `span.menu-image-title`.
 
40
 
41
  = How to add another size for the image? =
42
 
44
 
45
  `
46
  <?php
47
+ add_filter( 'menu_image_default_sizes', function($sizes) {
48
 
49
  // remove the default 36x36 size
50
  unset($sizes['menu-36x36']);
59
  ?>
60
  `
61
 
62
+ = How to make hovered image visible on current page of menu item? =
63
+
64
+ Add this link to style.css
65
+ `
66
+ .menu-item.current-menu-item > a.menu-image-hovered img.hovered-image {
67
+ opacity: 1;
68
+ }
69
+ `
70
+
71
+ = If you have problem with srcset image problem on Wordpress version >= 4.4 and Azure hosting =
72
+
73
+ If you srcset property look like this:
74
+ `<img width="36" height="36" src="http://static.mywebsite.com/website/myaction_express_menu_icon-36x36.png" class="attachment-menu-36x36 size-menu-36x36" alt="myaction_express_menu_icon" srcset="http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-50x50.png 50w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-75x75.png 75w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-24x24.png 24w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-36x36.png 36w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon-48x48.png 48w, http://www.mywebsite.com/wp-content/uploads/D:homesitewwwroot/wp-content/uploads/myaction_express_menu_icon.png 80w" sizes="(max-width: 36px) 100vw, 36px">`
75
+ Then you can disable srcset (add it to your function.php):
76
+ `
77
+ /**
78
+ * Fix for broken images on azure & wordpress 4.4
79
+ * @see https://wordpress.org/support/topic/wordpress-adding-absolute-paths
80
+ */
81
+ add_filter( 'wp_calculate_image_srcset', '__return_false' );
82
+ `
83
+
84
  == Screenshots ==
85
 
86
  1. Admin screen
88
 
89
  == Changelog ==
90
 
91
+ ### 2.9.1 ###
92
+ * Fix previous broken update. Sorry for that, everyone is mistake.
93
+ * Remove images srcset and sizes attributes.
94
+ * Add autotests on for images view.
95
+
96
+ ### 2.9.0 ###
97
+ * Update admin part copy regarding to new wp version.
98
+ * Fix support url.
99
+ * Fix php warning.
100
+
101
+ = 2.8.0 =
102
+ * Use core `nav_menu_link_attributes`, `nav_menu_item_title` filters to add image and class instead of `walker_nav_menu_start_el` filter.
103
+ * Drop support of core version < 4.4.0.
104
+
105
+ = 2.7.0 =
106
+ * Remove notification plugin. It was not a good idea btw.
107
+
108
+ = 2.6.9 =
109
+ * Revert back php <=5.2 support, https://wordpress.org/support/topic/upgrade-to-wp-453-and-268-and-got-this-error. Reported by @itmnetcom and @cjg79
110
+
111
+ = 2.6.8 =
112
+ * Fix `wp_nav_menu_item_custom_fields` filter usage https://wordpress.org/support/topic/blocked-on-36x36-image. Reported by @vladimir-slonska
113
+ * Fix php warning in notifier component https://wordpress.org/support/topic/invalid-argument-supplied-for-foreach-in-4. Reported by @susanmarshallva
114
+
115
+ = 2.6.7 =
116
+ * Add `menu_image_link_attributes` filter, fix bug with menu dropdown in Flatsome theme https://wordpress.org/support/topic/bug-image-menu-dropdown. Reported by @apardo
117
+
118
+ = 2.6.6 =
119
+ * Fix various php errors.
120
+
121
+ = 2.6.5 =
122
+ * Add notification plugin.
123
+
124
+ = 2.6.4 =
125
+ * Fixing a clearing bug for WordPress 4.5+. Thanx @kau-boy
126
+
127
+ = 2.6.3 =
128
+ * Fix php warning 'Invalid Argument foreach()' https://wordpress.org/support/topic/invalid-argument-foreach-in-menu-imagephp-line-126. Thanx @majancart
129
+
130
+ = 2.6.2 =
131
+ * Update FAQ to dial with srcset and Azure hosting https://wordpress.org/support/topic/wordpress-adding-absolute-paths. Thanx @GeertvanHorrik
132
+
133
+ = 2.6.1 =
134
+ * Fix php warning https://wordpress.org/support/topic/bug-fix-error-in-the-file-menu-imagephp
135
+
136
+ = 2.6 =
137
+ * Fix bug on attachment page.
138
+ * Add french translation. Thanx @CreativeJuiz
139
+
140
+ = 2.5 =
141
+ * Add above and below title. Thanx @alhoseany
142
+ * Add original image size. Thanx @alhoseany
143
+ * Fix the loss of choices on size and title when updating image by ajax. Thanx @alhoseany
144
+ * Fix hidden title on responsive select menu.
145
+
146
  = 2.4 =
147
  * Fix compatibility with some modules and themes to according to [this topic](http://shazdeh.me/2014/06/25/custom-fields-nav-menu-items/)
148
  * Fix Jetpack Phonon frontend bug
175
 
176
  == Upgrade Notice ==
177
 
178
+ = 2.5 =
179
+ Now you can set link title below and above image, thanx @alhoseany.
180
+
181
  = 2.4 =
182
  If your are using Jetpack Phonon module now menu icons will be look good.
183
 
tests/_data/.gitkeep ADDED
File without changes
tests/_data/hover.png ADDED
Binary file
tests/_data/image.png ADDED
Binary file
tests/_output/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
1
+ *
2
+ !.gitignore
tests/_support/FunctionalTester.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ /**
5
+ * Inherited Methods
6
+ * @method void wantToTest( $text )
7
+ * @method void wantTo( $text )
8
+ * @method void execute( $callable )
9
+ * @method void expectTo( $prediction )
10
+ * @method void expect( $prediction )
11
+ * @method void amGoingTo( $argumentation )
12
+ * @method void am( $role )
13
+ * @method void lookForwardTo( $achieveValue )
14
+ * @method void comment( $description )
15
+ * @method \Codeception\Lib\Friend haveFriend( $name, $actorClass = null )
16
+ *
17
+ * @SuppressWarnings(PHPMD)
18
+ */
19
+ class FunctionalTester extends \Codeception\Actor {
20
+ use _generated\FunctionalTesterActions;
21
+
22
+ /**
23
+ * Define custom actions here
24
+ */
25
+ public function logOut() {
26
+ if ( ! empty( $this->grabWordPressAuthCookie() ) ) {
27
+ $this->amOnPage( '/wp-logout.php' );
28
+ $this->seeLink( 'log out' );
29
+ $this->click( 'log out' );
30
+ $this->seeCurrentUrlMatches( '/wp-login.php?loggedout=true' );
31
+ }
32
+ }
33
+
34
+ public function haveSelectMediaAttachment( $attachment_id ) {
35
+ // Get active uploader id.
36
+ $frame_html_id = '#' . $this->grabAttributeFrom( 'div.supports-drag-drop:not([style*="display: none"]):last-child .media-frame', 'id' );
37
+ $this->seeElement( $frame_html_id );
38
+ $this->see( 'Chose menu image', $frame_html_id );
39
+ // Select image from library.
40
+ $this->click( 'Media Library', $frame_html_id );
41
+ // Check if uploaded file exists.
42
+ $this->seeElement( "{$frame_html_id} li.attachment", [ 'data-id' => $attachment_id ] );
43
+ $button_css = "$frame_html_id .media-toolbar-primary button.media-button-select";
44
+ $disabled = $this->grabAttributeFrom( $button_css, 'disabled' );
45
+ $this->assertNotEmpty( $disabled );
46
+ $this->click( "{$frame_html_id} li.attachment[data-id='{$attachment_id}']" );
47
+ $disabled = $this->grabAttributeFrom( $button_css, 'disabled' );
48
+ $this->assertIsEmpty( $disabled );
49
+ $this->click( $button_css );
50
+ }
51
+ }
tests/_support/_generated/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
1
+ *
2
+ !.gitignore
tests/functional.suite.yml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Codeception Test Suite Configuration
2
+ #
3
+ # Suite for functional tests
4
+ # Emulate web requests and make WordPress process them
5
+
6
+ actor: FunctionalTester
7
+ modules:
8
+ enabled:
9
+ - WPDb
10
+ - WPWebDriver
11
+ - WPFilesystem
12
+ - Asserts
13
+ - WPCLI
14
+ - WPBootstrapper
15
+ config:
16
+ WPDb:
17
+ dsn: 'mysql:host=%DB_HOST%;dbname=%DB_NAME%'
18
+ user: '%DB_USER%'
19
+ password: '%DB_PASSWORD%'
20
+ dump: 'tests/_data/dump.sql'
21
+ populate: true
22
+ cleanup: true
23
+ url: '%WP_URL%'
24
+ urlReplacement: true
25
+ tablePrefix: '%TABLE_PREFIX%'
26
+ WPWebDriver:
27
+ url: '%WP_URL%'
28
+ adminUsername: '%ADMIN_USERNAME%'
29
+ adminPassword: '%ADMIN_PASSWORD%'
30
+ adminPath: '%WP_ADMIN_PATH%'
31
+ browser: phantomjs
32
+ port: 4444
33
+ window_size: '1920x1080'
34
+ clear_cookies: true
35
+ wait: 10
36
+ WPFilesystem:
37
+ wpRootFolder: '%WP_ROOT_FOLDER%'
38
+ plugins: '/wp-content/plugins'
39
+ mu-plugins: '/wp-content/mu-plugins'
40
+ themes: '/wp-content/themes'
41
+ uploads: '/wp-content/uploads'
42
+ WPCLI:
43
+ path: '%WP_ROOT_FOLDER%'
44
+ throw: true
45
+ WPBootstrapper:
46
+ wpRootFolder: '%WP_ROOT_FOLDER%'
tests/functional/MenuImageCest.php ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class MenuImageCest {
4
+ public function _before( FunctionalTester $I ) {
5
+ $theme = getenv('WP_THEME');
6
+ if (empty($theme)) {
7
+ $theme = 'twentyseventeen';
8
+ }
9
+ $I->useTheme( $theme );
10
+ // Need this to use core functions.
11
+ $I->bootstrapWp();
12
+ // Check if it theme have registered menus.
13
+ $menus = get_registered_nav_menus();
14
+ $I->assertNotEmpty($menus);
15
+ }
16
+
17
+ public function _after( FunctionalTester $I ) {
18
+ }
19
+
20
+ /**
21
+ * @dataProvider imagesProvider
22
+ */
23
+ public function testMenuImagesUpload( FunctionalTester $I, \Codeception\Example $examples ) {
24
+ // Logout to be sure that's anon user.
25
+ $I->logOut();
26
+ $I->loginAsAdmin();
27
+ $I->haveMenuInDatabase( 'Navigation', 'top' );
28
+ $item_id = $I->haveMenuItemInDatabase( 'Navigation', 'Test link' );
29
+ $html_id = '#menu-item-' . $item_id;
30
+
31
+ // Check and open menu item.
32
+ $I->amOnAdminPage( '/nav-menus.php' );
33
+ $I->click( "{$html_id} a#edit-{$item_id}" );
34
+ $I->see( 'Menu image', "{$html_id} .menu-item-images label" );
35
+ $I->see( 'Image on hover', "{$html_id} .menu-item-images label" );
36
+
37
+ // Upload images first.
38
+ $images = [];
39
+ foreach ( $examples as $key => $example ) {
40
+ $images[ $key ]['image_id'] = $I->haveAttachmentInDatabase( codecept_data_dir( $example['image'] ) );
41
+ $I->seeAttachmentInDatabase( [ 'ID' => $images[ $key ]['image_id'] ] );
42
+ }
43
+
44
+ // Then select it.
45
+ foreach ( $examples as $key => $example ) {
46
+ $I->click( $example['button'], "$html_id {$example['button_css']}" );
47
+ $I->haveSelectMediaAttachment( $images[ $key ]['image_id'] );
48
+ $image_src = $I->grabAttributeFrom( "{$html_id} {$example['button_css']} label a img", 'src' );
49
+ $I->assertEquals( basename( $image_src ), $example['image'] );
50
+ }
51
+ }
52
+
53
+ /**
54
+ * @return array
55
+ */
56
+ protected function imagesProvider() {
57
+ $image = [
58
+ 'button' => 'Set image',
59
+ 'button_css' => '.menu-item-images p.description:first-child',
60
+ 'image' => 'image.png',
61
+ ];
62
+ $hover = [
63
+ 'button' => 'Set image on hover',
64
+ 'button_css' => '.menu-item-images p.description:last-child',
65
+ 'image' => 'hover.png',
66
+ ];
67
+
68
+ return [
69
+ [ $image ],
70
+ [ $hover ],
71
+ [ $image, $hover ],
72
+ ];
73
+ }
74
+
75
+ /**
76
+ * @dataProvider menuItemsProvider
77
+ */
78
+ public function testMenuImagesDisplay( FunctionalTester $I, \Codeception\Example $examples ) {
79
+ // Prepare menu, items and their values.
80
+ $menus = get_registered_nav_menus();
81
+ $I->haveMenuInDatabase( 'Navigation', reset(array_keys($menus)) );
82
+ $item_id = $I->haveMenuItemInDatabase( 'Navigation', 'Test link' );
83
+ $thumbnail_id = $I->haveAttachmentInDatabase( codecept_data_dir( $examples[ 'thumbnail' ][ 0 ] ) );
84
+ $I->havePostmetaInDatabase( $item_id, '_thumbnail_id', $thumbnail_id );
85
+ if ( ! empty( $examples[ 'thumbnail' ][ 1 ] ) ) {
86
+ $hover_id = $I->haveAttachmentInDatabase( codecept_data_dir( $examples[ 'thumbnail' ][ 1 ] ) );
87
+ $I->havePostmetaInDatabase( $item_id, '_thumbnail_hover_id', $hover_id );
88
+ }
89
+ // Regenerate images after upload.
90
+ $I->cli('--yes media regenerate');
91
+ $I->havePostmetaInDatabase( $item_id, '_menu_item_image_title_position', $examples[ 'image_title_position' ] );
92
+ $I->havePostmetaInDatabase( $item_id, '_menu_item_image_size', $examples[ 'image_size' ] );
93
+ // Now check everything.
94
+ $I->amOnPage('/');
95
+ $I->seeElement("#menu-item-$item_id a");
96
+ $I->seeElement("#menu-item-$item_id a.menu-image-title-{$examples[ 'image_title_position' ]}");
97
+ list($w, $h) = explode('x', explode('-', $examples[ 'image_size' ])[1]);
98
+ $I->seeElement("#menu-item-$item_id img", ['width' => $w, 'height' => $h]);
99
+ $thumb_id = get_post_meta($item_id, '_thumbnail_id', true);
100
+ $I->seeElement("#menu-item-$item_id img", ['src' => reset(wp_get_attachment_image_src($thumb_id, $examples[ 'image_size' ]))]);
101
+ if (!empty($examples[ 'thumbnail' ][ 1 ])) {
102
+ $hover_id = get_post_meta($item_id, '_thumbnail_hover_id', true);
103
+ $I->seeElement("#menu-item-$item_id img", ['src' => reset(wp_get_attachment_image_src($hover_id, $examples[ 'image_size' ]))]);
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Provide all possible values for menu image item configuration.
109
+ *
110
+ * @return array
111
+ * Examples will be in next format:
112
+ * - Array of options with next keys:
113
+ * - field: configuration field name.
114
+ * - value: selected value.
115
+ * - value_set_callback: callback to set value programmatically to speed up testing.
116
+ * - test_callback: callback to test that option looks right.
117
+ */
118
+ protected function menuItemsProvider() {
119
+ $options = [
120
+ 'image_title_position' => [ 'hide', 'above', 'below', 'before', 'after' ],
121
+ 'image_size' => [ 'menu-24x24', 'menu-36x36', 'menu-48x48' ],
122
+ 'thumbnail' => [
123
+ [ 'image.png' ], // Just an image.
124
+ [ 'image.png', 'hover.png' ], // Image with hover.
125
+ ],
126
+ ];
127
+ $examples = [];
128
+ // Iterate through all variants and create unique pairs.
129
+ $examples_count = array_product( array_map( 'count', $options ) );
130
+ foreach ( $options as $field => $variants ) {
131
+ for ( $i = 1; $i <= $examples_count; $i ++ ) {
132
+ $examples[ $i ][ $field ] = $variants[ $i % count( $variants ) ];
133
+ }
134
+ }
135
+
136
+ // Examples self-test (it's answer on: who should test the tests?).
137
+ $examples_test = array_map('serialize', $examples);
138
+ $uniq = array_unique($examples_test) === $examples_test;
139
+ if (!$uniq) {
140
+ throw new \Exception('Provided examples are not unique.');
141
+ }
142
+
143
+ return $examples;
144
+ }
145
+ }
tests/setup.sh ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Export the vars in .env into your shell:
4
+ export $(egrep -v '^#' .env | xargs)
5
+ DIR=${PWD}
6
+ WP="${DIR}/vendor/bin/wp --path=${WP_ROOT_FOLDER}"
7
+
8
+ # Create database and drop previous one.
9
+ mysql -u${DB_USER} $(if [ ! -z ${DB_PASSWORD} ]; then echo "-p${DB_PASSWORD}"; fi) -h${DB_HOST} -e "DROP DATABASE IF EXISTS ${DB_NAME}; CREATE DATABASE ${DB_NAME};"
10
+
11
+ # Install and configure wordpress.
12
+ ${WP} config create --dbname=${DB_NAME} --dbuser=${DB_USER} --dbhost=${DB_HOST} --dbprefix=${TABLE_PREFIX}
13
+ ${WP} core install --url=${WP_URL} --title=DevPress --admin_user=${ADMIN_USERNAME} --admin_password=${ADMIN_PASSWORD} --admin_email=${ADMIN_EMAIL} --skip-email
14
+
15
+ # Add setting to disable cron.
16
+ if ! grep -q DISABLE_WP_CRON ${WP_ROOT_FOLDER}/wp-config.php; then
17
+ sed -i "/define( 'DB_COLLATE', '' );/ a\if(!defined('DISABLE_WP_CRON')) define('DISABLE_WP_CRON', true);" ${WP_ROOT_FOLDER}/wp-config.php
18
+ fi
19
+
20
+ if [ ! -z ${WP_THEME} ]; then
21
+ ${WP} theme install $WP_THEME
22
+ ${WP} theme activate $WP_THEME
23
+ fi;
24
+
25
+ # Link plugin to wordpress plugins subfolder and activate it.
26
+ rm -rf ${WP_ROOT_FOLDER}/wp-content/plugins/menu-image
27
+ ln -s ${DIR} ${WP_ROOT_FOLDER}/wp-content/plugins/menu-image
28
+ ${WP} plugin activate menu-image
29
+
30
+ # Dump database for codeception.
31
+ if [ -z "${DIR}/tests/_data/dump.sql" ]; then
32
+ rm ${DIR}/tests/_data/dump.sql
33
+ fi;
34
+ ${WP} db export ${DIR}/tests/_data/dump.sql