downgrade to kirby v3
This commit is contained in:
25
vendor/autoload.php
vendored
Normal file
25
vendor/autoload.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
if (PHP_VERSION_ID < 50600) {
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
}
|
||||
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
if (!ini_get('display_errors')) {
|
||||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, $err);
|
||||
} elseif (!headers_sent()) {
|
||||
echo $err;
|
||||
}
|
||||
}
|
||||
trigger_error(
|
||||
$err,
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit34ad0fcfd7efff0ce7004033b941cfcf::getLoader();
|
||||
9
vendor/claviska/simpleimage/.editorconfig
vendored
Normal file
9
vendor/claviska/simpleimage/.editorconfig
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
2
vendor/claviska/simpleimage/.github/FUNDING.yml
vendored
Normal file
2
vendor/claviska/simpleimage/.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
github: [claviska]
|
||||
|
||||
2
vendor/claviska/simpleimage/.gitignore
vendored
Normal file
2
vendor/claviska/simpleimage/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.DS_Store
|
||||
test/
|
||||
7
vendor/claviska/simpleimage/LICENSE.md
vendored
Normal file
7
vendor/claviska/simpleimage/LICENSE.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
Copyright 2017 A Beautiful Site, LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
779
vendor/claviska/simpleimage/README.md
vendored
Normal file
779
vendor/claviska/simpleimage/README.md
vendored
Normal file
@@ -0,0 +1,779 @@
|
||||
# SimpleImage
|
||||
|
||||
A PHP class that makes working with images as simple as possible.
|
||||
|
||||
Developed and maintained by [Cory LaViska](https://github.com/claviska).
|
||||
|
||||
_If this project has you loving PHP image manipulation again, please consider [sponsoring me](https://github.com/sponsors/claviska) to support its development._
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
```php
|
||||
<?php
|
||||
try {
|
||||
// Create a new SimpleImage object
|
||||
$image = new \claviska\SimpleImage();
|
||||
|
||||
// Magic! ✨
|
||||
$image
|
||||
->fromFile('image.jpg') // load image.jpg
|
||||
->autoOrient() // adjust orientation based on exif data
|
||||
->resize(320, 200) // resize to 320x200 pixels
|
||||
->flip('x') // flip horizontally
|
||||
->colorize('DarkBlue') // tint dark blue
|
||||
->border('black', 10) // add a 10 pixel black border
|
||||
->overlay('watermark.png', 'bottom right') // add a watermark image
|
||||
->toFile('new-image.png', 'image/png') // convert to PNG and save a copy to new-image.png
|
||||
->toScreen(); // output to the screen
|
||||
|
||||
// And much more! 💪
|
||||
} catch(Exception $err) {
|
||||
// Handle errors
|
||||
echo $err->getMessage();
|
||||
}
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP 5.6+
|
||||
- [GD extension](http://php.net/manual/en/book.image.php)
|
||||
|
||||
## Features
|
||||
|
||||
- Supports reading, writing, and converting GIF, JPEG, PNG, WEBP, BMP formats.
|
||||
- Reads and writes files, data URIs, and image strings.
|
||||
- Manipulation: crop, resize, overlay/watermark, adding TTF text
|
||||
- Drawing: arc, border, dot, ellipse, line, polygon, rectangle, rounded rectangle
|
||||
- Filters: blur, brighten, colorize, contrast, darken, desaturate, edge detect, emboss, invert, opacity, pixelate, sepia, sharpen, sketch
|
||||
- Utilities: color adjustment, darken/lighten color, extract colors
|
||||
- Properties: exif data, height/width, mime type, orientation
|
||||
- Color arguments can be passed in as any CSS color (e.g. `LightBlue`), a hex color, or an RGB(A) array.
|
||||
- Support for alpha-transparency (GIF, PNG, WEBP)
|
||||
- Chainable methods
|
||||
- Uses exceptions
|
||||
- Load with Composer or manually (just one file)
|
||||
- [Semantic Versioning](http://semver.org/)
|
||||
|
||||
## Installation
|
||||
|
||||
Install with Composer:
|
||||
|
||||
```
|
||||
composer require claviska/simpleimage
|
||||
```
|
||||
|
||||
Or include the library manually:
|
||||
|
||||
```php
|
||||
<?php
|
||||
require 'src/claviska/SimpleImage.php';
|
||||
```
|
||||
|
||||
## About
|
||||
|
||||
SimpleImage is developed and maintained by [Cory LaViska](https://github.com/claviska). Copyright A Beautiful Site, LLC.
|
||||
|
||||
If you enjoy using SimpleImage, especially in commercial applications, please consider [sponsoring me](https://github.com/sponsors/claviska) to support its development.
|
||||
|
||||
Thanks! 🙌
|
||||
|
||||
## License
|
||||
|
||||
Licensed under the [MIT license](http://opensource.org/licenses/MIT).
|
||||
|
||||
## API
|
||||
|
||||
Order of awesomeness:
|
||||
|
||||
1. Load an image
|
||||
2. Manipulate the image
|
||||
3. Save/output the image
|
||||
|
||||
API tips:
|
||||
|
||||
- An asterisk denotes a required argument.
|
||||
- Methods that return a SimpleImage object are chainable.
|
||||
- You can pass a file or data URI to the constructor to avoid calling `fromFile` or `fromDataUri`.
|
||||
- Static methods can be called with `$image::methodName()` or `\claviska\SimpleImage::methodName()`.
|
||||
- Colors can be a CSS color (e.g. `white`), a hex string (e.g. '#ffffff'), or an RGBA array.
|
||||
- You can pipe transparency to `normalizeColor` when you pass a CSS color or hex string: `white|0.25`
|
||||
|
||||
### Loaders
|
||||
|
||||
#### `fromDataUri($uri)`
|
||||
|
||||
Loads an image from a data URI.
|
||||
|
||||
- `$uri`* (string) - A data URI.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `fromFile($file)`
|
||||
|
||||
Loads an image from a file.
|
||||
|
||||
- `$file`* (string) - The image file to load.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `fromNew($width, $height, $color)`
|
||||
|
||||
Creates a new image.
|
||||
|
||||
- `$width`* (int) - The width of the image.
|
||||
- `$height`* (int) - The height of the image.
|
||||
- `$color` (string|array) - Optional fill color for the new image (default 'transparent').
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `fromString($string)`
|
||||
|
||||
Creates a new image from a string.
|
||||
|
||||
- `$string`* (string) - The raw image data as a string. Example:
|
||||
```
|
||||
$string = file_get_contents('image.jpg');
|
||||
```
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
### Savers
|
||||
|
||||
#### `toDataUri($mimeType, $quality)`
|
||||
|
||||
Generates a data URI.
|
||||
|
||||
- `$mimeType` (string) - The image format to output as a mime type (defaults to the original mime type).
|
||||
- `$quality` (int) - Image quality as a percentage (default 100). This argument has no effect on PNG images, since the format is lossless.
|
||||
|
||||
Returns a string containing a data URI.
|
||||
|
||||
#### `toDownload($filename, $mimeType, $quality)`
|
||||
|
||||
Forces the image to be downloaded to the clients machine. Must be called before any output is sent to the screen.
|
||||
|
||||
- `$filename`* (string) - The filename (without path) to send to the client (e.g. 'image.jpeg').
|
||||
- `$mimeType` (string) - The image format to output as a mime type (defaults to the original mime type).
|
||||
- `$quality` (int) - Image quality as a percentage (default 100). This argument has no effect on PNG images, since the format is lossless.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `toFile($file, $mimeType, $quality)`
|
||||
|
||||
Writes the image to a file.
|
||||
|
||||
- `$mimeType` (string) - The image format to output as a mime type (defaults to the original mime type).
|
||||
- `$quality` (int) - Image quality as a percentage (default 100). This argument has no effect on PNG images, since the format is lossless.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `toScreen($mimeType, $quality)`
|
||||
|
||||
Outputs the image to the screen. Must be called before any output is sent to the screen.
|
||||
|
||||
- `$mimeType` (string) - The image format to output as a mime type (defaults to the original mime type).
|
||||
- `$quality` (int) - Image quality as a percentage (default 100). This argument has no effect on PNG images, since the format is lossless.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `toString($mimeType, $quality)`
|
||||
|
||||
Generates an image string.
|
||||
|
||||
- `$mimeType` (string) - The image format to output as a mime type (defaults to the original mime type).
|
||||
- `$quality` (int) - Image quality as a percentage (default 100). This argument has no effect on PNG images, since the format is lossless.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
### Utilities
|
||||
|
||||
#### `getAspectRatio()`
|
||||
|
||||
Gets the image's current aspect ratio.
|
||||
|
||||
Returns the aspect ratio as a float.
|
||||
|
||||
#### `getExif()`
|
||||
|
||||
Gets the image's exif data.
|
||||
|
||||
Returns an array of exif data or null if no data is available.
|
||||
|
||||
#### `getHeight()`
|
||||
|
||||
Gets the image's current height.
|
||||
|
||||
Returns the height as an integer.
|
||||
|
||||
#### `getMimeType()`
|
||||
|
||||
Gets the mime type of the loaded image.
|
||||
|
||||
Returns a mime type string.
|
||||
|
||||
#### `getOrientation()`
|
||||
|
||||
Gets the image's current orientation.
|
||||
|
||||
Returns a string: 'landscape', 'portrait', or 'square'
|
||||
|
||||
#### `getResolution()`
|
||||
|
||||
Gets the image's current resolution in DPI.
|
||||
|
||||
Returns an array of integers: [0 => 96, 1 => 96]
|
||||
|
||||
#### `getWidth()`
|
||||
|
||||
Gets the image's current width.
|
||||
|
||||
Returns the width as an integer.
|
||||
|
||||
### Manipulation
|
||||
|
||||
#### `autoOrient()`
|
||||
|
||||
Rotates an image so the orientation will be correct based on its exif data. It is safe to call this method on images that don't have exif data (no changes will be made).
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `bestFit($maxWidth, $maxHeight)`
|
||||
|
||||
Proportionally resize the image to fit inside a specific width and height.
|
||||
|
||||
- `$maxWidth`* (int) - The maximum width the image can be.
|
||||
- `$maxHeight`* (int) - The maximum height the image can be.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `crop($x1, $y1, $x2, $y2)`
|
||||
|
||||
Crop the image.
|
||||
|
||||
- $x1 - Top left x coordinate.
|
||||
- $y1 - Top left y coordinate.
|
||||
- $x2 - Bottom right x coordinate.
|
||||
- $y2 - Bottom right x coordinate.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `fitToHeight($height)` (DEPRECATED)
|
||||
|
||||
Proportionally resize the image to a specific height.
|
||||
|
||||
_This method was deprecated in version 3.2.2 and will be removed in version 4.0. Please use `resize(null, $height)` instead._
|
||||
|
||||
- `$height`* (int) - The height to resize the image to.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `fitToWidth($width)` (DEPRECATED)
|
||||
|
||||
Proportionally resize the image to a specific width.
|
||||
|
||||
_This method was deprecated in version 3.2.2 and will be removed in version 4.0. Please use `resize($width, null)` instead._
|
||||
|
||||
- `$width`* (int) - The width to resize the image to.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `flip($direction)`
|
||||
|
||||
Flip the image horizontally or vertically.
|
||||
|
||||
- `$direction`* (string) - The direction to flip: x|y|both
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `maxColors($max, $dither)`
|
||||
|
||||
Reduces the image to a maximum number of colors.
|
||||
|
||||
- `$max`* (int) - The maximum number of colors to use.
|
||||
- `$dither` (bool) - Whether or not to use a dithering effect (default true).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `overlay($overlay, $anchor, $opacity, $xOffset, $yOffset)`
|
||||
|
||||
Place an image on top of the current image.
|
||||
|
||||
- `$overlay`* (string|SimpleImage) - The image to overlay. This can be a filename, a data URI, or a SimpleImage object.
|
||||
- `$anchor` (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', 'top right', 'bottom left', 'bottom right' (default 'center')
|
||||
- `$opacity` (float) - The opacity level of the overlay 0-1 (default 1).
|
||||
- `$xOffset` (int) - Horizontal offset in pixels (default 0).
|
||||
- `$yOffset` (int) - Vertical offset in pixels (default 0).
|
||||
- `$calculateOffsetFromEdge` (bool) - Calculate Offset referring to the edges of the image. $xOffset and $yOffset have no effect in center anchor. (default false).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `resize($width, $height)`
|
||||
|
||||
Resize an image to the specified dimensions. If only one dimension is specified, the image will be resized proportionally.
|
||||
|
||||
- `$width`* (int) - The new image width.
|
||||
- `$height`* (int) - The new image height.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `resolution($res_x, $res_y)`
|
||||
|
||||
Changes the resolution (DPI) of an image.
|
||||
|
||||
- `$res_x`* (int) - The horizontal resolution, in DPI.
|
||||
- `$res_y` (int) - The vertical resolution, in DPI.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `rotate($angle, $backgroundColor)`
|
||||
|
||||
Rotates the image.
|
||||
|
||||
- `$angle`* (int) - The angle of rotation (-360 - 360).
|
||||
- `$backgroundColor` (string|array) - The background color to use for the uncovered zone area after rotation (default 'transparent').
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `text($text, $options, &$boundary)`
|
||||
|
||||
Adds text to the image.
|
||||
|
||||
- `$text*` (string) - The desired text.
|
||||
- `$options` (array) - An array of options.
|
||||
- `fontFile`* (string) - The TrueType (or compatible) font file to use.
|
||||
- `size` (int) - The size of the font in pixels (default 12).
|
||||
- `color` (string|array) - The text color (default black).
|
||||
- `anchor` (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right',
|
||||
'top left', 'top right', 'bottom left', 'bottom right' (default 'center').
|
||||
- `xOffset` (int) - The horizontal offset in pixels (default 0).
|
||||
- `yOffset` (int) - The vertical offset in pixels (default 0).
|
||||
- `shadow` (array) - Text shadow params.
|
||||
- `x`* (int) - Horizontal offset in pixels.
|
||||
- `y`* (int) - Vertical offset in pixels.
|
||||
- `color`* (string|array) - The text shadow color.
|
||||
- `calculateOffsetFromEdge` (bool) - Calculate Offset referring to the edges of the image (default false).
|
||||
- `baselineAlign` (bool) - Align the text font with the baseline. (default true).
|
||||
- `$boundary` (array) - If passed, this variable will contain an array with coordinates that
|
||||
surround the text: [x1, y1, x2, y2, width, height]. This can be used for calculating the
|
||||
text's position after it gets added to the image.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `thumbnail($width, $height, $anchor)`
|
||||
|
||||
Creates a thumbnail image. This function attempts to get the image as close to the provided dimensions as possible, then crops the remaining overflow to force the desired size. Useful for generating thumbnail images.
|
||||
|
||||
- `$width`* (int) - The thumbnail width.
|
||||
- `$height`* (int) - The thumbnail height.
|
||||
- `$anchor` (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', 'top right', 'bottom left', 'bottom right' (default 'center').
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
### Drawing
|
||||
|
||||
#### `arc($x, $y, $width, $height, $start, $end, $color, $thickness)`
|
||||
|
||||
Draws an arc.
|
||||
|
||||
- `$x`* (int) - The x coordinate of the arc's center.
|
||||
- `$y`* (int) - The y coordinate of the arc's center.
|
||||
- `$width`* (int) - The width of the arc.
|
||||
- `$height`* (int) - The height of the arc.
|
||||
- `$start`* (int) - The start of the arc in degrees.
|
||||
- `$end`* (int) - The end of the arc in degrees.
|
||||
- `$color`* (string|array) - The arc color.
|
||||
- `$thickness` (int|string) - Line thickness in pixels or 'filled' (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `border($color, $thickness)`
|
||||
|
||||
Draws a border around the image.
|
||||
|
||||
- `$color`* (string|array) - The border color.
|
||||
- `$thickness` (int) - The thickness of the border (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `dot($x, $y, $color)`
|
||||
|
||||
Draws a single pixel dot.
|
||||
|
||||
- `$x`* (int) - The x coordinate of the dot.
|
||||
- `$y`* (int) - The y coordinate of the dot.
|
||||
- `$color`* (string|array) - The dot color.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `ellipse($x, $y, $width, $height, $color, $thickness)`
|
||||
|
||||
Draws an ellipse.
|
||||
|
||||
- `$x`* (int) - The x coordinate of the center.
|
||||
- `$y`* (int) - The y coordinate of the center.
|
||||
- `$width`* (int) - The ellipse width.
|
||||
- `$height`* (int) - The ellipse height.
|
||||
- `$color`* (string|array) - The ellipse color.
|
||||
- `$thickness` (int|string) - Line thickness in pixels or 'filled' (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `fill($color)`
|
||||
|
||||
Fills the image with a solid color.
|
||||
|
||||
- `$color` (string|array) - The fill color.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `line($x1, $y1, $x2, $y2, $color, $thickness)`
|
||||
|
||||
Draws a line.
|
||||
|
||||
- `$x1`* (int) - The x coordinate for the first point.
|
||||
- `$y1`* (int) - The y coordinate for the first point.
|
||||
- `$x2`* (int) - The x coordinate for the second point.
|
||||
- `$y2`* (int) - The y coordinate for the second point.
|
||||
- `$color` (string|array) - The line color.
|
||||
- `$thickness` (int) - The line thickness (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `polygon($vertices, $color, $thickness)`
|
||||
|
||||
Draws a polygon.
|
||||
|
||||
- `$vertices`* (array) - The polygon's vertices in an array of x/y arrays. Example:
|
||||
```
|
||||
[
|
||||
['x' => x1, 'y' => y1],
|
||||
['x' => x2, 'y' => y2],
|
||||
['x' => xN, 'y' => yN]
|
||||
]
|
||||
```
|
||||
- `$color`* (string|array) - The polygon color.
|
||||
- `$thickness` (int|string) - Line thickness in pixels or 'filled' (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `rectangle($x1, $y1, $x2, $y2, $color, $thickness)`
|
||||
|
||||
Draws a rectangle.
|
||||
|
||||
- `$x1`* (int) - The upper left x coordinate.
|
||||
- `$y1`* (int) - The upper left y coordinate.
|
||||
- `$x2`* (int) - The bottom right x coordinate.
|
||||
- `$y2`* (int) - The bottom right y coordinate.
|
||||
- `$color`* (string|array) - The rectangle color.
|
||||
- `$thickness` (int|string) - Line thickness in pixels or 'filled' (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `roundedRectangle($x1, $y1, $x2, $y2, $radius, $color, $thickness)`
|
||||
|
||||
Draws a rounded rectangle.
|
||||
|
||||
- `$x1`* (int) - The upper left x coordinate.
|
||||
- `$y1`* (int) - The upper left y coordinate.
|
||||
- `$x2`* (int) - The bottom right x coordinate.
|
||||
- `$y2`* (int) - The bottom right y coordinate.
|
||||
- `$radius`* (int) - The border radius in pixels.
|
||||
- `$color`* (string|array) - The rectangle color.
|
||||
- `$thickness` (int|string) - Line thickness in pixels or 'filled' (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
### Filters
|
||||
|
||||
#### `blur($type, $passes)`
|
||||
|
||||
Applies the blur filter.
|
||||
|
||||
- `$type` (string) - The blur algorithm to use: 'selective', 'gaussian' (default 'gaussian').
|
||||
- `$passes` (int) - The number of time to apply the filter, enhancing the effect (default 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `brighten($percentage)`
|
||||
|
||||
Applies the brightness filter to brighten the image.
|
||||
|
||||
- `$percentage`* (int) - Percentage to brighten the image (0 - 100).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `colorize($color)`
|
||||
|
||||
Applies the colorize filter.
|
||||
|
||||
- `$color`* (string|array) - The filter color.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `contrast($percentage)`
|
||||
|
||||
Applies the contrast filter.
|
||||
|
||||
- `$percentage`* (int) - Percentage to adjust (-100 - 100).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `darken($percentage)`
|
||||
|
||||
Applies the brightness filter to darken the image.
|
||||
|
||||
- `$percentage`* (int) - Percentage to darken the image (0 - 100).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `desaturate()`
|
||||
|
||||
Applies the desaturate (grayscale) filter.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `duotone($lightColor, $darkColor)`
|
||||
|
||||
Applies the duotone filter to the image.
|
||||
|
||||
- `$lightColor`* (string|array) - The lightest color in the duotone.
|
||||
- `$darkColor`* (string|array) - The darkest color in the duotone.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `edgeDetect()`
|
||||
|
||||
Applies the edge detect filter.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `emboss()`
|
||||
|
||||
Applies the emboss filter.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `invert()`
|
||||
|
||||
Inverts the image's colors.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `opacity()`
|
||||
|
||||
Changes the image's opacity level.
|
||||
|
||||
- `$opacity`* (float) - The desired opacity level (0 - 1).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `pixelate($size)`
|
||||
|
||||
Applies the pixelate filter.
|
||||
|
||||
- `$size` (int) - The size of the blocks in pixels (default 10).
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `sepia()`
|
||||
|
||||
Simulates a sepia effect by desaturating the image and applying a sepia tone.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `sharpen($amount)`
|
||||
|
||||
Sharpens the image.
|
||||
|
||||
- `$amount` (int) - Sharpening amount (1 - 100, default 50)
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
#### `sketch()`
|
||||
|
||||
Applies the mean remove filter to produce a sketch effect.
|
||||
|
||||
Returns a SimpleImage object.
|
||||
|
||||
### Color utilities
|
||||
|
||||
#### `(static) adjustColor($color, $red, $green, $blue, $alpha)`
|
||||
|
||||
Adjusts a color by increasing/decreasing red/green/blue/alpha values independently.
|
||||
|
||||
- `$color`* (string|array) - The color to adjust.
|
||||
- `$red`* (int) - Red adjustment (-255 - 255).
|
||||
- `$green`* (int) - Green adjustment (-255 - 255).
|
||||
- `$blue`* (int) - Blue adjustment (-255 - 255).
|
||||
- `$alpha`* (float) - Alpha adjustment (-1 - 1).
|
||||
|
||||
Returns an RGBA color array.
|
||||
|
||||
#### `(static) darkenColor($color, $amount)`
|
||||
|
||||
Darkens a color.
|
||||
|
||||
- `$color`* (string|array) - The color to darken.
|
||||
- `$amount`* (int) - Amount to darken (0 - 255).
|
||||
|
||||
Returns an RGBA color array.
|
||||
|
||||
#### `extractColors($count = 10, $backgroundColor = null)`
|
||||
|
||||
Extracts colors from an image like a human would do.™ This method requires the third-party library \League\ColorExtractor. If you're using Composer, it will be installed for you automatically.
|
||||
|
||||
- `$count` (int) - The max number of colors to extract (default 5).
|
||||
- `$backgroundColor` (string|array) - By default any pixel with alpha value greater than zero will be discarded. This is because transparent colors are not perceived as is. For example, fully transparent black would be seen white on a white background. So if you want to take transparency into account, you have to specify a default background color.
|
||||
|
||||
Returns an array of RGBA colors arrays.
|
||||
|
||||
#### `getColorAt($x, $y)`
|
||||
|
||||
Gets the RGBA value of a single pixel.
|
||||
|
||||
- `$x`* (int) - The horizontal position of the pixel.
|
||||
- `$y`* (int) - The vertical position of the pixel.
|
||||
|
||||
Returns an RGBA color array or false if the x/y position is off the canvas.
|
||||
|
||||
#### `(static) lightenColor($color, $amount)`
|
||||
|
||||
Lightens a color.
|
||||
|
||||
- `$color`* (string|array) - The color to lighten.
|
||||
- `$amount`* (int) - Amount to darken (0 - 255).
|
||||
|
||||
Returns an RGBA color array.
|
||||
|
||||
#### `(static) normalizeColor($color)`
|
||||
|
||||
Normalizes a hex or array color value to a well-formatted RGBA array.
|
||||
|
||||
- `$color`* (string|array) - A CSS color name, hex string, or an array [red, green, blue, alpha].
|
||||
|
||||
You can pipe alpha transparency through hex strings and color names. For example:
|
||||
|
||||
#fff|0.50 <-- 50% white
|
||||
red|0.25 <-- 25% red
|
||||
|
||||
Returns an array: [red, green, blue, alpha]
|
||||
|
||||
### Exceptions
|
||||
|
||||
SimpleImage throws standard exceptions when things go wrong. You should always use a try/catch block around your code to properly handle them.
|
||||
|
||||
```php
|
||||
<?php
|
||||
try {
|
||||
$image = new \claviska\SimpleImage('image.jpeg')
|
||||
// ...
|
||||
} catch(Exception $err) {
|
||||
echo $err->getMessage();
|
||||
}
|
||||
```
|
||||
|
||||
To check for specific errors, compare `$err->getCode()` to the defined error constants.
|
||||
|
||||
```php
|
||||
<?php
|
||||
try {
|
||||
$image = new \claviska\SimpleImage('image.jpeg')
|
||||
// ...
|
||||
} catch(Exception $err) {
|
||||
if($err->getCode() === $image::ERR_FILE_NOT_FOUND) {
|
||||
echo 'File not found!';
|
||||
} else {
|
||||
echo $err->getMessage();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
As a best practice, always use the defined constants instead of their integers values. The values will likely change in future versions, and WILL NOT be considered a breaking change.
|
||||
|
||||
- `ERR_FILE_NOT_FOUND` - The specified file could not be found or loaded for some reason.
|
||||
- `ERR_FONT_FILE` - The specified font file could not be loaded.
|
||||
- `ERR_FREETYPE_NOT_ENABLED` - Freetype support is not enabled in your version of PHP.
|
||||
- `ERR_GD_NOT_ENABLED` - The GD extension is not enabled in your version of PHP.
|
||||
- `ERR_LIB_NOT_LOADED` - A required library has not been loaded.
|
||||
- `ERR_INVALID_COLOR` - An invalid color value was passed as an argument.
|
||||
- `ERR_INVALID_DATA_URI` - The specified data URI is not valid.
|
||||
- `ERR_INVALID_IMAGE` - The specified image is not valid.
|
||||
- `ERR_UNSUPPORTED_FORMAT` - The image format specified is not valid.
|
||||
- `ERR_WEBP_NOT_ENABLED` - WEBP support is not enabled in your version of PHP.
|
||||
- `ERR_WRITE` - Unable to write to the file system.
|
||||
- `ERR_INVALID_FAG` - The specified flag key does not exist.
|
||||
|
||||
### Useful Things To Know
|
||||
|
||||
- Color arguments can be a CSS color name (e.g. `LightBlue`), a hex color string (e.g. `#0099dd`), or an RGB(A) array (e.g. `['red' => 255, 'green' => 0, 'blue' => 0, 'alpha' => 1]`).
|
||||
|
||||
- When `$thickness` > 1, GD draws lines of the desired thickness from the center origin. For example, a rectangle drawn at [10, 10, 20, 20] with a thickness of 3 will actually be draw at [9, 9, 21, 21]. This is true for all shapes and is not a bug in the SimpleImage library.
|
||||
|
||||
### Instance flags
|
||||
|
||||
Tweak the behavior of a SimpleImage instance by setting instance flag values with the `setFlag($key, $value)` method.
|
||||
|
||||
```php
|
||||
$image = new \claviska\SimpleImage('image.jpeg')->setFlag("foo", "bar");
|
||||
```
|
||||
|
||||
You can also pass an associative array to the SimpleImage constructor to set instance flags.
|
||||
|
||||
```php
|
||||
$image = new \claviska\SimpleImage('image.jpeg', ['foo' => 'bar']);
|
||||
// .. or without an $image
|
||||
$image = new \claviska\SimpleImage(flags: ['foo' => 'bar']);
|
||||
```
|
||||
|
||||
*Note: `setFlag()` throws an `ERR_INVALID_FLAG` exception if the key does not exist (no default value).*
|
||||
|
||||
#### `sslVerify`
|
||||
|
||||
Setting `sslVerify` to `false` (defaults to `true`) will make all images loaded over HTTPS forgo certificate peer validation. This is especially usefull for self-signed certificates.
|
||||
|
||||
```php
|
||||
$image = new \claviska\SimpleImage('https://localhost/image.jpeg', ['sslVerify' => false]);
|
||||
// Would normally throw an OpenSSL exception, but is ignored with the sslVerify flag set to false.
|
||||
```
|
||||
|
||||
## Differences from SimpleImage 2.x
|
||||
|
||||
- Normalized color arguments (colors can be a CSS color name, hex color, or RGB(A) array).
|
||||
- Normalized alpha (opacity) arguments: 0 (transparent) - 1 (opaque)
|
||||
- Added text shadow to `text` method.
|
||||
- Added `fromString()` method to load images from strings.
|
||||
- Added `toString()` method to generate image strings.
|
||||
- Added `arc` method for drawing arcs.
|
||||
- Added `border` method for drawing borders.
|
||||
- Added `dot` method for drawing individual pixels.
|
||||
- Added `ellipse` method for drawing ellipses and circles.
|
||||
- Added `line` method for drawing lines.
|
||||
- Added `polygon` method for drawing polygons.
|
||||
- Added `rectangle` method for drawing rectangles.
|
||||
- Added `roundedRectangle` method for drawing rounded rectangles.
|
||||
- Added `adjustColor` method for modifying RGBA color channels to create relative color variations.
|
||||
- Added `darkenColor` method to darken a color.
|
||||
- Added `extractColors` method to get the most common colors from the image.
|
||||
- Added `getColorAt` method to get the RGBA values of a specific pixel.
|
||||
- Added `lightenColor` method to lighten a color.
|
||||
- Added `toDownload` method to force the image to download on the client's machine.
|
||||
- Added `duotone` filter to create duotone images.
|
||||
- Added `sharpen` method to sharpen the image.
|
||||
- Changed namespace from `abeautifulsite` to `claviska`.
|
||||
- Changed `create` method to `fromNew`.
|
||||
- Changed `load` method to `fromFile`.
|
||||
- Changed `load_base64` method to `fromDataUri`.
|
||||
- Changed `output` method to `toScreen`.x
|
||||
- Changed `output_base64` method to `toDataUri`.
|
||||
- Changed `save` method to `toFile`.
|
||||
- Changed `text` method to accept an array of options instead of tons of arguments.
|
||||
- Removed text stroke from `text` method because it produced dirty results and didn't support transparency.
|
||||
- Removed `smooth` method because its arguments in the PHP manual aren't documented well.
|
||||
- Removed deprecated method `adaptive_resize` (use `thumbnail` instead).
|
||||
- Removed `get_meta_data` (use `getExif`, `getHeight`, `getMime`, `getOrientation`, and `getWidth` instead).
|
||||
- Added [.editorconfig](http://editorconfig.org/) file. Please make sure your editor supports these settings before submitting contributions.
|
||||
- Switched from four spaces to two for indentations (sorry PHP-FIG!).
|
||||
- Switched from underscore_methods to camelCaseMethods.
|
||||
- Organized methods into groups based on function
|
||||
- Removed PHPDoc comments. At this time, I don't wish to incorporate them into the library.
|
||||
22
vendor/claviska/simpleimage/composer.json
vendored
Normal file
22
vendor/claviska/simpleimage/composer.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "claviska/simpleimage",
|
||||
"description": "A PHP class that makes working with images as simple as possible.",
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": ">=5.6.0",
|
||||
"ext-gd": "*",
|
||||
"league/color-extractor": "0.3.*"
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
"name": "Cory LaViska",
|
||||
"homepage": "http://www.abeautifulsite.net/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"claviska": "src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
vendor/claviska/simpleimage/example/flag.png
vendored
Normal file
BIN
vendor/claviska/simpleimage/example/flag.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.6 KiB |
25
vendor/claviska/simpleimage/example/index.php
vendored
Normal file
25
vendor/claviska/simpleimage/example/index.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
require '../src/claviska/SimpleImage.php';
|
||||
|
||||
// Ignore notices
|
||||
error_reporting(E_ALL & ~E_NOTICE);
|
||||
|
||||
try {
|
||||
// Create a new SimpleImage object
|
||||
$image = new \claviska\SimpleImage();
|
||||
|
||||
// Manipulate it
|
||||
$image
|
||||
->fromFile('parrot.jpg') // load parrot.jpg
|
||||
->autoOrient() // adjust orientation based on exif data
|
||||
->bestFit(300, 600) // proportionally resize to fit inside a 250x400 box
|
||||
->flip('x') // flip horizontally
|
||||
->colorize('DarkGreen') // tint dark green
|
||||
->border('black', 5) // add a 5 pixel black border
|
||||
->overlay('flag.png', 'bottom right') // add a watermark image
|
||||
->toScreen(); // output to the screen
|
||||
|
||||
} catch(Exception $err) {
|
||||
// Handle errors
|
||||
echo $err->getMessage();
|
||||
}
|
||||
BIN
vendor/claviska/simpleimage/example/parrot.jpg
vendored
Normal file
BIN
vendor/claviska/simpleimage/example/parrot.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
2190
vendor/claviska/simpleimage/src/claviska/SimpleImage.php
vendored
Normal file
2190
vendor/claviska/simpleimage/src/claviska/SimpleImage.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
579
vendor/composer/ClassLoader.php
vendored
Normal file
579
vendor/composer/ClassLoader.php
vendored
Normal file
@@ -0,0 +1,579 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see https://www.php-fig.org/psr/psr-0/
|
||||
* @see https://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
/** @var \Closure(string):void */
|
||||
private static $includeFile;
|
||||
|
||||
/** @var string|null */
|
||||
private $vendorDir;
|
||||
|
||||
// PSR-4
|
||||
/**
|
||||
* @var array<string, array<string, int>>
|
||||
*/
|
||||
private $prefixLengthsPsr4 = array();
|
||||
/**
|
||||
* @var array<string, list<string>>
|
||||
*/
|
||||
private $prefixDirsPsr4 = array();
|
||||
/**
|
||||
* @var list<string>
|
||||
*/
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
/**
|
||||
* List of PSR-0 prefixes
|
||||
*
|
||||
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
|
||||
*
|
||||
* @var array<string, array<string, list<string>>>
|
||||
*/
|
||||
private $prefixesPsr0 = array();
|
||||
/**
|
||||
* @var list<string>
|
||||
*/
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
/** @var bool */
|
||||
private $useIncludePath = false;
|
||||
|
||||
/**
|
||||
* @var array<string, string>
|
||||
*/
|
||||
private $classMap = array();
|
||||
|
||||
/** @var bool */
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
/**
|
||||
* @var array<string, bool>
|
||||
*/
|
||||
private $missingClasses = array();
|
||||
|
||||
/** @var string|null */
|
||||
private $apcuPrefix;
|
||||
|
||||
/**
|
||||
* @var array<string, self>
|
||||
*/
|
||||
private static $registeredLoaders = array();
|
||||
|
||||
/**
|
||||
* @param string|null $vendorDir
|
||||
*/
|
||||
public function __construct($vendorDir = null)
|
||||
{
|
||||
$this->vendorDir = $vendorDir;
|
||||
self::initializeIncludeClosure();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, list<string>>
|
||||
*/
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, list<string>>
|
||||
*/
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string> Array of classname => path
|
||||
*/
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, string> $classMap Class to filename map
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param list<string>|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
$paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
$paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
$paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
$paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param list<string>|string $paths The PSR-0 base directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||
*
|
||||
* @param string|null $apcuPrefix
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getApcuPrefix()
|
||||
{
|
||||
return $this->apcuPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
|
||||
if (null === $this->vendorDir) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($prepend) {
|
||||
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
||||
} else {
|
||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||
self::$registeredLoaders[$this->vendorDir] = $this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
|
||||
if (null !== $this->vendorDir) {
|
||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return true|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
$includeFile = self::$includeFile;
|
||||
$includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||
return false;
|
||||
}
|
||||
if (null !== $this->apcuPrefix) {
|
||||
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||
if ($hit) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if (false === $file && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if (null !== $this->apcuPrefix) {
|
||||
apcu_add($this->apcuPrefix.$class, $file);
|
||||
}
|
||||
|
||||
if (false === $file) {
|
||||
// Remember that this class does not exist.
|
||||
$this->missingClasses[$class] = true;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently registered loaders keyed by their corresponding vendor directories.
|
||||
*
|
||||
* @return array<string, self>
|
||||
*/
|
||||
public static function getRegisteredLoaders()
|
||||
{
|
||||
return self::$registeredLoaders;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $class
|
||||
* @param string $ext
|
||||
* @return string|false
|
||||
*/
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath . '\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
if (file_exists($file = $dir . $pathEnd)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
private static function initializeIncludeClosure()
|
||||
{
|
||||
if (self::$includeFile !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
self::$includeFile = \Closure::bind(static function($file) {
|
||||
include $file;
|
||||
}, null, null);
|
||||
}
|
||||
}
|
||||
359
vendor/composer/InstalledVersions.php
vendored
Normal file
359
vendor/composer/InstalledVersions.php
vendored
Normal file
@@ -0,0 +1,359 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
use Composer\Semver\VersionParser;
|
||||
|
||||
/**
|
||||
* This class is copied in every Composer installed project and available to all
|
||||
*
|
||||
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||
*
|
||||
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class InstalledVersions
|
||||
{
|
||||
/**
|
||||
* @var mixed[]|null
|
||||
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||
*/
|
||||
private static $installed;
|
||||
|
||||
/**
|
||||
* @var bool|null
|
||||
*/
|
||||
private static $canGetVendors;
|
||||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
*/
|
||||
private static $installedByVendor = array();
|
||||
|
||||
/**
|
||||
* Returns a list of all package names which are present, either by being installed, replaced or provided
|
||||
*
|
||||
* @return string[]
|
||||
* @psalm-return list<string>
|
||||
*/
|
||||
public static function getInstalledPackages()
|
||||
{
|
||||
$packages = array();
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
$packages[] = array_keys($installed['versions']);
|
||||
}
|
||||
|
||||
if (1 === \count($packages)) {
|
||||
return $packages[0];
|
||||
}
|
||||
|
||||
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all package names with a specific type e.g. 'library'
|
||||
*
|
||||
* @param string $type
|
||||
* @return string[]
|
||||
* @psalm-return list<string>
|
||||
*/
|
||||
public static function getInstalledPackagesByType($type)
|
||||
{
|
||||
$packagesByType = array();
|
||||
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
foreach ($installed['versions'] as $name => $package) {
|
||||
if (isset($package['type']) && $package['type'] === $type) {
|
||||
$packagesByType[] = $name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $packagesByType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package is installed
|
||||
*
|
||||
* This also returns true if the package name is provided or replaced by another package
|
||||
*
|
||||
* @param string $packageName
|
||||
* @param bool $includeDevRequirements
|
||||
* @return bool
|
||||
*/
|
||||
public static function isInstalled($packageName, $includeDevRequirements = true)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (isset($installed['versions'][$packageName])) {
|
||||
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package satisfies a version constraint
|
||||
*
|
||||
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
|
||||
*
|
||||
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
|
||||
*
|
||||
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
|
||||
* @param string $packageName
|
||||
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
|
||||
* @return bool
|
||||
*/
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints((string) $constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a version constraint representing all the range(s) which are installed for a given package
|
||||
*
|
||||
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
|
||||
* whether a given version of a package is installed, and not just whether it exists
|
||||
*
|
||||
* @param string $packageName
|
||||
* @return string Version constraint usable with composer/semver
|
||||
*/
|
||||
public static function getVersionRanges($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$ranges = array();
|
||||
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
||||
}
|
||||
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
||||
}
|
||||
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
||||
}
|
||||
|
||||
return implode(' || ', $ranges);
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||
*/
|
||||
public static function getVersion($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['version'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||
*/
|
||||
public static function getPrettyVersion($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
|
||||
*/
|
||||
public static function getReference($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['reference'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['reference'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
|
||||
*/
|
||||
public static function getInstallPath($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||
*/
|
||||
public static function getRootPackage()
|
||||
{
|
||||
$installed = self::getInstalled();
|
||||
|
||||
return $installed[0]['root'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw installed.php data for custom implementations
|
||||
*
|
||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||
* @return array[]
|
||||
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||
*/
|
||||
public static function getRawData()
|
||||
{
|
||||
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
|
||||
|
||||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = include __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
return self::$installed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||
*
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
*/
|
||||
public static function getAllRawData()
|
||||
{
|
||||
return self::getInstalled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Lets you reload the static array from another file
|
||||
*
|
||||
* This is only useful for complex integrations in which a project needs to use
|
||||
* this class but then also needs to execute another project's autoloader in process,
|
||||
* and wants to ensure both projects have access to their version of installed.php.
|
||||
*
|
||||
* A typical case would be PHPUnit, where it would need to make sure it reads all
|
||||
* the data it needs from this class, then call reload() with
|
||||
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
|
||||
* the project in which it runs can then also use this class safely, without
|
||||
* interference between PHPUnit's dependencies and the project's dependencies.
|
||||
*
|
||||
* @param array[] $data A vendor/composer/installed.php data set
|
||||
* @return void
|
||||
*
|
||||
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||
*/
|
||||
public static function reload($data)
|
||||
{
|
||||
self::$installed = $data;
|
||||
self::$installedByVendor = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
*/
|
||||
private static function getInstalled()
|
||||
{
|
||||
if (null === self::$canGetVendors) {
|
||||
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
||||
}
|
||||
|
||||
$installed = array();
|
||||
|
||||
if (self::$canGetVendors) {
|
||||
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
||||
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir];
|
||||
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require $vendorDir.'/composer/installed.php';
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = $required;
|
||||
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||
self::$installed = $installed[count($installed) - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require __DIR__ . '/installed.php';
|
||||
self::$installed = $required;
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (self::$installed !== array()) {
|
||||
$installed[] = self::$installed;
|
||||
}
|
||||
|
||||
return $installed;
|
||||
}
|
||||
}
|
||||
21
vendor/composer/LICENSE
vendored
Normal file
21
vendor/composer/LICENSE
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
507
vendor/composer/autoload_classmap.php
vendored
Normal file
507
vendor/composer/autoload_classmap.php
vendored
Normal file
@@ -0,0 +1,507 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php',
|
||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||
'Embed\\Adapters\\Archive\\Api' => $vendorDir . '/embed/embed/src/Adapters/Archive/Api.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\AuthorName' => $vendorDir . '/embed/embed/src/Adapters/Archive/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Archive/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\Description' => $vendorDir . '/embed/embed/src/Adapters/Archive/Detectors/Description.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\ProviderName' => $vendorDir . '/embed/embed/src/Adapters/Archive/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\PublishedTime' => $vendorDir . '/embed/embed/src/Adapters/Archive/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\Title' => $vendorDir . '/embed/embed/src/Adapters/Archive/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Archive\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Archive/Extractor.php',
|
||||
'Embed\\Adapters\\Bandcamp\\Detectors\\ProviderName' => $vendorDir . '/embed/embed/src/Adapters/Bandcamp/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\Bandcamp\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Bandcamp/Extractor.php',
|
||||
'Embed\\Adapters\\CadenaSer\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/CadenaSer/Detectors/Code.php',
|
||||
'Embed\\Adapters\\CadenaSer\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/CadenaSer/Extractor.php',
|
||||
'Embed\\Adapters\\Facebook\\Detectors\\Title' => $vendorDir . '/embed/embed/src/Adapters/Facebook/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Facebook\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Facebook/Extractor.php',
|
||||
'Embed\\Adapters\\Facebook\\OEmbed' => $vendorDir . '/embed/embed/src/Adapters/Facebook/OEmbed.php',
|
||||
'Embed\\Adapters\\Flickr\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Flickr/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Flickr\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Flickr/Extractor.php',
|
||||
'Embed\\Adapters\\Gist\\Api' => $vendorDir . '/embed/embed/src/Adapters/Gist/Api.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\AuthorName' => $vendorDir . '/embed/embed/src/Adapters/Gist/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\AuthorUrl' => $vendorDir . '/embed/embed/src/Adapters/Gist/Detectors/AuthorUrl.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Gist/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\PublishedTime' => $vendorDir . '/embed/embed/src/Adapters/Gist/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\Gist\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Gist/Extractor.php',
|
||||
'Embed\\Adapters\\Github\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Github/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Github\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Github/Extractor.php',
|
||||
'Embed\\Adapters\\Ideone\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Ideone/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Ideone\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Ideone/Extractor.php',
|
||||
'Embed\\Adapters\\ImageShack\\Api' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Api.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\AuthorName' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\AuthorUrl' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/AuthorUrl.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\Description' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/Description.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\Image' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/Image.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\ProviderName' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\PublishedTime' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\Title' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Detectors/Title.php',
|
||||
'Embed\\Adapters\\ImageShack\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/ImageShack/Extractor.php',
|
||||
'Embed\\Adapters\\Instagram\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Instagram/Extractor.php',
|
||||
'Embed\\Adapters\\Instagram\\OEmbed' => $vendorDir . '/embed/embed/src/Adapters/Instagram/OEmbed.php',
|
||||
'Embed\\Adapters\\Pinterest\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Pinterest/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Pinterest\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Pinterest/Extractor.php',
|
||||
'Embed\\Adapters\\Sassmeister\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Sassmeister/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Sassmeister\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Sassmeister/Extractor.php',
|
||||
'Embed\\Adapters\\Slides\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Slides/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Slides\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Slides/Extractor.php',
|
||||
'Embed\\Adapters\\Snipplr\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Snipplr/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Snipplr\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Snipplr/Extractor.php',
|
||||
'Embed\\Adapters\\Twitch\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Adapters/Twitch/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Twitch\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Twitch/Extractor.php',
|
||||
'Embed\\Adapters\\Twitter\\Api' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Api.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\AuthorName' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\AuthorUrl' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/AuthorUrl.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\Description' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/Description.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\Image' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/Image.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\ProviderName' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\PublishedTime' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\Title' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Twitter\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Twitter/Extractor.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Api' => $vendorDir . '/embed/embed/src/Adapters/Wikipedia/Api.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Detectors\\Description' => $vendorDir . '/embed/embed/src/Adapters/Wikipedia/Detectors/Description.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Detectors\\Title' => $vendorDir . '/embed/embed/src/Adapters/Wikipedia/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Wikipedia/Extractor.php',
|
||||
'Embed\\Adapters\\Youtube\\Detectors\\Feeds' => $vendorDir . '/embed/embed/src/Adapters/Youtube/Detectors/Feeds.php',
|
||||
'Embed\\Adapters\\Youtube\\Extractor' => $vendorDir . '/embed/embed/src/Adapters/Youtube/Extractor.php',
|
||||
'Embed\\ApiTrait' => $vendorDir . '/embed/embed/src/ApiTrait.php',
|
||||
'Embed\\Detectors\\AuthorName' => $vendorDir . '/embed/embed/src/Detectors/AuthorName.php',
|
||||
'Embed\\Detectors\\AuthorUrl' => $vendorDir . '/embed/embed/src/Detectors/AuthorUrl.php',
|
||||
'Embed\\Detectors\\Cms' => $vendorDir . '/embed/embed/src/Detectors/Cms.php',
|
||||
'Embed\\Detectors\\Code' => $vendorDir . '/embed/embed/src/Detectors/Code.php',
|
||||
'Embed\\Detectors\\Description' => $vendorDir . '/embed/embed/src/Detectors/Description.php',
|
||||
'Embed\\Detectors\\Detector' => $vendorDir . '/embed/embed/src/Detectors/Detector.php',
|
||||
'Embed\\Detectors\\Favicon' => $vendorDir . '/embed/embed/src/Detectors/Favicon.php',
|
||||
'Embed\\Detectors\\Feeds' => $vendorDir . '/embed/embed/src/Detectors/Feeds.php',
|
||||
'Embed\\Detectors\\Icon' => $vendorDir . '/embed/embed/src/Detectors/Icon.php',
|
||||
'Embed\\Detectors\\Image' => $vendorDir . '/embed/embed/src/Detectors/Image.php',
|
||||
'Embed\\Detectors\\Keywords' => $vendorDir . '/embed/embed/src/Detectors/Keywords.php',
|
||||
'Embed\\Detectors\\Language' => $vendorDir . '/embed/embed/src/Detectors/Language.php',
|
||||
'Embed\\Detectors\\Languages' => $vendorDir . '/embed/embed/src/Detectors/Languages.php',
|
||||
'Embed\\Detectors\\License' => $vendorDir . '/embed/embed/src/Detectors/License.php',
|
||||
'Embed\\Detectors\\ProviderName' => $vendorDir . '/embed/embed/src/Detectors/ProviderName.php',
|
||||
'Embed\\Detectors\\ProviderUrl' => $vendorDir . '/embed/embed/src/Detectors/ProviderUrl.php',
|
||||
'Embed\\Detectors\\PublishedTime' => $vendorDir . '/embed/embed/src/Detectors/PublishedTime.php',
|
||||
'Embed\\Detectors\\Redirect' => $vendorDir . '/embed/embed/src/Detectors/Redirect.php',
|
||||
'Embed\\Detectors\\Title' => $vendorDir . '/embed/embed/src/Detectors/Title.php',
|
||||
'Embed\\Detectors\\Url' => $vendorDir . '/embed/embed/src/Detectors/Url.php',
|
||||
'Embed\\Document' => $vendorDir . '/embed/embed/src/Document.php',
|
||||
'Embed\\Embed' => $vendorDir . '/embed/embed/src/Embed.php',
|
||||
'Embed\\EmbedCode' => $vendorDir . '/embed/embed/src/EmbedCode.php',
|
||||
'Embed\\Extractor' => $vendorDir . '/embed/embed/src/Extractor.php',
|
||||
'Embed\\ExtractorFactory' => $vendorDir . '/embed/embed/src/ExtractorFactory.php',
|
||||
'Embed\\HttpApiTrait' => $vendorDir . '/embed/embed/src/HttpApiTrait.php',
|
||||
'Embed\\Http\\Crawler' => $vendorDir . '/embed/embed/src/Http/Crawler.php',
|
||||
'Embed\\Http\\CurlClient' => $vendorDir . '/embed/embed/src/Http/CurlClient.php',
|
||||
'Embed\\Http\\CurlDispatcher' => $vendorDir . '/embed/embed/src/Http/CurlDispatcher.php',
|
||||
'Embed\\Http\\FactoryDiscovery' => $vendorDir . '/embed/embed/src/Http/FactoryDiscovery.php',
|
||||
'Embed\\Http\\NetworkException' => $vendorDir . '/embed/embed/src/Http/NetworkException.php',
|
||||
'Embed\\Http\\RequestException' => $vendorDir . '/embed/embed/src/Http/RequestException.php',
|
||||
'Embed\\LinkedData' => $vendorDir . '/embed/embed/src/LinkedData.php',
|
||||
'Embed\\Metas' => $vendorDir . '/embed/embed/src/Metas.php',
|
||||
'Embed\\OEmbed' => $vendorDir . '/embed/embed/src/OEmbed.php',
|
||||
'Embed\\QueryResult' => $vendorDir . '/embed/embed/src/QueryResult.php',
|
||||
'GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php',
|
||||
'GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php',
|
||||
'GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php',
|
||||
'GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php',
|
||||
'GuzzleHttp\\Psr7\\Exception\\MalformedUriException' => $vendorDir . '/guzzlehttp/psr7/src/Exception/MalformedUriException.php',
|
||||
'GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php',
|
||||
'GuzzleHttp\\Psr7\\Header' => $vendorDir . '/guzzlehttp/psr7/src/Header.php',
|
||||
'GuzzleHttp\\Psr7\\HttpFactory' => $vendorDir . '/guzzlehttp/psr7/src/HttpFactory.php',
|
||||
'GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php',
|
||||
'GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php',
|
||||
'GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php',
|
||||
'GuzzleHttp\\Psr7\\Message' => $vendorDir . '/guzzlehttp/psr7/src/Message.php',
|
||||
'GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php',
|
||||
'GuzzleHttp\\Psr7\\MimeType' => $vendorDir . '/guzzlehttp/psr7/src/MimeType.php',
|
||||
'GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php',
|
||||
'GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php',
|
||||
'GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php',
|
||||
'GuzzleHttp\\Psr7\\Query' => $vendorDir . '/guzzlehttp/psr7/src/Query.php',
|
||||
'GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php',
|
||||
'GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php',
|
||||
'GuzzleHttp\\Psr7\\Rfc7230' => $vendorDir . '/guzzlehttp/psr7/src/Rfc7230.php',
|
||||
'GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php',
|
||||
'GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php',
|
||||
'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php',
|
||||
'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php',
|
||||
'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php',
|
||||
'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php',
|
||||
'GuzzleHttp\\Psr7\\UriComparator' => $vendorDir . '/guzzlehttp/psr7/src/UriComparator.php',
|
||||
'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php',
|
||||
'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php',
|
||||
'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php',
|
||||
'HtmlParser\\Parser' => $vendorDir . '/oscarotero/html-parser/src/Parser.php',
|
||||
'Kirby\\Api\\Api' => $baseDir . '/kirby/src/Api/Api.php',
|
||||
'Kirby\\Api\\Collection' => $baseDir . '/kirby/src/Api/Collection.php',
|
||||
'Kirby\\Api\\Model' => $baseDir . '/kirby/src/Api/Model.php',
|
||||
'Kirby\\Cache\\ApcuCache' => $baseDir . '/kirby/src/Cache/ApcuCache.php',
|
||||
'Kirby\\Cache\\Cache' => $baseDir . '/kirby/src/Cache/Cache.php',
|
||||
'Kirby\\Cache\\FileCache' => $baseDir . '/kirby/src/Cache/FileCache.php',
|
||||
'Kirby\\Cache\\MemCached' => $baseDir . '/kirby/src/Cache/MemCached.php',
|
||||
'Kirby\\Cache\\MemoryCache' => $baseDir . '/kirby/src/Cache/MemoryCache.php',
|
||||
'Kirby\\Cache\\NullCache' => $baseDir . '/kirby/src/Cache/NullCache.php',
|
||||
'Kirby\\Cache\\Value' => $baseDir . '/kirby/src/Cache/Value.php',
|
||||
'Kirby\\Cms\\Api' => $baseDir . '/kirby/src/Cms/Api.php',
|
||||
'Kirby\\Cms\\App' => $baseDir . '/kirby/src/Cms/App.php',
|
||||
'Kirby\\Cms\\AppCaches' => $baseDir . '/kirby/src/Cms/AppCaches.php',
|
||||
'Kirby\\Cms\\AppErrors' => $baseDir . '/kirby/src/Cms/AppErrors.php',
|
||||
'Kirby\\Cms\\AppPlugins' => $baseDir . '/kirby/src/Cms/AppPlugins.php',
|
||||
'Kirby\\Cms\\AppTranslations' => $baseDir . '/kirby/src/Cms/AppTranslations.php',
|
||||
'Kirby\\Cms\\AppUsers' => $baseDir . '/kirby/src/Cms/AppUsers.php',
|
||||
'Kirby\\Cms\\Auth' => $baseDir . '/kirby/src/Cms/Auth.php',
|
||||
'Kirby\\Cms\\Auth\\Challenge' => $baseDir . '/kirby/src/Cms/Auth/Challenge.php',
|
||||
'Kirby\\Cms\\Auth\\EmailChallenge' => $baseDir . '/kirby/src/Cms/Auth/EmailChallenge.php',
|
||||
'Kirby\\Cms\\Auth\\Status' => $baseDir . '/kirby/src/Cms/Auth/Status.php',
|
||||
'Kirby\\Cms\\Block' => $baseDir . '/kirby/src/Cms/Block.php',
|
||||
'Kirby\\Cms\\Blocks' => $baseDir . '/kirby/src/Cms/Blocks.php',
|
||||
'Kirby\\Cms\\Blueprint' => $baseDir . '/kirby/src/Cms/Blueprint.php',
|
||||
'Kirby\\Cms\\Collection' => $baseDir . '/kirby/src/Cms/Collection.php',
|
||||
'Kirby\\Cms\\Collections' => $baseDir . '/kirby/src/Cms/Collections.php',
|
||||
'Kirby\\Cms\\Content' => $baseDir . '/kirby/src/Cms/Content.php',
|
||||
'Kirby\\Cms\\ContentLock' => $baseDir . '/kirby/src/Cms/ContentLock.php',
|
||||
'Kirby\\Cms\\ContentLocks' => $baseDir . '/kirby/src/Cms/ContentLocks.php',
|
||||
'Kirby\\Cms\\ContentTranslation' => $baseDir . '/kirby/src/Cms/ContentTranslation.php',
|
||||
'Kirby\\Cms\\Core' => $baseDir . '/kirby/src/Cms/Core.php',
|
||||
'Kirby\\Cms\\Email' => $baseDir . '/kirby/src/Cms/Email.php',
|
||||
'Kirby\\Cms\\Event' => $baseDir . '/kirby/src/Cms/Event.php',
|
||||
'Kirby\\Cms\\Field' => $baseDir . '/kirby/src/Cms/Field.php',
|
||||
'Kirby\\Cms\\Fieldset' => $baseDir . '/kirby/src/Cms/Fieldset.php',
|
||||
'Kirby\\Cms\\Fieldsets' => $baseDir . '/kirby/src/Cms/Fieldsets.php',
|
||||
'Kirby\\Cms\\File' => $baseDir . '/kirby/src/Cms/File.php',
|
||||
'Kirby\\Cms\\FileActions' => $baseDir . '/kirby/src/Cms/FileActions.php',
|
||||
'Kirby\\Cms\\FileBlueprint' => $baseDir . '/kirby/src/Cms/FileBlueprint.php',
|
||||
'Kirby\\Cms\\FileModifications' => $baseDir . '/kirby/src/Cms/FileModifications.php',
|
||||
'Kirby\\Cms\\FilePermissions' => $baseDir . '/kirby/src/Cms/FilePermissions.php',
|
||||
'Kirby\\Cms\\FilePicker' => $baseDir . '/kirby/src/Cms/FilePicker.php',
|
||||
'Kirby\\Cms\\FileRules' => $baseDir . '/kirby/src/Cms/FileRules.php',
|
||||
'Kirby\\Cms\\FileVersion' => $baseDir . '/kirby/src/Cms/FileVersion.php',
|
||||
'Kirby\\Cms\\Files' => $baseDir . '/kirby/src/Cms/Files.php',
|
||||
'Kirby\\Cms\\Find' => $baseDir . '/kirby/src/Cms/Find.php',
|
||||
'Kirby\\Cms\\HasChildren' => $baseDir . '/kirby/src/Cms/HasChildren.php',
|
||||
'Kirby\\Cms\\HasFiles' => $baseDir . '/kirby/src/Cms/HasFiles.php',
|
||||
'Kirby\\Cms\\HasMethods' => $baseDir . '/kirby/src/Cms/HasMethods.php',
|
||||
'Kirby\\Cms\\HasSiblings' => $baseDir . '/kirby/src/Cms/HasSiblings.php',
|
||||
'Kirby\\Cms\\Helpers' => $baseDir . '/kirby/src/Cms/Helpers.php',
|
||||
'Kirby\\Cms\\Html' => $baseDir . '/kirby/src/Cms/Html.php',
|
||||
'Kirby\\Cms\\Ingredients' => $baseDir . '/kirby/src/Cms/Ingredients.php',
|
||||
'Kirby\\Cms\\Item' => $baseDir . '/kirby/src/Cms/Item.php',
|
||||
'Kirby\\Cms\\Items' => $baseDir . '/kirby/src/Cms/Items.php',
|
||||
'Kirby\\Cms\\Language' => $baseDir . '/kirby/src/Cms/Language.php',
|
||||
'Kirby\\Cms\\LanguageRouter' => $baseDir . '/kirby/src/Cms/LanguageRouter.php',
|
||||
'Kirby\\Cms\\LanguageRoutes' => $baseDir . '/kirby/src/Cms/LanguageRoutes.php',
|
||||
'Kirby\\Cms\\LanguageRules' => $baseDir . '/kirby/src/Cms/LanguageRules.php',
|
||||
'Kirby\\Cms\\Languages' => $baseDir . '/kirby/src/Cms/Languages.php',
|
||||
'Kirby\\Cms\\Layout' => $baseDir . '/kirby/src/Cms/Layout.php',
|
||||
'Kirby\\Cms\\LayoutColumn' => $baseDir . '/kirby/src/Cms/LayoutColumn.php',
|
||||
'Kirby\\Cms\\LayoutColumns' => $baseDir . '/kirby/src/Cms/LayoutColumns.php',
|
||||
'Kirby\\Cms\\Layouts' => $baseDir . '/kirby/src/Cms/Layouts.php',
|
||||
'Kirby\\Cms\\Loader' => $baseDir . '/kirby/src/Cms/Loader.php',
|
||||
'Kirby\\Cms\\Media' => $baseDir . '/kirby/src/Cms/Media.php',
|
||||
'Kirby\\Cms\\Model' => $baseDir . '/kirby/src/Cms/Model.php',
|
||||
'Kirby\\Cms\\ModelPermissions' => $baseDir . '/kirby/src/Cms/ModelPermissions.php',
|
||||
'Kirby\\Cms\\ModelWithContent' => $baseDir . '/kirby/src/Cms/ModelWithContent.php',
|
||||
'Kirby\\Cms\\Nest' => $baseDir . '/kirby/src/Cms/Nest.php',
|
||||
'Kirby\\Cms\\NestCollection' => $baseDir . '/kirby/src/Cms/NestCollection.php',
|
||||
'Kirby\\Cms\\NestObject' => $baseDir . '/kirby/src/Cms/NestObject.php',
|
||||
'Kirby\\Cms\\Page' => $baseDir . '/kirby/src/Cms/Page.php',
|
||||
'Kirby\\Cms\\PageActions' => $baseDir . '/kirby/src/Cms/PageActions.php',
|
||||
'Kirby\\Cms\\PageBlueprint' => $baseDir . '/kirby/src/Cms/PageBlueprint.php',
|
||||
'Kirby\\Cms\\PagePermissions' => $baseDir . '/kirby/src/Cms/PagePermissions.php',
|
||||
'Kirby\\Cms\\PagePicker' => $baseDir . '/kirby/src/Cms/PagePicker.php',
|
||||
'Kirby\\Cms\\PageRules' => $baseDir . '/kirby/src/Cms/PageRules.php',
|
||||
'Kirby\\Cms\\PageSiblings' => $baseDir . '/kirby/src/Cms/PageSiblings.php',
|
||||
'Kirby\\Cms\\Pages' => $baseDir . '/kirby/src/Cms/Pages.php',
|
||||
'Kirby\\Cms\\Pagination' => $baseDir . '/kirby/src/Cms/Pagination.php',
|
||||
'Kirby\\Cms\\Permissions' => $baseDir . '/kirby/src/Cms/Permissions.php',
|
||||
'Kirby\\Cms\\Picker' => $baseDir . '/kirby/src/Cms/Picker.php',
|
||||
'Kirby\\Cms\\Plugin' => $baseDir . '/kirby/src/Cms/Plugin.php',
|
||||
'Kirby\\Cms\\PluginAssets' => $baseDir . '/kirby/src/Cms/PluginAssets.php',
|
||||
'Kirby\\Cms\\R' => $baseDir . '/kirby/src/Cms/R.php',
|
||||
'Kirby\\Cms\\Responder' => $baseDir . '/kirby/src/Cms/Responder.php',
|
||||
'Kirby\\Cms\\Response' => $baseDir . '/kirby/src/Cms/Response.php',
|
||||
'Kirby\\Cms\\Role' => $baseDir . '/kirby/src/Cms/Role.php',
|
||||
'Kirby\\Cms\\Roles' => $baseDir . '/kirby/src/Cms/Roles.php',
|
||||
'Kirby\\Cms\\S' => $baseDir . '/kirby/src/Cms/S.php',
|
||||
'Kirby\\Cms\\Search' => $baseDir . '/kirby/src/Cms/Search.php',
|
||||
'Kirby\\Cms\\Section' => $baseDir . '/kirby/src/Cms/Section.php',
|
||||
'Kirby\\Cms\\Site' => $baseDir . '/kirby/src/Cms/Site.php',
|
||||
'Kirby\\Cms\\SiteActions' => $baseDir . '/kirby/src/Cms/SiteActions.php',
|
||||
'Kirby\\Cms\\SiteBlueprint' => $baseDir . '/kirby/src/Cms/SiteBlueprint.php',
|
||||
'Kirby\\Cms\\SitePermissions' => $baseDir . '/kirby/src/Cms/SitePermissions.php',
|
||||
'Kirby\\Cms\\SiteRules' => $baseDir . '/kirby/src/Cms/SiteRules.php',
|
||||
'Kirby\\Cms\\Structure' => $baseDir . '/kirby/src/Cms/Structure.php',
|
||||
'Kirby\\Cms\\StructureObject' => $baseDir . '/kirby/src/Cms/StructureObject.php',
|
||||
'Kirby\\Cms\\System' => $baseDir . '/kirby/src/Cms/System.php',
|
||||
'Kirby\\Cms\\Template' => $baseDir . '/kirby/src/Cms/Template.php',
|
||||
'Kirby\\Cms\\Translation' => $baseDir . '/kirby/src/Cms/Translation.php',
|
||||
'Kirby\\Cms\\Translations' => $baseDir . '/kirby/src/Cms/Translations.php',
|
||||
'Kirby\\Cms\\Url' => $baseDir . '/kirby/src/Cms/Url.php',
|
||||
'Kirby\\Cms\\User' => $baseDir . '/kirby/src/Cms/User.php',
|
||||
'Kirby\\Cms\\UserActions' => $baseDir . '/kirby/src/Cms/UserActions.php',
|
||||
'Kirby\\Cms\\UserBlueprint' => $baseDir . '/kirby/src/Cms/UserBlueprint.php',
|
||||
'Kirby\\Cms\\UserPermissions' => $baseDir . '/kirby/src/Cms/UserPermissions.php',
|
||||
'Kirby\\Cms\\UserPicker' => $baseDir . '/kirby/src/Cms/UserPicker.php',
|
||||
'Kirby\\Cms\\UserRules' => $baseDir . '/kirby/src/Cms/UserRules.php',
|
||||
'Kirby\\Cms\\Users' => $baseDir . '/kirby/src/Cms/Users.php',
|
||||
'Kirby\\Cms\\Visitor' => $baseDir . '/kirby/src/Cms/Visitor.php',
|
||||
'Kirby\\ComposerInstaller\\CmsInstaller' => $vendorDir . '/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php',
|
||||
'Kirby\\ComposerInstaller\\Installer' => $vendorDir . '/getkirby/composer-installer/src/ComposerInstaller/Installer.php',
|
||||
'Kirby\\ComposerInstaller\\Plugin' => $vendorDir . '/getkirby/composer-installer/src/ComposerInstaller/Plugin.php',
|
||||
'Kirby\\ComposerInstaller\\PluginInstaller' => $vendorDir . '/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php',
|
||||
'Kirby\\Data\\Data' => $baseDir . '/kirby/src/Data/Data.php',
|
||||
'Kirby\\Data\\Handler' => $baseDir . '/kirby/src/Data/Handler.php',
|
||||
'Kirby\\Data\\Json' => $baseDir . '/kirby/src/Data/Json.php',
|
||||
'Kirby\\Data\\PHP' => $baseDir . '/kirby/src/Data/PHP.php',
|
||||
'Kirby\\Data\\Txt' => $baseDir . '/kirby/src/Data/Txt.php',
|
||||
'Kirby\\Data\\Xml' => $baseDir . '/kirby/src/Data/Xml.php',
|
||||
'Kirby\\Data\\Yaml' => $baseDir . '/kirby/src/Data/Yaml.php',
|
||||
'Kirby\\Database\\Database' => $baseDir . '/kirby/src/Database/Database.php',
|
||||
'Kirby\\Database\\Db' => $baseDir . '/kirby/src/Database/Db.php',
|
||||
'Kirby\\Database\\Query' => $baseDir . '/kirby/src/Database/Query.php',
|
||||
'Kirby\\Database\\Sql' => $baseDir . '/kirby/src/Database/Sql.php',
|
||||
'Kirby\\Database\\Sql\\Mysql' => $baseDir . '/kirby/src/Database/Sql/Mysql.php',
|
||||
'Kirby\\Database\\Sql\\Sqlite' => $baseDir . '/kirby/src/Database/Sql/Sqlite.php',
|
||||
'Kirby\\Email\\Body' => $baseDir . '/kirby/src/Email/Body.php',
|
||||
'Kirby\\Email\\Email' => $baseDir . '/kirby/src/Email/Email.php',
|
||||
'Kirby\\Email\\PHPMailer' => $baseDir . '/kirby/src/Email/PHPMailer.php',
|
||||
'Kirby\\Exception\\BadMethodCallException' => $baseDir . '/kirby/src/Exception/BadMethodCallException.php',
|
||||
'Kirby\\Exception\\DuplicateException' => $baseDir . '/kirby/src/Exception/DuplicateException.php',
|
||||
'Kirby\\Exception\\ErrorPageException' => $baseDir . '/kirby/src/Exception/ErrorPageException.php',
|
||||
'Kirby\\Exception\\Exception' => $baseDir . '/kirby/src/Exception/Exception.php',
|
||||
'Kirby\\Exception\\InvalidArgumentException' => $baseDir . '/kirby/src/Exception/InvalidArgumentException.php',
|
||||
'Kirby\\Exception\\LogicException' => $baseDir . '/kirby/src/Exception/LogicException.php',
|
||||
'Kirby\\Exception\\NotFoundException' => $baseDir . '/kirby/src/Exception/NotFoundException.php',
|
||||
'Kirby\\Exception\\PermissionException' => $baseDir . '/kirby/src/Exception/PermissionException.php',
|
||||
'Kirby\\Filesystem\\Asset' => $baseDir . '/kirby/src/Filesystem/Asset.php',
|
||||
'Kirby\\Filesystem\\Dir' => $baseDir . '/kirby/src/Filesystem/Dir.php',
|
||||
'Kirby\\Filesystem\\F' => $baseDir . '/kirby/src/Filesystem/F.php',
|
||||
'Kirby\\Filesystem\\File' => $baseDir . '/kirby/src/Filesystem/File.php',
|
||||
'Kirby\\Filesystem\\Filename' => $baseDir . '/kirby/src/Filesystem/Filename.php',
|
||||
'Kirby\\Filesystem\\IsFile' => $baseDir . '/kirby/src/Filesystem/IsFile.php',
|
||||
'Kirby\\Filesystem\\Mime' => $baseDir . '/kirby/src/Filesystem/Mime.php',
|
||||
'Kirby\\Form\\Field' => $baseDir . '/kirby/src/Form/Field.php',
|
||||
'Kirby\\Form\\FieldClass' => $baseDir . '/kirby/src/Form/FieldClass.php',
|
||||
'Kirby\\Form\\Field\\BlocksField' => $baseDir . '/kirby/src/Form/Field/BlocksField.php',
|
||||
'Kirby\\Form\\Field\\LayoutField' => $baseDir . '/kirby/src/Form/Field/LayoutField.php',
|
||||
'Kirby\\Form\\Fields' => $baseDir . '/kirby/src/Form/Fields.php',
|
||||
'Kirby\\Form\\Form' => $baseDir . '/kirby/src/Form/Form.php',
|
||||
'Kirby\\Form\\Mixin\\EmptyState' => $baseDir . '/kirby/src/Form/Mixin/EmptyState.php',
|
||||
'Kirby\\Form\\Mixin\\Max' => $baseDir . '/kirby/src/Form/Mixin/Max.php',
|
||||
'Kirby\\Form\\Mixin\\Min' => $baseDir . '/kirby/src/Form/Mixin/Min.php',
|
||||
'Kirby\\Form\\Options' => $baseDir . '/kirby/src/Form/Options.php',
|
||||
'Kirby\\Form\\OptionsApi' => $baseDir . '/kirby/src/Form/OptionsApi.php',
|
||||
'Kirby\\Form\\OptionsQuery' => $baseDir . '/kirby/src/Form/OptionsQuery.php',
|
||||
'Kirby\\Form\\Validations' => $baseDir . '/kirby/src/Form/Validations.php',
|
||||
'Kirby\\Http\\Cookie' => $baseDir . '/kirby/src/Http/Cookie.php',
|
||||
'Kirby\\Http\\Environment' => $baseDir . '/kirby/src/Http/Environment.php',
|
||||
'Kirby\\Http\\Exceptions\\NextRouteException' => $baseDir . '/kirby/src/Http/Exceptions/NextRouteException.php',
|
||||
'Kirby\\Http\\Header' => $baseDir . '/kirby/src/Http/Header.php',
|
||||
'Kirby\\Http\\Idn' => $baseDir . '/kirby/src/Http/Idn.php',
|
||||
'Kirby\\Http\\Params' => $baseDir . '/kirby/src/Http/Params.php',
|
||||
'Kirby\\Http\\Path' => $baseDir . '/kirby/src/Http/Path.php',
|
||||
'Kirby\\Http\\Query' => $baseDir . '/kirby/src/Http/Query.php',
|
||||
'Kirby\\Http\\Remote' => $baseDir . '/kirby/src/Http/Remote.php',
|
||||
'Kirby\\Http\\Request' => $baseDir . '/kirby/src/Http/Request.php',
|
||||
'Kirby\\Http\\Request\\Auth' => $baseDir . '/kirby/src/Http/Request/Auth.php',
|
||||
'Kirby\\Http\\Request\\Auth\\BasicAuth' => $baseDir . '/kirby/src/Http/Request/Auth/BasicAuth.php',
|
||||
'Kirby\\Http\\Request\\Auth\\BearerAuth' => $baseDir . '/kirby/src/Http/Request/Auth/BearerAuth.php',
|
||||
'Kirby\\Http\\Request\\Auth\\SessionAuth' => $baseDir . '/kirby/src/Http/Request/Auth/SessionAuth.php',
|
||||
'Kirby\\Http\\Request\\Body' => $baseDir . '/kirby/src/Http/Request/Body.php',
|
||||
'Kirby\\Http\\Request\\Data' => $baseDir . '/kirby/src/Http/Request/Data.php',
|
||||
'Kirby\\Http\\Request\\Files' => $baseDir . '/kirby/src/Http/Request/Files.php',
|
||||
'Kirby\\Http\\Request\\Query' => $baseDir . '/kirby/src/Http/Request/Query.php',
|
||||
'Kirby\\Http\\Response' => $baseDir . '/kirby/src/Http/Response.php',
|
||||
'Kirby\\Http\\Route' => $baseDir . '/kirby/src/Http/Route.php',
|
||||
'Kirby\\Http\\Router' => $baseDir . '/kirby/src/Http/Router.php',
|
||||
'Kirby\\Http\\Server' => $baseDir . '/kirby/src/Http/Server.php',
|
||||
'Kirby\\Http\\Uri' => $baseDir . '/kirby/src/Http/Uri.php',
|
||||
'Kirby\\Http\\Url' => $baseDir . '/kirby/src/Http/Url.php',
|
||||
'Kirby\\Http\\Visitor' => $baseDir . '/kirby/src/Http/Visitor.php',
|
||||
'Kirby\\Image\\Camera' => $baseDir . '/kirby/src/Image/Camera.php',
|
||||
'Kirby\\Image\\Darkroom' => $baseDir . '/kirby/src/Image/Darkroom.php',
|
||||
'Kirby\\Image\\Darkroom\\GdLib' => $baseDir . '/kirby/src/Image/Darkroom/GdLib.php',
|
||||
'Kirby\\Image\\Darkroom\\ImageMagick' => $baseDir . '/kirby/src/Image/Darkroom/ImageMagick.php',
|
||||
'Kirby\\Image\\Dimensions' => $baseDir . '/kirby/src/Image/Dimensions.php',
|
||||
'Kirby\\Image\\Exif' => $baseDir . '/kirby/src/Image/Exif.php',
|
||||
'Kirby\\Image\\Image' => $baseDir . '/kirby/src/Image/Image.php',
|
||||
'Kirby\\Image\\Location' => $baseDir . '/kirby/src/Image/Location.php',
|
||||
'Kirby\\Panel\\Dialog' => $baseDir . '/kirby/src/Panel/Dialog.php',
|
||||
'Kirby\\Panel\\Document' => $baseDir . '/kirby/src/Panel/Document.php',
|
||||
'Kirby\\Panel\\Dropdown' => $baseDir . '/kirby/src/Panel/Dropdown.php',
|
||||
'Kirby\\Panel\\Field' => $baseDir . '/kirby/src/Panel/Field.php',
|
||||
'Kirby\\Panel\\File' => $baseDir . '/kirby/src/Panel/File.php',
|
||||
'Kirby\\Panel\\Home' => $baseDir . '/kirby/src/Panel/Home.php',
|
||||
'Kirby\\Panel\\Json' => $baseDir . '/kirby/src/Panel/Json.php',
|
||||
'Kirby\\Panel\\Model' => $baseDir . '/kirby/src/Panel/Model.php',
|
||||
'Kirby\\Panel\\Page' => $baseDir . '/kirby/src/Panel/Page.php',
|
||||
'Kirby\\Panel\\Panel' => $baseDir . '/kirby/src/Panel/Panel.php',
|
||||
'Kirby\\Panel\\Plugins' => $baseDir . '/kirby/src/Panel/Plugins.php',
|
||||
'Kirby\\Panel\\Redirect' => $baseDir . '/kirby/src/Panel/Redirect.php',
|
||||
'Kirby\\Panel\\Search' => $baseDir . '/kirby/src/Panel/Search.php',
|
||||
'Kirby\\Panel\\Site' => $baseDir . '/kirby/src/Panel/Site.php',
|
||||
'Kirby\\Panel\\User' => $baseDir . '/kirby/src/Panel/User.php',
|
||||
'Kirby\\Panel\\View' => $baseDir . '/kirby/src/Panel/View.php',
|
||||
'Kirby\\Parsley\\Element' => $baseDir . '/kirby/src/Parsley/Element.php',
|
||||
'Kirby\\Parsley\\Inline' => $baseDir . '/kirby/src/Parsley/Inline.php',
|
||||
'Kirby\\Parsley\\Parsley' => $baseDir . '/kirby/src/Parsley/Parsley.php',
|
||||
'Kirby\\Parsley\\Schema' => $baseDir . '/kirby/src/Parsley/Schema.php',
|
||||
'Kirby\\Parsley\\Schema\\Blocks' => $baseDir . '/kirby/src/Parsley/Schema/Blocks.php',
|
||||
'Kirby\\Parsley\\Schema\\Plain' => $baseDir . '/kirby/src/Parsley/Schema/Plain.php',
|
||||
'Kirby\\Sane\\DomHandler' => $baseDir . '/kirby/src/Sane/DomHandler.php',
|
||||
'Kirby\\Sane\\Handler' => $baseDir . '/kirby/src/Sane/Handler.php',
|
||||
'Kirby\\Sane\\Html' => $baseDir . '/kirby/src/Sane/Html.php',
|
||||
'Kirby\\Sane\\Sane' => $baseDir . '/kirby/src/Sane/Sane.php',
|
||||
'Kirby\\Sane\\Svg' => $baseDir . '/kirby/src/Sane/Svg.php',
|
||||
'Kirby\\Sane\\Svgz' => $baseDir . '/kirby/src/Sane/Svgz.php',
|
||||
'Kirby\\Sane\\Xml' => $baseDir . '/kirby/src/Sane/Xml.php',
|
||||
'Kirby\\Session\\AutoSession' => $baseDir . '/kirby/src/Session/AutoSession.php',
|
||||
'Kirby\\Session\\FileSessionStore' => $baseDir . '/kirby/src/Session/FileSessionStore.php',
|
||||
'Kirby\\Session\\Session' => $baseDir . '/kirby/src/Session/Session.php',
|
||||
'Kirby\\Session\\SessionData' => $baseDir . '/kirby/src/Session/SessionData.php',
|
||||
'Kirby\\Session\\SessionStore' => $baseDir . '/kirby/src/Session/SessionStore.php',
|
||||
'Kirby\\Session\\Sessions' => $baseDir . '/kirby/src/Session/Sessions.php',
|
||||
'Kirby\\Text\\KirbyTag' => $baseDir . '/kirby/src/Text/KirbyTag.php',
|
||||
'Kirby\\Text\\KirbyTags' => $baseDir . '/kirby/src/Text/KirbyTags.php',
|
||||
'Kirby\\Text\\Markdown' => $baseDir . '/kirby/src/Text/Markdown.php',
|
||||
'Kirby\\Text\\SmartyPants' => $baseDir . '/kirby/src/Text/SmartyPants.php',
|
||||
'Kirby\\Toolkit\\A' => $baseDir . '/kirby/src/Toolkit/A.php',
|
||||
'Kirby\\Toolkit\\Collection' => $baseDir . '/kirby/src/Toolkit/Collection.php',
|
||||
'Kirby\\Toolkit\\Component' => $baseDir . '/kirby/src/Toolkit/Component.php',
|
||||
'Kirby\\Toolkit\\Config' => $baseDir . '/kirby/src/Toolkit/Config.php',
|
||||
'Kirby\\Toolkit\\Controller' => $baseDir . '/kirby/src/Toolkit/Controller.php',
|
||||
'Kirby\\Toolkit\\Date' => $baseDir . '/kirby/src/Toolkit/Date.php',
|
||||
'Kirby\\Toolkit\\Dom' => $baseDir . '/kirby/src/Toolkit/Dom.php',
|
||||
'Kirby\\Toolkit\\Escape' => $baseDir . '/kirby/src/Toolkit/Escape.php',
|
||||
'Kirby\\Toolkit\\Facade' => $baseDir . '/kirby/src/Toolkit/Facade.php',
|
||||
'Kirby\\Toolkit\\Html' => $baseDir . '/kirby/src/Toolkit/Html.php',
|
||||
'Kirby\\Toolkit\\I18n' => $baseDir . '/kirby/src/Toolkit/I18n.php',
|
||||
'Kirby\\Toolkit\\Iterator' => $baseDir . '/kirby/src/Toolkit/Iterator.php',
|
||||
'Kirby\\Toolkit\\Locale' => $baseDir . '/kirby/src/Toolkit/Locale.php',
|
||||
'Kirby\\Toolkit\\Obj' => $baseDir . '/kirby/src/Toolkit/Obj.php',
|
||||
'Kirby\\Toolkit\\Pagination' => $baseDir . '/kirby/src/Toolkit/Pagination.php',
|
||||
'Kirby\\Toolkit\\Properties' => $baseDir . '/kirby/src/Toolkit/Properties.php',
|
||||
'Kirby\\Toolkit\\Query' => $baseDir . '/kirby/src/Toolkit/Query.php',
|
||||
'Kirby\\Toolkit\\Silo' => $baseDir . '/kirby/src/Toolkit/Silo.php',
|
||||
'Kirby\\Toolkit\\Str' => $baseDir . '/kirby/src/Toolkit/Str.php',
|
||||
'Kirby\\Toolkit\\Tpl' => $baseDir . '/kirby/src/Toolkit/Tpl.php',
|
||||
'Kirby\\Toolkit\\V' => $baseDir . '/kirby/src/Toolkit/V.php',
|
||||
'Kirby\\Toolkit\\View' => $baseDir . '/kirby/src/Toolkit/View.php',
|
||||
'Kirby\\Toolkit\\Xml' => $baseDir . '/kirby/src/Toolkit/Xml.php',
|
||||
'Laminas\\Escaper\\Escaper' => $vendorDir . '/laminas/laminas-escaper/src/Escaper.php',
|
||||
'Laminas\\Escaper\\Exception\\ExceptionInterface' => $vendorDir . '/laminas/laminas-escaper/src/Exception/ExceptionInterface.php',
|
||||
'Laminas\\Escaper\\Exception\\InvalidArgumentException' => $vendorDir . '/laminas/laminas-escaper/src/Exception/InvalidArgumentException.php',
|
||||
'Laminas\\Escaper\\Exception\\RuntimeException' => $vendorDir . '/laminas/laminas-escaper/src/Exception/RuntimeException.php',
|
||||
'League\\ColorExtractor\\Color' => $vendorDir . '/league/color-extractor/src/League/ColorExtractor/Color.php',
|
||||
'League\\ColorExtractor\\ColorExtractor' => $vendorDir . '/league/color-extractor/src/League/ColorExtractor/ColorExtractor.php',
|
||||
'League\\ColorExtractor\\Palette' => $vendorDir . '/league/color-extractor/src/League/ColorExtractor/Palette.php',
|
||||
'ML\\IRI\\IRI' => $vendorDir . '/ml/iri/ML/IRI/IRI.php',
|
||||
'ML\\IRI\\Test\\IriTest' => $vendorDir . '/ml/iri/ML/IRI/Test/IriTest.php',
|
||||
'ML\\JsonLD\\DefaultDocumentFactory' => $vendorDir . '/ml/json-ld/DefaultDocumentFactory.php',
|
||||
'ML\\JsonLD\\Document' => $vendorDir . '/ml/json-ld/Document.php',
|
||||
'ML\\JsonLD\\DocumentFactoryInterface' => $vendorDir . '/ml/json-ld/DocumentFactoryInterface.php',
|
||||
'ML\\JsonLD\\DocumentInterface' => $vendorDir . '/ml/json-ld/DocumentInterface.php',
|
||||
'ML\\JsonLD\\DocumentLoaderInterface' => $vendorDir . '/ml/json-ld/DocumentLoaderInterface.php',
|
||||
'ML\\JsonLD\\Exception\\InvalidQuadException' => $vendorDir . '/ml/json-ld/Exception/InvalidQuadException.php',
|
||||
'ML\\JsonLD\\Exception\\JsonLdException' => $vendorDir . '/ml/json-ld/Exception/JsonLdException.php',
|
||||
'ML\\JsonLD\\FileGetContentsLoader' => $vendorDir . '/ml/json-ld/FileGetContentsLoader.php',
|
||||
'ML\\JsonLD\\Graph' => $vendorDir . '/ml/json-ld/Graph.php',
|
||||
'ML\\JsonLD\\GraphInterface' => $vendorDir . '/ml/json-ld/GraphInterface.php',
|
||||
'ML\\JsonLD\\JsonLD' => $vendorDir . '/ml/json-ld/JsonLD.php',
|
||||
'ML\\JsonLD\\JsonLdSerializable' => $vendorDir . '/ml/json-ld/JsonLdSerializable.php',
|
||||
'ML\\JsonLD\\LanguageTaggedString' => $vendorDir . '/ml/json-ld/LanguageTaggedString.php',
|
||||
'ML\\JsonLD\\NQuads' => $vendorDir . '/ml/json-ld/NQuads.php',
|
||||
'ML\\JsonLD\\Node' => $vendorDir . '/ml/json-ld/Node.php',
|
||||
'ML\\JsonLD\\NodeInterface' => $vendorDir . '/ml/json-ld/NodeInterface.php',
|
||||
'ML\\JsonLD\\Processor' => $vendorDir . '/ml/json-ld/Processor.php',
|
||||
'ML\\JsonLD\\Quad' => $vendorDir . '/ml/json-ld/Quad.php',
|
||||
'ML\\JsonLD\\QuadParserInterface' => $vendorDir . '/ml/json-ld/QuadParserInterface.php',
|
||||
'ML\\JsonLD\\QuadSerializerInterface' => $vendorDir . '/ml/json-ld/QuadSerializerInterface.php',
|
||||
'ML\\JsonLD\\RdfConstants' => $vendorDir . '/ml/json-ld/RdfConstants.php',
|
||||
'ML\\JsonLD\\RemoteDocument' => $vendorDir . '/ml/json-ld/RemoteDocument.php',
|
||||
'ML\\JsonLD\\Test\\DocumentTest' => $vendorDir . '/ml/json-ld/Test/DocumentTest.php',
|
||||
'ML\\JsonLD\\Test\\EarlReportGenerator' => $vendorDir . '/ml/json-ld/Test/EarlReportGenerator.php',
|
||||
'ML\\JsonLD\\Test\\FileGetContentsLoaderTest' => $vendorDir . '/ml/json-ld/Test/FileGetContentsLoaderTest.php',
|
||||
'ML\\JsonLD\\Test\\GraphTest' => $vendorDir . '/ml/json-ld/Test/GraphTest.php',
|
||||
'ML\\JsonLD\\Test\\JsonLDApiTest' => $vendorDir . '/ml/json-ld/Test/JsonLDApiTest.php',
|
||||
'ML\\JsonLD\\Test\\JsonTestCase' => $vendorDir . '/ml/json-ld/Test/JsonTestCase.php',
|
||||
'ML\\JsonLD\\Test\\NQuadsTest' => $vendorDir . '/ml/json-ld/Test/NQuadsTest.php',
|
||||
'ML\\JsonLD\\Test\\TestManifestIterator' => $vendorDir . '/ml/json-ld/Test/TestManifestIterator.php',
|
||||
'ML\\JsonLD\\Test\\ValueTest' => $vendorDir . '/ml/json-ld/Test/ValueTest.php',
|
||||
'ML\\JsonLD\\Test\\W3CTestSuiteTest' => $vendorDir . '/ml/json-ld/Test/W3CTestSuiteTest.php',
|
||||
'ML\\JsonLD\\TypedValue' => $vendorDir . '/ml/json-ld/TypedValue.php',
|
||||
'ML\\JsonLD\\Value' => $vendorDir . '/ml/json-ld/Value.php',
|
||||
'Michelf\\SmartyPants' => $vendorDir . '/michelf/php-smartypants/Michelf/SmartyPants.php',
|
||||
'Michelf\\SmartyPantsTypographer' => $vendorDir . '/michelf/php-smartypants/Michelf/SmartyPantsTypographer.php',
|
||||
'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
|
||||
'PHPMailer\\PHPMailer\\Exception' => $vendorDir . '/phpmailer/phpmailer/src/Exception.php',
|
||||
'PHPMailer\\PHPMailer\\OAuth' => $vendorDir . '/phpmailer/phpmailer/src/OAuth.php',
|
||||
'PHPMailer\\PHPMailer\\OAuthTokenProvider' => $vendorDir . '/phpmailer/phpmailer/src/OAuthTokenProvider.php',
|
||||
'PHPMailer\\PHPMailer\\PHPMailer' => $vendorDir . '/phpmailer/phpmailer/src/PHPMailer.php',
|
||||
'PHPMailer\\PHPMailer\\POP3' => $vendorDir . '/phpmailer/phpmailer/src/POP3.php',
|
||||
'PHPMailer\\PHPMailer\\SMTP' => $vendorDir . '/phpmailer/phpmailer/src/SMTP.php',
|
||||
'Parsedown' => $baseDir . '/kirby/dependencies/parsedown/Parsedown.php',
|
||||
'ParsedownExtra' => $baseDir . '/kirby/dependencies/parsedown-extra/ParsedownExtra.php',
|
||||
'Psr\\Http\\Client\\ClientExceptionInterface' => $vendorDir . '/psr/http-client/src/ClientExceptionInterface.php',
|
||||
'Psr\\Http\\Client\\ClientInterface' => $vendorDir . '/psr/http-client/src/ClientInterface.php',
|
||||
'Psr\\Http\\Client\\NetworkExceptionInterface' => $vendorDir . '/psr/http-client/src/NetworkExceptionInterface.php',
|
||||
'Psr\\Http\\Client\\RequestExceptionInterface' => $vendorDir . '/psr/http-client/src/RequestExceptionInterface.php',
|
||||
'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php',
|
||||
'Psr\\Http\\Message\\RequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/RequestFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php',
|
||||
'Psr\\Http\\Message\\ResponseFactoryInterface' => $vendorDir . '/psr/http-factory/src/ResponseFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php',
|
||||
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php',
|
||||
'Psr\\Http\\Message\\StreamFactoryInterface' => $vendorDir . '/psr/http-factory/src/StreamFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php',
|
||||
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => $vendorDir . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php',
|
||||
'Psr\\Http\\Message\\UriFactoryInterface' => $vendorDir . '/psr/http-factory/src/UriFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php',
|
||||
'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
|
||||
'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
|
||||
'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
|
||||
'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php',
|
||||
'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php',
|
||||
'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
|
||||
'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
|
||||
'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
|
||||
'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
|
||||
'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
|
||||
'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
|
||||
'Spyc' => $baseDir . '/kirby/dependencies/spyc/Spyc.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Info' => $vendorDir . '/symfony/polyfill-intl-idn/Info.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
|
||||
'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
|
||||
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
|
||||
'Whoops\\Exception\\ErrorException' => $vendorDir . '/filp/whoops/src/Whoops/Exception/ErrorException.php',
|
||||
'Whoops\\Exception\\Formatter' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Formatter.php',
|
||||
'Whoops\\Exception\\Frame' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Frame.php',
|
||||
'Whoops\\Exception\\FrameCollection' => $vendorDir . '/filp/whoops/src/Whoops/Exception/FrameCollection.php',
|
||||
'Whoops\\Exception\\Inspector' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Inspector.php',
|
||||
'Whoops\\Handler\\CallbackHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/CallbackHandler.php',
|
||||
'Whoops\\Handler\\Handler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/Handler.php',
|
||||
'Whoops\\Handler\\HandlerInterface' => $vendorDir . '/filp/whoops/src/Whoops/Handler/HandlerInterface.php',
|
||||
'Whoops\\Handler\\JsonResponseHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php',
|
||||
'Whoops\\Handler\\PlainTextHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/PlainTextHandler.php',
|
||||
'Whoops\\Handler\\PrettyPageHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php',
|
||||
'Whoops\\Handler\\XmlResponseHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php',
|
||||
'Whoops\\Run' => $vendorDir . '/filp/whoops/src/Whoops/Run.php',
|
||||
'Whoops\\RunInterface' => $vendorDir . '/filp/whoops/src/Whoops/RunInterface.php',
|
||||
'Whoops\\Util\\HtmlDumperOutput' => $vendorDir . '/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php',
|
||||
'Whoops\\Util\\Misc' => $vendorDir . '/filp/whoops/src/Whoops/Util/Misc.php',
|
||||
'Whoops\\Util\\SystemFacade' => $vendorDir . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
|
||||
'Whoops\\Util\\TemplateHelper' => $vendorDir . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
|
||||
'claviska\\SimpleImage' => $vendorDir . '/claviska/simpleimage/src/claviska/SimpleImage.php',
|
||||
);
|
||||
16
vendor/composer/autoload_files.php
vendored
Normal file
16
vendor/composer/autoload_files.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
|
||||
'09fc349b549513bf7f4291502426f919' => $vendorDir . '/embed/embed/src/functions.php',
|
||||
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'f864ae44e8154e5ff6f4eec32f46d37f' => $baseDir . '/kirby/config/setup.php',
|
||||
'87988fc7b1c1f093da22a1a3de972f3a' => $baseDir . '/kirby/config/helpers.php',
|
||||
);
|
||||
12
vendor/composer/autoload_namespaces.php
vendored
Normal file
12
vendor/composer/autoload_namespaces.php
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'claviska' => array($vendorDir . '/claviska/simpleimage/src'),
|
||||
'Michelf' => array($vendorDir . '/michelf/php-smartypants'),
|
||||
'ML\\IRI' => array($vendorDir . '/ml/iri'),
|
||||
);
|
||||
25
vendor/composer/autoload_psr4.php
vendored
Normal file
25
vendor/composer/autoload_psr4.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
|
||||
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
||||
'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
|
||||
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
|
||||
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
|
||||
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
|
||||
'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
|
||||
'ML\\JsonLD\\' => array($vendorDir . '/ml/json-ld'),
|
||||
'Laminas\\Escaper\\' => array($vendorDir . '/laminas/laminas-escaper/src'),
|
||||
'Kirby\\' => array($baseDir . '/kirby/src', $vendorDir . '/getkirby/composer-installer/src'),
|
||||
'HtmlParser\\' => array($vendorDir . '/oscarotero/html-parser/src'),
|
||||
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
|
||||
'Embed\\' => array($vendorDir . '/embed/embed/src'),
|
||||
'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'),
|
||||
'' => array($vendorDir . '/league/color-extractor/src'),
|
||||
);
|
||||
50
vendor/composer/autoload_real.php
vendored
Normal file
50
vendor/composer/autoload_real.php
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit34ad0fcfd7efff0ce7004033b941cfcf
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
require __DIR__ . '/platform_check.php';
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit34ad0fcfd7efff0ce7004033b941cfcf', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit34ad0fcfd7efff0ce7004033b941cfcf', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::getInitializer($loader));
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
$filesToLoad = \Composer\Autoload\ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::$files;
|
||||
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
||||
require $file;
|
||||
}
|
||||
}, null, null);
|
||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||
$requireFile($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
669
vendor/composer/autoload_static.php
vendored
Normal file
669
vendor/composer/autoload_static.php
vendored
Normal file
@@ -0,0 +1,669 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf
|
||||
{
|
||||
public static $files = array (
|
||||
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
|
||||
'09fc349b549513bf7f4291502426f919' => __DIR__ . '/..' . '/embed/embed/src/functions.php',
|
||||
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'f864ae44e8154e5ff6f4eec32f46d37f' => __DIR__ . '/../..' . '/kirby/config/setup.php',
|
||||
'87988fc7b1c1f093da22a1a3de972f3a' => __DIR__ . '/../..' . '/kirby/config/helpers.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'W' =>
|
||||
array (
|
||||
'Whoops\\' => 7,
|
||||
),
|
||||
'S' =>
|
||||
array (
|
||||
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
||||
'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
|
||||
),
|
||||
'P' =>
|
||||
array (
|
||||
'Psr\\Log\\' => 8,
|
||||
'Psr\\Http\\Message\\' => 17,
|
||||
'Psr\\Http\\Client\\' => 16,
|
||||
'PHPMailer\\PHPMailer\\' => 20,
|
||||
),
|
||||
'M' =>
|
||||
array (
|
||||
'ML\\JsonLD\\' => 10,
|
||||
),
|
||||
'L' =>
|
||||
array (
|
||||
'Laminas\\Escaper\\' => 16,
|
||||
),
|
||||
'K' =>
|
||||
array (
|
||||
'Kirby\\' => 6,
|
||||
),
|
||||
'H' =>
|
||||
array (
|
||||
'HtmlParser\\' => 11,
|
||||
),
|
||||
'G' =>
|
||||
array (
|
||||
'GuzzleHttp\\Psr7\\' => 16,
|
||||
),
|
||||
'E' =>
|
||||
array (
|
||||
'Embed\\' => 6,
|
||||
),
|
||||
'C' =>
|
||||
array (
|
||||
'Composer\\CaBundle\\' => 18,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'Whoops\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops',
|
||||
),
|
||||
'Symfony\\Polyfill\\Mbstring\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
||||
),
|
||||
'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
|
||||
),
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
|
||||
),
|
||||
'Psr\\Log\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
|
||||
),
|
||||
'Psr\\Http\\Message\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/http-factory/src',
|
||||
1 => __DIR__ . '/..' . '/psr/http-message/src',
|
||||
),
|
||||
'Psr\\Http\\Client\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/http-client/src',
|
||||
),
|
||||
'PHPMailer\\PHPMailer\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpmailer/phpmailer/src',
|
||||
),
|
||||
'ML\\JsonLD\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ml/json-ld',
|
||||
),
|
||||
'Laminas\\Escaper\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/laminas/laminas-escaper/src',
|
||||
),
|
||||
'Kirby\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/kirby/src',
|
||||
1 => __DIR__ . '/..' . '/getkirby/composer-installer/src',
|
||||
),
|
||||
'HtmlParser\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/oscarotero/html-parser/src',
|
||||
),
|
||||
'GuzzleHttp\\Psr7\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
|
||||
),
|
||||
'Embed\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/embed/embed/src',
|
||||
),
|
||||
'Composer\\CaBundle\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/composer/ca-bundle/src',
|
||||
),
|
||||
);
|
||||
|
||||
public static $fallbackDirsPsr4 = array (
|
||||
0 => __DIR__ . '/..' . '/league/color-extractor/src',
|
||||
);
|
||||
|
||||
public static $prefixesPsr0 = array (
|
||||
'c' =>
|
||||
array (
|
||||
'claviska' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/claviska/simpleimage/src',
|
||||
),
|
||||
),
|
||||
'M' =>
|
||||
array (
|
||||
'Michelf' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/michelf/php-smartypants',
|
||||
),
|
||||
'ML\\IRI' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ml/iri',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php',
|
||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||
'Embed\\Adapters\\Archive\\Api' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Api.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\AuthorName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\Description' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Detectors/Description.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\ProviderName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\PublishedTime' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\Archive\\Detectors\\Title' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Archive\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Archive/Extractor.php',
|
||||
'Embed\\Adapters\\Bandcamp\\Detectors\\ProviderName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Bandcamp/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\Bandcamp\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Bandcamp/Extractor.php',
|
||||
'Embed\\Adapters\\CadenaSer\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/CadenaSer/Detectors/Code.php',
|
||||
'Embed\\Adapters\\CadenaSer\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/CadenaSer/Extractor.php',
|
||||
'Embed\\Adapters\\Facebook\\Detectors\\Title' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Facebook/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Facebook\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Facebook/Extractor.php',
|
||||
'Embed\\Adapters\\Facebook\\OEmbed' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Facebook/OEmbed.php',
|
||||
'Embed\\Adapters\\Flickr\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Flickr/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Flickr\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Flickr/Extractor.php',
|
||||
'Embed\\Adapters\\Gist\\Api' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Gist/Api.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\AuthorName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Gist/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\AuthorUrl' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Gist/Detectors/AuthorUrl.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Gist/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Gist\\Detectors\\PublishedTime' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Gist/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\Gist\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Gist/Extractor.php',
|
||||
'Embed\\Adapters\\Github\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Github/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Github\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Github/Extractor.php',
|
||||
'Embed\\Adapters\\Ideone\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Ideone/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Ideone\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Ideone/Extractor.php',
|
||||
'Embed\\Adapters\\ImageShack\\Api' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Api.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\AuthorName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\AuthorUrl' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/AuthorUrl.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\Description' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/Description.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\Image' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/Image.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\ProviderName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\PublishedTime' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\ImageShack\\Detectors\\Title' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Detectors/Title.php',
|
||||
'Embed\\Adapters\\ImageShack\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/ImageShack/Extractor.php',
|
||||
'Embed\\Adapters\\Instagram\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Instagram/Extractor.php',
|
||||
'Embed\\Adapters\\Instagram\\OEmbed' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Instagram/OEmbed.php',
|
||||
'Embed\\Adapters\\Pinterest\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Pinterest/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Pinterest\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Pinterest/Extractor.php',
|
||||
'Embed\\Adapters\\Sassmeister\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Sassmeister/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Sassmeister\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Sassmeister/Extractor.php',
|
||||
'Embed\\Adapters\\Slides\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Slides/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Slides\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Slides/Extractor.php',
|
||||
'Embed\\Adapters\\Snipplr\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Snipplr/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Snipplr\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Snipplr/Extractor.php',
|
||||
'Embed\\Adapters\\Twitch\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitch/Detectors/Code.php',
|
||||
'Embed\\Adapters\\Twitch\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitch/Extractor.php',
|
||||
'Embed\\Adapters\\Twitter\\Api' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Api.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\AuthorName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/AuthorName.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\AuthorUrl' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/AuthorUrl.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\Description' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/Description.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\Image' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/Image.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\ProviderName' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/ProviderName.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\PublishedTime' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/PublishedTime.php',
|
||||
'Embed\\Adapters\\Twitter\\Detectors\\Title' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Twitter\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Twitter/Extractor.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Api' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Wikipedia/Api.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Detectors\\Description' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Wikipedia/Detectors/Description.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Detectors\\Title' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Wikipedia/Detectors/Title.php',
|
||||
'Embed\\Adapters\\Wikipedia\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Wikipedia/Extractor.php',
|
||||
'Embed\\Adapters\\Youtube\\Detectors\\Feeds' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Youtube/Detectors/Feeds.php',
|
||||
'Embed\\Adapters\\Youtube\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Adapters/Youtube/Extractor.php',
|
||||
'Embed\\ApiTrait' => __DIR__ . '/..' . '/embed/embed/src/ApiTrait.php',
|
||||
'Embed\\Detectors\\AuthorName' => __DIR__ . '/..' . '/embed/embed/src/Detectors/AuthorName.php',
|
||||
'Embed\\Detectors\\AuthorUrl' => __DIR__ . '/..' . '/embed/embed/src/Detectors/AuthorUrl.php',
|
||||
'Embed\\Detectors\\Cms' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Cms.php',
|
||||
'Embed\\Detectors\\Code' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Code.php',
|
||||
'Embed\\Detectors\\Description' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Description.php',
|
||||
'Embed\\Detectors\\Detector' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Detector.php',
|
||||
'Embed\\Detectors\\Favicon' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Favicon.php',
|
||||
'Embed\\Detectors\\Feeds' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Feeds.php',
|
||||
'Embed\\Detectors\\Icon' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Icon.php',
|
||||
'Embed\\Detectors\\Image' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Image.php',
|
||||
'Embed\\Detectors\\Keywords' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Keywords.php',
|
||||
'Embed\\Detectors\\Language' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Language.php',
|
||||
'Embed\\Detectors\\Languages' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Languages.php',
|
||||
'Embed\\Detectors\\License' => __DIR__ . '/..' . '/embed/embed/src/Detectors/License.php',
|
||||
'Embed\\Detectors\\ProviderName' => __DIR__ . '/..' . '/embed/embed/src/Detectors/ProviderName.php',
|
||||
'Embed\\Detectors\\ProviderUrl' => __DIR__ . '/..' . '/embed/embed/src/Detectors/ProviderUrl.php',
|
||||
'Embed\\Detectors\\PublishedTime' => __DIR__ . '/..' . '/embed/embed/src/Detectors/PublishedTime.php',
|
||||
'Embed\\Detectors\\Redirect' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Redirect.php',
|
||||
'Embed\\Detectors\\Title' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Title.php',
|
||||
'Embed\\Detectors\\Url' => __DIR__ . '/..' . '/embed/embed/src/Detectors/Url.php',
|
||||
'Embed\\Document' => __DIR__ . '/..' . '/embed/embed/src/Document.php',
|
||||
'Embed\\Embed' => __DIR__ . '/..' . '/embed/embed/src/Embed.php',
|
||||
'Embed\\EmbedCode' => __DIR__ . '/..' . '/embed/embed/src/EmbedCode.php',
|
||||
'Embed\\Extractor' => __DIR__ . '/..' . '/embed/embed/src/Extractor.php',
|
||||
'Embed\\ExtractorFactory' => __DIR__ . '/..' . '/embed/embed/src/ExtractorFactory.php',
|
||||
'Embed\\HttpApiTrait' => __DIR__ . '/..' . '/embed/embed/src/HttpApiTrait.php',
|
||||
'Embed\\Http\\Crawler' => __DIR__ . '/..' . '/embed/embed/src/Http/Crawler.php',
|
||||
'Embed\\Http\\CurlClient' => __DIR__ . '/..' . '/embed/embed/src/Http/CurlClient.php',
|
||||
'Embed\\Http\\CurlDispatcher' => __DIR__ . '/..' . '/embed/embed/src/Http/CurlDispatcher.php',
|
||||
'Embed\\Http\\FactoryDiscovery' => __DIR__ . '/..' . '/embed/embed/src/Http/FactoryDiscovery.php',
|
||||
'Embed\\Http\\NetworkException' => __DIR__ . '/..' . '/embed/embed/src/Http/NetworkException.php',
|
||||
'Embed\\Http\\RequestException' => __DIR__ . '/..' . '/embed/embed/src/Http/RequestException.php',
|
||||
'Embed\\LinkedData' => __DIR__ . '/..' . '/embed/embed/src/LinkedData.php',
|
||||
'Embed\\Metas' => __DIR__ . '/..' . '/embed/embed/src/Metas.php',
|
||||
'Embed\\OEmbed' => __DIR__ . '/..' . '/embed/embed/src/OEmbed.php',
|
||||
'Embed\\QueryResult' => __DIR__ . '/..' . '/embed/embed/src/QueryResult.php',
|
||||
'GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php',
|
||||
'GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php',
|
||||
'GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php',
|
||||
'GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php',
|
||||
'GuzzleHttp\\Psr7\\Exception\\MalformedUriException' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Exception/MalformedUriException.php',
|
||||
'GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php',
|
||||
'GuzzleHttp\\Psr7\\Header' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Header.php',
|
||||
'GuzzleHttp\\Psr7\\HttpFactory' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/HttpFactory.php',
|
||||
'GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php',
|
||||
'GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php',
|
||||
'GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php',
|
||||
'GuzzleHttp\\Psr7\\Message' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Message.php',
|
||||
'GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php',
|
||||
'GuzzleHttp\\Psr7\\MimeType' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MimeType.php',
|
||||
'GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php',
|
||||
'GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php',
|
||||
'GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php',
|
||||
'GuzzleHttp\\Psr7\\Query' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Query.php',
|
||||
'GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php',
|
||||
'GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php',
|
||||
'GuzzleHttp\\Psr7\\Rfc7230' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Rfc7230.php',
|
||||
'GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php',
|
||||
'GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php',
|
||||
'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php',
|
||||
'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php',
|
||||
'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php',
|
||||
'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php',
|
||||
'GuzzleHttp\\Psr7\\UriComparator' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriComparator.php',
|
||||
'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php',
|
||||
'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php',
|
||||
'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php',
|
||||
'HtmlParser\\Parser' => __DIR__ . '/..' . '/oscarotero/html-parser/src/Parser.php',
|
||||
'Kirby\\Api\\Api' => __DIR__ . '/../..' . '/kirby/src/Api/Api.php',
|
||||
'Kirby\\Api\\Collection' => __DIR__ . '/../..' . '/kirby/src/Api/Collection.php',
|
||||
'Kirby\\Api\\Model' => __DIR__ . '/../..' . '/kirby/src/Api/Model.php',
|
||||
'Kirby\\Cache\\ApcuCache' => __DIR__ . '/../..' . '/kirby/src/Cache/ApcuCache.php',
|
||||
'Kirby\\Cache\\Cache' => __DIR__ . '/../..' . '/kirby/src/Cache/Cache.php',
|
||||
'Kirby\\Cache\\FileCache' => __DIR__ . '/../..' . '/kirby/src/Cache/FileCache.php',
|
||||
'Kirby\\Cache\\MemCached' => __DIR__ . '/../..' . '/kirby/src/Cache/MemCached.php',
|
||||
'Kirby\\Cache\\MemoryCache' => __DIR__ . '/../..' . '/kirby/src/Cache/MemoryCache.php',
|
||||
'Kirby\\Cache\\NullCache' => __DIR__ . '/../..' . '/kirby/src/Cache/NullCache.php',
|
||||
'Kirby\\Cache\\Value' => __DIR__ . '/../..' . '/kirby/src/Cache/Value.php',
|
||||
'Kirby\\Cms\\Api' => __DIR__ . '/../..' . '/kirby/src/Cms/Api.php',
|
||||
'Kirby\\Cms\\App' => __DIR__ . '/../..' . '/kirby/src/Cms/App.php',
|
||||
'Kirby\\Cms\\AppCaches' => __DIR__ . '/../..' . '/kirby/src/Cms/AppCaches.php',
|
||||
'Kirby\\Cms\\AppErrors' => __DIR__ . '/../..' . '/kirby/src/Cms/AppErrors.php',
|
||||
'Kirby\\Cms\\AppPlugins' => __DIR__ . '/../..' . '/kirby/src/Cms/AppPlugins.php',
|
||||
'Kirby\\Cms\\AppTranslations' => __DIR__ . '/../..' . '/kirby/src/Cms/AppTranslations.php',
|
||||
'Kirby\\Cms\\AppUsers' => __DIR__ . '/../..' . '/kirby/src/Cms/AppUsers.php',
|
||||
'Kirby\\Cms\\Auth' => __DIR__ . '/../..' . '/kirby/src/Cms/Auth.php',
|
||||
'Kirby\\Cms\\Auth\\Challenge' => __DIR__ . '/../..' . '/kirby/src/Cms/Auth/Challenge.php',
|
||||
'Kirby\\Cms\\Auth\\EmailChallenge' => __DIR__ . '/../..' . '/kirby/src/Cms/Auth/EmailChallenge.php',
|
||||
'Kirby\\Cms\\Auth\\Status' => __DIR__ . '/../..' . '/kirby/src/Cms/Auth/Status.php',
|
||||
'Kirby\\Cms\\Block' => __DIR__ . '/../..' . '/kirby/src/Cms/Block.php',
|
||||
'Kirby\\Cms\\Blocks' => __DIR__ . '/../..' . '/kirby/src/Cms/Blocks.php',
|
||||
'Kirby\\Cms\\Blueprint' => __DIR__ . '/../..' . '/kirby/src/Cms/Blueprint.php',
|
||||
'Kirby\\Cms\\Collection' => __DIR__ . '/../..' . '/kirby/src/Cms/Collection.php',
|
||||
'Kirby\\Cms\\Collections' => __DIR__ . '/../..' . '/kirby/src/Cms/Collections.php',
|
||||
'Kirby\\Cms\\Content' => __DIR__ . '/../..' . '/kirby/src/Cms/Content.php',
|
||||
'Kirby\\Cms\\ContentLock' => __DIR__ . '/../..' . '/kirby/src/Cms/ContentLock.php',
|
||||
'Kirby\\Cms\\ContentLocks' => __DIR__ . '/../..' . '/kirby/src/Cms/ContentLocks.php',
|
||||
'Kirby\\Cms\\ContentTranslation' => __DIR__ . '/../..' . '/kirby/src/Cms/ContentTranslation.php',
|
||||
'Kirby\\Cms\\Core' => __DIR__ . '/../..' . '/kirby/src/Cms/Core.php',
|
||||
'Kirby\\Cms\\Email' => __DIR__ . '/../..' . '/kirby/src/Cms/Email.php',
|
||||
'Kirby\\Cms\\Event' => __DIR__ . '/../..' . '/kirby/src/Cms/Event.php',
|
||||
'Kirby\\Cms\\Field' => __DIR__ . '/../..' . '/kirby/src/Cms/Field.php',
|
||||
'Kirby\\Cms\\Fieldset' => __DIR__ . '/../..' . '/kirby/src/Cms/Fieldset.php',
|
||||
'Kirby\\Cms\\Fieldsets' => __DIR__ . '/../..' . '/kirby/src/Cms/Fieldsets.php',
|
||||
'Kirby\\Cms\\File' => __DIR__ . '/../..' . '/kirby/src/Cms/File.php',
|
||||
'Kirby\\Cms\\FileActions' => __DIR__ . '/../..' . '/kirby/src/Cms/FileActions.php',
|
||||
'Kirby\\Cms\\FileBlueprint' => __DIR__ . '/../..' . '/kirby/src/Cms/FileBlueprint.php',
|
||||
'Kirby\\Cms\\FileModifications' => __DIR__ . '/../..' . '/kirby/src/Cms/FileModifications.php',
|
||||
'Kirby\\Cms\\FilePermissions' => __DIR__ . '/../..' . '/kirby/src/Cms/FilePermissions.php',
|
||||
'Kirby\\Cms\\FilePicker' => __DIR__ . '/../..' . '/kirby/src/Cms/FilePicker.php',
|
||||
'Kirby\\Cms\\FileRules' => __DIR__ . '/../..' . '/kirby/src/Cms/FileRules.php',
|
||||
'Kirby\\Cms\\FileVersion' => __DIR__ . '/../..' . '/kirby/src/Cms/FileVersion.php',
|
||||
'Kirby\\Cms\\Files' => __DIR__ . '/../..' . '/kirby/src/Cms/Files.php',
|
||||
'Kirby\\Cms\\Find' => __DIR__ . '/../..' . '/kirby/src/Cms/Find.php',
|
||||
'Kirby\\Cms\\HasChildren' => __DIR__ . '/../..' . '/kirby/src/Cms/HasChildren.php',
|
||||
'Kirby\\Cms\\HasFiles' => __DIR__ . '/../..' . '/kirby/src/Cms/HasFiles.php',
|
||||
'Kirby\\Cms\\HasMethods' => __DIR__ . '/../..' . '/kirby/src/Cms/HasMethods.php',
|
||||
'Kirby\\Cms\\HasSiblings' => __DIR__ . '/../..' . '/kirby/src/Cms/HasSiblings.php',
|
||||
'Kirby\\Cms\\Helpers' => __DIR__ . '/../..' . '/kirby/src/Cms/Helpers.php',
|
||||
'Kirby\\Cms\\Html' => __DIR__ . '/../..' . '/kirby/src/Cms/Html.php',
|
||||
'Kirby\\Cms\\Ingredients' => __DIR__ . '/../..' . '/kirby/src/Cms/Ingredients.php',
|
||||
'Kirby\\Cms\\Item' => __DIR__ . '/../..' . '/kirby/src/Cms/Item.php',
|
||||
'Kirby\\Cms\\Items' => __DIR__ . '/../..' . '/kirby/src/Cms/Items.php',
|
||||
'Kirby\\Cms\\Language' => __DIR__ . '/../..' . '/kirby/src/Cms/Language.php',
|
||||
'Kirby\\Cms\\LanguageRouter' => __DIR__ . '/../..' . '/kirby/src/Cms/LanguageRouter.php',
|
||||
'Kirby\\Cms\\LanguageRoutes' => __DIR__ . '/../..' . '/kirby/src/Cms/LanguageRoutes.php',
|
||||
'Kirby\\Cms\\LanguageRules' => __DIR__ . '/../..' . '/kirby/src/Cms/LanguageRules.php',
|
||||
'Kirby\\Cms\\Languages' => __DIR__ . '/../..' . '/kirby/src/Cms/Languages.php',
|
||||
'Kirby\\Cms\\Layout' => __DIR__ . '/../..' . '/kirby/src/Cms/Layout.php',
|
||||
'Kirby\\Cms\\LayoutColumn' => __DIR__ . '/../..' . '/kirby/src/Cms/LayoutColumn.php',
|
||||
'Kirby\\Cms\\LayoutColumns' => __DIR__ . '/../..' . '/kirby/src/Cms/LayoutColumns.php',
|
||||
'Kirby\\Cms\\Layouts' => __DIR__ . '/../..' . '/kirby/src/Cms/Layouts.php',
|
||||
'Kirby\\Cms\\Loader' => __DIR__ . '/../..' . '/kirby/src/Cms/Loader.php',
|
||||
'Kirby\\Cms\\Media' => __DIR__ . '/../..' . '/kirby/src/Cms/Media.php',
|
||||
'Kirby\\Cms\\Model' => __DIR__ . '/../..' . '/kirby/src/Cms/Model.php',
|
||||
'Kirby\\Cms\\ModelPermissions' => __DIR__ . '/../..' . '/kirby/src/Cms/ModelPermissions.php',
|
||||
'Kirby\\Cms\\ModelWithContent' => __DIR__ . '/../..' . '/kirby/src/Cms/ModelWithContent.php',
|
||||
'Kirby\\Cms\\Nest' => __DIR__ . '/../..' . '/kirby/src/Cms/Nest.php',
|
||||
'Kirby\\Cms\\NestCollection' => __DIR__ . '/../..' . '/kirby/src/Cms/NestCollection.php',
|
||||
'Kirby\\Cms\\NestObject' => __DIR__ . '/../..' . '/kirby/src/Cms/NestObject.php',
|
||||
'Kirby\\Cms\\Page' => __DIR__ . '/../..' . '/kirby/src/Cms/Page.php',
|
||||
'Kirby\\Cms\\PageActions' => __DIR__ . '/../..' . '/kirby/src/Cms/PageActions.php',
|
||||
'Kirby\\Cms\\PageBlueprint' => __DIR__ . '/../..' . '/kirby/src/Cms/PageBlueprint.php',
|
||||
'Kirby\\Cms\\PagePermissions' => __DIR__ . '/../..' . '/kirby/src/Cms/PagePermissions.php',
|
||||
'Kirby\\Cms\\PagePicker' => __DIR__ . '/../..' . '/kirby/src/Cms/PagePicker.php',
|
||||
'Kirby\\Cms\\PageRules' => __DIR__ . '/../..' . '/kirby/src/Cms/PageRules.php',
|
||||
'Kirby\\Cms\\PageSiblings' => __DIR__ . '/../..' . '/kirby/src/Cms/PageSiblings.php',
|
||||
'Kirby\\Cms\\Pages' => __DIR__ . '/../..' . '/kirby/src/Cms/Pages.php',
|
||||
'Kirby\\Cms\\Pagination' => __DIR__ . '/../..' . '/kirby/src/Cms/Pagination.php',
|
||||
'Kirby\\Cms\\Permissions' => __DIR__ . '/../..' . '/kirby/src/Cms/Permissions.php',
|
||||
'Kirby\\Cms\\Picker' => __DIR__ . '/../..' . '/kirby/src/Cms/Picker.php',
|
||||
'Kirby\\Cms\\Plugin' => __DIR__ . '/../..' . '/kirby/src/Cms/Plugin.php',
|
||||
'Kirby\\Cms\\PluginAssets' => __DIR__ . '/../..' . '/kirby/src/Cms/PluginAssets.php',
|
||||
'Kirby\\Cms\\R' => __DIR__ . '/../..' . '/kirby/src/Cms/R.php',
|
||||
'Kirby\\Cms\\Responder' => __DIR__ . '/../..' . '/kirby/src/Cms/Responder.php',
|
||||
'Kirby\\Cms\\Response' => __DIR__ . '/../..' . '/kirby/src/Cms/Response.php',
|
||||
'Kirby\\Cms\\Role' => __DIR__ . '/../..' . '/kirby/src/Cms/Role.php',
|
||||
'Kirby\\Cms\\Roles' => __DIR__ . '/../..' . '/kirby/src/Cms/Roles.php',
|
||||
'Kirby\\Cms\\S' => __DIR__ . '/../..' . '/kirby/src/Cms/S.php',
|
||||
'Kirby\\Cms\\Search' => __DIR__ . '/../..' . '/kirby/src/Cms/Search.php',
|
||||
'Kirby\\Cms\\Section' => __DIR__ . '/../..' . '/kirby/src/Cms/Section.php',
|
||||
'Kirby\\Cms\\Site' => __DIR__ . '/../..' . '/kirby/src/Cms/Site.php',
|
||||
'Kirby\\Cms\\SiteActions' => __DIR__ . '/../..' . '/kirby/src/Cms/SiteActions.php',
|
||||
'Kirby\\Cms\\SiteBlueprint' => __DIR__ . '/../..' . '/kirby/src/Cms/SiteBlueprint.php',
|
||||
'Kirby\\Cms\\SitePermissions' => __DIR__ . '/../..' . '/kirby/src/Cms/SitePermissions.php',
|
||||
'Kirby\\Cms\\SiteRules' => __DIR__ . '/../..' . '/kirby/src/Cms/SiteRules.php',
|
||||
'Kirby\\Cms\\Structure' => __DIR__ . '/../..' . '/kirby/src/Cms/Structure.php',
|
||||
'Kirby\\Cms\\StructureObject' => __DIR__ . '/../..' . '/kirby/src/Cms/StructureObject.php',
|
||||
'Kirby\\Cms\\System' => __DIR__ . '/../..' . '/kirby/src/Cms/System.php',
|
||||
'Kirby\\Cms\\Template' => __DIR__ . '/../..' . '/kirby/src/Cms/Template.php',
|
||||
'Kirby\\Cms\\Translation' => __DIR__ . '/../..' . '/kirby/src/Cms/Translation.php',
|
||||
'Kirby\\Cms\\Translations' => __DIR__ . '/../..' . '/kirby/src/Cms/Translations.php',
|
||||
'Kirby\\Cms\\Url' => __DIR__ . '/../..' . '/kirby/src/Cms/Url.php',
|
||||
'Kirby\\Cms\\User' => __DIR__ . '/../..' . '/kirby/src/Cms/User.php',
|
||||
'Kirby\\Cms\\UserActions' => __DIR__ . '/../..' . '/kirby/src/Cms/UserActions.php',
|
||||
'Kirby\\Cms\\UserBlueprint' => __DIR__ . '/../..' . '/kirby/src/Cms/UserBlueprint.php',
|
||||
'Kirby\\Cms\\UserPermissions' => __DIR__ . '/../..' . '/kirby/src/Cms/UserPermissions.php',
|
||||
'Kirby\\Cms\\UserPicker' => __DIR__ . '/../..' . '/kirby/src/Cms/UserPicker.php',
|
||||
'Kirby\\Cms\\UserRules' => __DIR__ . '/../..' . '/kirby/src/Cms/UserRules.php',
|
||||
'Kirby\\Cms\\Users' => __DIR__ . '/../..' . '/kirby/src/Cms/Users.php',
|
||||
'Kirby\\Cms\\Visitor' => __DIR__ . '/../..' . '/kirby/src/Cms/Visitor.php',
|
||||
'Kirby\\ComposerInstaller\\CmsInstaller' => __DIR__ . '/..' . '/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php',
|
||||
'Kirby\\ComposerInstaller\\Installer' => __DIR__ . '/..' . '/getkirby/composer-installer/src/ComposerInstaller/Installer.php',
|
||||
'Kirby\\ComposerInstaller\\Plugin' => __DIR__ . '/..' . '/getkirby/composer-installer/src/ComposerInstaller/Plugin.php',
|
||||
'Kirby\\ComposerInstaller\\PluginInstaller' => __DIR__ . '/..' . '/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php',
|
||||
'Kirby\\Data\\Data' => __DIR__ . '/../..' . '/kirby/src/Data/Data.php',
|
||||
'Kirby\\Data\\Handler' => __DIR__ . '/../..' . '/kirby/src/Data/Handler.php',
|
||||
'Kirby\\Data\\Json' => __DIR__ . '/../..' . '/kirby/src/Data/Json.php',
|
||||
'Kirby\\Data\\PHP' => __DIR__ . '/../..' . '/kirby/src/Data/PHP.php',
|
||||
'Kirby\\Data\\Txt' => __DIR__ . '/../..' . '/kirby/src/Data/Txt.php',
|
||||
'Kirby\\Data\\Xml' => __DIR__ . '/../..' . '/kirby/src/Data/Xml.php',
|
||||
'Kirby\\Data\\Yaml' => __DIR__ . '/../..' . '/kirby/src/Data/Yaml.php',
|
||||
'Kirby\\Database\\Database' => __DIR__ . '/../..' . '/kirby/src/Database/Database.php',
|
||||
'Kirby\\Database\\Db' => __DIR__ . '/../..' . '/kirby/src/Database/Db.php',
|
||||
'Kirby\\Database\\Query' => __DIR__ . '/../..' . '/kirby/src/Database/Query.php',
|
||||
'Kirby\\Database\\Sql' => __DIR__ . '/../..' . '/kirby/src/Database/Sql.php',
|
||||
'Kirby\\Database\\Sql\\Mysql' => __DIR__ . '/../..' . '/kirby/src/Database/Sql/Mysql.php',
|
||||
'Kirby\\Database\\Sql\\Sqlite' => __DIR__ . '/../..' . '/kirby/src/Database/Sql/Sqlite.php',
|
||||
'Kirby\\Email\\Body' => __DIR__ . '/../..' . '/kirby/src/Email/Body.php',
|
||||
'Kirby\\Email\\Email' => __DIR__ . '/../..' . '/kirby/src/Email/Email.php',
|
||||
'Kirby\\Email\\PHPMailer' => __DIR__ . '/../..' . '/kirby/src/Email/PHPMailer.php',
|
||||
'Kirby\\Exception\\BadMethodCallException' => __DIR__ . '/../..' . '/kirby/src/Exception/BadMethodCallException.php',
|
||||
'Kirby\\Exception\\DuplicateException' => __DIR__ . '/../..' . '/kirby/src/Exception/DuplicateException.php',
|
||||
'Kirby\\Exception\\ErrorPageException' => __DIR__ . '/../..' . '/kirby/src/Exception/ErrorPageException.php',
|
||||
'Kirby\\Exception\\Exception' => __DIR__ . '/../..' . '/kirby/src/Exception/Exception.php',
|
||||
'Kirby\\Exception\\InvalidArgumentException' => __DIR__ . '/../..' . '/kirby/src/Exception/InvalidArgumentException.php',
|
||||
'Kirby\\Exception\\LogicException' => __DIR__ . '/../..' . '/kirby/src/Exception/LogicException.php',
|
||||
'Kirby\\Exception\\NotFoundException' => __DIR__ . '/../..' . '/kirby/src/Exception/NotFoundException.php',
|
||||
'Kirby\\Exception\\PermissionException' => __DIR__ . '/../..' . '/kirby/src/Exception/PermissionException.php',
|
||||
'Kirby\\Filesystem\\Asset' => __DIR__ . '/../..' . '/kirby/src/Filesystem/Asset.php',
|
||||
'Kirby\\Filesystem\\Dir' => __DIR__ . '/../..' . '/kirby/src/Filesystem/Dir.php',
|
||||
'Kirby\\Filesystem\\F' => __DIR__ . '/../..' . '/kirby/src/Filesystem/F.php',
|
||||
'Kirby\\Filesystem\\File' => __DIR__ . '/../..' . '/kirby/src/Filesystem/File.php',
|
||||
'Kirby\\Filesystem\\Filename' => __DIR__ . '/../..' . '/kirby/src/Filesystem/Filename.php',
|
||||
'Kirby\\Filesystem\\IsFile' => __DIR__ . '/../..' . '/kirby/src/Filesystem/IsFile.php',
|
||||
'Kirby\\Filesystem\\Mime' => __DIR__ . '/../..' . '/kirby/src/Filesystem/Mime.php',
|
||||
'Kirby\\Form\\Field' => __DIR__ . '/../..' . '/kirby/src/Form/Field.php',
|
||||
'Kirby\\Form\\FieldClass' => __DIR__ . '/../..' . '/kirby/src/Form/FieldClass.php',
|
||||
'Kirby\\Form\\Field\\BlocksField' => __DIR__ . '/../..' . '/kirby/src/Form/Field/BlocksField.php',
|
||||
'Kirby\\Form\\Field\\LayoutField' => __DIR__ . '/../..' . '/kirby/src/Form/Field/LayoutField.php',
|
||||
'Kirby\\Form\\Fields' => __DIR__ . '/../..' . '/kirby/src/Form/Fields.php',
|
||||
'Kirby\\Form\\Form' => __DIR__ . '/../..' . '/kirby/src/Form/Form.php',
|
||||
'Kirby\\Form\\Mixin\\EmptyState' => __DIR__ . '/../..' . '/kirby/src/Form/Mixin/EmptyState.php',
|
||||
'Kirby\\Form\\Mixin\\Max' => __DIR__ . '/../..' . '/kirby/src/Form/Mixin/Max.php',
|
||||
'Kirby\\Form\\Mixin\\Min' => __DIR__ . '/../..' . '/kirby/src/Form/Mixin/Min.php',
|
||||
'Kirby\\Form\\Options' => __DIR__ . '/../..' . '/kirby/src/Form/Options.php',
|
||||
'Kirby\\Form\\OptionsApi' => __DIR__ . '/../..' . '/kirby/src/Form/OptionsApi.php',
|
||||
'Kirby\\Form\\OptionsQuery' => __DIR__ . '/../..' . '/kirby/src/Form/OptionsQuery.php',
|
||||
'Kirby\\Form\\Validations' => __DIR__ . '/../..' . '/kirby/src/Form/Validations.php',
|
||||
'Kirby\\Http\\Cookie' => __DIR__ . '/../..' . '/kirby/src/Http/Cookie.php',
|
||||
'Kirby\\Http\\Environment' => __DIR__ . '/../..' . '/kirby/src/Http/Environment.php',
|
||||
'Kirby\\Http\\Exceptions\\NextRouteException' => __DIR__ . '/../..' . '/kirby/src/Http/Exceptions/NextRouteException.php',
|
||||
'Kirby\\Http\\Header' => __DIR__ . '/../..' . '/kirby/src/Http/Header.php',
|
||||
'Kirby\\Http\\Idn' => __DIR__ . '/../..' . '/kirby/src/Http/Idn.php',
|
||||
'Kirby\\Http\\Params' => __DIR__ . '/../..' . '/kirby/src/Http/Params.php',
|
||||
'Kirby\\Http\\Path' => __DIR__ . '/../..' . '/kirby/src/Http/Path.php',
|
||||
'Kirby\\Http\\Query' => __DIR__ . '/../..' . '/kirby/src/Http/Query.php',
|
||||
'Kirby\\Http\\Remote' => __DIR__ . '/../..' . '/kirby/src/Http/Remote.php',
|
||||
'Kirby\\Http\\Request' => __DIR__ . '/../..' . '/kirby/src/Http/Request.php',
|
||||
'Kirby\\Http\\Request\\Auth' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Auth.php',
|
||||
'Kirby\\Http\\Request\\Auth\\BasicAuth' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Auth/BasicAuth.php',
|
||||
'Kirby\\Http\\Request\\Auth\\BearerAuth' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Auth/BearerAuth.php',
|
||||
'Kirby\\Http\\Request\\Auth\\SessionAuth' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Auth/SessionAuth.php',
|
||||
'Kirby\\Http\\Request\\Body' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Body.php',
|
||||
'Kirby\\Http\\Request\\Data' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Data.php',
|
||||
'Kirby\\Http\\Request\\Files' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Files.php',
|
||||
'Kirby\\Http\\Request\\Query' => __DIR__ . '/../..' . '/kirby/src/Http/Request/Query.php',
|
||||
'Kirby\\Http\\Response' => __DIR__ . '/../..' . '/kirby/src/Http/Response.php',
|
||||
'Kirby\\Http\\Route' => __DIR__ . '/../..' . '/kirby/src/Http/Route.php',
|
||||
'Kirby\\Http\\Router' => __DIR__ . '/../..' . '/kirby/src/Http/Router.php',
|
||||
'Kirby\\Http\\Server' => __DIR__ . '/../..' . '/kirby/src/Http/Server.php',
|
||||
'Kirby\\Http\\Uri' => __DIR__ . '/../..' . '/kirby/src/Http/Uri.php',
|
||||
'Kirby\\Http\\Url' => __DIR__ . '/../..' . '/kirby/src/Http/Url.php',
|
||||
'Kirby\\Http\\Visitor' => __DIR__ . '/../..' . '/kirby/src/Http/Visitor.php',
|
||||
'Kirby\\Image\\Camera' => __DIR__ . '/../..' . '/kirby/src/Image/Camera.php',
|
||||
'Kirby\\Image\\Darkroom' => __DIR__ . '/../..' . '/kirby/src/Image/Darkroom.php',
|
||||
'Kirby\\Image\\Darkroom\\GdLib' => __DIR__ . '/../..' . '/kirby/src/Image/Darkroom/GdLib.php',
|
||||
'Kirby\\Image\\Darkroom\\ImageMagick' => __DIR__ . '/../..' . '/kirby/src/Image/Darkroom/ImageMagick.php',
|
||||
'Kirby\\Image\\Dimensions' => __DIR__ . '/../..' . '/kirby/src/Image/Dimensions.php',
|
||||
'Kirby\\Image\\Exif' => __DIR__ . '/../..' . '/kirby/src/Image/Exif.php',
|
||||
'Kirby\\Image\\Image' => __DIR__ . '/../..' . '/kirby/src/Image/Image.php',
|
||||
'Kirby\\Image\\Location' => __DIR__ . '/../..' . '/kirby/src/Image/Location.php',
|
||||
'Kirby\\Panel\\Dialog' => __DIR__ . '/../..' . '/kirby/src/Panel/Dialog.php',
|
||||
'Kirby\\Panel\\Document' => __DIR__ . '/../..' . '/kirby/src/Panel/Document.php',
|
||||
'Kirby\\Panel\\Dropdown' => __DIR__ . '/../..' . '/kirby/src/Panel/Dropdown.php',
|
||||
'Kirby\\Panel\\Field' => __DIR__ . '/../..' . '/kirby/src/Panel/Field.php',
|
||||
'Kirby\\Panel\\File' => __DIR__ . '/../..' . '/kirby/src/Panel/File.php',
|
||||
'Kirby\\Panel\\Home' => __DIR__ . '/../..' . '/kirby/src/Panel/Home.php',
|
||||
'Kirby\\Panel\\Json' => __DIR__ . '/../..' . '/kirby/src/Panel/Json.php',
|
||||
'Kirby\\Panel\\Model' => __DIR__ . '/../..' . '/kirby/src/Panel/Model.php',
|
||||
'Kirby\\Panel\\Page' => __DIR__ . '/../..' . '/kirby/src/Panel/Page.php',
|
||||
'Kirby\\Panel\\Panel' => __DIR__ . '/../..' . '/kirby/src/Panel/Panel.php',
|
||||
'Kirby\\Panel\\Plugins' => __DIR__ . '/../..' . '/kirby/src/Panel/Plugins.php',
|
||||
'Kirby\\Panel\\Redirect' => __DIR__ . '/../..' . '/kirby/src/Panel/Redirect.php',
|
||||
'Kirby\\Panel\\Search' => __DIR__ . '/../..' . '/kirby/src/Panel/Search.php',
|
||||
'Kirby\\Panel\\Site' => __DIR__ . '/../..' . '/kirby/src/Panel/Site.php',
|
||||
'Kirby\\Panel\\User' => __DIR__ . '/../..' . '/kirby/src/Panel/User.php',
|
||||
'Kirby\\Panel\\View' => __DIR__ . '/../..' . '/kirby/src/Panel/View.php',
|
||||
'Kirby\\Parsley\\Element' => __DIR__ . '/../..' . '/kirby/src/Parsley/Element.php',
|
||||
'Kirby\\Parsley\\Inline' => __DIR__ . '/../..' . '/kirby/src/Parsley/Inline.php',
|
||||
'Kirby\\Parsley\\Parsley' => __DIR__ . '/../..' . '/kirby/src/Parsley/Parsley.php',
|
||||
'Kirby\\Parsley\\Schema' => __DIR__ . '/../..' . '/kirby/src/Parsley/Schema.php',
|
||||
'Kirby\\Parsley\\Schema\\Blocks' => __DIR__ . '/../..' . '/kirby/src/Parsley/Schema/Blocks.php',
|
||||
'Kirby\\Parsley\\Schema\\Plain' => __DIR__ . '/../..' . '/kirby/src/Parsley/Schema/Plain.php',
|
||||
'Kirby\\Sane\\DomHandler' => __DIR__ . '/../..' . '/kirby/src/Sane/DomHandler.php',
|
||||
'Kirby\\Sane\\Handler' => __DIR__ . '/../..' . '/kirby/src/Sane/Handler.php',
|
||||
'Kirby\\Sane\\Html' => __DIR__ . '/../..' . '/kirby/src/Sane/Html.php',
|
||||
'Kirby\\Sane\\Sane' => __DIR__ . '/../..' . '/kirby/src/Sane/Sane.php',
|
||||
'Kirby\\Sane\\Svg' => __DIR__ . '/../..' . '/kirby/src/Sane/Svg.php',
|
||||
'Kirby\\Sane\\Svgz' => __DIR__ . '/../..' . '/kirby/src/Sane/Svgz.php',
|
||||
'Kirby\\Sane\\Xml' => __DIR__ . '/../..' . '/kirby/src/Sane/Xml.php',
|
||||
'Kirby\\Session\\AutoSession' => __DIR__ . '/../..' . '/kirby/src/Session/AutoSession.php',
|
||||
'Kirby\\Session\\FileSessionStore' => __DIR__ . '/../..' . '/kirby/src/Session/FileSessionStore.php',
|
||||
'Kirby\\Session\\Session' => __DIR__ . '/../..' . '/kirby/src/Session/Session.php',
|
||||
'Kirby\\Session\\SessionData' => __DIR__ . '/../..' . '/kirby/src/Session/SessionData.php',
|
||||
'Kirby\\Session\\SessionStore' => __DIR__ . '/../..' . '/kirby/src/Session/SessionStore.php',
|
||||
'Kirby\\Session\\Sessions' => __DIR__ . '/../..' . '/kirby/src/Session/Sessions.php',
|
||||
'Kirby\\Text\\KirbyTag' => __DIR__ . '/../..' . '/kirby/src/Text/KirbyTag.php',
|
||||
'Kirby\\Text\\KirbyTags' => __DIR__ . '/../..' . '/kirby/src/Text/KirbyTags.php',
|
||||
'Kirby\\Text\\Markdown' => __DIR__ . '/../..' . '/kirby/src/Text/Markdown.php',
|
||||
'Kirby\\Text\\SmartyPants' => __DIR__ . '/../..' . '/kirby/src/Text/SmartyPants.php',
|
||||
'Kirby\\Toolkit\\A' => __DIR__ . '/../..' . '/kirby/src/Toolkit/A.php',
|
||||
'Kirby\\Toolkit\\Collection' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Collection.php',
|
||||
'Kirby\\Toolkit\\Component' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Component.php',
|
||||
'Kirby\\Toolkit\\Config' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Config.php',
|
||||
'Kirby\\Toolkit\\Controller' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Controller.php',
|
||||
'Kirby\\Toolkit\\Date' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Date.php',
|
||||
'Kirby\\Toolkit\\Dom' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Dom.php',
|
||||
'Kirby\\Toolkit\\Escape' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Escape.php',
|
||||
'Kirby\\Toolkit\\Facade' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Facade.php',
|
||||
'Kirby\\Toolkit\\Html' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Html.php',
|
||||
'Kirby\\Toolkit\\I18n' => __DIR__ . '/../..' . '/kirby/src/Toolkit/I18n.php',
|
||||
'Kirby\\Toolkit\\Iterator' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Iterator.php',
|
||||
'Kirby\\Toolkit\\Locale' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Locale.php',
|
||||
'Kirby\\Toolkit\\Obj' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Obj.php',
|
||||
'Kirby\\Toolkit\\Pagination' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Pagination.php',
|
||||
'Kirby\\Toolkit\\Properties' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Properties.php',
|
||||
'Kirby\\Toolkit\\Query' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Query.php',
|
||||
'Kirby\\Toolkit\\Silo' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Silo.php',
|
||||
'Kirby\\Toolkit\\Str' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Str.php',
|
||||
'Kirby\\Toolkit\\Tpl' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Tpl.php',
|
||||
'Kirby\\Toolkit\\V' => __DIR__ . '/../..' . '/kirby/src/Toolkit/V.php',
|
||||
'Kirby\\Toolkit\\View' => __DIR__ . '/../..' . '/kirby/src/Toolkit/View.php',
|
||||
'Kirby\\Toolkit\\Xml' => __DIR__ . '/../..' . '/kirby/src/Toolkit/Xml.php',
|
||||
'Laminas\\Escaper\\Escaper' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Escaper.php',
|
||||
'Laminas\\Escaper\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Exception/ExceptionInterface.php',
|
||||
'Laminas\\Escaper\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Exception/InvalidArgumentException.php',
|
||||
'Laminas\\Escaper\\Exception\\RuntimeException' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Exception/RuntimeException.php',
|
||||
'League\\ColorExtractor\\Color' => __DIR__ . '/..' . '/league/color-extractor/src/League/ColorExtractor/Color.php',
|
||||
'League\\ColorExtractor\\ColorExtractor' => __DIR__ . '/..' . '/league/color-extractor/src/League/ColorExtractor/ColorExtractor.php',
|
||||
'League\\ColorExtractor\\Palette' => __DIR__ . '/..' . '/league/color-extractor/src/League/ColorExtractor/Palette.php',
|
||||
'ML\\IRI\\IRI' => __DIR__ . '/..' . '/ml/iri/ML/IRI/IRI.php',
|
||||
'ML\\IRI\\Test\\IriTest' => __DIR__ . '/..' . '/ml/iri/ML/IRI/Test/IriTest.php',
|
||||
'ML\\JsonLD\\DefaultDocumentFactory' => __DIR__ . '/..' . '/ml/json-ld/DefaultDocumentFactory.php',
|
||||
'ML\\JsonLD\\Document' => __DIR__ . '/..' . '/ml/json-ld/Document.php',
|
||||
'ML\\JsonLD\\DocumentFactoryInterface' => __DIR__ . '/..' . '/ml/json-ld/DocumentFactoryInterface.php',
|
||||
'ML\\JsonLD\\DocumentInterface' => __DIR__ . '/..' . '/ml/json-ld/DocumentInterface.php',
|
||||
'ML\\JsonLD\\DocumentLoaderInterface' => __DIR__ . '/..' . '/ml/json-ld/DocumentLoaderInterface.php',
|
||||
'ML\\JsonLD\\Exception\\InvalidQuadException' => __DIR__ . '/..' . '/ml/json-ld/Exception/InvalidQuadException.php',
|
||||
'ML\\JsonLD\\Exception\\JsonLdException' => __DIR__ . '/..' . '/ml/json-ld/Exception/JsonLdException.php',
|
||||
'ML\\JsonLD\\FileGetContentsLoader' => __DIR__ . '/..' . '/ml/json-ld/FileGetContentsLoader.php',
|
||||
'ML\\JsonLD\\Graph' => __DIR__ . '/..' . '/ml/json-ld/Graph.php',
|
||||
'ML\\JsonLD\\GraphInterface' => __DIR__ . '/..' . '/ml/json-ld/GraphInterface.php',
|
||||
'ML\\JsonLD\\JsonLD' => __DIR__ . '/..' . '/ml/json-ld/JsonLD.php',
|
||||
'ML\\JsonLD\\JsonLdSerializable' => __DIR__ . '/..' . '/ml/json-ld/JsonLdSerializable.php',
|
||||
'ML\\JsonLD\\LanguageTaggedString' => __DIR__ . '/..' . '/ml/json-ld/LanguageTaggedString.php',
|
||||
'ML\\JsonLD\\NQuads' => __DIR__ . '/..' . '/ml/json-ld/NQuads.php',
|
||||
'ML\\JsonLD\\Node' => __DIR__ . '/..' . '/ml/json-ld/Node.php',
|
||||
'ML\\JsonLD\\NodeInterface' => __DIR__ . '/..' . '/ml/json-ld/NodeInterface.php',
|
||||
'ML\\JsonLD\\Processor' => __DIR__ . '/..' . '/ml/json-ld/Processor.php',
|
||||
'ML\\JsonLD\\Quad' => __DIR__ . '/..' . '/ml/json-ld/Quad.php',
|
||||
'ML\\JsonLD\\QuadParserInterface' => __DIR__ . '/..' . '/ml/json-ld/QuadParserInterface.php',
|
||||
'ML\\JsonLD\\QuadSerializerInterface' => __DIR__ . '/..' . '/ml/json-ld/QuadSerializerInterface.php',
|
||||
'ML\\JsonLD\\RdfConstants' => __DIR__ . '/..' . '/ml/json-ld/RdfConstants.php',
|
||||
'ML\\JsonLD\\RemoteDocument' => __DIR__ . '/..' . '/ml/json-ld/RemoteDocument.php',
|
||||
'ML\\JsonLD\\Test\\DocumentTest' => __DIR__ . '/..' . '/ml/json-ld/Test/DocumentTest.php',
|
||||
'ML\\JsonLD\\Test\\EarlReportGenerator' => __DIR__ . '/..' . '/ml/json-ld/Test/EarlReportGenerator.php',
|
||||
'ML\\JsonLD\\Test\\FileGetContentsLoaderTest' => __DIR__ . '/..' . '/ml/json-ld/Test/FileGetContentsLoaderTest.php',
|
||||
'ML\\JsonLD\\Test\\GraphTest' => __DIR__ . '/..' . '/ml/json-ld/Test/GraphTest.php',
|
||||
'ML\\JsonLD\\Test\\JsonLDApiTest' => __DIR__ . '/..' . '/ml/json-ld/Test/JsonLDApiTest.php',
|
||||
'ML\\JsonLD\\Test\\JsonTestCase' => __DIR__ . '/..' . '/ml/json-ld/Test/JsonTestCase.php',
|
||||
'ML\\JsonLD\\Test\\NQuadsTest' => __DIR__ . '/..' . '/ml/json-ld/Test/NQuadsTest.php',
|
||||
'ML\\JsonLD\\Test\\TestManifestIterator' => __DIR__ . '/..' . '/ml/json-ld/Test/TestManifestIterator.php',
|
||||
'ML\\JsonLD\\Test\\ValueTest' => __DIR__ . '/..' . '/ml/json-ld/Test/ValueTest.php',
|
||||
'ML\\JsonLD\\Test\\W3CTestSuiteTest' => __DIR__ . '/..' . '/ml/json-ld/Test/W3CTestSuiteTest.php',
|
||||
'ML\\JsonLD\\TypedValue' => __DIR__ . '/..' . '/ml/json-ld/TypedValue.php',
|
||||
'ML\\JsonLD\\Value' => __DIR__ . '/..' . '/ml/json-ld/Value.php',
|
||||
'Michelf\\SmartyPants' => __DIR__ . '/..' . '/michelf/php-smartypants/Michelf/SmartyPants.php',
|
||||
'Michelf\\SmartyPantsTypographer' => __DIR__ . '/..' . '/michelf/php-smartypants/Michelf/SmartyPantsTypographer.php',
|
||||
'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
|
||||
'PHPMailer\\PHPMailer\\Exception' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/Exception.php',
|
||||
'PHPMailer\\PHPMailer\\OAuth' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/OAuth.php',
|
||||
'PHPMailer\\PHPMailer\\OAuthTokenProvider' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/OAuthTokenProvider.php',
|
||||
'PHPMailer\\PHPMailer\\PHPMailer' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/PHPMailer.php',
|
||||
'PHPMailer\\PHPMailer\\POP3' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/POP3.php',
|
||||
'PHPMailer\\PHPMailer\\SMTP' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/SMTP.php',
|
||||
'Parsedown' => __DIR__ . '/../..' . '/kirby/dependencies/parsedown/Parsedown.php',
|
||||
'ParsedownExtra' => __DIR__ . '/../..' . '/kirby/dependencies/parsedown-extra/ParsedownExtra.php',
|
||||
'Psr\\Http\\Client\\ClientExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientExceptionInterface.php',
|
||||
'Psr\\Http\\Client\\ClientInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientInterface.php',
|
||||
'Psr\\Http\\Client\\NetworkExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/NetworkExceptionInterface.php',
|
||||
'Psr\\Http\\Client\\RequestExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/RequestExceptionInterface.php',
|
||||
'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php',
|
||||
'Psr\\Http\\Message\\RequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/RequestFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php',
|
||||
'Psr\\Http\\Message\\ResponseFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ResponseFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php',
|
||||
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php',
|
||||
'Psr\\Http\\Message\\StreamFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/StreamFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php',
|
||||
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php',
|
||||
'Psr\\Http\\Message\\UriFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UriFactoryInterface.php',
|
||||
'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php',
|
||||
'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php',
|
||||
'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
|
||||
'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
|
||||
'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php',
|
||||
'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php',
|
||||
'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
|
||||
'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
|
||||
'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
|
||||
'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
|
||||
'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
|
||||
'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
|
||||
'Spyc' => __DIR__ . '/../..' . '/kirby/dependencies/spyc/Spyc.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Info' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Info.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
|
||||
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
|
||||
'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php',
|
||||
'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
|
||||
'Whoops\\Exception\\ErrorException' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/ErrorException.php',
|
||||
'Whoops\\Exception\\Formatter' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Formatter.php',
|
||||
'Whoops\\Exception\\Frame' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Frame.php',
|
||||
'Whoops\\Exception\\FrameCollection' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/FrameCollection.php',
|
||||
'Whoops\\Exception\\Inspector' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Inspector.php',
|
||||
'Whoops\\Handler\\CallbackHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/CallbackHandler.php',
|
||||
'Whoops\\Handler\\Handler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/Handler.php',
|
||||
'Whoops\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/HandlerInterface.php',
|
||||
'Whoops\\Handler\\JsonResponseHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php',
|
||||
'Whoops\\Handler\\PlainTextHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/PlainTextHandler.php',
|
||||
'Whoops\\Handler\\PrettyPageHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php',
|
||||
'Whoops\\Handler\\XmlResponseHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php',
|
||||
'Whoops\\Run' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Run.php',
|
||||
'Whoops\\RunInterface' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/RunInterface.php',
|
||||
'Whoops\\Util\\HtmlDumperOutput' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php',
|
||||
'Whoops\\Util\\Misc' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/Misc.php',
|
||||
'Whoops\\Util\\SystemFacade' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
|
||||
'Whoops\\Util\\TemplateHelper' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
|
||||
'claviska\\SimpleImage' => __DIR__ . '/..' . '/claviska/simpleimage/src/claviska/SimpleImage.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::$prefixDirsPsr4;
|
||||
$loader->fallbackDirsPsr4 = ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::$fallbackDirsPsr4;
|
||||
$loader->prefixesPsr0 = ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::$prefixesPsr0;
|
||||
$loader->classMap = ComposerStaticInit34ad0fcfd7efff0ce7004033b941cfcf::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
||||
19
vendor/composer/ca-bundle/LICENSE
vendored
Normal file
19
vendor/composer/ca-bundle/LICENSE
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (C) 2016 Composer
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
85
vendor/composer/ca-bundle/README.md
vendored
Normal file
85
vendor/composer/ca-bundle/README.md
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
composer/ca-bundle
|
||||
==================
|
||||
|
||||
Small utility library that lets you find a path to the system CA bundle,
|
||||
and includes a fallback to the Mozilla CA bundle.
|
||||
|
||||
Originally written as part of [composer/composer](https://github.com/composer/composer),
|
||||
now extracted and made available as a stand-alone library.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Install the latest version with:
|
||||
|
||||
```bash
|
||||
$ composer require composer/ca-bundle
|
||||
```
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
|
||||
|
||||
|
||||
Basic usage
|
||||
-----------
|
||||
|
||||
### `Composer\CaBundle\CaBundle`
|
||||
|
||||
- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback
|
||||
- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file
|
||||
- `CaBundle::validateCaFile($filename)`: Validates a CA file using openssl_x509_parse only if it is safe to use
|
||||
- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse()
|
||||
- `CaBundle::reset()`: Resets the static caches
|
||||
|
||||
|
||||
#### To use with curl
|
||||
|
||||
```php
|
||||
$curl = curl_init("https://example.org/");
|
||||
|
||||
$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
|
||||
if (is_dir($caPathOrFile)) {
|
||||
curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);
|
||||
} else {
|
||||
curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile);
|
||||
}
|
||||
|
||||
$result = curl_exec($curl);
|
||||
```
|
||||
|
||||
#### To use with php streams
|
||||
|
||||
```php
|
||||
$opts = array(
|
||||
'http' => array(
|
||||
'method' => "GET"
|
||||
)
|
||||
);
|
||||
|
||||
$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
|
||||
if (is_dir($caPathOrFile)) {
|
||||
$opts['ssl']['capath'] = $caPathOrFile;
|
||||
} else {
|
||||
$opts['ssl']['cafile'] = $caPathOrFile;
|
||||
}
|
||||
|
||||
$context = stream_context_create($opts);
|
||||
$result = file_get_contents('https://example.com', false, $context);
|
||||
```
|
||||
|
||||
#### To use with Guzzle
|
||||
|
||||
```php
|
||||
$client = new \GuzzleHttp\Client([
|
||||
\GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath()
|
||||
]);
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details.
|
||||
54
vendor/composer/ca-bundle/composer.json
vendored
Normal file
54
vendor/composer/ca-bundle/composer.json
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "composer/ca-bundle",
|
||||
"description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
|
||||
"type": "library",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"cabundle",
|
||||
"cacert",
|
||||
"certificate",
|
||||
"ssl",
|
||||
"tls"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jordi Boggiano",
|
||||
"email": "j.boggiano@seld.be",
|
||||
"homepage": "http://seld.be"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"irc": "irc://irc.freenode.org/composer",
|
||||
"issues": "https://github.com/composer/ca-bundle/issues"
|
||||
},
|
||||
"require": {
|
||||
"ext-openssl": "*",
|
||||
"ext-pcre": "*",
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/phpunit-bridge": "^4.2 || ^5",
|
||||
"phpstan/phpstan": "^1.10",
|
||||
"psr/log": "^1.0 || ^2.0 || ^3.0",
|
||||
"symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Composer\\CaBundle\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Composer\\CaBundle\\": "tests"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vendor/bin/simple-phpunit",
|
||||
"phpstan": "vendor/bin/phpstan analyse"
|
||||
}
|
||||
}
|
||||
3568
vendor/composer/ca-bundle/res/cacert.pem
vendored
Normal file
3568
vendor/composer/ca-bundle/res/cacert.pem
vendored
Normal file
File diff suppressed because it is too large
Load Diff
325
vendor/composer/ca-bundle/src/CaBundle.php
vendored
Normal file
325
vendor/composer/ca-bundle/src/CaBundle.php
vendored
Normal file
@@ -0,0 +1,325 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of composer/ca-bundle.
|
||||
*
|
||||
* (c) Composer <https://github.com/composer>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\CaBundle;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Process\PhpProcess;
|
||||
|
||||
/**
|
||||
* @author Chris Smith <chris@cs278.org>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
*/
|
||||
class CaBundle
|
||||
{
|
||||
/** @var string|null */
|
||||
private static $caPath;
|
||||
/** @var array<string, bool> */
|
||||
private static $caFileValidity = array();
|
||||
|
||||
/**
|
||||
* Returns the system CA bundle path, or a path to the bundled one
|
||||
*
|
||||
* This method was adapted from Sslurp.
|
||||
* https://github.com/EvanDotPro/Sslurp
|
||||
*
|
||||
* (c) Evan Coury <me@evancoury.com>
|
||||
*
|
||||
* For the full copyright and license information, please see below:
|
||||
*
|
||||
* Copyright (c) 2013, Evan Coury
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* @param LoggerInterface $logger optional logger for information about which CA files were loaded
|
||||
* @return string path to a CA bundle file or directory
|
||||
*/
|
||||
public static function getSystemCaRootBundlePath(?LoggerInterface $logger = null)
|
||||
{
|
||||
if (self::$caPath !== null) {
|
||||
return self::$caPath;
|
||||
}
|
||||
$caBundlePaths = array();
|
||||
|
||||
// If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that.
|
||||
// This mimics how OpenSSL uses the SSL_CERT_FILE env variable.
|
||||
$caBundlePaths[] = self::getEnvVariable('SSL_CERT_FILE');
|
||||
|
||||
// If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that.
|
||||
// This mimics how OpenSSL uses the SSL_CERT_FILE env variable.
|
||||
$caBundlePaths[] = self::getEnvVariable('SSL_CERT_DIR');
|
||||
|
||||
$caBundlePaths[] = ini_get('openssl.cafile');
|
||||
$caBundlePaths[] = ini_get('openssl.capath');
|
||||
|
||||
$otherLocations = array(
|
||||
'/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package)
|
||||
'/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package)
|
||||
'/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package)
|
||||
'/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package)
|
||||
'/usr/ssl/certs/ca-bundle.crt', // Cygwin
|
||||
'/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package
|
||||
'/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option)
|
||||
'/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat?
|
||||
'/etc/ssl/cert.pem', // OpenBSD
|
||||
'/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x
|
||||
'/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package
|
||||
'/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package
|
||||
'/opt/homebrew/etc/openssl@3/cert.pem', // macOS silicon homebrew, openssl@3 package
|
||||
'/opt/homebrew/etc/openssl@1.1/cert.pem', // macOS silicon homebrew, openssl@1.1 package
|
||||
);
|
||||
|
||||
foreach($otherLocations as $location) {
|
||||
$otherLocations[] = dirname($location);
|
||||
}
|
||||
|
||||
$caBundlePaths = array_merge($caBundlePaths, $otherLocations);
|
||||
|
||||
foreach ($caBundlePaths as $caBundle) {
|
||||
if ($caBundle && self::caFileUsable($caBundle, $logger)) {
|
||||
return self::$caPath = $caBundle;
|
||||
}
|
||||
|
||||
if ($caBundle && self::caDirUsable($caBundle, $logger)) {
|
||||
return self::$caPath = $caBundle;
|
||||
}
|
||||
}
|
||||
|
||||
return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the path to the bundled CA file
|
||||
*
|
||||
* In case you don't want to trust the user or the system, you can use this directly
|
||||
*
|
||||
* @return string path to a CA bundle file
|
||||
*/
|
||||
public static function getBundledCaBundlePath()
|
||||
{
|
||||
$caBundleFile = __DIR__.'/../res/cacert.pem';
|
||||
|
||||
// cURL does not understand 'phar://' paths
|
||||
// see https://github.com/composer/ca-bundle/issues/10
|
||||
if (0 === strpos($caBundleFile, 'phar://')) {
|
||||
$tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-');
|
||||
if (false === $tempCaBundleFile) {
|
||||
throw new \RuntimeException('Could not create a temporary file to store the bundled CA file');
|
||||
}
|
||||
|
||||
file_put_contents(
|
||||
$tempCaBundleFile,
|
||||
file_get_contents($caBundleFile)
|
||||
);
|
||||
|
||||
register_shutdown_function(function() use ($tempCaBundleFile) {
|
||||
@unlink($tempCaBundleFile);
|
||||
});
|
||||
|
||||
$caBundleFile = $tempCaBundleFile;
|
||||
}
|
||||
|
||||
return $caBundleFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates a CA file using opensl_x509_parse only if it is safe to use
|
||||
*
|
||||
* @param string $filename
|
||||
* @param LoggerInterface $logger optional logger for information about which CA files were loaded
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function validateCaFile($filename, ?LoggerInterface $logger = null)
|
||||
{
|
||||
static $warned = false;
|
||||
|
||||
if (isset(self::$caFileValidity[$filename])) {
|
||||
return self::$caFileValidity[$filename];
|
||||
}
|
||||
|
||||
$contents = file_get_contents($filename);
|
||||
|
||||
if (is_string($contents) && strlen($contents) > 0) {
|
||||
$contents = preg_replace("/^(\\-+(?:BEGIN|END))\\s+TRUSTED\\s+(CERTIFICATE\\-+)\$/m", '$1 $2', $contents);
|
||||
if (null === $contents) {
|
||||
// regex extraction failed
|
||||
$isValid = false;
|
||||
} else {
|
||||
$isValid = (bool) openssl_x509_parse($contents);
|
||||
}
|
||||
} else {
|
||||
$isValid = false;
|
||||
}
|
||||
|
||||
if ($logger) {
|
||||
$logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid'));
|
||||
}
|
||||
|
||||
return self::$caFileValidity[$filename] = $isValid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if it is safe to use the PHP function openssl_x509_parse().
|
||||
*
|
||||
* This checks if OpenSSL extensions is vulnerable to remote code execution
|
||||
* via the exploit documented as CVE-2013-6420.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isOpensslParseSafe()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the static caches
|
||||
* @return void
|
||||
*/
|
||||
public static function reset()
|
||||
{
|
||||
self::$caFileValidity = array();
|
||||
self::$caPath = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return string|false
|
||||
*/
|
||||
private static function getEnvVariable($name)
|
||||
{
|
||||
if (isset($_SERVER[$name])) {
|
||||
return (string) $_SERVER[$name];
|
||||
}
|
||||
|
||||
if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) {
|
||||
return (string) $value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|false $certFile
|
||||
* @param LoggerInterface|null $logger
|
||||
* @return bool
|
||||
*/
|
||||
private static function caFileUsable($certFile, ?LoggerInterface $logger = null)
|
||||
{
|
||||
return $certFile
|
||||
&& self::isFile($certFile, $logger)
|
||||
&& self::isReadable($certFile, $logger)
|
||||
&& self::validateCaFile($certFile, $logger);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|false $certDir
|
||||
* @param LoggerInterface|null $logger
|
||||
* @return bool
|
||||
*/
|
||||
private static function caDirUsable($certDir, ?LoggerInterface $logger = null)
|
||||
{
|
||||
return $certDir
|
||||
&& self::isDir($certDir, $logger)
|
||||
&& self::isReadable($certDir, $logger)
|
||||
&& self::glob($certDir . '/*', $logger);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $certFile
|
||||
* @param LoggerInterface|null $logger
|
||||
* @return bool
|
||||
*/
|
||||
private static function isFile($certFile, ?LoggerInterface $logger = null)
|
||||
{
|
||||
$isFile = @is_file($certFile);
|
||||
if (!$isFile && $logger) {
|
||||
$logger->debug(sprintf('Checked CA file %s does not exist or it is not a file.', $certFile));
|
||||
}
|
||||
|
||||
return $isFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $certDir
|
||||
* @param LoggerInterface|null $logger
|
||||
* @return bool
|
||||
*/
|
||||
private static function isDir($certDir, ?LoggerInterface $logger = null)
|
||||
{
|
||||
$isDir = @is_dir($certDir);
|
||||
if (!$isDir && $logger) {
|
||||
$logger->debug(sprintf('Checked directory %s does not exist or it is not a directory.', $certDir));
|
||||
}
|
||||
|
||||
return $isDir;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $certFileOrDir
|
||||
* @param LoggerInterface|null $logger
|
||||
* @return bool
|
||||
*/
|
||||
private static function isReadable($certFileOrDir, ?LoggerInterface $logger = null)
|
||||
{
|
||||
$isReadable = @is_readable($certFileOrDir);
|
||||
if (!$isReadable && $logger) {
|
||||
$logger->debug(sprintf('Checked file or directory %s is not readable.', $certFileOrDir));
|
||||
}
|
||||
|
||||
return $isReadable;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $pattern
|
||||
* @param LoggerInterface|null $logger
|
||||
* @return bool
|
||||
*/
|
||||
private static function glob($pattern, ?LoggerInterface $logger = null)
|
||||
{
|
||||
$certs = glob($pattern);
|
||||
if ($certs === false) {
|
||||
if ($logger) {
|
||||
$logger->debug(sprintf("An error occurred while trying to find certificates for pattern: %s", $pattern));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (count($certs) === 0) {
|
||||
if ($logger) {
|
||||
$logger->debug(sprintf("No CA files found for pattern: %s", $pattern));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
1655
vendor/composer/installed.json
vendored
Normal file
1655
vendor/composer/installed.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
272
vendor/composer/installed.php
vendored
Normal file
272
vendor/composer/installed.php
vendored
Normal file
@@ -0,0 +1,272 @@
|
||||
<?php return array(
|
||||
'root' => array(
|
||||
'name' => 'getkirby/plainkit',
|
||||
'pretty_version' => 'dev-main',
|
||||
'version' => 'dev-main',
|
||||
'reference' => 'a4b2aece7b44b516ca8349830f01c2eccae22ff0',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'dev' => true,
|
||||
),
|
||||
'versions' => array(
|
||||
'claviska/simpleimage' => array(
|
||||
'pretty_version' => '3.7.0',
|
||||
'version' => '3.7.0.0',
|
||||
'reference' => 'abd15ced313c7b8041d7d73d8d2398b4f2510cf1',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../claviska/simpleimage',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'composer/ca-bundle' => array(
|
||||
'pretty_version' => '1.5.1',
|
||||
'version' => '1.5.1.0',
|
||||
'reference' => '063d9aa8696582f5a41dffbbaf3c81024f0a604a',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/./ca-bundle',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'embed/embed' => array(
|
||||
'pretty_version' => 'v4.4.8',
|
||||
'version' => '4.4.8.0',
|
||||
'reference' => '49134080764018bc6b8a2488dd1c8cc2c47d15fc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../embed/embed',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'filp/whoops' => array(
|
||||
'pretty_version' => '2.14.5',
|
||||
'version' => '2.14.5.0',
|
||||
'reference' => 'a63e5e8f26ebbebf8ed3c5c691637325512eb0dc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../filp/whoops',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'getkirby/cms' => array(
|
||||
'pretty_version' => '3.7.5.5',
|
||||
'version' => '3.7.5.5',
|
||||
'reference' => 'a645ec70bc0152cc3caa07df303dd57ac25b30db',
|
||||
'type' => 'kirby-cms',
|
||||
'install_path' => __DIR__ . '/../../kirby',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'getkirby/composer-installer' => array(
|
||||
'pretty_version' => '1.2.1',
|
||||
'version' => '1.2.1.0',
|
||||
'reference' => 'c98ece30bfba45be7ce457e1102d1b169d922f3d',
|
||||
'type' => 'composer-plugin',
|
||||
'install_path' => __DIR__ . '/../getkirby/composer-installer',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'getkirby/plainkit' => array(
|
||||
'pretty_version' => 'dev-main',
|
||||
'version' => 'dev-main',
|
||||
'reference' => 'a4b2aece7b44b516ca8349830f01c2eccae22ff0',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'guzzlehttp/psr7' => array(
|
||||
'pretty_version' => '2.7.0',
|
||||
'version' => '2.7.0.0',
|
||||
'reference' => 'a70f5c95fb43bc83f07c9c948baa0dc1829bf201',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../guzzlehttp/psr7',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'jg/kirby-fields-block' => array(
|
||||
'pretty_version' => 'v1.2.1',
|
||||
'version' => '1.2.1.0',
|
||||
'reference' => 'e56c4d109edd921a1b4436e3df0e64b1117f1b83',
|
||||
'type' => 'kirby-plugin',
|
||||
'install_path' => __DIR__ . '/../../site/plugins/kirby-fields-block',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'laminas/laminas-escaper' => array(
|
||||
'pretty_version' => '2.10.0',
|
||||
'version' => '2.10.0.0',
|
||||
'reference' => '58af67282db37d24e584a837a94ee55b9c7552be',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../laminas/laminas-escaper',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'league/color-extractor' => array(
|
||||
'pretty_version' => '0.3.2',
|
||||
'version' => '0.3.2.0',
|
||||
'reference' => '837086ec60f50c84c611c613963e4ad2e2aec806',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../league/color-extractor',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'matthecat/colorextractor' => array(
|
||||
'dev_requirement' => false,
|
||||
'replaced' => array(
|
||||
0 => '*',
|
||||
),
|
||||
),
|
||||
'michelf/php-smartypants' => array(
|
||||
'pretty_version' => '1.8.1',
|
||||
'version' => '1.8.1.0',
|
||||
'reference' => '47d17c90a4dfd0ccf1f87e25c65e6c8012415aad',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../michelf/php-smartypants',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'ml/iri' => array(
|
||||
'pretty_version' => '1.1.4',
|
||||
'version' => '1.1.4.0',
|
||||
'reference' => 'cbd44fa913e00ea624241b38cefaa99da8d71341',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../ml/iri/ML/IRI',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'ml/json-ld' => array(
|
||||
'pretty_version' => '1.2.1',
|
||||
'version' => '1.2.1.0',
|
||||
'reference' => '537e68e87a6bce23e57c575cd5dcac1f67ce25d8',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../ml/json-ld',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'oscarotero/html-parser' => array(
|
||||
'pretty_version' => 'v0.1.8',
|
||||
'version' => '0.1.8.0',
|
||||
'reference' => '10f3219267a365d9433f2f7d1694209c9d436c8d',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../oscarotero/html-parser',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'phpmailer/phpmailer' => array(
|
||||
'pretty_version' => 'v6.6.4',
|
||||
'version' => '6.6.4.0',
|
||||
'reference' => 'a94fdebaea6bd17f51be0c2373ab80d3d681269b',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpmailer/phpmailer',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-client' => array(
|
||||
'pretty_version' => '1.0.3',
|
||||
'version' => '1.0.3.0',
|
||||
'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-client',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-factory' => array(
|
||||
'pretty_version' => '1.1.0',
|
||||
'version' => '1.1.0.0',
|
||||
'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-factory',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-factory-implementation' => array(
|
||||
'dev_requirement' => false,
|
||||
'provided' => array(
|
||||
0 => '1.0',
|
||||
),
|
||||
),
|
||||
'psr/http-message' => array(
|
||||
'pretty_version' => '2.0',
|
||||
'version' => '2.0.0.0',
|
||||
'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-message',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-message-implementation' => array(
|
||||
'dev_requirement' => false,
|
||||
'provided' => array(
|
||||
0 => '1.0',
|
||||
),
|
||||
),
|
||||
'psr/log' => array(
|
||||
'pretty_version' => '1.1.4',
|
||||
'version' => '1.1.4.0',
|
||||
'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/log',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'ralouphie/getallheaders' => array(
|
||||
'pretty_version' => '3.0.3',
|
||||
'version' => '3.0.3.0',
|
||||
'reference' => '120b605dfeb996808c31b6477290a714d356e822',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../ralouphie/getallheaders',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'sylvainjule/color-palette' => array(
|
||||
'pretty_version' => '1.0.4',
|
||||
'version' => '1.0.4.0',
|
||||
'reference' => '290da479c5bddf55a61974119243987504085223',
|
||||
'type' => 'kirby-plugin',
|
||||
'install_path' => __DIR__ . '/../../site/plugins/color-palette',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'sylvainjule/embed' => array(
|
||||
'pretty_version' => '1.1.2',
|
||||
'version' => '1.1.2.0',
|
||||
'reference' => '19a586d64883790b7c5f2366bf5ea128e63d47b3',
|
||||
'type' => 'kirby-plugin',
|
||||
'install_path' => __DIR__ . '/../../site/plugins/embed',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-intl-idn' => array(
|
||||
'pretty_version' => 'v1.26.0',
|
||||
'version' => '1.26.0.0',
|
||||
'reference' => '59a8d271f00dd0e4c2e518104cc7963f655a1aa8',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-intl-normalizer' => array(
|
||||
'pretty_version' => 'v1.30.0',
|
||||
'version' => '1.30.0.0',
|
||||
'reference' => 'a95281b0be0d9ab48050ebd988b967875cdb9fdb',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-mbstring' => array(
|
||||
'pretty_version' => 'v1.26.0',
|
||||
'version' => '1.26.0.0',
|
||||
'reference' => '9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-php72' => array(
|
||||
'dev_requirement' => false,
|
||||
'replaced' => array(
|
||||
0 => '*',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
26
vendor/composer/platform_check.php
vendored
Normal file
26
vendor/composer/platform_check.php
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
// platform_check.php @generated by Composer
|
||||
|
||||
$issues = array();
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70400)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
|
||||
if ($issues) {
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
}
|
||||
if (!ini_get('display_errors')) {
|
||||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
|
||||
} elseif (!headers_sent()) {
|
||||
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
|
||||
}
|
||||
}
|
||||
trigger_error(
|
||||
'Composer detected issues in your platform: ' . implode(' ', $issues),
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
246
vendor/embed/embed/CHANGELOG.md
vendored
Normal file
246
vendor/embed/embed/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [4.4.8] - 2023-05-22
|
||||
### Fixed
|
||||
- Support for `psr/http-message@2` [#514], [#515]
|
||||
|
||||
## [4.4.7] - 2022-12-12
|
||||
### Fixed
|
||||
- Href attributes with `undefined` values [#501], [#502]
|
||||
- Deprecated warning for var interpolation in PHP 8.2 [#506]
|
||||
- Prevent unsupported operand types exception [#507]
|
||||
|
||||
## [4.4.6] - 2022-10-02
|
||||
### Fixed
|
||||
- Some code issues detected by phpstan: [#495], [#496], [#497], [#498].
|
||||
- Fix for quotation marks in redirect URL [#499]
|
||||
|
||||
## [4.4.5] - 2022-09-06
|
||||
### Fixed
|
||||
- Updated oembed endpoints [#494]
|
||||
|
||||
## [4.4.4] - 2022-04-13
|
||||
### Fixed
|
||||
- Error getting data from Linked data [#481].
|
||||
|
||||
## [4.4.3] - 2022-03-13
|
||||
### Fixed
|
||||
- PHP 8.1 deprecation notice [#480].
|
||||
|
||||
## [4.4.2] - 2022-02-13
|
||||
### Added
|
||||
- Options to customize the CurlClient to perform http queries [#474].
|
||||
|
||||
## [4.4.1] - 2022-02-06
|
||||
### Fixed
|
||||
- PHP 8.1 deprecation notice [#473].
|
||||
|
||||
## [4.4.0] - 2022-01-08
|
||||
### Added
|
||||
- New settings option `twitter:token` to use Twitter API to get the data [#364] [#468].
|
||||
|
||||
### Fixed
|
||||
- Headers not sent properly by curl [#466], [#467].
|
||||
|
||||
## [4.3.5] - 2021-10-10
|
||||
### Fixed
|
||||
- Updated oEmbed endpoints
|
||||
- Fixed embed code for Instagram [#456], [#459]
|
||||
|
||||
### Security
|
||||
- Fixed a possible XML Quadratic Blowup vulnerability.
|
||||
|
||||
## [4.3.4] - 2021-06-22
|
||||
### Fixed
|
||||
- Urls of images should include the same url for the `$info->image` value. [#452]
|
||||
|
||||
## [4.3.3] - 2021-06-22
|
||||
### Fixed
|
||||
- Facebook embed redirects to `/login`. [#450], [#451]
|
||||
|
||||
## [4.3.2] - 2021-04-04
|
||||
### Fixed
|
||||
- Add configured oEmbed query parameters to all oEmbed endpoints [#437]
|
||||
- Updated oEmbed endpoints.
|
||||
- Replaced Travis with Github workflows for testing
|
||||
|
||||
## [4.3.1] - 2021-03-21
|
||||
### Added
|
||||
- Support for binary files (video, audio, images, etc) [#412] [#413]
|
||||
|
||||
### Fixed
|
||||
- Oembed for facebook photos [#405] [#406]
|
||||
- Oembed for facebook videos [#432] [#433]
|
||||
- Added more ways to detect data using meta tags [#427]
|
||||
- Bandcamp provider name [#429] [#430]
|
||||
|
||||
## [4.3.0] - 2020-11-04
|
||||
### Added
|
||||
- New function `$embed->setSettings()` to pass the settings before get the site info
|
||||
|
||||
### Fixed
|
||||
- PHP 8 compatibility [#394]
|
||||
- Facebook and Instagram adapted to the new API changes [#392] [#399]
|
||||
|
||||
## [4.2.7] - 2020-09-23
|
||||
### Added
|
||||
- New option `twitch:parent` to fix Twitch embed with iframes [#384]
|
||||
|
||||
### Fixed
|
||||
- Added `datePublished` check to `PublishedTime` extractor [#385] [#386]
|
||||
- Added `@property-read` for IDE suppport [#387] [#388]
|
||||
|
||||
## [4.2.6] - 2020-08-28
|
||||
### Fixed
|
||||
- Code width and height when the provided value is not numeric (ex: 100%) [#380]
|
||||
|
||||
## [4.2.5] - 2020-08-01
|
||||
### Fixed
|
||||
- Github TypeError exception with some urls [#375]
|
||||
|
||||
## [4.2.4] - 2020-07-06
|
||||
### Fixed
|
||||
- Ignore invalid urls instead throw an exception
|
||||
- Updated oembed list of endpoints
|
||||
|
||||
## [4.2.3] - 2020-06-12
|
||||
### Fixed
|
||||
- Suppport for other non-latin alphabets such Persian or Arabic [#366]
|
||||
|
||||
## [4.2.2] - 2020-05-31
|
||||
### Fixed
|
||||
- Provided a fallback for oEmbed compatible sites like Instagram that redirects to login page [#357]
|
||||
|
||||
## [4.2.1] - 2020-05-25
|
||||
### Fixed
|
||||
- Redirect urls like `t.co`.
|
||||
|
||||
## [4.2.0] - 2020-05-23
|
||||
### Added
|
||||
- Added the `ignored_errors` settings to ignore some curls errors instead throw an exception [#355]
|
||||
- Support for Twitch embeds [#332]
|
||||
|
||||
### Fixed
|
||||
- Ignored linkedData errors [#356]
|
||||
|
||||
## [4.1.1] - 2020-04-24
|
||||
### Added
|
||||
- Updated oembed endpoints from `oembed.com`
|
||||
- Add support for tiktok.com
|
||||
|
||||
## [4.1.0] - 2020-04-19
|
||||
### Added
|
||||
- Ability to send settings to `CurlClient`. Added the `cookies_path` setting to customize the file used for cookies. [#345]
|
||||
- `Document::selectCss()` function to select elements using css selectors instead xpath (it requires `symfony/css-selector`)
|
||||
- `Document::removeCss()` function to remove elements using css selectors instead xpath (it requires `symfony/css-selector`)
|
||||
- Ability to configure OEmbed parameters from the outside using the `oembed:query_parameters` setting [#346]
|
||||
|
||||
## [4.0.0] - 2020-03-13
|
||||
Full library refactoring.
|
||||
|
||||
### Added
|
||||
- Support for multiple parallel request with `curl_multi`
|
||||
- Support for PSR-7 Http Messages, PSR-17 Http Factories and PSR-18 Http Client
|
||||
- `cms` value
|
||||
- `language` to detect the page language
|
||||
- `languages` to detect urls to versions in different languages
|
||||
- `favicon` to detect small favicons (16 or 32px)
|
||||
- `icon` to detect big icons (from 48px)
|
||||
|
||||
### Changed
|
||||
- Changed providers (oEmbed, Html, OpenGraph etc) by independent detectors (title, url, language etc).
|
||||
- The `tags` value is renamed to `keywords`
|
||||
- Use Psr standards instead custom interfaces.
|
||||
- Improved tests using cached responses.
|
||||
|
||||
### Removed
|
||||
- Support for PHP<7.4
|
||||
- `type` value (is was very confusing)
|
||||
- `images` value
|
||||
- `providerImage` (use `favicon` or `icon` instead)
|
||||
- Support for files (pdf, jpg, video, etc).
|
||||
|
||||
[#332]: https://github.com/oscarotero/Embed/issues/332
|
||||
[#345]: https://github.com/oscarotero/Embed/issues/345
|
||||
[#346]: https://github.com/oscarotero/Embed/issues/346
|
||||
[#355]: https://github.com/oscarotero/Embed/issues/355
|
||||
[#356]: https://github.com/oscarotero/Embed/issues/356
|
||||
[#357]: https://github.com/oscarotero/Embed/issues/357
|
||||
[#364]: https://github.com/oscarotero/Embed/issues/364
|
||||
[#366]: https://github.com/oscarotero/Embed/issues/366
|
||||
[#375]: https://github.com/oscarotero/Embed/issues/375
|
||||
[#380]: https://github.com/oscarotero/Embed/issues/380
|
||||
[#384]: https://github.com/oscarotero/Embed/issues/384
|
||||
[#385]: https://github.com/oscarotero/Embed/issues/385
|
||||
[#386]: https://github.com/oscarotero/Embed/issues/386
|
||||
[#387]: https://github.com/oscarotero/Embed/issues/387
|
||||
[#388]: https://github.com/oscarotero/Embed/issues/388
|
||||
[#392]: https://github.com/oscarotero/Embed/issues/392
|
||||
[#394]: https://github.com/oscarotero/Embed/issues/394
|
||||
[#399]: https://github.com/oscarotero/Embed/issues/399
|
||||
[#405]: https://github.com/oscarotero/Embed/issues/405
|
||||
[#406]: https://github.com/oscarotero/Embed/issues/406
|
||||
[#412]: https://github.com/oscarotero/Embed/issues/412
|
||||
[#413]: https://github.com/oscarotero/Embed/issues/413
|
||||
[#427]: https://github.com/oscarotero/Embed/issues/427
|
||||
[#429]: https://github.com/oscarotero/Embed/issues/429
|
||||
[#430]: https://github.com/oscarotero/Embed/issues/430
|
||||
[#432]: https://github.com/oscarotero/Embed/issues/432
|
||||
[#433]: https://github.com/oscarotero/Embed/issues/433
|
||||
[#437]: https://github.com/oscarotero/Embed/issues/437
|
||||
[#450]: https://github.com/oscarotero/Embed/issues/450
|
||||
[#451]: https://github.com/oscarotero/Embed/issues/451
|
||||
[#452]: https://github.com/oscarotero/Embed/issues/452
|
||||
[#456]: https://github.com/oscarotero/Embed/issues/456
|
||||
[#459]: https://github.com/oscarotero/Embed/issues/459
|
||||
[#466]: https://github.com/oscarotero/Embed/issues/466
|
||||
[#467]: https://github.com/oscarotero/Embed/issues/467
|
||||
[#468]: https://github.com/oscarotero/Embed/issues/468
|
||||
[#473]: https://github.com/oscarotero/Embed/issues/473
|
||||
[#474]: https://github.com/oscarotero/Embed/issues/474
|
||||
[#480]: https://github.com/oscarotero/Embed/issues/480
|
||||
[#481]: https://github.com/oscarotero/Embed/issues/481
|
||||
[#494]: https://github.com/oscarotero/Embed/issues/494
|
||||
[#495]: https://github.com/oscarotero/Embed/issues/495
|
||||
[#496]: https://github.com/oscarotero/Embed/issues/496
|
||||
[#497]: https://github.com/oscarotero/Embed/issues/497
|
||||
[#498]: https://github.com/oscarotero/Embed/issues/498
|
||||
[#499]: https://github.com/oscarotero/Embed/issues/499
|
||||
[#501]: https://github.com/oscarotero/Embed/issues/501
|
||||
[#502]: https://github.com/oscarotero/Embed/issues/502
|
||||
[#506]: https://github.com/oscarotero/Embed/issues/506
|
||||
[#507]: https://github.com/oscarotero/Embed/issues/507
|
||||
[#514]: https://github.com/oscarotero/Embed/issues/514
|
||||
[#515]: https://github.com/oscarotero/Embed/issues/515
|
||||
|
||||
[4.4.8]: https://github.com/oscarotero/Embed/compare/v4.4.7...v4.4.8
|
||||
[4.4.7]: https://github.com/oscarotero/Embed/compare/v4.4.6...v4.4.7
|
||||
[4.4.6]: https://github.com/oscarotero/Embed/compare/v4.4.5...v4.4.6
|
||||
[4.4.5]: https://github.com/oscarotero/Embed/compare/v4.4.4...v4.4.5
|
||||
[4.4.4]: https://github.com/oscarotero/Embed/compare/v4.4.3...v4.4.4
|
||||
[4.4.3]: https://github.com/oscarotero/Embed/compare/v4.4.2...v4.4.3
|
||||
[4.4.2]: https://github.com/oscarotero/Embed/compare/v4.4.1...v4.4.2
|
||||
[4.4.1]: https://github.com/oscarotero/Embed/compare/v4.4.0...v4.4.1
|
||||
[4.4.0]: https://github.com/oscarotero/Embed/compare/v4.3.5...v4.4.0
|
||||
[4.3.5]: https://github.com/oscarotero/Embed/compare/v4.3.4...v4.3.5
|
||||
[4.3.4]: https://github.com/oscarotero/Embed/compare/v4.3.3...v4.3.4
|
||||
[4.3.3]: https://github.com/oscarotero/Embed/compare/v4.3.2...v4.3.3
|
||||
[4.3.2]: https://github.com/oscarotero/Embed/compare/v4.3.1...v4.3.2
|
||||
[4.3.1]: https://github.com/oscarotero/Embed/compare/v4.3.0...v4.3.1
|
||||
[4.3.0]: https://github.com/oscarotero/Embed/compare/v4.2.7...v4.3.0
|
||||
[4.2.7]: https://github.com/oscarotero/Embed/compare/v4.2.6...v4.2.7
|
||||
[4.2.6]: https://github.com/oscarotero/Embed/compare/v4.2.5...v4.2.6
|
||||
[4.2.5]: https://github.com/oscarotero/Embed/compare/v4.2.4...v4.2.5
|
||||
[4.2.4]: https://github.com/oscarotero/Embed/compare/v4.2.3...v4.2.4
|
||||
[4.2.3]: https://github.com/oscarotero/Embed/compare/v4.2.2...v4.2.3
|
||||
[4.2.2]: https://github.com/oscarotero/Embed/compare/v4.2.1...v4.2.2
|
||||
[4.2.1]: https://github.com/oscarotero/Embed/compare/v4.2.0...v4.2.1
|
||||
[4.2.0]: https://github.com/oscarotero/Embed/compare/v4.1.1...v4.2.0
|
||||
[4.1.1]: https://github.com/oscarotero/Embed/compare/v4.1.0...v4.1.1
|
||||
[4.1.0]: https://github.com/oscarotero/Embed/compare/v4.0.0...v4.1.0
|
||||
[4.0.0]: https://github.com/oscarotero/Embed/releases/tag/v4.0.0
|
||||
21
vendor/embed/embed/LICENSE
vendored
Normal file
21
vendor/embed/embed/LICENSE
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2017 Oscar Otero Marzoa
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
360
vendor/embed/embed/README.md
vendored
Normal file
360
vendor/embed/embed/README.md
vendored
Normal file
@@ -0,0 +1,360 @@
|
||||
|
||||
# Embed
|
||||
|
||||
[![Latest Version on Packagist][ico-version]][link-packagist]
|
||||
[![Total Downloads][ico-downloads]][link-packagist]
|
||||
[![Monthly Downloads][ico-m-downloads]][link-packagist]
|
||||
[![Software License][ico-license]](LICENSE)
|
||||
|
||||
PHP library to get information from any web page (using oembed, opengraph, twitter-cards, scrapping the html, etc). It's compatible with any web service (youtube, vimeo, flickr, instagram, etc) and has adapters to some sites like (archive.org, github, facebook, etc).
|
||||
|
||||
Requirements:
|
||||
|
||||
* PHP 7.4+
|
||||
* Curl library installed
|
||||
* PSR-17 implementation. By default these libraries are detected automatically:
|
||||
* [laminas/laminas-diactoros](https://github.com/laminas/laminas-diactoros)
|
||||
* [guzzle/psr7](https://github.com/guzzle/psr7)
|
||||
* [nyholm/psr7](https://github.com/Nyholm/psr7)
|
||||
* [sunrise/http-message](https://github.com/sunrise-php/http-message)
|
||||
|
||||
> If you need PHP 5.5-7.3 support, [use the 3.x version](https://github.com/oscarotero/Embed/tree/v3.x)
|
||||
|
||||
## Online demo
|
||||
|
||||
http://oscarotero.com/embed/demo
|
||||
|
||||
## Video Tutorial
|
||||
[<img src="https://img.youtube.com/vi/4YCLRpKY1cs/0.jpg" width="250">](https://youtu.be/4YCLRpKY1cs)
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
This package is installable and autoloadable via Composer as [embed/embed](https://packagist.org/packages/embed/embed).
|
||||
|
||||
```
|
||||
$ composer require embed/embed
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
|
||||
$embed = new Embed();
|
||||
|
||||
//Load any url:
|
||||
$info = $embed->get('https://www.youtube.com/watch?v=PP1xn5wHtxE');
|
||||
|
||||
//Get content info
|
||||
|
||||
$info->title; //The page title
|
||||
$info->description; //The page description
|
||||
$info->url; //The canonical url
|
||||
$info->keywords; //The page keywords
|
||||
|
||||
$info->image; //The thumbnail or main image
|
||||
|
||||
$info->code->html; //The code to embed the image, video, etc
|
||||
$info->code->width; //The exact width of the embed code (if exists)
|
||||
$info->code->height; //The exact height of the embed code (if exists)
|
||||
$info->code->ratio; //The aspect ratio (width/height)
|
||||
|
||||
$info->authorName; //The resource author
|
||||
$info->authorUrl; //The author url
|
||||
|
||||
$info->cms; //The cms used
|
||||
$info->language; //The language of the page
|
||||
$info->languages; //The alternative languages
|
||||
|
||||
$info->providerName; //The provider name of the page (Youtube, Twitter, Instagram, etc)
|
||||
$info->providerUrl; //The provider url
|
||||
$info->icon; //The big icon of the site
|
||||
$info->favicon; //The favicon of the site (an .ico file or a png with up to 32x32px)
|
||||
|
||||
$info->publishedTime; //The published time of the resource
|
||||
$info->license; //The license url of the resource
|
||||
$info->feeds; //The RSS/Atom feeds
|
||||
```
|
||||
|
||||
## Parallel multiple requests
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
|
||||
$embed = new Embed();
|
||||
|
||||
//Load multiple urls asynchronously:
|
||||
$infos = $embed->getMulti(
|
||||
'https://www.youtube.com/watch?v=PP1xn5wHtxE',
|
||||
'https://twitter.com/carlosmeixidefl/status/1230894146220625933',
|
||||
'https://en.wikipedia.org/wiki/Tordoia',
|
||||
);
|
||||
|
||||
foreach ($infos as $info) {
|
||||
echo $info->title;
|
||||
}
|
||||
```
|
||||
|
||||
## Document
|
||||
|
||||
The document is the object that store the html code of the page. You can use it to extract extra info from the html code:
|
||||
|
||||
```php
|
||||
//Get the document object
|
||||
$document = $info->getDocument();
|
||||
|
||||
$document->link('image_src'); //Returns the href of a <link>
|
||||
$document->getDocument(); //Returns the DOMDocument instance
|
||||
$html = (string) $document; //Returns the html code
|
||||
|
||||
$document->select('.//h1'); //Search
|
||||
```
|
||||
|
||||
You can perform xpath queries in order to select specific elements. A search always return an instance of a `Embed\QueryResult`:
|
||||
|
||||
```php
|
||||
//Search the A elements
|
||||
$result = $document->select('.//a');
|
||||
|
||||
//Filter the results
|
||||
$result->filter(fn ($node) => $node->getAttribute('href'));
|
||||
|
||||
$id = $result->str('id'); //Return the id of the first result as string
|
||||
$text = $result->str(); //Return the content of the first result
|
||||
|
||||
$ids = $result->strAll('id'); //Return an array with the ids of all results as string
|
||||
$texts = $result->strAll(); //Return an array with the content of all results as string
|
||||
|
||||
$tabindex = $result->int('tabindex'); //Return the tabindex attribute of the first result as integer
|
||||
$number = $result->int(); //Return the content of the first result as integer
|
||||
|
||||
$href = $result->url('href'); //Return the href attribute of the first result as url (converts relative urls to absolutes)
|
||||
$url = $result->url(); //Return the content of the first result as url
|
||||
|
||||
$node = $result->node(); //Return the first node found (DOMElement)
|
||||
$nodes = $result->nodes(); //Return all nodes found
|
||||
```
|
||||
|
||||
## Metas
|
||||
|
||||
For convenience, the object `Metas` stores the value of all `<meta>` elements located in the html, so you can get the values easier. The key of every meta is get from the `name`, `property` or `itemprop` attributes and the value is get from `content`.
|
||||
|
||||
```php
|
||||
//Get the Metas object
|
||||
$metas = $info->getMetas();
|
||||
|
||||
$metas->all(); //Return all values
|
||||
$metas->get('og:title'); //Return a key value
|
||||
$metas->str('og:title'); //Return the value as string (remove html tags)
|
||||
$metas->html('og:description'); //Return the value as html
|
||||
$metas->int('og:video:width'); //Return the value as integer
|
||||
$metas->url('og:url'); //Return the value as full url (converts relative urls to absolutes)
|
||||
```
|
||||
|
||||
## OEmbed
|
||||
|
||||
In addition to the html and metas, this library uses [oEmbed](https://oembed.com/) endpoints to get additional data. You can get this data as following:
|
||||
|
||||
```php
|
||||
//Get the oEmbed object
|
||||
$oembed = $info->getOEmbed();
|
||||
|
||||
$oembed->all(); //Return all raw data
|
||||
$oembed->get('title'); //Return a key value
|
||||
$oembed->str('title'); //Return the value as string (remove html tags)
|
||||
$oembed->html('html'); //Return the value as html
|
||||
$oembed->int('width'); //Return the value as integer
|
||||
$oembed->url('url'); //Return the value as full url (converts relative urls to absolutes)
|
||||
```
|
||||
|
||||
Additional oEmbed parameters (like instagrams `hidecaption`) can also be provided:
|
||||
```php
|
||||
$embed = new Embed();
|
||||
|
||||
$result = $embed->get('https://www.instagram.com/p/B_C0wheCa4V/');
|
||||
$result->setSettings([
|
||||
'oembed:query_parameters' => ['hidecaption' => true]
|
||||
]);
|
||||
$oembed = $info->getOEmbed();
|
||||
```
|
||||
|
||||
## LinkedData
|
||||
|
||||
Another API available by default, used to extract info using the [JsonLD](https://www.w3.org/TR/json-ld/) schema.
|
||||
|
||||
```php
|
||||
//Get the linkedData object
|
||||
$ld = $info->getLinkedData();
|
||||
|
||||
$ld->all(); //Return all data
|
||||
$ld->get('name'); //Return a key value
|
||||
$ld->str('name'); //Return the value as string (remove html tags)
|
||||
$ld->html('description'); //Return the value as html
|
||||
$ld->int('width'); //Return the value as integer
|
||||
$ld->url('url'); //Return the value as full url (converts relative urls to absolutes)
|
||||
```
|
||||
|
||||
## Other APIs
|
||||
|
||||
Some sites like Wikipedia or Archive.org provide a custom API that is used to fetch more reliable data. You can get the API object with the method `getApi()` but note that not all results have this method. The Api object has the same methods than oEmbed:
|
||||
|
||||
```php
|
||||
//Get the API object
|
||||
$api = $info->getApi();
|
||||
|
||||
$api->all(); //Return all raw data
|
||||
$api->get('title'); //Return a key value
|
||||
$api->str('title'); //Return the value as string (remove html tags)
|
||||
$api->html('html'); //Return the value as html
|
||||
$api->int('width'); //Return the value as integer
|
||||
$api->url('url'); //Return the value as full url (converts relative urls to absolutes)
|
||||
```
|
||||
|
||||
## Extending Embed
|
||||
|
||||
Depending of your needs, you may want to extend this library with extra features or change the way it makes some operations.
|
||||
|
||||
### PSR
|
||||
|
||||
Embed use some PSR standards to be the most interoperable possible:
|
||||
|
||||
- [PSR-7](https://www.php-fig.org/psr/psr-7/) Standard interfaces to represent http requests, responses and uris
|
||||
- [PSR-17](https://www.php-fig.org/psr/psr-17/) Standard factories to create PSR-7 objects
|
||||
- [PSR-18](https://www.php-fig.org/psr/psr-18/) Standard interface to send a http request and return a response
|
||||
|
||||
Embed comes with a CURL client compatible with PSR-18 but you need to install a PSR-7 / PSR-17 library. [Here you can see a list of popular libraries](https://github.com/middlewares/awesome-psr15-middlewares#psr-7-implementations) and the library can detect automatically 'laminas\diactoros', 'guzzleHttp\psr7', 'slim\psr7', 'nyholm\psr7' and 'sunrise\http' (in this order). If you want to use a different PSR implementation, you can do it in this way:
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
use Embed\Http\Crawler;
|
||||
|
||||
$client = new CustomHttpClient();
|
||||
$requestFactory = new CustomRequestFactory();
|
||||
$uriFactory = new CustomUriFactory();
|
||||
|
||||
//The Crawler is responsible for perform http queries
|
||||
$crawler = new Crawler($client, $requestFactory, $uriFactory);
|
||||
|
||||
//Create an embed instance passing the Crawler
|
||||
$embed = new Embed($crawler);
|
||||
```
|
||||
|
||||
### Adapters
|
||||
|
||||
There are some sites with special needs: because they provide public APIs that allows to extract more info (like Wikipedia or Archive.org) or because we need to change how to extract the data in this particular site. For all that cases we have the adapters, that are classes extending the default classes to provide extra functionality.
|
||||
|
||||
Before creating an adapter, you need to understand how Embed work: when you execute this code, you get a `Extractor` class
|
||||
|
||||
```php
|
||||
//Get the Extractor with all info
|
||||
$info = $embed->get($url);
|
||||
|
||||
//The extractor have document and oembed:
|
||||
$document = $info->getDocument();
|
||||
$oembed = $info->getOEmbed();
|
||||
```
|
||||
|
||||
The `Extractor` class has many `Detectors`. Each detector is responsible to detect a specific piece of info. For example, there's a detector for the title, other for description, image, code, etc.
|
||||
|
||||
So, an adapter is basically an extractor created specifically for a site. It can contains also custom detectors or apis. If you see the `src/Adapters` folder you can see all adapters.
|
||||
|
||||
If you create an adapter, you need also register to Embed, so it knows in which website needs to use. To do that, there's the `ExtractorFactory` object, that is responsible for instantiate the right extractor for each site.
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
|
||||
$embed = new Embed();
|
||||
|
||||
$factory = $embed->getExtractorFactory();
|
||||
|
||||
//Use this MySite adapter for mysite.com
|
||||
$factory->addAdapter('mysite.com', MySite::class);
|
||||
|
||||
//Remove the adapter for pinterest.com, so it will use the default extractor
|
||||
$factory->removeAdapter('pinterest.com');
|
||||
|
||||
//Change the default extractor
|
||||
$factory->setDefault(CustomExtractor::class);
|
||||
```
|
||||
|
||||
### Detectors
|
||||
|
||||
Embed comes with several predefined detectors, but you may want to change or add more. Just create a class extending `Embed\Detectors\Detector` class and register it in the extractor factory. For example:
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
use Embed\Detectors\Detector;
|
||||
|
||||
class Robots extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$response = $this->extractor->getResponse();
|
||||
$metas = $this->extractor->getMetas();
|
||||
|
||||
return $response->getHeaderLine('x-robots-tag'),
|
||||
?: $metas->str('robots');
|
||||
}
|
||||
}
|
||||
|
||||
//Register the detector
|
||||
$embed = new Embed();
|
||||
$embed->getExtractorFactory()->addDetector('robots', Robots::class);
|
||||
|
||||
//Use it
|
||||
$info = $embed->get('http://example.com');
|
||||
$robots = $info->robots;
|
||||
```
|
||||
|
||||
### Settings
|
||||
|
||||
If you need to pass settings to the CurlClient to perform http queries:
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
use Embed\Http\Crawler;
|
||||
use Embed\Http\CurlClient;
|
||||
|
||||
$client = new CurlClient();
|
||||
$client->setSettings([
|
||||
'cookies_path' => $cookies_path,
|
||||
'ignored_errors' => [18],
|
||||
'max_redirs' => 3, // see CURLOPT_MAXREDIRS
|
||||
'connect_timeout' => 2, // see CURLOPT_CONNECTTIMEOUT
|
||||
'timeout' => 2, // see CURLOPT_TIMEOUT
|
||||
'ssl_verify_host' => 2, // see CURLOPT_SSL_VERIFYHOST
|
||||
'ssl_verify_peer' => 1, // see CURLOPT_SSL_VERIFYPEER
|
||||
'follow_location' => true, // see CURLOPT_FOLLOWLOCATION
|
||||
'user_agent' => 'Mozilla', // see CURLOPT_USERAGENT
|
||||
]);
|
||||
|
||||
$embed = new Embed(new Crawler($client));
|
||||
```
|
||||
|
||||
If you need to pass settings to your detectors, you can add settings to the `ExtractorFactory`:
|
||||
|
||||
```php
|
||||
use Embed\Embed;
|
||||
|
||||
$embed = new Embed();
|
||||
$embed->setSettings([
|
||||
'oembed:query_parameters' => [], //Extra parameters send to oembed
|
||||
'twitch:parent' => 'example.com', //Required to embed twitch videos as iframe
|
||||
'facebook:token' => '1234|5678', //Required to embed content from Facebook
|
||||
'instagram:token' => '1234|5678', //Required to embed content from Instagram
|
||||
'twitter:token' => 'asdf', //Improve the data from twitter
|
||||
]);
|
||||
$info = $embed->get($url);
|
||||
```
|
||||
|
||||
Note: The built-in detectors does not require settings. This feature is only for convenience if you create a specific detector that requires settings.
|
||||
|
||||
---
|
||||
|
||||
[ico-version]: https://poser.pugx.org/embed/embed/v/stable
|
||||
[ico-license]: https://poser.pugx.org/embed/embed/license
|
||||
[ico-downloads]: https://poser.pugx.org/embed/embed/downloads
|
||||
[ico-m-downloads]: https://poser.pugx.org/embed/embed/d/monthly
|
||||
|
||||
[link-packagist]: https://packagist.org/packages/embed/embed
|
||||
72
vendor/embed/embed/composer.json
vendored
Normal file
72
vendor/embed/embed/composer.json
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"name": "embed/embed",
|
||||
"type": "library",
|
||||
"description": "PHP library to retrieve page info using oembed, opengraph, etc",
|
||||
"keywords": [
|
||||
"oembed",
|
||||
"opengraph",
|
||||
"twitter cards",
|
||||
"embed",
|
||||
"embedly"
|
||||
],
|
||||
"homepage": "https://github.com/oscarotero/Embed",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Oscar Otero",
|
||||
"email": "oom@oscarotero.com",
|
||||
"homepage": "http://oscarotero.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"email": "oom@oscarotero.com",
|
||||
"issues": "https://github.com/oscarotero/Embed/issues"
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4|^8",
|
||||
"ext-curl": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-json": "*",
|
||||
"ext-mbstring": "*",
|
||||
"composer/ca-bundle": "^1.0",
|
||||
"oscarotero/html-parser": "^0.1.4",
|
||||
"psr/http-message": "^1.0|^2.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"psr/http-factory": "^1.0",
|
||||
"ml/json-ld": "^1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.0",
|
||||
"friendsofphp/php-cs-fixer": "^2.0",
|
||||
"nyholm/psr7": "^1.2",
|
||||
"oscarotero/php-cs-fixer-config": "^1.0",
|
||||
"brick/varexporter": "^0.3.1",
|
||||
"symfony/css-selector": "^5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/css-selector": "If you want to get elements using css selectors"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Embed\\": "src"
|
||||
},
|
||||
"files": [
|
||||
"src/functions.php"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Embed\\Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"demo": "php -S localhost:8888 demo/index.php",
|
||||
"test": "phpunit",
|
||||
"cs-fix": "php-cs-fixer fix",
|
||||
"update-resources": [
|
||||
"php scripts/update-oembed.php",
|
||||
"php scripts/update-suffix.php"
|
||||
]
|
||||
}
|
||||
}
|
||||
18
vendor/embed/embed/src/Adapters/Archive/Api.php
vendored
Normal file
18
vendor/embed/embed/src/Adapters/Archive/Api.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive;
|
||||
|
||||
use Embed\HttpApiTrait;
|
||||
|
||||
class Api
|
||||
{
|
||||
use HttpApiTrait;
|
||||
|
||||
protected function fetchData(): array
|
||||
{
|
||||
$this->endpoint = $this->extractor->getUri()->withQuery('output=json');
|
||||
|
||||
return $this->fetchJSON($this->endpoint);
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Archive/Detectors/AuthorName.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Archive/Detectors/AuthorName.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorName as Detector;
|
||||
|
||||
class AuthorName extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('metadata', 'creator')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
37
vendor/embed/embed/src/Adapters/Archive/Detectors/Code.php
vendored
Normal file
37
vendor/embed/embed/src/Adapters/Archive/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
$path = $uri->getPath();
|
||||
|
||||
if (!matchPath('/details/*', $path)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$src = $uri->withPath(str_replace('/details/', '/embed/', $path));
|
||||
$width = 640;
|
||||
$height = 480;
|
||||
|
||||
$html = html('iframe', [
|
||||
'src' => $src,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'style' => 'border:none',
|
||||
'frameborder' => 0,
|
||||
'allowTransparency' => 'true',
|
||||
]);
|
||||
|
||||
return new EmbedCode($html, $width, $height);
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Archive/Detectors/Description.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Archive/Detectors/Description.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive\Detectors;
|
||||
|
||||
use Embed\Detectors\Description as Detector;
|
||||
|
||||
class Description extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('metadata', 'extract')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
14
vendor/embed/embed/src/Adapters/Archive/Detectors/ProviderName.php
vendored
Normal file
14
vendor/embed/embed/src/Adapters/Archive/Detectors/ProviderName.php
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive\Detectors;
|
||||
|
||||
use Embed\Detectors\ProviderName as Detector;
|
||||
|
||||
class ProviderName extends Detector
|
||||
{
|
||||
public function detect(): string
|
||||
{
|
||||
return 'Internet Archive';
|
||||
}
|
||||
}
|
||||
20
vendor/embed/embed/src/Adapters/Archive/Detectors/PublishedTime.php
vendored
Normal file
20
vendor/embed/embed/src/Adapters/Archive/Detectors/PublishedTime.php
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive\Detectors;
|
||||
|
||||
use DateTime;
|
||||
use Embed\Detectors\PublishedTime as Detector;
|
||||
|
||||
class PublishedTime extends Detector
|
||||
{
|
||||
public function detect(): ?DateTime
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->time('metadata', 'publicdate')
|
||||
?: $api->time('metadata', 'addeddate')
|
||||
?: $api->time('metadata', 'date')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Archive/Detectors/Title.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Archive/Detectors/Title.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive\Detectors;
|
||||
|
||||
use Embed\Detectors\Title as Detector;
|
||||
|
||||
class Title extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('metadata', 'title')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
30
vendor/embed/embed/src/Adapters/Archive/Extractor.php
vendored
Normal file
30
vendor/embed/embed/src/Adapters/Archive/Extractor.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Archive;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
private Api $api;
|
||||
|
||||
public function getApi(): Api
|
||||
{
|
||||
return $this->api;
|
||||
}
|
||||
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
$this->api = new Api($this);
|
||||
|
||||
return [
|
||||
'title' => new Detectors\Title($this),
|
||||
'description' => new Detectors\Description($this),
|
||||
'code' => new Detectors\Code($this),
|
||||
'authorName' => new Detectors\AuthorName($this),
|
||||
'providerName' => new Detectors\ProviderName($this),
|
||||
'publishedTime' => new Detectors\PublishedTime($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
14
vendor/embed/embed/src/Adapters/Bandcamp/Detectors/ProviderName.php
vendored
Normal file
14
vendor/embed/embed/src/Adapters/Bandcamp/Detectors/ProviderName.php
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Bandcamp\Detectors;
|
||||
|
||||
use Embed\Detectors\ProviderName as Detector;
|
||||
|
||||
class ProviderName extends Detector
|
||||
{
|
||||
public function detect(): string
|
||||
{
|
||||
return 'Bandcamp';
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Bandcamp/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Bandcamp/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Bandcamp;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'providerName' => new Detectors\ProviderName($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
41
vendor/embed/embed/src/Adapters/CadenaSer/Detectors/Code.php
vendored
Normal file
41
vendor/embed/embed/src/Adapters/CadenaSer/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\CadenaSer\Detectors;
|
||||
|
||||
use function Embed\cleanPath;
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/audio/*', $uri->getPath())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$path = cleanPath('/widget/'.$uri->getPath());
|
||||
$src = $uri->withPath($path);
|
||||
|
||||
$html = html('iframe', [
|
||||
'src' => $src,
|
||||
'frameborder' => 0,
|
||||
'width' => '100%',
|
||||
'height' => '360',
|
||||
'allowTransparency' => 'true',
|
||||
]);
|
||||
|
||||
return new EmbedCode($html, null, 360);
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/CadenaSer/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/CadenaSer/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\CadenaSer;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
21
vendor/embed/embed/src/Adapters/Facebook/Detectors/Title.php
vendored
Normal file
21
vendor/embed/embed/src/Adapters/Facebook/Detectors/Title.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Facebook\Detectors;
|
||||
|
||||
use Embed\Detectors\Title as Detector;
|
||||
|
||||
class Title extends Detector
|
||||
{
|
||||
/**
|
||||
* Do not use og:title and twitter:title
|
||||
*/
|
||||
public function detect(): ?string
|
||||
{
|
||||
$document = $this->extractor->getDocument();
|
||||
$oembed = $this->extractor->getOEmbed();
|
||||
|
||||
return $oembed->str('title')
|
||||
?: $document->select('.//head/title')->str();
|
||||
}
|
||||
}
|
||||
18
vendor/embed/embed/src/Adapters/Facebook/Extractor.php
vendored
Normal file
18
vendor/embed/embed/src/Adapters/Facebook/Extractor.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Facebook;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
$this->oembed = new OEmbed($this);
|
||||
|
||||
return [
|
||||
'title' => new Detectors\Title($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
80
vendor/embed/embed/src/Adapters/Facebook/OEmbed.php
vendored
Normal file
80
vendor/embed/embed/src/Adapters/Facebook/OEmbed.php
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Facebook;
|
||||
|
||||
use Embed\OEmbed as Base;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class OEmbed extends Base
|
||||
{
|
||||
const ENDPOINT_PAGE = 'https://graph.facebook.com/v11.0/oembed_page';
|
||||
const ENDPOINT_POST = 'https://graph.facebook.com/v11.0/oembed_post';
|
||||
const ENDPOINT_VIDEO = 'https://graph.facebook.com/v11.0/oembed_video';
|
||||
|
||||
protected function detectEndpoint(): ?UriInterface
|
||||
{
|
||||
$token = $this->extractor->getSetting('facebook:token');
|
||||
|
||||
if (!$token) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$uri = $this->extractor->getUri();
|
||||
if (strpos($uri->getPath(), 'login') !== false) {
|
||||
parse_str($uri->getQuery(), $params);
|
||||
if (!empty($params['next'])) {
|
||||
$uri = $this->extractor->getCrawler()->createUri($params['next']);
|
||||
}
|
||||
}
|
||||
$queryParameters = $this->getOembedQueryParameters((string) $uri);
|
||||
$queryParameters['access_token'] = $token;
|
||||
|
||||
return $this->extractor->getCrawler()
|
||||
->createUri($this->getEndpointByPath($uri->getPath()))
|
||||
->withQuery(http_build_query($queryParameters));
|
||||
}
|
||||
|
||||
private function getEndpointByPath(string $path): string
|
||||
{
|
||||
/* Videos
|
||||
https://www.facebook.com/{page-name}/videos/{video-id}/
|
||||
https://www.facebook.com/{username}/videos/{video-id}/
|
||||
https://www.facebook.com/video.php?id={video-id}
|
||||
https://www.facebook.com/video.php?v={video-id}
|
||||
*/
|
||||
if (strpos($path, '/video.php') === 0
|
||||
|| strpos($path, '/videos/') !== false
|
||||
) {
|
||||
return self::ENDPOINT_VIDEO;
|
||||
}
|
||||
|
||||
/* Posts
|
||||
https://www.facebook.com/{page-name}/posts/{post-id}
|
||||
https://www.facebook.com/{username}/posts/{post-id}
|
||||
https://www.facebook.com/{username}/activity/{activity-id}
|
||||
https://www.facebook.com/photo.php?fbid={photo-id}
|
||||
https://www.facebook.com/photos/{photo-id}
|
||||
https://www.facebook.com/permalink.php?story_fbid={post-id}
|
||||
https://www.facebook.com/media/set?set={set-id}
|
||||
https://www.facebook.com/questions/{question-id}
|
||||
https://www.facebook.com/notes/{username}/{note-url}/{note-id}
|
||||
|
||||
Not in the facebook docs:
|
||||
https://www.facebook.com/{page-name}/photos/{post-id}/{photo-id}
|
||||
*/
|
||||
if (strpos($path, '/photo.php') === 0
|
||||
|| strpos($path, '/photos/') !== false
|
||||
|| strpos($path, '/permalink.php') === 0
|
||||
|| strpos($path, '/media/') === 0
|
||||
|| strpos($path, '/questions/') === 0
|
||||
|| strpos($path, '/notes/') === 0
|
||||
|| strpos($path, '/posts/') !== false
|
||||
|| strpos($path, '/activity/') !== false
|
||||
) {
|
||||
return self::ENDPOINT_POST;
|
||||
}
|
||||
|
||||
return self::ENDPOINT_PAGE;
|
||||
}
|
||||
}
|
||||
44
vendor/embed/embed/src/Adapters/Flickr/Detectors/Code.php
vendored
Normal file
44
vendor/embed/embed/src/Adapters/Flickr/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Flickr\Detectors;
|
||||
|
||||
use function Embed\cleanPath;
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/photos/*', $uri->getPath())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$path = cleanPath($uri->getPath().'/player');
|
||||
$src = $uri->withPath($path);
|
||||
$width = 640;
|
||||
$height = 425;
|
||||
|
||||
$html = html('iframe', [
|
||||
'src' => $src,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'style' => 'border:none',
|
||||
'frameborder' => 0,
|
||||
'allowTransparency' => 'true',
|
||||
]);
|
||||
|
||||
return new EmbedCode($html, $width, $height);
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Flickr/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Flickr/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Flickr;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
19
vendor/embed/embed/src/Adapters/Gist/Api.php
vendored
Normal file
19
vendor/embed/embed/src/Adapters/Gist/Api.php
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Gist;
|
||||
|
||||
use Embed\HttpApiTrait;
|
||||
|
||||
class Api
|
||||
{
|
||||
use HttpApiTrait;
|
||||
|
||||
protected function fetchData(): array
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
$this->endpoint = $uri->withPath($uri->getPath().'.json');
|
||||
|
||||
return $this->fetchJSON($this->endpoint);
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Gist/Detectors/AuthorName.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Gist/Detectors/AuthorName.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Gist\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorName as Detector;
|
||||
|
||||
class AuthorName extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('owner')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
22
vendor/embed/embed/src/Adapters/Gist/Detectors/AuthorUrl.php
vendored
Normal file
22
vendor/embed/embed/src/Adapters/Gist/Detectors/AuthorUrl.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Gist\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorUrl as Detector;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class AuthorUrl extends Detector
|
||||
{
|
||||
public function detect(): ?UriInterface
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
$owner = $api->str('owner');
|
||||
|
||||
if ($owner) {
|
||||
return $this->extractor->getCrawler()->createUri("https://github.com/{$owner}");
|
||||
}
|
||||
|
||||
return parent::detect();
|
||||
}
|
||||
}
|
||||
31
vendor/embed/embed/src/Adapters/Gist/Detectors/Code.php
vendored
Normal file
31
vendor/embed/embed/src/Adapters/Gist/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Gist\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
$code = $api->html('div');
|
||||
$stylesheet = $api->str('stylesheet');
|
||||
|
||||
if ($code && $stylesheet) {
|
||||
return new EmbedCode(
|
||||
html('link', ['rel' => 'stylesheet', 'href' => $stylesheet]).$code
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
vendor/embed/embed/src/Adapters/Gist/Detectors/PublishedTime.php
vendored
Normal file
18
vendor/embed/embed/src/Adapters/Gist/Detectors/PublishedTime.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Gist\Detectors;
|
||||
|
||||
use DateTime;
|
||||
use Embed\Detectors\PublishedTime as Detector;
|
||||
|
||||
class PublishedTime extends Detector
|
||||
{
|
||||
public function detect(): ?DateTime
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->time('created_at')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
28
vendor/embed/embed/src/Adapters/Gist/Extractor.php
vendored
Normal file
28
vendor/embed/embed/src/Adapters/Gist/Extractor.php
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Gist;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
private Api $api;
|
||||
|
||||
public function getApi(): Api
|
||||
{
|
||||
return $this->api;
|
||||
}
|
||||
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
$this->api = new Api($this);
|
||||
|
||||
return [
|
||||
'authorName' => new Detectors\AuthorName($this),
|
||||
'authorUrl' => new Detectors\AuthorUrl($this),
|
||||
'publishedTime' => new Detectors\PublishedTime($this),
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
47
vendor/embed/embed/src/Adapters/Github/Detectors/Code.php
vendored
Normal file
47
vendor/embed/embed/src/Adapters/Github/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Github\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
$path = $uri->getPath();
|
||||
|
||||
if (!matchPath('/*/*/blob/*', $path)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$dirs = explode('/', $path);
|
||||
|
||||
$username = $dirs[1];
|
||||
$repo = $dirs[2];
|
||||
$ref = $dirs[4];
|
||||
$file = implode('/', array_slice($dirs, 5));
|
||||
$extension = pathinfo($file, PATHINFO_EXTENSION);
|
||||
|
||||
switch ($extension) {
|
||||
case 'geojson':
|
||||
//https://help.github.com/articles/mapping-geojson-files-on-github/#embedding-your-map-elsewhere
|
||||
return new EmbedCode(html('script', ['src' => "https://embed.githubusercontent.com/view/geojson/{$username}/{$repo}/{$ref}/{$file}"]));
|
||||
case 'stl':
|
||||
//https://help.github.com/articles/3d-file-viewer/#embedding-your-model-elsewhere
|
||||
return new EmbedCode(html('script', ['src' => "https://embed.githubusercontent.com/view/3d/{$username}/{$repo}/{$ref}/{$file}"]));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Github/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Github/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Github;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
31
vendor/embed/embed/src/Adapters/Ideone/Detectors/Code.php
vendored
Normal file
31
vendor/embed/embed/src/Adapters/Ideone/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Ideone\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
$id = explode('/', $uri->getPath())[1];
|
||||
|
||||
if (empty($id)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EmbedCode(
|
||||
html('script', ['src' => "https://ideone.com/e.js/{$id}"])
|
||||
);
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Ideone/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Ideone/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Ideone;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
36
vendor/embed/embed/src/Adapters/ImageShack/Api.php
vendored
Normal file
36
vendor/embed/embed/src/Adapters/ImageShack/Api.php
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack;
|
||||
|
||||
use function Embed\getDirectory;
|
||||
use Embed\HttpApiTrait;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Api
|
||||
{
|
||||
use HttpApiTrait;
|
||||
|
||||
protected function fetchData(): array
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/i/*', $uri->getPath())) {
|
||||
$uri = $this->extractor->getRequest()->getUri();
|
||||
|
||||
if (!matchPath('/i/*', $uri->getPath())) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
$id = getDirectory($uri->getPath(), 1);
|
||||
|
||||
if (empty($id)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$this->endpoint = $this->extractor->getCrawler()->createUri("https://api.imageshack.com/v2/images/{$id}");
|
||||
$data = $this->fetchJSON($this->endpoint);
|
||||
return $data['result'] ?? [];
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/ImageShack/Detectors/AuthorName.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/ImageShack/Detectors/AuthorName.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorName as Detector;
|
||||
|
||||
class AuthorName extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('owner', 'username')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
22
vendor/embed/embed/src/Adapters/ImageShack/Detectors/AuthorUrl.php
vendored
Normal file
22
vendor/embed/embed/src/Adapters/ImageShack/Detectors/AuthorUrl.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorUrl as Detector;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class AuthorUrl extends Detector
|
||||
{
|
||||
public function detect(): ?UriInterface
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
$owner = $api->str('owner', 'username');
|
||||
|
||||
if ($owner) {
|
||||
return $this->extractor->getCrawler()->createUri("https://imageshack.com/{$owner}");
|
||||
}
|
||||
|
||||
return parent::detect();
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/ImageShack/Detectors/Description.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/ImageShack/Detectors/Description.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use Embed\Detectors\Description as Detector;
|
||||
|
||||
class Description extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('description')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
18
vendor/embed/embed/src/Adapters/ImageShack/Detectors/Image.php
vendored
Normal file
18
vendor/embed/embed/src/Adapters/ImageShack/Detectors/Image.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use Embed\Detectors\Image as Detector;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class Image extends Detector
|
||||
{
|
||||
public function detect(): ?UriInterface
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->url('direct_link')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
14
vendor/embed/embed/src/Adapters/ImageShack/Detectors/ProviderName.php
vendored
Normal file
14
vendor/embed/embed/src/Adapters/ImageShack/Detectors/ProviderName.php
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use Embed\Detectors\ProviderName as Detector;
|
||||
|
||||
class ProviderName extends Detector
|
||||
{
|
||||
public function detect(): string
|
||||
{
|
||||
return 'ImageShack';
|
||||
}
|
||||
}
|
||||
18
vendor/embed/embed/src/Adapters/ImageShack/Detectors/PublishedTime.php
vendored
Normal file
18
vendor/embed/embed/src/Adapters/ImageShack/Detectors/PublishedTime.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use DateTime;
|
||||
use Embed\Detectors\PublishedTime as Detector;
|
||||
|
||||
class PublishedTime extends Detector
|
||||
{
|
||||
public function detect(): ?DateTime
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->time('creation_date')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/ImageShack/Detectors/Title.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/ImageShack/Detectors/Title.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack\Detectors;
|
||||
|
||||
use Embed\Detectors\Title as Detector;
|
||||
|
||||
class Title extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('title')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
31
vendor/embed/embed/src/Adapters/ImageShack/Extractor.php
vendored
Normal file
31
vendor/embed/embed/src/Adapters/ImageShack/Extractor.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\ImageShack;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
private Api $api;
|
||||
|
||||
public function getApi(): Api
|
||||
{
|
||||
return $this->api;
|
||||
}
|
||||
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
$this->api = new Api($this);
|
||||
|
||||
return [
|
||||
'authorName' => new Detectors\AuthorName($this),
|
||||
'authorUrl' => new Detectors\AuthorUrl($this),
|
||||
'description' => new Detectors\Description($this),
|
||||
'image' => new Detectors\Image($this),
|
||||
'providerName' => new Detectors\ProviderName($this),
|
||||
'publishedTime' => new Detectors\PublishedTime($this),
|
||||
'title' => new Detectors\Title($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
20
vendor/embed/embed/src/Adapters/Instagram/Extractor.php
vendored
Normal file
20
vendor/embed/embed/src/Adapters/Instagram/Extractor.php
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Instagram;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
use Embed\Http\Crawler;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function __construct(UriInterface $uri, RequestInterface $request, ResponseInterface $response, Crawler $crawler)
|
||||
{
|
||||
parent::__construct($uri, $request, $response, $crawler);
|
||||
|
||||
$this->oembed = new OEmbed($this);
|
||||
}
|
||||
}
|
||||
33
vendor/embed/embed/src/Adapters/Instagram/OEmbed.php
vendored
Normal file
33
vendor/embed/embed/src/Adapters/Instagram/OEmbed.php
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Instagram;
|
||||
|
||||
use Embed\OEmbed as Base;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class OEmbed extends Base
|
||||
{
|
||||
const ENDPOINT = 'https://graph.facebook.com/v8.0/instagram_oembed';
|
||||
|
||||
protected function detectEndpoint(): ?UriInterface
|
||||
{
|
||||
$token = $this->extractor->getSetting('instagram:token');
|
||||
|
||||
if (!$token) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$uri = $this->extractor->getUri();
|
||||
if (strpos($uri->getPath(), 'login') !== false) {
|
||||
$uri = $this->extractor->getRequest()->getUri();
|
||||
}
|
||||
|
||||
$queryParameters = $this->getOembedQueryParameters((string) $uri);
|
||||
$queryParameters['access_token'] = $token;
|
||||
|
||||
return $this->extractor->getCrawler()
|
||||
->createUri(self::ENDPOINT)
|
||||
->withQuery(http_build_query($queryParameters));
|
||||
}
|
||||
}
|
||||
41
vendor/embed/embed/src/Adapters/Pinterest/Detectors/Code.php
vendored
Normal file
41
vendor/embed/embed/src/Adapters/Pinterest/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Pinterest\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/pin/*', $uri->getPath())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$html = [
|
||||
html('a', [
|
||||
'data-pin-do' => 'embedPin',
|
||||
'href' => $uri,
|
||||
]),
|
||||
html('script', [
|
||||
'async' => true,
|
||||
'defer' => true,
|
||||
'src' => '//assets.pinterest.com/js/pinit.js',
|
||||
]),
|
||||
];
|
||||
|
||||
return new EmbedCode(implode('', $html), 236, 442);
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Pinterest/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Pinterest/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Pinterest;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
45
vendor/embed/embed/src/Adapters/Sassmeister/Detectors/Code.php
vendored
Normal file
45
vendor/embed/embed/src/Adapters/Sassmeister/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Sassmeister\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/gist/*', $uri->getPath())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$id = explode('/', $uri->getPath())[2];
|
||||
$height = 480;
|
||||
|
||||
$html = [
|
||||
html('p', [
|
||||
'class' => 'sassmeister',
|
||||
'data-gist-id' => $id,
|
||||
'data-height' => $height,
|
||||
'data-theme' => 'tomorrow',
|
||||
], '<a href="http://sassmeister.com/gist/'.$id.'">Play with this gist on SassMeister.</a>'),
|
||||
html('script', [
|
||||
'src' => 'http://cdn.sassmeister.com/js/embed.js',
|
||||
'async' => true,
|
||||
]),
|
||||
];
|
||||
|
||||
return new EmbedCode(implode('', $html), null, $height);
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Sassmeister/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Sassmeister/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Sassmeister;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
39
vendor/embed/embed/src/Adapters/Slides/Detectors/Code.php
vendored
Normal file
39
vendor/embed/embed/src/Adapters/Slides/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Slides\Detectors;
|
||||
|
||||
use function Embed\cleanPath;
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
$path = cleanPath($uri->getPath().'/embed');
|
||||
$src = $uri->withPath($path);
|
||||
$width = 576;
|
||||
$height = 420;
|
||||
|
||||
$html = html('iframe', [
|
||||
'src' => $src,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'style' => 'border:none',
|
||||
'frameborder' => 0,
|
||||
'allowTransparency' => 'true',
|
||||
]);
|
||||
|
||||
return new EmbedCode($html, $width, $height);
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Slides/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Slides/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Slides;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
46
vendor/embed/embed/src/Adapters/Snipplr/Detectors/Code.php
vendored
Normal file
46
vendor/embed/embed/src/Adapters/Snipplr/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Snipplr\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/view/*', $uri->getPath())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$id = explode('/', $uri->getPath())[2];
|
||||
|
||||
$html = [
|
||||
html('div', [
|
||||
'id' => "snipplr_embed_{$id}",
|
||||
'class' => 'snipplr_embed',
|
||||
], '<a target="blank" href="https://snipplr.com/view/'.$id.'">View this snippet</a> on Snipplr'),
|
||||
html('script', [
|
||||
'type' => 'text/javascript',
|
||||
'src' => 'https://snipplr.com/js/embed.js',
|
||||
]),
|
||||
html('script', [
|
||||
'type' => 'text/javascript',
|
||||
'src' => "https://snipplr.com/json/{$id}",
|
||||
]),
|
||||
];
|
||||
|
||||
return new EmbedCode(implode('', $html));
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Snipplr/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Snipplr/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Snipplr;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
82
vendor/embed/embed/src/Adapters/Twitch/Detectors/Code.php
vendored
Normal file
82
vendor/embed/embed/src/Adapters/Twitch/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitch\Detectors;
|
||||
|
||||
use Embed\Detectors\Code as Detector;
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): ?EmbedCode
|
||||
{
|
||||
$path = $this->extractor->getUri()->getPath();
|
||||
$parent = $this->extractor->getSetting('twitch:parent');
|
||||
|
||||
if ($id = self::getVideoId($path)) {
|
||||
$code = $parent
|
||||
? self::generateIframeCode(['id' => $id, 'parent' => $parent])
|
||||
: self::generateJsCode('video', $id);
|
||||
return new EmbedCode($code, 620, 378);
|
||||
}
|
||||
|
||||
if ($id = self::getChannelId($path)) {
|
||||
$code = $parent
|
||||
? self::generateIframeCode(['channel' => $id, 'parent' => $parent])
|
||||
: self::generateJsCode('channel', $id);
|
||||
return new EmbedCode($code, 620, 378);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function getVideoId(string $path): ?string
|
||||
{
|
||||
if (preg_match('#^/videos/(\d+)$#', $path, $matches)) {
|
||||
return $matches[1];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function getChannelId(string $path): ?string
|
||||
{
|
||||
if (preg_match('#^/(\w+)$#', $path, $matches)) {
|
||||
return $matches[1];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function generateIframeCode(array $params): string
|
||||
{
|
||||
$query = http_build_query(['autoplay' => 'false'] + $params);
|
||||
|
||||
return html('iframe', [
|
||||
'src' => "https://player.twitch.tv/?{$query}",
|
||||
'frameborder' => 0,
|
||||
'allowfullscreen' => 'true',
|
||||
'scrolling' => 'no',
|
||||
'height' => 378,
|
||||
'width' => 620,
|
||||
]);
|
||||
}
|
||||
|
||||
private static function generateJsCode($key, $value)
|
||||
{
|
||||
return <<<HTML
|
||||
<div id="twitch-embed"></div>
|
||||
<script src="https://player.twitch.tv/js/embed/v1.js"></script>
|
||||
<script type="text/javascript">
|
||||
new Twitch.Player("twitch-embed", { {$key}: "{$value}" });
|
||||
</script>
|
||||
HTML;
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Twitch/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Twitch/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitch;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'code' => new Detectors\Code($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
34
vendor/embed/embed/src/Adapters/Twitter/Api.php
vendored
Normal file
34
vendor/embed/embed/src/Adapters/Twitter/Api.php
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter;
|
||||
|
||||
use function Embed\getDirectory;
|
||||
use Embed\HttpApiTrait;
|
||||
|
||||
class Api
|
||||
{
|
||||
use HttpApiTrait;
|
||||
|
||||
protected function fetchData(): array
|
||||
{
|
||||
$token = $this->extractor->getSetting('twitter:token');
|
||||
|
||||
if (!$token) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
$id = getDirectory($uri->getPath(), 2);
|
||||
|
||||
if (empty($id)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$this->extractor->getCrawler()->addDefaultHeaders(array('Authorization' => "Bearer $token"));
|
||||
$this->endpoint = $this->extractor->getCrawler()->createUri("https://api.twitter.com/2/tweets/{$id}?expansions=author_id,attachments.media_keys&tweet.fields=created_at&media.fields=preview_image_url,url&user.fields=id,name");
|
||||
|
||||
return $this->fetchJSON($this->endpoint);
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Twitter/Detectors/AuthorName.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Twitter/Detectors/AuthorName.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorName as Detector;
|
||||
|
||||
class AuthorName extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('includes', 'users', '0', 'name')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
22
vendor/embed/embed/src/Adapters/Twitter/Detectors/AuthorUrl.php
vendored
Normal file
22
vendor/embed/embed/src/Adapters/Twitter/Detectors/AuthorUrl.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use Embed\Detectors\AuthorUrl as Detector;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class AuthorUrl extends Detector
|
||||
{
|
||||
public function detect(): ?UriInterface
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
$username = $api->str('includes', 'users', '0', 'username');
|
||||
|
||||
if ($username) {
|
||||
return $this->extractor->getCrawler()->createUri("https://twitter.com/{$username}");
|
||||
}
|
||||
|
||||
return parent::detect();
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Twitter/Detectors/Description.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Twitter/Detectors/Description.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use Embed\Detectors\Description as Detector;
|
||||
|
||||
class Description extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('data', 'text')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
28
vendor/embed/embed/src/Adapters/Twitter/Detectors/Image.php
vendored
Normal file
28
vendor/embed/embed/src/Adapters/Twitter/Detectors/Image.php
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use Embed\Detectors\Image as Detector;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class Image extends Detector
|
||||
{
|
||||
public function detect(): ?UriInterface
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
$preview = $api->url('includes', 'media', '0', 'preview_image_url');
|
||||
|
||||
if ($preview) {
|
||||
return $preview;
|
||||
}
|
||||
|
||||
$regular = $api->url('includes', 'media', '0', 'url');
|
||||
|
||||
if ($regular) {
|
||||
return $regular;
|
||||
}
|
||||
|
||||
return parent::detect();
|
||||
}
|
||||
}
|
||||
14
vendor/embed/embed/src/Adapters/Twitter/Detectors/ProviderName.php
vendored
Normal file
14
vendor/embed/embed/src/Adapters/Twitter/Detectors/ProviderName.php
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use Embed\Detectors\ProviderName as Detector;
|
||||
|
||||
class ProviderName extends Detector
|
||||
{
|
||||
public function detect(): string
|
||||
{
|
||||
return 'Twitter';
|
||||
}
|
||||
}
|
||||
18
vendor/embed/embed/src/Adapters/Twitter/Detectors/PublishedTime.php
vendored
Normal file
18
vendor/embed/embed/src/Adapters/Twitter/Detectors/PublishedTime.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use DateTime;
|
||||
use Embed\Detectors\PublishedTime as Detector;
|
||||
|
||||
class PublishedTime extends Detector
|
||||
{
|
||||
public function detect(): ?DateTime
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->time('data', 'created_at')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
21
vendor/embed/embed/src/Adapters/Twitter/Detectors/Title.php
vendored
Normal file
21
vendor/embed/embed/src/Adapters/Twitter/Detectors/Title.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter\Detectors;
|
||||
|
||||
use Embed\Detectors\Title as Detector;
|
||||
|
||||
class Title extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
$name = $api->str('includes', 'users', '0', 'name');
|
||||
|
||||
if ($name) {
|
||||
return "Tweet by $name";
|
||||
}
|
||||
|
||||
return parent::detect();
|
||||
}
|
||||
}
|
||||
31
vendor/embed/embed/src/Adapters/Twitter/Extractor.php
vendored
Normal file
31
vendor/embed/embed/src/Adapters/Twitter/Extractor.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Twitter;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
private Api $api;
|
||||
|
||||
public function getApi(): Api
|
||||
{
|
||||
return $this->api;
|
||||
}
|
||||
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
$this->api = new Api($this);
|
||||
|
||||
return [
|
||||
'authorName' => new Detectors\AuthorName($this),
|
||||
'authorUrl' => new Detectors\AuthorUrl($this),
|
||||
'description' => new Detectors\Description($this),
|
||||
'image' => new Detectors\Image($this),
|
||||
'providerName' => new Detectors\ProviderName($this),
|
||||
'publishedTime' => new Detectors\PublishedTime($this),
|
||||
'title' => new Detectors\Title($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
40
vendor/embed/embed/src/Adapters/Wikipedia/Api.php
vendored
Normal file
40
vendor/embed/embed/src/Adapters/Wikipedia/Api.php
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Wikipedia;
|
||||
|
||||
use function Embed\getDirectory;
|
||||
use Embed\HttpApiTrait;
|
||||
use function Embed\matchPath;
|
||||
|
||||
class Api
|
||||
{
|
||||
use HttpApiTrait;
|
||||
|
||||
protected function fetchData(): array
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/wiki/*', $uri->getPath())) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$titles = getDirectory($uri->getPath(), 1);
|
||||
|
||||
$this->endpoint = $uri
|
||||
->withPath('/w/api.php')
|
||||
->withQuery(http_build_query([
|
||||
'action' => 'query',
|
||||
'format' => 'json',
|
||||
'continue' => '',
|
||||
'titles' => $titles,
|
||||
'prop' => 'extracts',
|
||||
'exchars' => 1000,
|
||||
]));
|
||||
|
||||
$data = $this->fetchJSON($this->endpoint);
|
||||
$pages = $data['query']['pages'] ?? null;
|
||||
|
||||
return $pages ? current($pages) : null;
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Wikipedia/Detectors/Description.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Wikipedia/Detectors/Description.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Wikipedia\Detectors;
|
||||
|
||||
use Embed\Detectors\Description as Detector;
|
||||
|
||||
class Description extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('extract')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
17
vendor/embed/embed/src/Adapters/Wikipedia/Detectors/Title.php
vendored
Normal file
17
vendor/embed/embed/src/Adapters/Wikipedia/Detectors/Title.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Wikipedia\Detectors;
|
||||
|
||||
use Embed\Detectors\Title as Detector;
|
||||
|
||||
class Title extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$api = $this->extractor->getApi();
|
||||
|
||||
return $api->str('title')
|
||||
?: parent::detect();
|
||||
}
|
||||
}
|
||||
26
vendor/embed/embed/src/Adapters/Wikipedia/Extractor.php
vendored
Normal file
26
vendor/embed/embed/src/Adapters/Wikipedia/Extractor.php
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Wikipedia;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
private Api $api;
|
||||
|
||||
public function getApi(): Api
|
||||
{
|
||||
return $this->api;
|
||||
}
|
||||
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
$this->api = new Api($this);
|
||||
|
||||
return [
|
||||
'title' => new Detectors\Title($this),
|
||||
'description' => new Detectors\Description($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
35
vendor/embed/embed/src/Adapters/Youtube/Detectors/Feeds.php
vendored
Normal file
35
vendor/embed/embed/src/Adapters/Youtube/Detectors/Feeds.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Youtube\Detectors;
|
||||
|
||||
use Embed\Detectors\Feeds as Detector;
|
||||
use function Embed\getDirectory;
|
||||
use function Embed\matchPath;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class Feeds extends Detector
|
||||
{
|
||||
/**
|
||||
* @return UriInterface[]
|
||||
*/
|
||||
public function detect(): array
|
||||
{
|
||||
return parent::detect()
|
||||
?: $this->fallback();
|
||||
}
|
||||
|
||||
private function fallback(): array
|
||||
{
|
||||
$uri = $this->extractor->getUri();
|
||||
|
||||
if (!matchPath('/channel/*', $uri->getPath())) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$id = getDirectory($uri->getPath(), 1);
|
||||
$feed = $this->extractor->getCrawler()->createUri("https://www.youtube.com/feeds/videos.xml?channel_id={$id}");
|
||||
|
||||
return [$feed];
|
||||
}
|
||||
}
|
||||
16
vendor/embed/embed/src/Adapters/Youtube/Extractor.php
vendored
Normal file
16
vendor/embed/embed/src/Adapters/Youtube/Extractor.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Adapters\Youtube;
|
||||
|
||||
use Embed\Extractor as Base;
|
||||
|
||||
class Extractor extends Base
|
||||
{
|
||||
public function createCustomDetectors(): array
|
||||
{
|
||||
return [
|
||||
'feeds' => new Detectors\Feeds($this),
|
||||
];
|
||||
}
|
||||
}
|
||||
107
vendor/embed/embed/src/ApiTrait.php
vendored
Normal file
107
vendor/embed/embed/src/ApiTrait.php
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed;
|
||||
|
||||
use DateTime;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
use Throwable;
|
||||
|
||||
trait ApiTrait
|
||||
{
|
||||
protected Extractor $extractor;
|
||||
private array $data;
|
||||
|
||||
public function __construct(Extractor $extractor)
|
||||
{
|
||||
$this->extractor = $extractor;
|
||||
}
|
||||
|
||||
public function all(): array
|
||||
{
|
||||
if (!isset($this->data)) {
|
||||
$this->data = $this->fetchData();
|
||||
}
|
||||
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
public function get(string ...$keys)
|
||||
{
|
||||
$data = $this->all();
|
||||
|
||||
foreach ($keys as $key) {
|
||||
if (!isset($data[$key])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$data = $data[$key];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function str(string ...$keys): ?string
|
||||
{
|
||||
$value = $this->get(...$keys);
|
||||
|
||||
if (is_array($value)) {
|
||||
$value = array_shift($value);
|
||||
}
|
||||
|
||||
return $value ? clean((string) $value) : null;
|
||||
}
|
||||
|
||||
public function strAll(string ...$keys): array
|
||||
{
|
||||
$all = (array) $this->get(...$keys);
|
||||
return array_filter(array_map(fn ($value) => clean($value), $all));
|
||||
}
|
||||
|
||||
public function html(string ...$keys): ?string
|
||||
{
|
||||
$value = $this->get(...$keys);
|
||||
|
||||
if (is_array($value)) {
|
||||
$value = array_shift($value);
|
||||
}
|
||||
|
||||
return $value ? clean((string) $value, true) : null;
|
||||
}
|
||||
|
||||
public function int(string ...$keys): ?int
|
||||
{
|
||||
$value = $this->get(...$keys);
|
||||
|
||||
if (is_array($value)) {
|
||||
$value = array_shift($value);
|
||||
}
|
||||
|
||||
return is_numeric($value) ? (int) $value : null;
|
||||
}
|
||||
|
||||
public function url(string ...$keys): ?UriInterface
|
||||
{
|
||||
$url = $this->str(...$keys);
|
||||
|
||||
try {
|
||||
return $url ? $this->extractor->resolveUri($url) : null;
|
||||
} catch (Throwable $error) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public function time(string ...$keys): ?DateTime
|
||||
{
|
||||
$time = $this->str(...$keys);
|
||||
$datetime = $time ? date_create($time) : null;
|
||||
|
||||
if (!$datetime && $time && ctype_digit($time)) {
|
||||
$datetime = date_create_from_format('U', $time);
|
||||
}
|
||||
|
||||
return ($datetime && $datetime->getTimestamp() > 0) ? $datetime : null;
|
||||
}
|
||||
|
||||
abstract protected function fetchData(): array;
|
||||
}
|
||||
24
vendor/embed/embed/src/Detectors/AuthorName.php
vendored
Normal file
24
vendor/embed/embed/src/Detectors/AuthorName.php
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Detectors;
|
||||
|
||||
class AuthorName extends Detector
|
||||
{
|
||||
public function detect(): ?string
|
||||
{
|
||||
$oembed = $this->extractor->getOEmbed();
|
||||
$metas = $this->extractor->getMetas();
|
||||
|
||||
return $oembed->str('author_name')
|
||||
?: $metas->str(
|
||||
'article:author',
|
||||
'book:author',
|
||||
'sailthru.author',
|
||||
'lp.article:author',
|
||||
'twitter:creator',
|
||||
'dcterms.creator',
|
||||
'author'
|
||||
);
|
||||
}
|
||||
}
|
||||
29
vendor/embed/embed/src/Detectors/AuthorUrl.php
vendored
Normal file
29
vendor/embed/embed/src/Detectors/AuthorUrl.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Detectors;
|
||||
|
||||
use Psr\Http\Message\UriInterface;
|
||||
|
||||
class AuthorUrl extends Detector
|
||||
{
|
||||
public function detect(): ?UriInterface
|
||||
{
|
||||
$oembed = $this->extractor->getOEmbed();
|
||||
|
||||
return $oembed->url('author_url')
|
||||
?: $this->detectFromTwitter();
|
||||
}
|
||||
|
||||
private function detectFromTwitter(): ?UriInterface
|
||||
{
|
||||
$metas = $this->extractor->getMetas();
|
||||
$crawler = $this->extractor->getCrawler();
|
||||
|
||||
$user = $metas->str('twitter:creator');
|
||||
|
||||
return $user
|
||||
? $crawler->createUri(sprintf('https://twitter.com/%s', ltrim($user, '@')))
|
||||
: null;
|
||||
}
|
||||
}
|
||||
68
vendor/embed/embed/src/Detectors/Cms.php
vendored
Normal file
68
vendor/embed/embed/src/Detectors/Cms.php
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Detectors;
|
||||
|
||||
class Cms extends Detector
|
||||
{
|
||||
public const BLOGSPOT = 'blogspot';
|
||||
public const WORDPRESS = 'wordpress';
|
||||
public const MEDIAWIKI = 'mediawiki';
|
||||
public const OPENNEMAS = 'opennemas';
|
||||
|
||||
public function detect(): ?string
|
||||
{
|
||||
$cms = self::detectFromHost($this->extractor->url->getHost());
|
||||
|
||||
if ($cms) {
|
||||
return $cms;
|
||||
}
|
||||
|
||||
$document = $this->extractor->getDocument();
|
||||
$generators = $document->select('.//meta', ['name' => 'generator'])->strAll('content');
|
||||
|
||||
foreach ($generators as $generator) {
|
||||
if ($cms = self::detectFromGenerator($generator)) {
|
||||
return $cms;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function detectFromHost(string $host): ?string
|
||||
{
|
||||
if (strpos($host, '.blogspot.com') !== false) {
|
||||
return self::BLOGSPOT;
|
||||
}
|
||||
|
||||
if (strpos($host, '.wordpress.com') !== false) {
|
||||
return self::WORDPRESS;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function detectFromGenerator(string $generator): ?string
|
||||
{
|
||||
$generator = strtolower($generator);
|
||||
|
||||
if ($generator === 'blogger') {
|
||||
return self::BLOGSPOT;
|
||||
}
|
||||
|
||||
if (strpos($generator, 'mediawiki') === 0) {
|
||||
return self::MEDIAWIKI;
|
||||
}
|
||||
|
||||
if (strpos($generator, 'wordpress') === 0) {
|
||||
return self::WORDPRESS;
|
||||
}
|
||||
|
||||
if (strpos($generator, 'opennemas') === 0) {
|
||||
return self::OPENNEMAS;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
142
vendor/embed/embed/src/Detectors/Code.php
vendored
Normal file
142
vendor/embed/embed/src/Detectors/Code.php
vendored
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace Embed\Detectors;
|
||||
|
||||
use Embed\EmbedCode;
|
||||
use function Embed\html;
|
||||
|
||||
class Code extends Detector
|
||||
{
|
||||
public function detect(): ?EmbedCode
|
||||
{
|
||||
return $this->detectFromEmbed()
|
||||
?: $this->detectFromOpenGraph()
|
||||
?: $this->detectFromTwitter()
|
||||
?: $this->detectFromContentType();
|
||||
}
|
||||
|
||||
private function detectFromEmbed(): ?EmbedCode
|
||||
{
|
||||
$oembed = $this->extractor->getOEmbed();
|
||||
$html = $oembed->html('html');
|
||||
|
||||
if (!$html) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EmbedCode(
|
||||
$html,
|
||||
$oembed->int('width'),
|
||||
$oembed->int('height')
|
||||
);
|
||||
}
|
||||
|
||||
private function detectFromOpenGraph(): ?EmbedCode
|
||||
{
|
||||
$metas = $this->extractor->getMetas();
|
||||
|
||||
$url = $metas->url('og:video:secure_url', 'og:video:url', 'og:video');
|
||||
|
||||
if (!$url) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!($type = pathinfo($url->getPath(), PATHINFO_EXTENSION))) {
|
||||
$type = $metas->str('og:video_type');
|
||||
}
|
||||
|
||||
$width = $metas->int('twitter:player:width');
|
||||
$height = $metas->int('twitter:player:height');
|
||||
|
||||
switch ($type) {
|
||||
case 'swf':
|
||||
case 'application/x-shockwave-flash':
|
||||
return null; //Ignore flash
|
||||
case 'mp4':
|
||||
case 'ogg':
|
||||
case 'ogv':
|
||||
case 'webm':
|
||||
case 'application/mp4':
|
||||
case 'video/mp4':
|
||||
case 'video/ogg':
|
||||
case 'video/ogv':
|
||||
case 'video/webm':
|
||||
$code = html('video', [
|
||||
'src' => $url,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
]);
|
||||
break;
|
||||
default:
|
||||
$code = html('iframe', [
|
||||
'src' => $url,
|
||||
'frameborder' => 0,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'allowTransparency' => 'true',
|
||||
]);
|
||||
}
|
||||
|
||||
return new EmbedCode($code, $width, $height);
|
||||
}
|
||||
|
||||
private function detectFromTwitter(): ?EmbedCode
|
||||
{
|
||||
$metas = $this->extractor->getMetas();
|
||||
|
||||
$url = $metas->url('twitter:player');
|
||||
|
||||
if (!$url) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$width = $metas->int('twitter:player:width');
|
||||
$height = $metas->int('twitter:player:height');
|
||||
|
||||
$code = html('iframe', [
|
||||
'src' => $url,
|
||||
'frameborder' => 0,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'allowTransparency' => 'true',
|
||||
]);
|
||||
|
||||
return new EmbedCode($code, $width, $height);
|
||||
}
|
||||
|
||||
private function detectFromContentType()
|
||||
{
|
||||
if (!$this->extractor->getResponse()->hasHeader('content-type')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$contentType = $this->extractor->getResponse()->getHeader('content-type')[0];
|
||||
$isBinary = !preg_match('/(text|html|json)/', strtolower($contentType));
|
||||
if (!$isBinary) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$url = $this->extractor->getRequest()->getUri();
|
||||
|
||||
if (strpos($contentType, 'video/') === 0 || $contentType === 'application/mp4') {
|
||||
$code = html('video', [
|
||||
'src' => $url,
|
||||
'controls' => true,
|
||||
]);
|
||||
} elseif (strpos($contentType, 'audio/') === 0) {
|
||||
$code = html('audio', [
|
||||
'src' => $url,
|
||||
'controls' => true,
|
||||
]);
|
||||
} elseif (strpos($contentType, 'image/') === 0) {
|
||||
$code = html('img', [
|
||||
'src' => $url,
|
||||
]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EmbedCode($code);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user