├── client
├── css
│ └── GoogleMapField.css
└── js
│ └── GoogleMapField.js
├── templates
└── BetterBrief
│ └── GoogleMapField.ss
├── _config
└── googlemapfield.yml
├── .editorconfig
├── composer.json
├── .scrutinizer.yml
├── README.md
├── src
└── GoogleMapField.php
└── composer.lock
/client/css/GoogleMapField.css:
--------------------------------------------------------------------------------
1 | .googlemapfield {
2 | position: relative;
3 | }
4 | .googlemapfield-map {
5 | width: 100%;
6 | height: 480px;
7 | border: 1px solid #b3b3b3;
8 | margin-top: 8px;
9 | box-sizing: border-box;
10 | }
11 |
--------------------------------------------------------------------------------
/templates/BetterBrief/GoogleMapField.ss:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/_config/googlemapfield.yml:
--------------------------------------------------------------------------------
1 | ---
2 | Name: googlemapfield
3 | Before: '*'
4 | ---
5 | BetterBrief\GoogleMapField:
6 | default_options:
7 | api_key: null
8 | show_search_box: true
9 | field_names:
10 | Latitude: 'Latitude'
11 | Longitude: 'Longitude'
12 | Zoom: 'Zoom'
13 | Bounds: 'Bounds'
14 | map:
15 | zoom: 14
16 | default_field_values:
17 | Latitude: 30
18 | Longitude: 0
19 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # For more information about the properties used in this file,
2 | # please see the EditorConfig documentation:
3 | # http://editorconfig.org
4 |
5 | [*]
6 | charset = utf-8
7 | end_of_line = lf
8 | indent_size = 4
9 | indent_style = space
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
13 | [{*.yml,package.json}]
14 | indent_size = 2
15 |
16 | # The indent size used in the package.json file cannot be changed:
17 | # https://github.com/npm/npm/pull/3180#issuecomment-16336516
18 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "betterbrief/silverstripe-googlemapfield",
3 | "type": "silverstripe-vendormodule",
4 | "description": "Save locations using latitude/longitude DataObject fields.",
5 | "keywords": ["maps","google", "googlemapfield", "silverstripe", "map", "geolocation"],
6 | "homepage": "http://github.com/BetterBrief/googlemapfield",
7 | "license": "BSD",
8 | "authors": [
9 | {
10 | "name": "Will Morgan",
11 | "homepage": "http://twitter.com/willmorgan",
12 | "role": "Developer"
13 | }
14 | ],
15 | "require": {
16 | "php": ">=5.6",
17 | "silverstripe/framework": "^4"
18 | },
19 | "autoload": {
20 | "psr-4": {
21 | "BetterBrief\\": "src/"
22 | }
23 | },
24 | "extra": {
25 | "branch-alias": {
26 | "dev-master": "2.x-dev"
27 | },
28 | "expose": [
29 | "client/css",
30 | "client/js"
31 | ]
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/.scrutinizer.yml:
--------------------------------------------------------------------------------
1 | inherit: true
2 |
3 | checks:
4 | php:
5 | verify_property_names: true
6 | verify_argument_usable_as_reference: true
7 | verify_access_scope_valid: true
8 | useless_calls: true
9 | use_statement_alias_conflict: true
10 | variable_existence: true
11 | unused_variables: true
12 | unused_properties: true
13 | unused_parameters: true
14 | unused_methods: true
15 | unreachable_code: true
16 | too_many_arguments: true
17 | sql_injection_vulnerabilities: true
18 | simplify_boolean_return: true
19 | side_effects_or_types: true
20 | security_vulnerabilities: true
21 | return_doc_comments: true
22 | return_doc_comment_if_not_inferrable: true
23 | require_scope_for_properties: true
24 | require_scope_for_methods: true
25 | require_php_tag_first: true
26 | psr2_switch_declaration: true
27 | psr2_class_declaration: true
28 | property_assignments: true
29 | prefer_while_loop_over_for_loop: true
30 | precedence_mistakes: true
31 | precedence_in_conditions: true
32 | phpunit_assertions: true
33 | php5_style_constructor: true
34 | parse_doc_comments: true
35 | parameter_non_unique: true
36 | parameter_doc_comments: true
37 | param_doc_comment_if_not_inferrable: true
38 | optional_parameters_at_the_end: true
39 | one_class_per_file: true
40 | no_unnecessary_if: true
41 | no_trailing_whitespace: true
42 | no_property_on_interface: true
43 | no_non_implemented_abstract_methods: true
44 | no_error_suppression: true
45 | no_duplicate_arguments: true
46 | no_commented_out_code: true
47 | newline_at_end_of_file: true
48 | missing_arguments: true
49 | method_calls_on_non_object: true
50 | instanceof_class_exists: true
51 | foreach_traversable: true
52 | fix_line_ending: true
53 | fix_doc_comments: true
54 | duplication: true
55 | deprecated_code_usage: true
56 | deadlock_detection_in_loops: true
57 | code_rating: true
58 | closure_use_not_conflicting: true
59 | catch_class_exists: true
60 | blank_line_after_namespace_declaration: false
61 | avoid_multiple_statements_on_same_line: true
62 | avoid_duplicate_types: true
63 | avoid_conflicting_incrementers: true
64 | avoid_closing_tag: true
65 | assignment_of_null_return: true
66 | argument_type_checks: true
67 |
68 | filter:
69 | paths: [src/*, tests/*]
70 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | silverstripe-googlemapfield
2 | ==============
3 |
4 | [](https://scrutinizer-ci.com/g/BetterBrief/silverstripe-googlemapfield/?branch=master)
5 |
6 | Lets you record a precise location using latitude/longitude/zoom fields to a DataObject.
7 |
8 | Displays a map using the Google Maps API. The user may then choose where to place the marker; the landing coordinates are then saved.
9 |
10 | You can also search for locations using the search box, which uses the Google Maps Geocoding API.
11 |
12 | Supports SilverStripe 4
13 |
14 | ## Usage
15 |
16 | ### Minimal configuration
17 |
18 | Given your DataObject uses the field names `Latitude` and `Longitude` for storing the latitude and longitude
19 | respectively then the following is a minimal setup to have the map show in the CMS:
20 |
21 | ```php
22 | use SilverStripe\ORM\DataObject;
23 | use BetterBrief\GoogleMapField;
24 |
25 | class Store extends DataObject
26 | {
27 | private static $db = [
28 | 'Title' => 'Varchar(255)',
29 | 'Latitude' => 'Varchar',
30 | 'Longitude' => 'Varchar',
31 | ];
32 |
33 | public function getCMSFields() {
34 | $fields = parent::getCMSFiels();
35 |
36 | // add the map field
37 | $fields->addFieldToTab('Root.Main', new GoogleMapField(
38 | $this,
39 | 'Location'
40 | ));
41 |
42 | // remove the lat / lng fields from the CMS
43 | $fields->removeFieldsFromTab('Root.Main', ['Latitude', 'Longitude']);
44 |
45 | return $fields;
46 | }
47 | }
48 | ```
49 |
50 | Remember to set your API key in your site's `config.yml`
51 |
52 | ```yml
53 | BetterBrief\GoogleMapField:
54 | default_options:
55 | api_key: '[google-api-key]'
56 | ```
57 |
58 | ## Optional configuration
59 |
60 | ### Configuration options
61 |
62 | You can either set the default options in your yaml file (see [_config/googlemapfield.yml](_config/googlemapfield.yml)
63 | for a complete list) or at run time on each instance of the `GoogleMapField` object.
64 |
65 | #### Setting at run time
66 |
67 | To set options at run time pass through an array of options (3rd construct parameter):
68 |
69 | ```php
70 | use BetterBrief\GoogleMapField;
71 |
72 | $field = new GoogleMapField(
73 | $dataObject,
74 | 'FieldName',
75 | [
76 | 'api_key' => 'my-api-key',
77 | 'show_search_box' => false,
78 | 'map' => [
79 | 'zoom' => 10,
80 | ],
81 | ...
82 | ]
83 | );
84 | ```
85 |
86 | #### Customising the map appearance
87 |
88 | You can customise the map's appearance by passing through settings into the `map` key of the `$options` (shown above).
89 | The `map` settings take a literal representation of the [google.maps.MapOptions](https://developers.google.com/maps/documentation/javascript/reference?csw=1#MapOptions)
90 |
91 | For example if we wanted to change the map type from a road map to satellite imagery we could do the following:
92 |
93 | ```php
94 | use BetterBrief\GoogleMapField;
95 |
96 | $field = new GoogleMapField(
97 | $object,
98 | 'Location',
99 | [
100 | 'map' => [
101 | 'mapTypeId' => 'SATELLITE',
102 | ],
103 | ]
104 | );
105 | ```
106 |
107 | # Getting an API key
108 |
109 | ## Google Maps API key
110 |
111 | To get a Google Maps JS API key please see [the official docs](https://developers.google.com/maps/documentation/javascript/get-api-key)
112 |
113 | ## Geocoding access - enabling the search box
114 |
115 | To use the search box to find locations on the map, you'll need to have enabled the Geocoding API as well. Please see
116 | [the official docs](https://developers.google.com/maps/documentation/javascript/geocoding#GetStarted)
--------------------------------------------------------------------------------
/client/js/GoogleMapField.js:
--------------------------------------------------------------------------------
1 | /**
2 | * GoogleMapField.js
3 | * @author <@willmorgan>
4 | */
5 | (function($) {
6 |
7 | var gmapsAPILoaded = false;
8 |
9 | // Run this code for every googlemapfield
10 | function initField() {
11 | var field = $(this);
12 | if(field.data('gmapfield-inited') === true) {
13 | return;
14 | }
15 | field.data('gmapfield-inited', true);
16 | var settings = JSON.parse(field.attr('data-settings')),
17 | centre = new google.maps.LatLng(settings.coords[0], settings.coords[1]),
18 | mapSettings = {
19 | streetViewControl: false,
20 | zoom: settings.map.zoom * 1,
21 | center: centre,
22 | mapTypeId: google.maps.MapTypeId[settings.map.mapTypeId]
23 | },
24 | mapElement = field.find('.googlemapfield-map'),
25 | map = new google.maps.Map(mapElement[0], mapSettings),
26 | marker = new google.maps.Marker({
27 | position: map.getCenter(),
28 | map: map,
29 | title: "Position",
30 | draggable: true
31 | }),
32 | latField = field.find('.googlemapfield-latfield'),
33 | lngField = field.find('.googlemapfield-lngfield'),
34 | zoomField = field.find('.googlemapfield-zoomfield'),
35 | boundsField = field.find('.googlemapfield-boundsfield'),
36 | search = field.find('.googlemapfield-searchfield');
37 |
38 | // Update the hidden fields and mark as changed
39 | function updateField(latLng, init) {
40 | var latCoord = latLng.lat(),
41 | lngCoord = latLng.lng();
42 |
43 | mapSettings.coords = [latCoord, lngCoord];
44 |
45 | latField.val(latCoord);
46 | lngField.val(lngCoord);
47 | updateBounds(init);
48 |
49 | // Mark form as changed if this isn't initialisation
50 | if (!init) {
51 | $('.cms-edit-form').addClass('changed');
52 | }
53 | }
54 |
55 | function updateZoom(init) {
56 | zoomField.val(map.getZoom());
57 | // Mark form as changed if this isn't initialisation
58 | if (!init) {
59 | $('.cms-edit-form').addClass('changed');
60 | }
61 | }
62 |
63 | function updateBounds() {
64 | var bounds = JSON.stringify(map.getBounds().toJSON());
65 | boundsField.val(bounds);
66 | }
67 |
68 | function zoomChanged() {
69 | updateZoom();
70 | updateBounds();
71 | }
72 |
73 | function centreOnMarker() {
74 | var center = marker.getPosition();
75 | map.panTo(center);
76 | updateField(center);
77 | }
78 |
79 | function mapClicked(ev) {
80 | var center = ev.latLng;
81 | marker.setPosition(center);
82 | centreOnMarker();
83 | }
84 |
85 | function geoSearchComplete(result, status) {
86 | if(status !== google.maps.GeocoderStatus.OK) {
87 | console.warn('Geocoding search failed');
88 | return;
89 | }
90 | marker.setPosition(result[0].geometry.location);
91 | centreOnMarker();
92 | }
93 |
94 | function searchReady(ev) {
95 | ev.preventDefault();
96 | ev.stopPropagation();
97 | var searchText = search.val(),
98 | geocoder;
99 | if(searchText) {
100 | geocoder = new google.maps.Geocoder();
101 | geocoder.geocode({ address: searchText }, geoSearchComplete);
102 | }
103 | }
104 |
105 | // Populate the fields to the current centre
106 | google.maps.event.addListenerOnce(map, 'idle', function(){
107 | updateField(map.getCenter(), true);
108 | updateZoom(init);
109 | });
110 |
111 | google.maps.event.addListener(marker, 'dragend', centreOnMarker);
112 |
113 | google.maps.event.addListener(map, 'click', mapClicked);
114 |
115 | google.maps.event.addListener(map, 'zoom_changed', zoomChanged);
116 |
117 | search.on({
118 | 'change': searchReady,
119 | 'keydown': function(ev) {
120 | if(ev.which == 13) {
121 | searchReady(ev);
122 | }
123 | }
124 | });
125 |
126 | }
127 |
128 | $.fn.gmapfield = function() {
129 | return this.each(function() {
130 | initField.call(this);
131 | });
132 | }
133 |
134 | function init() {
135 | var mapFields = $('.googlemapfield:visible').gmapfield();
136 | mapFields.each(initField);
137 | }
138 |
139 | // Export the init function
140 | window.googlemapfieldInit = function() {
141 | gmapsAPILoaded = true;
142 | init();
143 | }
144 |
145 | // CMS stuff: set the init method to re-run if the page is saved or pjaxed
146 | // there are no docs for the CMS implementation of entwine, so this is hacky
147 | if(!!$.fn.entwine && $(document.body).hasClass('cms')) {
148 | (function setupCMS() {
149 | var matchFunction = function() {
150 | if(gmapsAPILoaded) {
151 | init();
152 | }
153 | };
154 | $.entwine('googlemapfield', function($) {
155 | $('.cms-tabset').entwine({
156 | onmatch: matchFunction
157 | });
158 | $('.cms-tabset-nav-primary li').entwine({
159 | onclick: matchFunction
160 | });
161 | $('.ss-tabset li').entwine({
162 | onclick: matchFunction
163 | });
164 | $('.cms-edit-form').entwine({
165 | onmatch: matchFunction
166 | });
167 | });
168 | }());
169 | }
170 |
171 | }(jQuery));
172 |
--------------------------------------------------------------------------------
/src/GoogleMapField.php:
--------------------------------------------------------------------------------
1 |
11 | */
12 |
13 | namespace BetterBrief;
14 |
15 | use SilverStripe\Forms\FormField;
16 | use SilverStripe\ORM\DataObject;
17 | use SilverStripe\Forms\HiddenField;
18 | use SilverStripe\Forms\TextField;
19 | use SilverStripe\View\Requirements;
20 | use SilverStripe\ORM\DataObjectInterface;
21 | use SilverStripe\Forms\FieldList;
22 | use SilverStripe\Core\Convert;
23 |
24 | class GoogleMapField extends FormField {
25 |
26 | protected $data;
27 |
28 | /**
29 | * @var FormField
30 | */
31 | protected $latField;
32 |
33 | /**
34 | * @var FormField
35 | */
36 | protected $lngField;
37 |
38 | /**
39 | * @var FormField
40 | */
41 | protected $zoomField;
42 |
43 | /**
44 | * @var FormField
45 | */
46 | protected $boundsField;
47 |
48 | /**
49 | * The merged version of the default and user specified options
50 | * @var array
51 | */
52 | protected $options = array();
53 |
54 | /**
55 | * @param DataObject $data The controlling dataobject
56 | * @param string $title The title of the field
57 | * @param array $options Various settings for the field
58 | */
59 | public function __construct(DataObject $data, $title, $options = array()) {
60 | $this->data = $data;
61 |
62 | // Set up fieldnames
63 | $this->setupOptions($options);
64 |
65 | $this->setupChildren();
66 |
67 | parent::__construct($this->getName(), $title);
68 | }
69 |
70 | // Auto generate a name
71 | public function getName() {
72 | $fieldNames = $this->getOption('field_names');
73 | return sprintf(
74 | '%s_%s_%s',
75 | $this->data->class,
76 | $fieldNames['Latitude'],
77 | $fieldNames['Longitude']
78 | );
79 | }
80 |
81 | /**
82 | * Merge options preserving the first level of array keys
83 | * @param array $options
84 | */
85 | public function setupOptions(array $options) {
86 | $this->options = static::config()->default_options;
87 | foreach($this->options as $name => &$value) {
88 | if(isset($options[$name])) {
89 | if(is_array($value)) {
90 | $value = array_merge($value, $options[$name]);
91 | }
92 | else {
93 | $value = $options[$name];
94 | }
95 | }
96 | }
97 | }
98 |
99 | /**
100 | * Set up child hidden fields, and optionally the search box.
101 | * @return FieldList the children
102 | */
103 | public function setupChildren() {
104 | $name = $this->getName();
105 |
106 | // Create the latitude/longitude hidden fields
107 | $this->latField = HiddenField::create(
108 | $name.'[Latitude]',
109 | 'Lat',
110 | $this->recordFieldData('Latitude')
111 | )->addExtraClass('googlemapfield-latfield no-change-track');
112 |
113 | $this->lngField = HiddenField::create(
114 | $name.'[Longitude]',
115 | 'Lng',
116 | $this->recordFieldData('Longitude')
117 | )->addExtraClass('googlemapfield-lngfield no-change-track');
118 |
119 | $this->zoomField = HiddenField::create(
120 | $name.'[Zoom]',
121 | 'Zoom',
122 | $this->recordFieldData('Zoom')
123 | )->addExtraClass('googlemapfield-zoomfield no-change-track');
124 | $this->boundsField = HiddenField::create(
125 | $name.'[Bounds]',
126 | 'Bounds',
127 | $this->recordFieldData('Bounds')
128 | )->addExtraClass('googlemapfield-boundsfield no-change-track');
129 | $this->children = new FieldList(
130 | $this->latField,
131 | $this->lngField,
132 | $this->zoomField,
133 | $this->boundsField
134 | );
135 |
136 | if($this->options['show_search_box']) {
137 | $this->children->push(
138 | TextField::create('Search')
139 | ->addExtraClass('googlemapfield-searchfield')
140 | ->setAttribute('placeholder', 'Search for a location')
141 | );
142 | }
143 |
144 | return $this->children;
145 | }
146 |
147 | /**
148 | * @param array $properties
149 | * @see https://developers.google.com/maps/documentation/javascript/reference
150 | * {@inheritdoc}
151 | */
152 | public function Field($properties = array()) {
153 | $jsOptions = array(
154 | 'coords' => array(
155 | $this->recordFieldData('Latitude'),
156 | $this->recordFieldData('Longitude')
157 | ),
158 | 'map' => array(
159 | 'zoom' => $this->recordFieldData('Zoom') ?: $this->getOption('map.zoom'),
160 | 'mapTypeId' => 'ROADMAP',
161 | ),
162 | );
163 |
164 | $jsOptions = array_replace_recursive($jsOptions, $this->options);
165 | $this->setAttribute('data-settings', Convert::array2json($jsOptions));
166 | $this->requireDependencies();
167 | return parent::Field($properties);
168 | }
169 |
170 | /**
171 | * Set up and include any frontend requirements
172 | * @return void
173 | */
174 | protected function requireDependencies() {
175 | $gmapsParams = array(
176 | 'callback' => 'googlemapfieldInit',
177 | );
178 | if($key = $this->getOption('api_key')) {
179 | $gmapsParams['key'] = $key;
180 | }
181 | $this->extend('updateGoogleMapsParams', $gmapsParams);
182 | Requirements::css('betterbrief/silverstripe-googlemapfield: client/css/GoogleMapField.css');
183 | Requirements::javascript('betterbrief/silverstripe-googlemapfield: client/js/GoogleMapField.js');
184 | Requirements::javascript('//maps.googleapis.com/maps/api/js?' . http_build_query($gmapsParams));
185 | }
186 |
187 | /**
188 | * {@inheritdoc}
189 | */
190 | public function setValue($record, $data = null) {
191 | $this->latField->setValue(
192 | $record['Latitude']
193 | );
194 | $this->lngField->setValue(
195 | $record['Longitude']
196 | );
197 | $this->zoomField->setValue(
198 | $record['Zoom']
199 | );
200 | $this->boundsField->setValue(
201 | $record['Bounds']
202 | );
203 | return $this;
204 | }
205 |
206 | /**
207 | * Take the latitude/longitude fields and save them to the DataObject.
208 | * {@inheritdoc}
209 | */
210 | public function saveInto(DataObjectInterface $record) {
211 | $record->setCastedField($this->childFieldName('Latitude'), $this->latField->dataValue());
212 | $record->setCastedField($this->childFieldName('Longitude'), $this->lngField->dataValue());
213 | $record->setCastedField($this->childFieldName('Zoom'), $this->zoomField->dataValue());
214 | $record->setCastedField($this->childFieldName('Bounds'), $this->boundsField->dataValue());
215 | return $this;
216 | }
217 |
218 | /**
219 | * @return FieldList The Latitude/Longitude fields
220 | */
221 | public function getChildFields() {
222 | return $this->children;
223 | }
224 |
225 | protected function childFieldName($name) {
226 | $fieldNames = $this->getOption('field_names');
227 | return $fieldNames[$name];
228 | }
229 |
230 | protected function recordFieldData($name) {
231 | $fieldName = $this->childFieldName($name);
232 | return $this->data->$fieldName ?: $this->getDefaultValue($name);
233 | }
234 |
235 | public function getDefaultValue($name) {
236 | $fieldValues = $this->getOption('default_field_values');
237 | return isset($fieldValues[$name]) ? $fieldValues[$name] : null;
238 | }
239 |
240 | /**
241 | * @return string The VALUE of the Latitude field
242 | */
243 | public function getLatData() {
244 | $fieldNames = $this->getOption('field_names');
245 | return $this->data->$fieldNames['Latitude'];
246 | }
247 |
248 | /**
249 | * @return string The VALUE of the Longitude field
250 | */
251 | public function getLngData() {
252 | $fieldNames = $this->getOption('field_names');
253 | return $this->data->$fieldNames['Longitude'];
254 | }
255 |
256 | /**
257 | * Get the merged option that was set on __construct
258 | * @param string $name The name of the option
259 | * @return mixed
260 | */
261 | public function getOption($name) {
262 | // Quicker execution path for "."-free names
263 | if (strpos($name, '.') === false) {
264 | if (isset($this->options[$name])) return $this->options[$name];
265 | } else {
266 | $names = explode('.', $name);
267 |
268 | $var = $this->options;
269 |
270 | foreach($names as $n) {
271 | if(!isset($var[$n])) {
272 | return null;
273 | }
274 | $var = $var[$n];
275 | }
276 |
277 | return $var;
278 | }
279 | }
280 |
281 | /**
282 | * Set an option for this field
283 | * @param string $name The name of the option to set
284 | * @param mixed $val The value of said option
285 | * @return $this
286 | */
287 | public function setOption($name, $val) {
288 | // Quicker execution path for "."-free names
289 | if(strpos($name,'.') === false) {
290 | $this->options[$name] = $val;
291 | } else {
292 | $names = explode('.', $name);
293 |
294 | // We still want to do this even if we have strict path checking for legacy code
295 | $var = &$this->options;
296 |
297 | foreach($names as $n) {
298 | $var = &$var[$n];
299 | }
300 |
301 | $var = $val;
302 | }
303 | return $this;
304 | }
305 |
306 | }
307 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "hash": "d35325e28fa556aaeb1e978b2a294a14",
8 | "content-hash": "a6ac4baf50929b494658c3988b9c5501",
9 | "packages": [
10 | {
11 | "name": "composer/ca-bundle",
12 | "version": "1.1.0",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/composer/ca-bundle.git",
16 | "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288",
21 | "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "ext-openssl": "*",
26 | "ext-pcre": "*",
27 | "php": "^5.3.2 || ^7.0"
28 | },
29 | "require-dev": {
30 | "phpunit/phpunit": "^4.8.35",
31 | "psr/log": "^1.0",
32 | "symfony/process": "^2.5 || ^3.0 || ^4.0"
33 | },
34 | "type": "library",
35 | "extra": {
36 | "branch-alias": {
37 | "dev-master": "1.x-dev"
38 | }
39 | },
40 | "autoload": {
41 | "psr-4": {
42 | "Composer\\CaBundle\\": "src"
43 | }
44 | },
45 | "notification-url": "https://packagist.org/downloads/",
46 | "license": [
47 | "MIT"
48 | ],
49 | "authors": [
50 | {
51 | "name": "Jordi Boggiano",
52 | "email": "j.boggiano@seld.be",
53 | "homepage": "http://seld.be"
54 | }
55 | ],
56 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
57 | "keywords": [
58 | "cabundle",
59 | "cacert",
60 | "certificate",
61 | "ssl",
62 | "tls"
63 | ],
64 | "time": "2017-11-29 09:37:33"
65 | },
66 | {
67 | "name": "composer/installers",
68 | "version": "v1.5.0",
69 | "source": {
70 | "type": "git",
71 | "url": "https://github.com/composer/installers.git",
72 | "reference": "049797d727261bf27f2690430d935067710049c2"
73 | },
74 | "dist": {
75 | "type": "zip",
76 | "url": "https://api.github.com/repos/composer/installers/zipball/049797d727261bf27f2690430d935067710049c2",
77 | "reference": "049797d727261bf27f2690430d935067710049c2",
78 | "shasum": ""
79 | },
80 | "require": {
81 | "composer-plugin-api": "^1.0"
82 | },
83 | "replace": {
84 | "roundcube/plugin-installer": "*",
85 | "shama/baton": "*"
86 | },
87 | "require-dev": {
88 | "composer/composer": "1.0.*@dev",
89 | "phpunit/phpunit": "^4.8.36"
90 | },
91 | "type": "composer-plugin",
92 | "extra": {
93 | "class": "Composer\\Installers\\Plugin",
94 | "branch-alias": {
95 | "dev-master": "1.0-dev"
96 | }
97 | },
98 | "autoload": {
99 | "psr-4": {
100 | "Composer\\Installers\\": "src/Composer/Installers"
101 | }
102 | },
103 | "notification-url": "https://packagist.org/downloads/",
104 | "license": [
105 | "MIT"
106 | ],
107 | "authors": [
108 | {
109 | "name": "Kyle Robinson Young",
110 | "email": "kyle@dontkry.com",
111 | "homepage": "https://github.com/shama"
112 | }
113 | ],
114 | "description": "A multi-framework Composer library installer",
115 | "homepage": "https://composer.github.io/installers/",
116 | "keywords": [
117 | "Craft",
118 | "Dolibarr",
119 | "Eliasis",
120 | "Hurad",
121 | "ImageCMS",
122 | "Kanboard",
123 | "Lan Management System",
124 | "MODX Evo",
125 | "Mautic",
126 | "Maya",
127 | "OXID",
128 | "Plentymarkets",
129 | "Porto",
130 | "RadPHP",
131 | "SMF",
132 | "Thelia",
133 | "WolfCMS",
134 | "agl",
135 | "aimeos",
136 | "annotatecms",
137 | "attogram",
138 | "bitrix",
139 | "cakephp",
140 | "chef",
141 | "cockpit",
142 | "codeigniter",
143 | "concrete5",
144 | "croogo",
145 | "dokuwiki",
146 | "drupal",
147 | "eZ Platform",
148 | "elgg",
149 | "expressionengine",
150 | "fuelphp",
151 | "grav",
152 | "installer",
153 | "itop",
154 | "joomla",
155 | "kohana",
156 | "laravel",
157 | "lavalite",
158 | "lithium",
159 | "magento",
160 | "majima",
161 | "mako",
162 | "mediawiki",
163 | "modulework",
164 | "modx",
165 | "moodle",
166 | "osclass",
167 | "phpbb",
168 | "piwik",
169 | "ppi",
170 | "puppet",
171 | "pxcms",
172 | "reindex",
173 | "roundcube",
174 | "shopware",
175 | "silverstripe",
176 | "sydes",
177 | "symfony",
178 | "typo3",
179 | "wordpress",
180 | "yawik",
181 | "zend",
182 | "zikula"
183 | ],
184 | "time": "2017-12-29 09:13:20"
185 | },
186 | {
187 | "name": "embed/embed",
188 | "version": "v3.2.2",
189 | "source": {
190 | "type": "git",
191 | "url": "https://github.com/oscarotero/Embed.git",
192 | "reference": "f772982c26034d3d58cd82c4b18e1410dd74625e"
193 | },
194 | "dist": {
195 | "type": "zip",
196 | "url": "https://api.github.com/repos/oscarotero/Embed/zipball/f772982c26034d3d58cd82c4b18e1410dd74625e",
197 | "reference": "f772982c26034d3d58cd82c4b18e1410dd74625e",
198 | "shasum": ""
199 | },
200 | "require": {
201 | "composer/ca-bundle": "^1.0",
202 | "ext-curl": "*",
203 | "ext-mbstring": "*",
204 | "php": "^5.5|^7.0"
205 | },
206 | "require-dev": {
207 | "friendsofphp/php-cs-fixer": "^2.0",
208 | "phpunit/phpunit": "^4.8|^5.7"
209 | },
210 | "type": "library",
211 | "autoload": {
212 | "psr-4": {
213 | "Embed\\": "src"
214 | }
215 | },
216 | "notification-url": "https://packagist.org/downloads/",
217 | "license": [
218 | "MIT"
219 | ],
220 | "authors": [
221 | {
222 | "name": "Oscar Otero",
223 | "email": "oom@oscarotero.com",
224 | "homepage": "http://oscarotero.com",
225 | "role": "Developer"
226 | }
227 | ],
228 | "description": "PHP library to retrieve page info using oembed, opengraph, etc",
229 | "homepage": "https://github.com/oscarotero/Embed",
230 | "keywords": [
231 | "embed",
232 | "embedly",
233 | "oembed",
234 | "opengraph",
235 | "twitter cards"
236 | ],
237 | "time": "2017-11-13 17:56:44"
238 | },
239 | {
240 | "name": "guzzlehttp/psr7",
241 | "version": "1.4.2",
242 | "source": {
243 | "type": "git",
244 | "url": "https://github.com/guzzle/psr7.git",
245 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
246 | },
247 | "dist": {
248 | "type": "zip",
249 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
250 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
251 | "shasum": ""
252 | },
253 | "require": {
254 | "php": ">=5.4.0",
255 | "psr/http-message": "~1.0"
256 | },
257 | "provide": {
258 | "psr/http-message-implementation": "1.0"
259 | },
260 | "require-dev": {
261 | "phpunit/phpunit": "~4.0"
262 | },
263 | "type": "library",
264 | "extra": {
265 | "branch-alias": {
266 | "dev-master": "1.4-dev"
267 | }
268 | },
269 | "autoload": {
270 | "psr-4": {
271 | "GuzzleHttp\\Psr7\\": "src/"
272 | },
273 | "files": [
274 | "src/functions_include.php"
275 | ]
276 | },
277 | "notification-url": "https://packagist.org/downloads/",
278 | "license": [
279 | "MIT"
280 | ],
281 | "authors": [
282 | {
283 | "name": "Michael Dowling",
284 | "email": "mtdowling@gmail.com",
285 | "homepage": "https://github.com/mtdowling"
286 | },
287 | {
288 | "name": "Tobias Schultze",
289 | "homepage": "https://github.com/Tobion"
290 | }
291 | ],
292 | "description": "PSR-7 message implementation that also provides common utility methods",
293 | "keywords": [
294 | "http",
295 | "message",
296 | "request",
297 | "response",
298 | "stream",
299 | "uri",
300 | "url"
301 | ],
302 | "time": "2017-03-20 17:10:46"
303 | },
304 | {
305 | "name": "intervention/image",
306 | "version": "2.4.1",
307 | "source": {
308 | "type": "git",
309 | "url": "https://github.com/Intervention/image.git",
310 | "reference": "3603dbcc9a17d307533473246a6c58c31cf17919"
311 | },
312 | "dist": {
313 | "type": "zip",
314 | "url": "https://api.github.com/repos/Intervention/image/zipball/3603dbcc9a17d307533473246a6c58c31cf17919",
315 | "reference": "3603dbcc9a17d307533473246a6c58c31cf17919",
316 | "shasum": ""
317 | },
318 | "require": {
319 | "ext-fileinfo": "*",
320 | "guzzlehttp/psr7": "~1.1",
321 | "php": ">=5.4.0"
322 | },
323 | "require-dev": {
324 | "mockery/mockery": "~0.9.2",
325 | "phpunit/phpunit": "^4.8 || ^5.7"
326 | },
327 | "suggest": {
328 | "ext-gd": "to use GD library based image processing.",
329 | "ext-imagick": "to use Imagick based image processing.",
330 | "intervention/imagecache": "Caching extension for the Intervention Image library"
331 | },
332 | "type": "library",
333 | "extra": {
334 | "branch-alias": {
335 | "dev-master": "2.3-dev"
336 | },
337 | "laravel": {
338 | "providers": [
339 | "Intervention\\Image\\ImageServiceProvider"
340 | ],
341 | "aliases": {
342 | "Image": "Intervention\\Image\\Facades\\Image"
343 | }
344 | }
345 | },
346 | "autoload": {
347 | "psr-4": {
348 | "Intervention\\Image\\": "src/Intervention/Image"
349 | }
350 | },
351 | "notification-url": "https://packagist.org/downloads/",
352 | "license": [
353 | "MIT"
354 | ],
355 | "authors": [
356 | {
357 | "name": "Oliver Vogel",
358 | "email": "oliver@olivervogel.com",
359 | "homepage": "http://olivervogel.com/"
360 | }
361 | ],
362 | "description": "Image handling and manipulation library with support for Laravel integration",
363 | "homepage": "http://image.intervention.io/",
364 | "keywords": [
365 | "gd",
366 | "image",
367 | "imagick",
368 | "laravel",
369 | "thumbnail",
370 | "watermark"
371 | ],
372 | "time": "2017-09-21 16:29:17"
373 | },
374 | {
375 | "name": "league/flysystem",
376 | "version": "1.0.41",
377 | "source": {
378 | "type": "git",
379 | "url": "https://github.com/thephpleague/flysystem.git",
380 | "reference": "f400aa98912c561ba625ea4065031b7a41e5a155"
381 | },
382 | "dist": {
383 | "type": "zip",
384 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f400aa98912c561ba625ea4065031b7a41e5a155",
385 | "reference": "f400aa98912c561ba625ea4065031b7a41e5a155",
386 | "shasum": ""
387 | },
388 | "require": {
389 | "php": ">=5.5.9"
390 | },
391 | "conflict": {
392 | "league/flysystem-sftp": "<1.0.6"
393 | },
394 | "require-dev": {
395 | "ext-fileinfo": "*",
396 | "mockery/mockery": "~0.9",
397 | "phpspec/phpspec": "^2.2",
398 | "phpunit/phpunit": "~4.8"
399 | },
400 | "suggest": {
401 | "ext-fileinfo": "Required for MimeType",
402 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
403 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
404 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
405 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
406 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
407 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
408 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
409 | "league/flysystem-webdav": "Allows you to use WebDAV storage",
410 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
411 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
412 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
413 | },
414 | "type": "library",
415 | "extra": {
416 | "branch-alias": {
417 | "dev-master": "1.1-dev"
418 | }
419 | },
420 | "autoload": {
421 | "psr-4": {
422 | "League\\Flysystem\\": "src/"
423 | }
424 | },
425 | "notification-url": "https://packagist.org/downloads/",
426 | "license": [
427 | "MIT"
428 | ],
429 | "authors": [
430 | {
431 | "name": "Frank de Jonge",
432 | "email": "info@frenky.net"
433 | }
434 | ],
435 | "description": "Filesystem abstraction: Many filesystems, one API.",
436 | "keywords": [
437 | "Cloud Files",
438 | "WebDAV",
439 | "abstraction",
440 | "aws",
441 | "cloud",
442 | "copy.com",
443 | "dropbox",
444 | "file systems",
445 | "files",
446 | "filesystem",
447 | "filesystems",
448 | "ftp",
449 | "rackspace",
450 | "remote",
451 | "s3",
452 | "sftp",
453 | "storage"
454 | ],
455 | "time": "2017-08-06 17:41:04"
456 | },
457 | {
458 | "name": "m1/env",
459 | "version": "2.1.0",
460 | "source": {
461 | "type": "git",
462 | "url": "https://github.com/m1/Env.git",
463 | "reference": "d87eddd031f2aa5450fa04bb1325de8a489b3cd0"
464 | },
465 | "dist": {
466 | "type": "zip",
467 | "url": "https://api.github.com/repos/m1/Env/zipball/d87eddd031f2aa5450fa04bb1325de8a489b3cd0",
468 | "reference": "d87eddd031f2aa5450fa04bb1325de8a489b3cd0",
469 | "shasum": ""
470 | },
471 | "require": {
472 | "php": ">=5.3.0"
473 | },
474 | "require-dev": {
475 | "phpunit/phpunit": "4.*",
476 | "scrutinizer/ocular": "~1.1",
477 | "squizlabs/php_codesniffer": "^2.3"
478 | },
479 | "suggest": {
480 | "josegonzalez/dotenv": "For loading of .env",
481 | "m1/vars": "For loading of configs"
482 | },
483 | "type": "library",
484 | "autoload": {
485 | "psr-4": {
486 | "M1\\Env\\": "src"
487 | }
488 | },
489 | "notification-url": "https://packagist.org/downloads/",
490 | "license": [
491 | "MIT"
492 | ],
493 | "authors": [
494 | {
495 | "name": "Miles Croxford",
496 | "email": "hello@milescroxford.com",
497 | "homepage": "http://milescroxford.com",
498 | "role": "Developer"
499 | }
500 | ],
501 | "description": "Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.",
502 | "homepage": "https://github.com/m1/Env",
503 | "keywords": [
504 | ".env",
505 | "config",
506 | "dotenv",
507 | "env",
508 | "loader",
509 | "m1",
510 | "parser",
511 | "support"
512 | ],
513 | "time": "2016-10-06 19:31:28"
514 | },
515 | {
516 | "name": "marcj/topsort",
517 | "version": "1.1.0",
518 | "source": {
519 | "type": "git",
520 | "url": "https://github.com/marcj/topsort.php.git",
521 | "reference": "387086c2db60ee0a27ac5df588c0f0b30c6bdc4b"
522 | },
523 | "dist": {
524 | "type": "zip",
525 | "url": "https://api.github.com/repos/marcj/topsort.php/zipball/387086c2db60ee0a27ac5df588c0f0b30c6bdc4b",
526 | "reference": "387086c2db60ee0a27ac5df588c0f0b30c6bdc4b",
527 | "shasum": ""
528 | },
529 | "require": {
530 | "php": ">=5.4"
531 | },
532 | "require-dev": {
533 | "codeclimate/php-test-reporter": "dev-master",
534 | "phpunit/phpunit": "~4.0",
535 | "symfony/console": "~2.5"
536 | },
537 | "type": "library",
538 | "autoload": {
539 | "psr-4": {
540 | "MJS\\TopSort\\": "src/",
541 | "MJS\\TopSort\\Tests\\": "tests/Tests/"
542 | }
543 | },
544 | "notification-url": "https://packagist.org/downloads/",
545 | "license": [
546 | "MIT"
547 | ],
548 | "authors": [
549 | {
550 | "name": "Marc J. Schmidt",
551 | "email": "marc@marcjschmidt.de"
552 | }
553 | ],
554 | "description": "High-Performance TopSort/Dependency resolving algorithm",
555 | "keywords": [
556 | "dependency resolving",
557 | "topological sort",
558 | "topsort"
559 | ],
560 | "time": "2016-11-19 14:58:11"
561 | },
562 | {
563 | "name": "monolog/monolog",
564 | "version": "1.23.0",
565 | "source": {
566 | "type": "git",
567 | "url": "https://github.com/Seldaek/monolog.git",
568 | "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
569 | },
570 | "dist": {
571 | "type": "zip",
572 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
573 | "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
574 | "shasum": ""
575 | },
576 | "require": {
577 | "php": ">=5.3.0",
578 | "psr/log": "~1.0"
579 | },
580 | "provide": {
581 | "psr/log-implementation": "1.0.0"
582 | },
583 | "require-dev": {
584 | "aws/aws-sdk-php": "^2.4.9 || ^3.0",
585 | "doctrine/couchdb": "~1.0@dev",
586 | "graylog2/gelf-php": "~1.0",
587 | "jakub-onderka/php-parallel-lint": "0.9",
588 | "php-amqplib/php-amqplib": "~2.4",
589 | "php-console/php-console": "^3.1.3",
590 | "phpunit/phpunit": "~4.5",
591 | "phpunit/phpunit-mock-objects": "2.3.0",
592 | "ruflin/elastica": ">=0.90 <3.0",
593 | "sentry/sentry": "^0.13",
594 | "swiftmailer/swiftmailer": "^5.3|^6.0"
595 | },
596 | "suggest": {
597 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
598 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
599 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
600 | "ext-mongo": "Allow sending log messages to a MongoDB server",
601 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
602 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
603 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
604 | "php-console/php-console": "Allow sending log messages to Google Chrome",
605 | "rollbar/rollbar": "Allow sending log messages to Rollbar",
606 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
607 | "sentry/sentry": "Allow sending log messages to a Sentry server"
608 | },
609 | "type": "library",
610 | "extra": {
611 | "branch-alias": {
612 | "dev-master": "2.0.x-dev"
613 | }
614 | },
615 | "autoload": {
616 | "psr-4": {
617 | "Monolog\\": "src/Monolog"
618 | }
619 | },
620 | "notification-url": "https://packagist.org/downloads/",
621 | "license": [
622 | "MIT"
623 | ],
624 | "authors": [
625 | {
626 | "name": "Jordi Boggiano",
627 | "email": "j.boggiano@seld.be",
628 | "homepage": "http://seld.be"
629 | }
630 | ],
631 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
632 | "homepage": "http://github.com/Seldaek/monolog",
633 | "keywords": [
634 | "log",
635 | "logging",
636 | "psr-3"
637 | ],
638 | "time": "2017-06-19 01:22:40"
639 | },
640 | {
641 | "name": "nikic/php-parser",
642 | "version": "v3.1.3",
643 | "source": {
644 | "type": "git",
645 | "url": "https://github.com/nikic/PHP-Parser.git",
646 | "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda"
647 | },
648 | "dist": {
649 | "type": "zip",
650 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/579f4ce846734a1cf55d6a531d00ca07a43e3cda",
651 | "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda",
652 | "shasum": ""
653 | },
654 | "require": {
655 | "ext-tokenizer": "*",
656 | "php": ">=5.5"
657 | },
658 | "require-dev": {
659 | "phpunit/phpunit": "~4.0|~5.0"
660 | },
661 | "bin": [
662 | "bin/php-parse"
663 | ],
664 | "type": "library",
665 | "extra": {
666 | "branch-alias": {
667 | "dev-master": "3.0-dev"
668 | }
669 | },
670 | "autoload": {
671 | "psr-4": {
672 | "PhpParser\\": "lib/PhpParser"
673 | }
674 | },
675 | "notification-url": "https://packagist.org/downloads/",
676 | "license": [
677 | "BSD-3-Clause"
678 | ],
679 | "authors": [
680 | {
681 | "name": "Nikita Popov"
682 | }
683 | ],
684 | "description": "A PHP parser written in PHP",
685 | "keywords": [
686 | "parser",
687 | "php"
688 | ],
689 | "time": "2017-12-26 14:43:21"
690 | },
691 | {
692 | "name": "paragonie/random_compat",
693 | "version": "v2.0.11",
694 | "source": {
695 | "type": "git",
696 | "url": "https://github.com/paragonie/random_compat.git",
697 | "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8"
698 | },
699 | "dist": {
700 | "type": "zip",
701 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8",
702 | "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8",
703 | "shasum": ""
704 | },
705 | "require": {
706 | "php": ">=5.2.0"
707 | },
708 | "require-dev": {
709 | "phpunit/phpunit": "4.*|5.*"
710 | },
711 | "suggest": {
712 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
713 | },
714 | "type": "library",
715 | "autoload": {
716 | "files": [
717 | "lib/random.php"
718 | ]
719 | },
720 | "notification-url": "https://packagist.org/downloads/",
721 | "license": [
722 | "MIT"
723 | ],
724 | "authors": [
725 | {
726 | "name": "Paragon Initiative Enterprises",
727 | "email": "security@paragonie.com",
728 | "homepage": "https://paragonie.com"
729 | }
730 | ],
731 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
732 | "keywords": [
733 | "csprng",
734 | "pseudorandom",
735 | "random"
736 | ],
737 | "time": "2017-09-27 21:40:39"
738 | },
739 | {
740 | "name": "psr/cache",
741 | "version": "1.0.1",
742 | "source": {
743 | "type": "git",
744 | "url": "https://github.com/php-fig/cache.git",
745 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
746 | },
747 | "dist": {
748 | "type": "zip",
749 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
750 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
751 | "shasum": ""
752 | },
753 | "require": {
754 | "php": ">=5.3.0"
755 | },
756 | "type": "library",
757 | "extra": {
758 | "branch-alias": {
759 | "dev-master": "1.0.x-dev"
760 | }
761 | },
762 | "autoload": {
763 | "psr-4": {
764 | "Psr\\Cache\\": "src/"
765 | }
766 | },
767 | "notification-url": "https://packagist.org/downloads/",
768 | "license": [
769 | "MIT"
770 | ],
771 | "authors": [
772 | {
773 | "name": "PHP-FIG",
774 | "homepage": "http://www.php-fig.org/"
775 | }
776 | ],
777 | "description": "Common interface for caching libraries",
778 | "keywords": [
779 | "cache",
780 | "psr",
781 | "psr-6"
782 | ],
783 | "time": "2016-08-06 20:24:11"
784 | },
785 | {
786 | "name": "psr/container",
787 | "version": "1.0.0",
788 | "source": {
789 | "type": "git",
790 | "url": "https://github.com/php-fig/container.git",
791 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
792 | },
793 | "dist": {
794 | "type": "zip",
795 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
796 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
797 | "shasum": ""
798 | },
799 | "require": {
800 | "php": ">=5.3.0"
801 | },
802 | "type": "library",
803 | "extra": {
804 | "branch-alias": {
805 | "dev-master": "1.0.x-dev"
806 | }
807 | },
808 | "autoload": {
809 | "psr-4": {
810 | "Psr\\Container\\": "src/"
811 | }
812 | },
813 | "notification-url": "https://packagist.org/downloads/",
814 | "license": [
815 | "MIT"
816 | ],
817 | "authors": [
818 | {
819 | "name": "PHP-FIG",
820 | "homepage": "http://www.php-fig.org/"
821 | }
822 | ],
823 | "description": "Common Container Interface (PHP FIG PSR-11)",
824 | "homepage": "https://github.com/php-fig/container",
825 | "keywords": [
826 | "PSR-11",
827 | "container",
828 | "container-interface",
829 | "container-interop",
830 | "psr"
831 | ],
832 | "time": "2017-02-14 16:28:37"
833 | },
834 | {
835 | "name": "psr/http-message",
836 | "version": "1.0.1",
837 | "source": {
838 | "type": "git",
839 | "url": "https://github.com/php-fig/http-message.git",
840 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
841 | },
842 | "dist": {
843 | "type": "zip",
844 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
845 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
846 | "shasum": ""
847 | },
848 | "require": {
849 | "php": ">=5.3.0"
850 | },
851 | "type": "library",
852 | "extra": {
853 | "branch-alias": {
854 | "dev-master": "1.0.x-dev"
855 | }
856 | },
857 | "autoload": {
858 | "psr-4": {
859 | "Psr\\Http\\Message\\": "src/"
860 | }
861 | },
862 | "notification-url": "https://packagist.org/downloads/",
863 | "license": [
864 | "MIT"
865 | ],
866 | "authors": [
867 | {
868 | "name": "PHP-FIG",
869 | "homepage": "http://www.php-fig.org/"
870 | }
871 | ],
872 | "description": "Common interface for HTTP messages",
873 | "homepage": "https://github.com/php-fig/http-message",
874 | "keywords": [
875 | "http",
876 | "http-message",
877 | "psr",
878 | "psr-7",
879 | "request",
880 | "response"
881 | ],
882 | "time": "2016-08-06 14:39:51"
883 | },
884 | {
885 | "name": "psr/log",
886 | "version": "1.0.2",
887 | "source": {
888 | "type": "git",
889 | "url": "https://github.com/php-fig/log.git",
890 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
891 | },
892 | "dist": {
893 | "type": "zip",
894 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
895 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
896 | "shasum": ""
897 | },
898 | "require": {
899 | "php": ">=5.3.0"
900 | },
901 | "type": "library",
902 | "extra": {
903 | "branch-alias": {
904 | "dev-master": "1.0.x-dev"
905 | }
906 | },
907 | "autoload": {
908 | "psr-4": {
909 | "Psr\\Log\\": "Psr/Log/"
910 | }
911 | },
912 | "notification-url": "https://packagist.org/downloads/",
913 | "license": [
914 | "MIT"
915 | ],
916 | "authors": [
917 | {
918 | "name": "PHP-FIG",
919 | "homepage": "http://www.php-fig.org/"
920 | }
921 | ],
922 | "description": "Common interface for logging libraries",
923 | "homepage": "https://github.com/php-fig/log",
924 | "keywords": [
925 | "log",
926 | "psr",
927 | "psr-3"
928 | ],
929 | "time": "2016-10-10 12:19:37"
930 | },
931 | {
932 | "name": "psr/simple-cache",
933 | "version": "1.0.0",
934 | "source": {
935 | "type": "git",
936 | "url": "https://github.com/php-fig/simple-cache.git",
937 | "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24"
938 | },
939 | "dist": {
940 | "type": "zip",
941 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24",
942 | "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24",
943 | "shasum": ""
944 | },
945 | "require": {
946 | "php": ">=5.3.0"
947 | },
948 | "type": "library",
949 | "extra": {
950 | "branch-alias": {
951 | "dev-master": "1.0.x-dev"
952 | }
953 | },
954 | "autoload": {
955 | "psr-4": {
956 | "Psr\\SimpleCache\\": "src/"
957 | }
958 | },
959 | "notification-url": "https://packagist.org/downloads/",
960 | "license": [
961 | "MIT"
962 | ],
963 | "authors": [
964 | {
965 | "name": "PHP-FIG",
966 | "homepage": "http://www.php-fig.org/"
967 | }
968 | ],
969 | "description": "Common interfaces for simple caching",
970 | "keywords": [
971 | "cache",
972 | "caching",
973 | "psr",
974 | "psr-16",
975 | "simple-cache"
976 | ],
977 | "time": "2017-01-02 13:31:39"
978 | },
979 | {
980 | "name": "silverstripe/assets",
981 | "version": "1.0.1",
982 | "source": {
983 | "type": "git",
984 | "url": "https://github.com/silverstripe/silverstripe-assets.git",
985 | "reference": "bf1ef99663178b0205257e4a8f4facb26c6b2569"
986 | },
987 | "dist": {
988 | "type": "zip",
989 | "url": "https://api.github.com/repos/silverstripe/silverstripe-assets/zipball/bf1ef99663178b0205257e4a8f4facb26c6b2569",
990 | "reference": "bf1ef99663178b0205257e4a8f4facb26c6b2569",
991 | "shasum": ""
992 | },
993 | "require": {
994 | "intervention/image": "^2.3",
995 | "php": ">=5.6.0",
996 | "silverstripe/framework": "^4@dev",
997 | "silverstripe/vendor-plugin": "^1.0"
998 | },
999 | "require-dev": {
1000 | "phpunit/phpunit": "^5.7",
1001 | "silverstripe/versioned": "^1@dev"
1002 | },
1003 | "type": "silverstripe-vendormodule",
1004 | "extra": {
1005 | "installer-name": "silverstripe-assets"
1006 | },
1007 | "autoload": {
1008 | "psr-4": {
1009 | "SilverStripe\\Assets\\": "src/",
1010 | "SilverStripe\\Assets\\Tests\\": "tests/php/"
1011 | }
1012 | },
1013 | "notification-url": "https://packagist.org/downloads/",
1014 | "license": [
1015 | "BSD-3-Clause"
1016 | ],
1017 | "authors": [
1018 | {
1019 | "name": "SilverStripe",
1020 | "homepage": "http://silverstripe.com"
1021 | },
1022 | {
1023 | "name": "The SilverStripe Community",
1024 | "homepage": "http://silverstripe.org"
1025 | }
1026 | ],
1027 | "description": "SilverStripe Assets component",
1028 | "homepage": "http://silverstripe.org",
1029 | "keywords": [
1030 | "assets",
1031 | "silverstripe"
1032 | ],
1033 | "time": "2017-11-22 16:52:08"
1034 | },
1035 | {
1036 | "name": "silverstripe/config",
1037 | "version": "1.0.1",
1038 | "source": {
1039 | "type": "git",
1040 | "url": "https://github.com/silverstripe/silverstripe-config.git",
1041 | "reference": "2b02905c7a1377c7ad3986a2514079da2ba39552"
1042 | },
1043 | "dist": {
1044 | "type": "zip",
1045 | "url": "https://api.github.com/repos/silverstripe/silverstripe-config/zipball/2b02905c7a1377c7ad3986a2514079da2ba39552",
1046 | "reference": "2b02905c7a1377c7ad3986a2514079da2ba39552",
1047 | "shasum": ""
1048 | },
1049 | "require": {
1050 | "marcj/topsort": "^1.0",
1051 | "psr/simple-cache": "^1.0",
1052 | "symfony/finder": "^2.8 || ^3.2",
1053 | "symfony/yaml": "^2.8 || ^3.2"
1054 | },
1055 | "require-dev": {
1056 | "mikey179/vfsstream": "^1.6",
1057 | "phpspec/prophecy": "^1.0",
1058 | "phpunit/phpunit": "^5.4.0"
1059 | },
1060 | "type": "library",
1061 | "autoload": {
1062 | "psr-4": {
1063 | "SilverStripe\\Config\\": "src/",
1064 | "SilverStripe\\Config\\Tests\\": "tests/"
1065 | }
1066 | },
1067 | "notification-url": "https://packagist.org/downloads/",
1068 | "license": [
1069 | "BSD-3-Clause"
1070 | ],
1071 | "description": "SilverStripe configuration based on YAML and class statics",
1072 | "time": "2017-11-21 03:12:26"
1073 | },
1074 | {
1075 | "name": "silverstripe/framework",
1076 | "version": "4.0.1",
1077 | "source": {
1078 | "type": "git",
1079 | "url": "https://github.com/silverstripe/silverstripe-framework.git",
1080 | "reference": "e3c382a4de6e37312044b9f2b1425bd820455f78"
1081 | },
1082 | "dist": {
1083 | "type": "zip",
1084 | "url": "https://api.github.com/repos/silverstripe/silverstripe-framework/zipball/e3c382a4de6e37312044b9f2b1425bd820455f78",
1085 | "reference": "e3c382a4de6e37312044b9f2b1425bd820455f78",
1086 | "shasum": ""
1087 | },
1088 | "require": {
1089 | "composer/installers": "~1.0",
1090 | "embed/embed": "^3.0",
1091 | "ext-ctype": "*",
1092 | "ext-dom": "*",
1093 | "ext-hash": "*",
1094 | "ext-intl": "*",
1095 | "ext-mbstring": "*",
1096 | "ext-session": "*",
1097 | "ext-simplexml": "*",
1098 | "ext-tokenizer": "*",
1099 | "ext-xml": "*",
1100 | "league/flysystem": "~1.0.12",
1101 | "m1/env": "^2.1",
1102 | "monolog/monolog": "~1.11",
1103 | "nikic/php-parser": "^2 || ^3",
1104 | "paragonie/random_compat": "^2.0",
1105 | "php": ">=5.6.0",
1106 | "psr/container": "1.0.0",
1107 | "psr/container-implementation": "1.0.0",
1108 | "silverstripe/assets": "^1@dev",
1109 | "silverstripe/config": "^1@dev",
1110 | "silverstripe/vendor-plugin": "^1.0",
1111 | "swiftmailer/swiftmailer": "~5.4",
1112 | "symfony/cache": "^3.3@dev",
1113 | "symfony/config": "^3.2",
1114 | "symfony/translation": "^2.8",
1115 | "symfony/yaml": "~3.2"
1116 | },
1117 | "provide": {
1118 | "psr/container-implementation": "1.0.0"
1119 | },
1120 | "require-dev": {
1121 | "phpunit/phpunit": "^5.7",
1122 | "se/selenium-server-standalone": "2.41.0",
1123 | "silverstripe/behat-extension": "^3",
1124 | "silverstripe/serve": "^2",
1125 | "silverstripe/versioned": "^1.0"
1126 | },
1127 | "bin": [
1128 | "sake"
1129 | ],
1130 | "type": "silverstripe-vendormodule",
1131 | "extra": {
1132 | "expose": [
1133 | "client/images",
1134 | "client/styles",
1135 | "src/Dev/Install/client"
1136 | ]
1137 | },
1138 | "autoload": {
1139 | "psr-4": {
1140 | "SilverStripe\\Control\\": "src/Control/",
1141 | "SilverStripe\\Control\\Tests\\": "tests/php/Control/",
1142 | "SilverStripe\\Core\\": "src/Core/",
1143 | "SilverStripe\\Core\\Tests\\": "tests/php/Core/",
1144 | "SilverStripe\\Dev\\": "src/Dev/",
1145 | "SilverStripe\\Dev\\Tests\\": "tests/php/Dev/",
1146 | "SilverStripe\\Forms\\": "src/Forms/",
1147 | "SilverStripe\\Forms\\Tests\\": "tests/php/Forms/",
1148 | "SilverStripe\\i18n\\": "src/i18n/",
1149 | "SilverStripe\\i18n\\Tests\\": "tests/php/i18n/",
1150 | "SilverStripe\\Logging\\": "src/Logging/",
1151 | "SilverStripe\\Logging\\Tests\\": "tests/php/Logging/",
1152 | "SilverStripe\\ORM\\": "src/ORM/",
1153 | "SilverStripe\\ORM\\Tests\\": "tests/php/ORM/",
1154 | "SilverStripe\\Security\\": "src/Security/",
1155 | "SilverStripe\\Security\\Tests\\": "tests/php/Security/",
1156 | "SilverStripe\\View\\": "src/View/",
1157 | "SilverStripe\\View\\Tests\\": "tests/php/View/",
1158 | "SilverStripe\\Framework\\Tests\\Behaviour\\": "tests/behat/src/"
1159 | },
1160 | "files": [
1161 | "src/includes/constants.php"
1162 | ]
1163 | },
1164 | "notification-url": "https://packagist.org/downloads/",
1165 | "include-path": [
1166 | "src/",
1167 | "src/includes/",
1168 | "thirdparty/"
1169 | ],
1170 | "license": [
1171 | "BSD-3-Clause"
1172 | ],
1173 | "authors": [
1174 | {
1175 | "name": "SilverStripe",
1176 | "homepage": "http://silverstripe.com"
1177 | },
1178 | {
1179 | "name": "The SilverStripe Community",
1180 | "homepage": "http://silverstripe.org"
1181 | }
1182 | ],
1183 | "description": "The SilverStripe framework",
1184 | "homepage": "http://silverstripe.org",
1185 | "keywords": [
1186 | "framework",
1187 | "silverstripe"
1188 | ],
1189 | "time": "2017-12-07 00:46:52"
1190 | },
1191 | {
1192 | "name": "silverstripe/vendor-plugin",
1193 | "version": "1.2.0",
1194 | "source": {
1195 | "type": "git",
1196 | "url": "https://github.com/silverstripe/vendor-plugin.git",
1197 | "reference": "ad91e767c977ec1898499cb28f1804b351c6de28"
1198 | },
1199 | "dist": {
1200 | "type": "zip",
1201 | "url": "https://api.github.com/repos/silverstripe/vendor-plugin/zipball/ad91e767c977ec1898499cb28f1804b351c6de28",
1202 | "reference": "ad91e767c977ec1898499cb28f1804b351c6de28",
1203 | "shasum": ""
1204 | },
1205 | "require": {
1206 | "composer-plugin-api": "^1.1"
1207 | },
1208 | "require-dev": {
1209 | "composer/composer": "^1.5",
1210 | "phpunit/phpunit": "^5.7"
1211 | },
1212 | "type": "composer-plugin",
1213 | "extra": {
1214 | "class": "SilverStripe\\VendorPlugin\\VendorPlugin",
1215 | "branch-alias": {
1216 | "dev-master": "1.0.x-dev"
1217 | }
1218 | },
1219 | "autoload": {
1220 | "psr-4": {
1221 | "SilverStripe\\VendorPlugin\\": "src/",
1222 | "SilverStripe\\VendorPlugin\\Tests\\": "tests/"
1223 | }
1224 | },
1225 | "notification-url": "https://packagist.org/downloads/",
1226 | "license": [
1227 | "BSD-3-Clause"
1228 | ],
1229 | "authors": [
1230 | {
1231 | "name": "Damian Mooyman",
1232 | "email": "damian@silverstripe.com"
1233 | }
1234 | ],
1235 | "description": "Allows vendor modules to expose directories to the webroot",
1236 | "time": "2017-11-22 01:04:17"
1237 | },
1238 | {
1239 | "name": "swiftmailer/swiftmailer",
1240 | "version": "v5.4.8",
1241 | "source": {
1242 | "type": "git",
1243 | "url": "https://github.com/swiftmailer/swiftmailer.git",
1244 | "reference": "9a06dc570a0367850280eefd3f1dc2da45aef517"
1245 | },
1246 | "dist": {
1247 | "type": "zip",
1248 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/9a06dc570a0367850280eefd3f1dc2da45aef517",
1249 | "reference": "9a06dc570a0367850280eefd3f1dc2da45aef517",
1250 | "shasum": ""
1251 | },
1252 | "require": {
1253 | "php": ">=5.3.3"
1254 | },
1255 | "require-dev": {
1256 | "mockery/mockery": "~0.9.1",
1257 | "symfony/phpunit-bridge": "~3.2"
1258 | },
1259 | "type": "library",
1260 | "extra": {
1261 | "branch-alias": {
1262 | "dev-master": "5.4-dev"
1263 | }
1264 | },
1265 | "autoload": {
1266 | "files": [
1267 | "lib/swift_required.php"
1268 | ]
1269 | },
1270 | "notification-url": "https://packagist.org/downloads/",
1271 | "license": [
1272 | "MIT"
1273 | ],
1274 | "authors": [
1275 | {
1276 | "name": "Chris Corbyn"
1277 | },
1278 | {
1279 | "name": "Fabien Potencier",
1280 | "email": "fabien@symfony.com"
1281 | }
1282 | ],
1283 | "description": "Swiftmailer, free feature-rich PHP mailer",
1284 | "homepage": "http://swiftmailer.org",
1285 | "keywords": [
1286 | "email",
1287 | "mail",
1288 | "mailer"
1289 | ],
1290 | "time": "2017-05-01 15:54:03"
1291 | },
1292 | {
1293 | "name": "symfony/cache",
1294 | "version": "v3.4.3",
1295 | "source": {
1296 | "type": "git",
1297 | "url": "https://github.com/symfony/cache.git",
1298 | "reference": "5725378078bc4e1fe3c3414e9cc0e63d7de47fff"
1299 | },
1300 | "dist": {
1301 | "type": "zip",
1302 | "url": "https://api.github.com/repos/symfony/cache/zipball/5725378078bc4e1fe3c3414e9cc0e63d7de47fff",
1303 | "reference": "5725378078bc4e1fe3c3414e9cc0e63d7de47fff",
1304 | "shasum": ""
1305 | },
1306 | "require": {
1307 | "php": "^5.5.9|>=7.0.8",
1308 | "psr/cache": "~1.0",
1309 | "psr/log": "~1.0",
1310 | "psr/simple-cache": "^1.0",
1311 | "symfony/polyfill-apcu": "~1.1"
1312 | },
1313 | "conflict": {
1314 | "symfony/var-dumper": "<3.3"
1315 | },
1316 | "provide": {
1317 | "psr/cache-implementation": "1.0",
1318 | "psr/simple-cache-implementation": "1.0"
1319 | },
1320 | "require-dev": {
1321 | "cache/integration-tests": "dev-master",
1322 | "doctrine/cache": "~1.6",
1323 | "doctrine/dbal": "~2.4",
1324 | "predis/predis": "~1.0"
1325 | },
1326 | "type": "library",
1327 | "extra": {
1328 | "branch-alias": {
1329 | "dev-master": "3.4-dev"
1330 | }
1331 | },
1332 | "autoload": {
1333 | "psr-4": {
1334 | "Symfony\\Component\\Cache\\": ""
1335 | },
1336 | "exclude-from-classmap": [
1337 | "/Tests/"
1338 | ]
1339 | },
1340 | "notification-url": "https://packagist.org/downloads/",
1341 | "license": [
1342 | "MIT"
1343 | ],
1344 | "authors": [
1345 | {
1346 | "name": "Nicolas Grekas",
1347 | "email": "p@tchwork.com"
1348 | },
1349 | {
1350 | "name": "Symfony Community",
1351 | "homepage": "https://symfony.com/contributors"
1352 | }
1353 | ],
1354 | "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
1355 | "homepage": "https://symfony.com",
1356 | "keywords": [
1357 | "caching",
1358 | "psr6"
1359 | ],
1360 | "time": "2018-01-03 17:14:19"
1361 | },
1362 | {
1363 | "name": "symfony/config",
1364 | "version": "v3.4.3",
1365 | "source": {
1366 | "type": "git",
1367 | "url": "https://github.com/symfony/config.git",
1368 | "reference": "cfd5c972f7b4992a5df41673d25d980ab077aa5b"
1369 | },
1370 | "dist": {
1371 | "type": "zip",
1372 | "url": "https://api.github.com/repos/symfony/config/zipball/cfd5c972f7b4992a5df41673d25d980ab077aa5b",
1373 | "reference": "cfd5c972f7b4992a5df41673d25d980ab077aa5b",
1374 | "shasum": ""
1375 | },
1376 | "require": {
1377 | "php": "^5.5.9|>=7.0.8",
1378 | "symfony/filesystem": "~2.8|~3.0|~4.0"
1379 | },
1380 | "conflict": {
1381 | "symfony/dependency-injection": "<3.3",
1382 | "symfony/finder": "<3.3"
1383 | },
1384 | "require-dev": {
1385 | "symfony/dependency-injection": "~3.3|~4.0",
1386 | "symfony/finder": "~3.3|~4.0",
1387 | "symfony/yaml": "~3.0|~4.0"
1388 | },
1389 | "suggest": {
1390 | "symfony/yaml": "To use the yaml reference dumper"
1391 | },
1392 | "type": "library",
1393 | "extra": {
1394 | "branch-alias": {
1395 | "dev-master": "3.4-dev"
1396 | }
1397 | },
1398 | "autoload": {
1399 | "psr-4": {
1400 | "Symfony\\Component\\Config\\": ""
1401 | },
1402 | "exclude-from-classmap": [
1403 | "/Tests/"
1404 | ]
1405 | },
1406 | "notification-url": "https://packagist.org/downloads/",
1407 | "license": [
1408 | "MIT"
1409 | ],
1410 | "authors": [
1411 | {
1412 | "name": "Fabien Potencier",
1413 | "email": "fabien@symfony.com"
1414 | },
1415 | {
1416 | "name": "Symfony Community",
1417 | "homepage": "https://symfony.com/contributors"
1418 | }
1419 | ],
1420 | "description": "Symfony Config Component",
1421 | "homepage": "https://symfony.com",
1422 | "time": "2018-01-03 07:37:34"
1423 | },
1424 | {
1425 | "name": "symfony/filesystem",
1426 | "version": "v4.0.3",
1427 | "source": {
1428 | "type": "git",
1429 | "url": "https://github.com/symfony/filesystem.git",
1430 | "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed"
1431 | },
1432 | "dist": {
1433 | "type": "zip",
1434 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/760e47a4ee64b4c48f4b30017011e09d4c0f05ed",
1435 | "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed",
1436 | "shasum": ""
1437 | },
1438 | "require": {
1439 | "php": "^7.1.3"
1440 | },
1441 | "type": "library",
1442 | "extra": {
1443 | "branch-alias": {
1444 | "dev-master": "4.0-dev"
1445 | }
1446 | },
1447 | "autoload": {
1448 | "psr-4": {
1449 | "Symfony\\Component\\Filesystem\\": ""
1450 | },
1451 | "exclude-from-classmap": [
1452 | "/Tests/"
1453 | ]
1454 | },
1455 | "notification-url": "https://packagist.org/downloads/",
1456 | "license": [
1457 | "MIT"
1458 | ],
1459 | "authors": [
1460 | {
1461 | "name": "Fabien Potencier",
1462 | "email": "fabien@symfony.com"
1463 | },
1464 | {
1465 | "name": "Symfony Community",
1466 | "homepage": "https://symfony.com/contributors"
1467 | }
1468 | ],
1469 | "description": "Symfony Filesystem Component",
1470 | "homepage": "https://symfony.com",
1471 | "time": "2018-01-03 07:38:00"
1472 | },
1473 | {
1474 | "name": "symfony/finder",
1475 | "version": "v3.4.3",
1476 | "source": {
1477 | "type": "git",
1478 | "url": "https://github.com/symfony/finder.git",
1479 | "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f"
1480 | },
1481 | "dist": {
1482 | "type": "zip",
1483 | "url": "https://api.github.com/repos/symfony/finder/zipball/613e26310776f49a1773b6737c6bd554b8bc8c6f",
1484 | "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f",
1485 | "shasum": ""
1486 | },
1487 | "require": {
1488 | "php": "^5.5.9|>=7.0.8"
1489 | },
1490 | "type": "library",
1491 | "extra": {
1492 | "branch-alias": {
1493 | "dev-master": "3.4-dev"
1494 | }
1495 | },
1496 | "autoload": {
1497 | "psr-4": {
1498 | "Symfony\\Component\\Finder\\": ""
1499 | },
1500 | "exclude-from-classmap": [
1501 | "/Tests/"
1502 | ]
1503 | },
1504 | "notification-url": "https://packagist.org/downloads/",
1505 | "license": [
1506 | "MIT"
1507 | ],
1508 | "authors": [
1509 | {
1510 | "name": "Fabien Potencier",
1511 | "email": "fabien@symfony.com"
1512 | },
1513 | {
1514 | "name": "Symfony Community",
1515 | "homepage": "https://symfony.com/contributors"
1516 | }
1517 | ],
1518 | "description": "Symfony Finder Component",
1519 | "homepage": "https://symfony.com",
1520 | "time": "2018-01-03 07:37:34"
1521 | },
1522 | {
1523 | "name": "symfony/polyfill-apcu",
1524 | "version": "v1.6.0",
1525 | "source": {
1526 | "type": "git",
1527 | "url": "https://github.com/symfony/polyfill-apcu.git",
1528 | "reference": "04f62674339602def515bff4bc6901fc1d4951e8"
1529 | },
1530 | "dist": {
1531 | "type": "zip",
1532 | "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/04f62674339602def515bff4bc6901fc1d4951e8",
1533 | "reference": "04f62674339602def515bff4bc6901fc1d4951e8",
1534 | "shasum": ""
1535 | },
1536 | "require": {
1537 | "php": ">=5.3.3"
1538 | },
1539 | "type": "library",
1540 | "extra": {
1541 | "branch-alias": {
1542 | "dev-master": "1.6-dev"
1543 | }
1544 | },
1545 | "autoload": {
1546 | "psr-4": {
1547 | "Symfony\\Polyfill\\Apcu\\": ""
1548 | },
1549 | "files": [
1550 | "bootstrap.php"
1551 | ]
1552 | },
1553 | "notification-url": "https://packagist.org/downloads/",
1554 | "license": [
1555 | "MIT"
1556 | ],
1557 | "authors": [
1558 | {
1559 | "name": "Nicolas Grekas",
1560 | "email": "p@tchwork.com"
1561 | },
1562 | {
1563 | "name": "Symfony Community",
1564 | "homepage": "https://symfony.com/contributors"
1565 | }
1566 | ],
1567 | "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
1568 | "homepage": "https://symfony.com",
1569 | "keywords": [
1570 | "apcu",
1571 | "compatibility",
1572 | "polyfill",
1573 | "portable",
1574 | "shim"
1575 | ],
1576 | "time": "2017-10-11 12:05:26"
1577 | },
1578 | {
1579 | "name": "symfony/polyfill-mbstring",
1580 | "version": "v1.6.0",
1581 | "source": {
1582 | "type": "git",
1583 | "url": "https://github.com/symfony/polyfill-mbstring.git",
1584 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296"
1585 | },
1586 | "dist": {
1587 | "type": "zip",
1588 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
1589 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
1590 | "shasum": ""
1591 | },
1592 | "require": {
1593 | "php": ">=5.3.3"
1594 | },
1595 | "suggest": {
1596 | "ext-mbstring": "For best performance"
1597 | },
1598 | "type": "library",
1599 | "extra": {
1600 | "branch-alias": {
1601 | "dev-master": "1.6-dev"
1602 | }
1603 | },
1604 | "autoload": {
1605 | "psr-4": {
1606 | "Symfony\\Polyfill\\Mbstring\\": ""
1607 | },
1608 | "files": [
1609 | "bootstrap.php"
1610 | ]
1611 | },
1612 | "notification-url": "https://packagist.org/downloads/",
1613 | "license": [
1614 | "MIT"
1615 | ],
1616 | "authors": [
1617 | {
1618 | "name": "Nicolas Grekas",
1619 | "email": "p@tchwork.com"
1620 | },
1621 | {
1622 | "name": "Symfony Community",
1623 | "homepage": "https://symfony.com/contributors"
1624 | }
1625 | ],
1626 | "description": "Symfony polyfill for the Mbstring extension",
1627 | "homepage": "https://symfony.com",
1628 | "keywords": [
1629 | "compatibility",
1630 | "mbstring",
1631 | "polyfill",
1632 | "portable",
1633 | "shim"
1634 | ],
1635 | "time": "2017-10-11 12:05:26"
1636 | },
1637 | {
1638 | "name": "symfony/translation",
1639 | "version": "v2.8.33",
1640 | "source": {
1641 | "type": "git",
1642 | "url": "https://github.com/symfony/translation.git",
1643 | "reference": "a1623f94ec61090fded29ade24e14ce4f4e5878b"
1644 | },
1645 | "dist": {
1646 | "type": "zip",
1647 | "url": "https://api.github.com/repos/symfony/translation/zipball/a1623f94ec61090fded29ade24e14ce4f4e5878b",
1648 | "reference": "a1623f94ec61090fded29ade24e14ce4f4e5878b",
1649 | "shasum": ""
1650 | },
1651 | "require": {
1652 | "php": ">=5.3.9",
1653 | "symfony/polyfill-mbstring": "~1.0"
1654 | },
1655 | "conflict": {
1656 | "symfony/config": "<2.7"
1657 | },
1658 | "require-dev": {
1659 | "psr/log": "~1.0",
1660 | "symfony/config": "~2.8",
1661 | "symfony/intl": "~2.7.25|^2.8.18|~3.2.5",
1662 | "symfony/yaml": "~2.2|~3.0.0"
1663 | },
1664 | "suggest": {
1665 | "psr/log": "To use logging capability in translator",
1666 | "symfony/config": "",
1667 | "symfony/yaml": ""
1668 | },
1669 | "type": "library",
1670 | "extra": {
1671 | "branch-alias": {
1672 | "dev-master": "2.8-dev"
1673 | }
1674 | },
1675 | "autoload": {
1676 | "psr-4": {
1677 | "Symfony\\Component\\Translation\\": ""
1678 | },
1679 | "exclude-from-classmap": [
1680 | "/Tests/"
1681 | ]
1682 | },
1683 | "notification-url": "https://packagist.org/downloads/",
1684 | "license": [
1685 | "MIT"
1686 | ],
1687 | "authors": [
1688 | {
1689 | "name": "Fabien Potencier",
1690 | "email": "fabien@symfony.com"
1691 | },
1692 | {
1693 | "name": "Symfony Community",
1694 | "homepage": "https://symfony.com/contributors"
1695 | }
1696 | ],
1697 | "description": "Symfony Translation Component",
1698 | "homepage": "https://symfony.com",
1699 | "time": "2018-01-03 07:36:31"
1700 | },
1701 | {
1702 | "name": "symfony/yaml",
1703 | "version": "v3.4.3",
1704 | "source": {
1705 | "type": "git",
1706 | "url": "https://github.com/symfony/yaml.git",
1707 | "reference": "25c192f25721a74084272671f658797d9e0e0146"
1708 | },
1709 | "dist": {
1710 | "type": "zip",
1711 | "url": "https://api.github.com/repos/symfony/yaml/zipball/25c192f25721a74084272671f658797d9e0e0146",
1712 | "reference": "25c192f25721a74084272671f658797d9e0e0146",
1713 | "shasum": ""
1714 | },
1715 | "require": {
1716 | "php": "^5.5.9|>=7.0.8"
1717 | },
1718 | "conflict": {
1719 | "symfony/console": "<3.4"
1720 | },
1721 | "require-dev": {
1722 | "symfony/console": "~3.4|~4.0"
1723 | },
1724 | "suggest": {
1725 | "symfony/console": "For validating YAML files using the lint command"
1726 | },
1727 | "type": "library",
1728 | "extra": {
1729 | "branch-alias": {
1730 | "dev-master": "3.4-dev"
1731 | }
1732 | },
1733 | "autoload": {
1734 | "psr-4": {
1735 | "Symfony\\Component\\Yaml\\": ""
1736 | },
1737 | "exclude-from-classmap": [
1738 | "/Tests/"
1739 | ]
1740 | },
1741 | "notification-url": "https://packagist.org/downloads/",
1742 | "license": [
1743 | "MIT"
1744 | ],
1745 | "authors": [
1746 | {
1747 | "name": "Fabien Potencier",
1748 | "email": "fabien@symfony.com"
1749 | },
1750 | {
1751 | "name": "Symfony Community",
1752 | "homepage": "https://symfony.com/contributors"
1753 | }
1754 | ],
1755 | "description": "Symfony Yaml Component",
1756 | "homepage": "https://symfony.com",
1757 | "time": "2018-01-03 07:37:34"
1758 | }
1759 | ],
1760 | "packages-dev": [],
1761 | "aliases": [],
1762 | "minimum-stability": "stable",
1763 | "stability-flags": [],
1764 | "prefer-stable": false,
1765 | "prefer-lowest": false,
1766 | "platform": {
1767 | "php": ">=5.6"
1768 | },
1769 | "platform-dev": []
1770 | }
1771 |
--------------------------------------------------------------------------------