- * @return bool TRUE on success.
- */
- public function pingImageBlob ($image) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Get basic image attributes in a lightweight manner
- * @link https://php.net/manual/en/imagick.pingimagefile.php
- * @param resource $filehandle
- * An open filehandle to the image.
- *
- * @param string $fileName [optional]
- * Optional filename for this image.
- *
- * @return bool TRUE on success.
- */
- public function pingImageFile ($filehandle, $fileName = null) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a vertical mirror image
- * @link https://php.net/manual/en/imagick.transposeimage.php
- * @return bool TRUE on success.
- */
- public function transposeImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a horizontal mirror image
- * @link https://php.net/manual/en/imagick.transverseimage.php
- * @return bool TRUE on success.
- */
- public function transverseImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Remove edges from the image
- * @link https://php.net/manual/en/imagick.trimimage.php
- * @param float $fuzz
- * By default target must match a particular pixel color exactly.
- * However, in many cases two colors may differ by a small amount.
- * The fuzz member of image defines how much tolerance is acceptable
- * to consider two colors as the same. This parameter represents the variation
- * on the quantum range.
- *
- * @return bool TRUE on success.
- */
- public function trimImage ($fuzz) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies wave filter to the image
- * @link https://php.net/manual/en/imagick.waveimage.php
- * @param float $amplitude
- * The amplitude of the wave.
- *
- * @param float $length
- * The length of the wave.
- *
- * @return bool TRUE on success.
- */
- public function waveImage ($amplitude, $length) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds vignette filter to the image
- * @link https://php.net/manual/en/imagick.vignetteimage.php
- * @param float $blackPoint
- * The black point.
- *
- * @param float $whitePoint
- * The white point
- *
- * @param int $x
- * X offset of the ellipse
- *
- * @param int $y
- * Y offset of the ellipse
- *
- * @return bool TRUE on success.
- */
- public function vignetteImage ($blackPoint, $whitePoint, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Discards all but one of any pixel color
- * @link https://php.net/manual/en/imagick.uniqueimagecolors.php
- * @return bool TRUE on success.
- */
- public function uniqueImageColors () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Return if the image has a matte channel
- * @link https://php.net/manual/en/imagick.getimagematte.php
- * @return bool TRUE on success or FALSE on failure.
- */
- public function getImageMatte () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image matte channel
- * @link https://php.net/manual/en/imagick.setimagematte.php
- * @param bool $matte
- * True activates the matte channel and false disables it.
- *
- * @return bool TRUE on success.
- */
- public function setImageMatte ($matte) {}
-
- /**
- * Adaptively resize image with data dependent triangulation
- *
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
- * If false, the calculations should produce the same results as ImageMagick CLI does.
- *
- * Note: The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.
- * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @link https://php.net/manual/en/imagick.adaptiveresizeimage.php
- * @param int $columns The number of columns in the scaled image.
- * @param int $rows The number of rows in the scaled image.
- * @param bool $bestfit [optional] Whether to fit the image inside a bounding box.
- * The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function adaptiveResizeImage ($columns, $rows, $bestfit = false, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Simulates a pencil sketch
- * @link https://php.net/manual/en/imagick.sketchimage.php
- * @param float $radius
- * The radius of the Gaussian, in pixels, not counting the center pixel
- *
- * @param float $sigma
- * The standard deviation of the Gaussian, in pixels.
- *
- * @param float $angle
- * Apply the effect along this angle.
- *
- * @return bool TRUE on success.
- */
- public function sketchImage ($radius, $sigma, $angle) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a 3D effect
- * @link https://php.net/manual/en/imagick.shadeimage.php
- * @param bool $gray
- * A value other than zero shades the intensity of each pixel.
- *
- * @param float $azimuth
- * Defines the light source direction.
- *
- * @param float $elevation
- * Defines the light source direction.
- *
- * @return bool TRUE on success.
- */
- public function shadeImage ($gray, $azimuth, $elevation) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the size offset
- * @link https://php.net/manual/en/imagick.getsizeoffset.php
- * @return int the size offset associated with the Imagick object.
- */
- public function getSizeOffset () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the size and offset of the Imagick object
- * @link https://php.net/manual/en/imagick.setsizeoffset.php
- * @param int $columns
- * The radius of the Gaussian, in pixels, not counting the center pixel.
- * Provide a value of 0 and the radius will be chosen automagically.
- *
- * @param float $sigma
- * The standard deviation of the Gaussian, in pixels.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return bool TRUE on success.
- */
- public function adaptiveBlurImage ($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Enhances the contrast of a color image
- * @link https://php.net/manual/en/imagick.contraststretchimage.php
- * @param float $black_point
- * The black point.
- *
- * @param float $white_point
- * The white point.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Imagick::CHANNEL_ALL. Refer to this
- * list of channel constants.
- *
- * The radius of the Gaussian, in pixels, not counting the center pixel. Use 0 for auto-select.
- *
- * @param float $sigma
- * The standard deviation of the Gaussian, in pixels.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function roundCorners ($x_rounding, $y_rounding, $stroke_width = 10.0, $displace = 5.0, $size_correction = -6.0) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Set the iterator position
- * @link https://php.net/manual/en/imagick.setiteratorindex.php
- * @param int $index
- * The position to set the iterator to
- *
- * @return bool TRUE on success.
- */
- public function setIteratorIndex ($index) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the index of the current active image
- * @link https://php.net/manual/en/imagick.getiteratorindex.php
- * @return int an integer containing the index of the image in the stack.
- */
- public function getIteratorIndex () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Convenience method for setting crop size and the image geometry
- * @link https://php.net/manual/en/imagick.transformimage.php
- * @param string $crop
- * A crop geometry string. This geometry defines a subregion of the image to crop.
- *
- * @param string $geometry
- * An image geometry string. This geometry defines the final size of the image.
- *
- * @return Imagick TRUE on success.
- */
- public function transformImage ($crop, $geometry) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image opacity level
- * @link https://php.net/manual/en/imagick.setimageopacity.php
- * @param float $opacity
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully
- * transparent.
- *
- * @return bool TRUE on success.
- */
- public function setImageOpacity ($opacity) {}
-
- /**
- * (PECL imagick 2.2.2)
- * Performs an ordered dither
- * @link https://php.net/manual/en/imagick.orderedposterizeimage.php
- * @param string $threshold_map
- * A string containing the name of the threshold dither map to use
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function polaroidImage (ImagickDraw $properties, $angle) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the named image property
- * @link https://php.net/manual/en/imagick.getimageproperty.php
- * @param string $name
- * name of the property (for example Exif:DateTime)
- *
- * @return string|false a string containing the image property, false if a
- * property with the given name does not exist.
- */
- public function getImageProperty ($name) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets an image property
- * @link https://php.net/manual/en/imagick.setimageproperty.php
- * @param string $name
- * @param string $value
- * @return bool TRUE on success.
- */
- public function setImageProperty ($name, $value) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image interpolate pixel method
- * @link https://php.net/manual/en/imagick.setimageinterpolatemethod.php
- * @param int $method
- * The method is one of the Imagick::INTERPOLATE_* constants
- *
- * @return bool TRUE on success.
- */
- public function setImageInterpolateMethod ($method) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the interpolation method
- * @link https://php.net/manual/en/imagick.getimageinterpolatemethod.php
- * @return int the interpolate method on success.
- */
- public function getImageInterpolateMethod () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Stretches with saturation the image intensity
- * @link https://php.net/manual/en/imagick.linearstretchimage.php
- * @param float $blackPoint
- * The image black point
- *
- * @param float $whitePoint
- * The image white point
- *
- * @return bool TRUE on success.
- */
- public function linearStretchImage ($blackPoint, $whitePoint) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image length in bytes
- * @link https://php.net/manual/en/imagick.getimagelength.php
- * @return int an int containing the current image size.
- */
- public function getImageLength () {}
-
- /**
- * (No version information available, might only be in SVN)
- * Set image size
- * @link https://php.net/manual/en/imagick.extentimage.php
- * @param int $width
- * The new width
- *
- * @param int $height
- * The new height
- *
- * @param int $x
- * X position for the new size
- *
- * @param int $y
- * Y position for the new size
- *
- * @return bool TRUE on success.
- */
- public function extentImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image orientation
- * @link https://php.net/manual/en/imagick.getimageorientation.php
- * @return int an int on success.
- */
- public function getImageOrientation () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image orientation
- * @link https://php.net/manual/en/imagick.setimageorientation.php
- * @param int $orientation
- * One of the orientation constants
- *
- * @return bool TRUE on success.
- */
- public function setImageOrientation ($orientation) {}
-
- /**
- * (PECL imagick 2.1.0)
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.paintfloodfillimage.php
- * @param mixed $fill
- * ImagickPixel object or a string containing the fill color
- *
- * @param float $fuzz
- * The amount of fuzz. For example, set fuzz to 10 and the color red at
- * intensities of 100 and 102 respectively are now interpreted as the
- * same color for the purposes of the floodfill.
- *
- * @param mixed $bordercolor
- * ImagickPixel object or a string containing the border color
- *
- * @param int $x
- * X start position of the floodfill
- *
- * @param int $y
- * Y start position of the floodfill
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return bool TRUE on success.
- */
- public function paintFloodfillImage ($fill, $fuzz, $bordercolor, $x, $y, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Replaces colors in the image from a color lookup table. Optional second parameter to replace colors in a specific channel. This method is available if Imagick has been compiled against ImageMagick version 6.3.6 or newer.
- * @link https://php.net/manual/en/imagick.clutimage.php
- * @param Imagick $lookup_table
- * Imagick object containing the color lookup table
- *
- * @param int $channel [optional]
- * The Channeltype
- * constant. When not supplied, default channels are replaced.
- *
- * Whether to return only property names. If FALSE then also the values are returned
- *
- * @return array an array containing the image properties or property names.
- */
- public function getImageProperties ($pattern = "*", $only_names = true) {}
-
- /**
- * (PECL imagick 2.2.0)
- * Returns the image profiles
- * @link https://php.net/manual/en/imagick.getimageprofiles.php
- * @param string $pattern [optional]
- * The pattern for profile names.
- *
- * @param bool $include_values [optional]
- * Whether to return only profile names. If FALSE then only profile names will be returned.
- *
- * @return array an array containing the image profiles or profile names.
- */
- public function getImageProfiles ($pattern = "*", $include_values = true) {}
-
- /**
- * (PECL imagick 2.0.1)
- * Distorts an image using various distortion methods
- * @link https://php.net/manual/en/imagick.distortimage.php
- * @param int $method
- * The method of image distortion. See distortion constants
- *
- * @param array $arguments
- * The arguments for this distortion method
- *
- * @param bool $bestfit
- * Attempt to resize destination to fit distorted source
- *
- * @return bool TRUE on success.
- */
- public function distortImage ($method, array $arguments, $bestfit) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Writes an image to a filehandle
- * @link https://php.net/manual/en/imagick.writeimagefile.php
- * @param resource $filehandle
- * Filehandle where to write the image
- *
- * @return bool TRUE on success.
- */
- public function writeImageFile ($filehandle) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Writes frames to a filehandle
- * @link https://php.net/manual/en/imagick.writeimagesfile.php
- * @param resource $filehandle
- * Filehandle where to write the images
- *
- * @return bool TRUE on success.
- */
- public function writeImagesFile ($filehandle) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Reset image page
- * @link https://php.net/manual/en/imagick.resetimagepage.php
- * @param string $page
- * The page definition. For example 7168x5147+0+0
- *
- * @return bool TRUE on success.
- */
- public function resetImagePage ($page) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Sets image clip mask
- * @link https://php.net/manual/en/imagick.setimageclipmask.php
- * @param Imagick $clip_mask
- * The Imagick object containing the clip mask
- *
- * @return bool TRUE on success.
- */
- public function setImageClipMask (Imagick $clip_mask) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Gets image clip mask
- * @link https://php.net/manual/en/imagick.getimageclipmask.php
- * @return Imagick an Imagick object containing the clip mask.
- */
- public function getImageClipMask () {}
-
- /**
- * (No version information available, might only be in SVN)
- * Animates an image or images
- * @link https://php.net/manual/en/imagick.animateimages.php
- * @param string $x_server
- * X server address
- *
- * @return bool TRUE on success.
- */
- public function animateImages ($x_server) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Recolors image
- * @link https://php.net/manual/en/imagick.recolorimage.php
- * @param array $matrix
- * The matrix containing the color values
- *
- * @return bool TRUE on success.
- */
- public function recolorImage (array $matrix) {}
-
- /**
- * (PECL imagick 2.1.0)
- * Sets font
- * @link https://php.net/manual/en/imagick.setfont.php
- * @param string $font
- * Font name or a filename
- *
- * @return bool TRUE on success.
- */
- public function setFont ($font) {}
-
- /**
- * (PECL imagick 2.1.0)
- * Gets font
- * @link https://php.net/manual/en/imagick.getfont.php
- * @return string|false the string containing the font name or FALSE if not font is set.
- */
- public function getFont () {}
-
- /**
- * (PECL imagick 2.1.0)
- * Sets point size
- * @link https://php.net/manual/en/imagick.setpointsize.php
- * @param float $point_size
- * Point size
- *
- * @return bool TRUE on success.
- */
- public function setPointSize ($point_size) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Gets point size
- * @link https://php.net/manual/en/imagick.getpointsize.php
- * @return float a float containing the point size.
- */
- public function getPointSize () {}
-
- /**
- * (PECL imagick 2.1.0)
- * Merges image layers
- * @link https://php.net/manual/en/imagick.mergeimagelayers.php
- * @param int $layer_method
- * One of the Imagick::LAYERMETHOD_* constants
- *
- * @return Imagick Returns an Imagick object containing the merged image.
- * @throws ImagickException
- */
- public function mergeImageLayers ($layer_method) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Sets image alpha channel
- * @link https://php.net/manual/en/imagick.setimagealphachannel.php
- * @param int $mode
- * One of the Imagick::ALPHACHANNEL_* constants
- *
- * @return bool TRUE on success.
- */
- public function setImageAlphaChannel ($mode) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.floodfillpaintimage.php
- * @param mixed $fill
- * ImagickPixel object or a string containing the fill color
- *
- * @param float $fuzz
- * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
- *
- * @param mixed $target
- * ImagickPixel object or a string containing the target color to paint
- *
- * @param int $x
- * X start position of the floodfill
- *
- * @param int $y
- * Y start position of the floodfill
- *
- * @param bool $invert
- * If TRUE paints any pixel that does not match the target color.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return bool TRUE on success.
- */
- public function floodFillPaintImage ($fill, $fuzz, $target, $x, $y, $invert, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.opaquepaintimage.php
- * @param mixed $target
- * ImagickPixel object or a string containing the color to change
- *
- * @param mixed $fill
- * The replacement color
- *
- * @param float $fuzz
- * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
- *
- * @param bool $invert
- * If TRUE paints any pixel that does not match the target color.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return bool TRUE on success.
- */
- public function opaquePaintImage ($target, $fill, $fuzz, $invert, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Paints pixels transparent
- * @link https://php.net/manual/en/imagick.transparentpaintimage.php
- * @param mixed $target
- * The target color to paint
- *
- * @param float $alpha
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.
- *
- * @param float $fuzz
- * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
- *
- * @param bool $invert
- * If TRUE paints any pixel that does not match the target color.
- *
- * @return bool TRUE on success.
- */
- public function transparentPaintImage ($target, $alpha, $fuzz, $invert) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Animates an image or images
- * @link https://php.net/manual/en/imagick.liquidrescaleimage.php
- * @param int $width
- * The width of the target size
- *
- * @param int $height
- * The height of the target size
- *
- * @param float $delta_x
- * How much the seam can traverse on x-axis.
- * Passing 0 causes the seams to be straight.
- *
- * @param float $rigidity
- * Introduces a bias for non-straight seams. This parameter is
- * typically 0.
- *
- * @return bool TRUE on success.
- */
- public function liquidRescaleImage ($width, $height, $delta_x, $rigidity) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Enciphers an image
- * @link https://php.net/manual/en/imagick.encipherimage.php
- * @param string $passphrase
- * The passphrase
- *
- * @return bool TRUE on success.
- */
- public function encipherImage ($passphrase) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Deciphers an image
- * @link https://php.net/manual/en/imagick.decipherimage.php
- * @param string $passphrase
- * The passphrase
- *
- * @return bool TRUE on success.
- */
- public function decipherImage ($passphrase) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Sets the gravity
- * @link https://php.net/manual/en/imagick.setgravity.php
- * @param int $gravity
- * The gravity property. Refer to the list of
- * gravity constants.
- *
- * @return bool No value is returned.
- */
- public function setGravity ($gravity) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Gets the gravity
- * @link https://php.net/manual/en/imagick.getgravity.php
- * @return int the gravity property. Refer to the list of
- * gravity constants.
- */
- public function getGravity () {}
-
- /**
- * (PECL imagick 2.2.1)
- * Gets channel range
- * @link https://php.net/manual/en/imagick.getimagechannelrange.php
- * @param int $channel
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return array an array containing minima and maxima values of the channel(s).
- */
- public function getImageChannelRange ($channel) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Gets the image alpha channel
- * @link https://php.net/manual/en/imagick.getimagealphachannel.php
- * @return int a constant defining the current alpha channel value. Refer to this
- * list of alpha channel constants.
- */
- public function getImageAlphaChannel () {}
-
- /**
- * (No version information available, might only be in SVN)
- * Gets channel distortions
- * @link https://php.net/manual/en/imagick.getimagechanneldistortions.php
- * @param Imagick $reference
- * Imagick object containing the reference image
- *
- * @param int $metric
- * Refer to this list of metric type constants.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return float a float describing the channel distortion.
- */
- public function getImageChannelDistortions (Imagick $reference, $metric, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Sets the image gravity
- * @link https://php.net/manual/en/imagick.setimagegravity.php
- * @param int $gravity
- * The gravity property. Refer to the list of
- * gravity constants.
- *
- * @return bool No value is returned.
- */
- public function setImageGravity ($gravity) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Gets the image gravity
- * @link https://php.net/manual/en/imagick.getimagegravity.php
- * @return int the images gravity property. Refer to the list of
- * gravity constants.
- */
- public function getImageGravity () {}
-
- /**
- * (No version information available, might only be in SVN)
- * Imports image pixels
- * @link https://php.net/manual/en/imagick.importimagepixels.php
- * @param int $x
- * The image x position
- *
- * @param int $y
- * The image y position
- *
- * @param int $width
- * The image width
- *
- * @param int $height
- * The image height
- *
- * @param string $map
- * Map of pixel ordering as a string. This can be for example RGB.
- * The value can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent),
- * O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.
- *
- * @param int $storage
- * The pixel storage method.
- * Refer to this list of pixel constants.
- *
- * @param array $pixels
- * The array of pixels
- *
- * @return bool TRUE on success.
- */
- public function importImagePixels ($x, $y, $width, $height, $map, $storage, array $pixels) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Removes skew from the image
- * @link https://php.net/manual/en/imagick.deskewimage.php
- * @param float $threshold
- * Deskew threshold
- *
- * @return bool
- */
- public function deskewImage ($threshold) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Segments an image
- * @link https://php.net/manual/en/imagick.segmentimage.php
- * @param int $COLORSPACE
- * One of the COLORSPACE constants.
- *
- * @param float $cluster_threshold
- * A percentage describing minimum number of pixels
- * contained in hexedra before it is considered valid.
- *
- * @param float $smooth_threshold
- * Eliminates noise from the histogram.
- *
- * @param bool $verbose [optional]
- * Whether to output detailed information about recognised classes.
- *
- * @return bool
- */
- public function segmentImage ($COLORSPACE, $cluster_threshold, $smooth_threshold, $verbose = false) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Interpolates colors
- * @link https://php.net/manual/en/imagick.sparsecolorimage.php
- * @param int $SPARSE_METHOD
- * Refer to this list of sparse method constants
- *
- * @param array $arguments
- * An array containing the coordinates.
- * The array is in format array(1,1, 2,45)
- *
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function sparseColorImage ($SPARSE_METHOD, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Remaps image colors
- * @link https://php.net/manual/en/imagick.remapimage.php
- * @param Imagick $replacement
- * An Imagick object containing the replacement colors
- *
- * @param int $DITHER
- * Refer to this list of dither method constants
- *
- * @return bool TRUE on success.
- */
- public function remapImage (Imagick $replacement, $DITHER) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Exports raw image pixels
- * @link https://php.net/manual/en/imagick.exportimagepixels.php
- * @param int $x
- * X-coordinate of the exported area
- *
- * @param int $y
- * Y-coordinate of the exported area
- *
- * @param int $width
- * Width of the exported aread
- *
- * @param int $height
- * Height of the exported area
- *
- * @param string $map
- * Ordering of the exported pixels. For example "RGB".
- * Valid characters for the map are R, G, B, A, O, C, Y, M, K, I and P.
- *
- * @param int $STORAGE
- * Refer to this list of pixel type constants
- *
- * @return array an array containing the pixels values.
- */
- public function exportImagePixels ($x, $y, $width, $height, $map, $STORAGE) {}
-
- /**
- * (No version information available, might only be in SVN)
- * The getImageChannelKurtosis purpose
- * @link https://php.net/manual/en/imagick.getimagechannelkurtosis.php
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return array an array with kurtosis and skewness
- * members.
- */
- public function getImageChannelKurtosis ($channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Applies a function on the image
- * @link https://php.net/manual/en/imagick.functionimage.php
- * @param int $function
- * Refer to this list of function constants
- *
- * @param array $arguments
- * Array of arguments to pass to this function.
- *
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function functionImage ($function, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * @param $COLORSPACE
- */
- public function transformImageColorspace ($COLORSPACE) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Replaces colors in the image
- * @link https://php.net/manual/en/imagick.haldclutimage.php
- * @param Imagick $clut
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return bool TRUE on success.
- */
- public function haldClutImage (Imagick $clut, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * @param $CHANNEL [optional]
- */
- public function autoLevelImage ($CHANNEL) {}
-
- /**
- * @param $factor [optional]
- */
- public function blueShiftImage ($factor) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Get image artifact
- * @link https://php.net/manual/en/imagick.getimageartifact.php
- * @param string $artifact
- * The name of the artifact
- *
- * @return string the artifact value on success.
- */
- public function getImageArtifact ($artifact) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Set image artifact
- * @link https://php.net/manual/en/imagick.setimageartifact.php
- * @param string $artifact
- * The name of the artifact
- *
- * @param string $value
- * The value of the artifact
- *
- * @return bool TRUE on success.
- */
- public function setImageArtifact ($artifact, $value) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Delete image artifact
- * @link https://php.net/manual/en/imagick.deleteimageartifact.php
- * @param string $artifact
- * The name of the artifact to delete
- *
- * @return bool TRUE on success.
- */
- public function deleteImageArtifact ($artifact) {}
-
- /**
- * (PECL imagick 0.9.10-0.9.9)
- * Gets the colorspace
- * @link https://php.net/manual/en/imagick.getcolorspace.php
- * @return int an integer which can be compared against COLORSPACE constants.
- */
- public function getColorspace () {}
-
- /**
- * (No version information available, might only be in SVN)
- * Set colorspace
- * @link https://php.net/manual/en/imagick.setcolorspace.php
- * @param int $COLORSPACE
- * One of the COLORSPACE constants
- *
- * @return bool TRUE on success.
- */
- public function setColorspace ($COLORSPACE) {}
-
- /**
- * @param $CHANNEL [optional]
- */
- public function clampImage ($CHANNEL) {}
-
- /**
- * @param $stack
- * @param $offset
- */
- public function smushImages ($stack, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)
- * The Imagick constructor
- * @link https://php.net/manual/en/imagick.construct.php
- * @param mixed $files
- * The path to an image to load or an array of paths. Paths can include
- * wildcards for file names, or can be URLs.
- *
- * @throws ImagickException Throws ImagickException on error.
- */
- public function __construct ($files = null) {}
-
- /**
- * @return string
- */
- public function __toString () {}
-
- public function count () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a MagickPixelIterator
- * @link https://php.net/manual/en/imagick.getpixeliterator.php
- * @return ImagickPixelIterator an ImagickPixelIterator on success.
- */
- public function getPixelIterator () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Get an ImagickPixelIterator for an image section
- * @link https://php.net/manual/en/imagick.getpixelregioniterator.php
- * @param int $x
- * The x-coordinate of the region.
- *
- * @param int $y
- * The y-coordinate of the region.
- *
- * @param int $columns
- * The width of the region.
- *
- * @param int $rows
- * The height of the region.
- *
- * @return ImagickPixelIterator an ImagickPixelIterator for an image section.
- */
- public function getPixelRegionIterator ($x, $y, $columns, $rows) {}
-
- /**
- * (PECL imagick 0.9.0-0.9.9)
- * Reads image from filename
- * @link https://php.net/manual/en/imagick.readimage.php
- * @param string $filename
- * @return bool TRUE on success.
- * @throws ImagickException Throws ImagickException on error.
- */
- public function readImage ($filename) {}
-
- /**
- * @param $filenames
- * @throws ImagickException Throws ImagickException on error.
- */
- public function readImages ($filenames) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Reads image from a binary string
- * @link https://php.net/manual/en/imagick.readimageblob.php
- * @param string $image
- * @param string $filename [optional]
- * @return bool TRUE on success.
- * @throws ImagickException Throws ImagickException on error.
- */
- public function readImageBlob ($image, $filename = null) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the format of a particular image
- * @link https://php.net/manual/en/imagick.setimageformat.php
- * @param string $format
- * String presentation of the image format. Format support
- * depends on the ImageMagick installation.
- *
- * @return bool TRUE on success.
- */
- public function setImageFormat ($format) {}
-
- /**
- * Scales the size of an image to the given dimensions. Passing zero as either of the arguments will preserve dimension while scaling.
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
- * If false, the calculations should produce the same results as ImageMagick CLI does.
- * @link https://php.net/manual/en/imagick.scaleimage.php
- * @param int $cols
- * @param int $rows
- * @param bool $bestfit [optional] The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success.
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function scaleImage ($cols, $rows, $bestfit = false, $legacy = false) {}
-
- /**
- * (PECL imagick 0.9.0-0.9.9)
- * Writes an image to the specified filename
- * @link https://php.net/manual/en/imagick.writeimage.php
- * @param string $filename [optional]
- * Filename where to write the image. The extension of the filename
- * defines the type of the file.
- * Format can be forced regardless of file extension using format: prefix,
- * for example "jpg:test.png".
- *
- * @return bool TRUE on success.
- */
- public function writeImage ($filename = null) {}
-
- /**
- * (PECL imagick 0.9.0-0.9.9)
- * Writes an image or image sequence
- * @link https://php.net/manual/en/imagick.writeimages.php
- * @param string $filename
- * @param bool $adjoin
- * @return bool TRUE on success.
- */
- public function writeImages ($filename, $adjoin) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds blur filter to image
- * @link https://php.net/manual/en/imagick.blurimage.php
- * @param float $radius
- * Blur radius
- *
- * @param float $sigma
- * Standard deviation
- *
- * @param int $channel [optional]
- * The Channeltype
- * constant. When not supplied, all channels are blurred.
- *
- * @return bool TRUE on success.
- */
- public function blurImage ($radius, $sigma, $channel = null) {}
-
- /**
- * Changes the size of an image to the given dimensions and removes any associated profiles.
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
- * If false, the calculations should produce the same results as ImageMagick CLI does.
- *
- * Note: The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @link https://php.net/manual/en/imagick.thumbnailimage.php
- * @param int $columns
- * Image width
- *
- * @param int $rows
- * Image height
- *
- * @param bool $bestfit [optional]
- * Whether to force maximum values
- *
- * The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @param bool $fill [optional]
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success.
- * @since 2.0.0
- */
- public function thumbnailImage ($columns, $rows, $bestfit = false, $fill = false, $legacy = false) {}
-
- /**
- * Creates a cropped thumbnail at the requested size.
- * If legacy is true, uses the incorrect behaviour that was present until Imagick 3.4.0.
- * If false it uses the correct behaviour.
- * @link https://php.net/manual/en/imagick.cropthumbnailimage.php
- * @param int $width The width of the thumbnail
- * @param int $height The Height of the thumbnail
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on succes
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function cropThumbnailImage ($width, $height, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the filename of a particular image in a sequence
- * @link https://php.net/manual/en/imagick.getimagefilename.php
- * @return string a string with the filename of the image.
- */
- public function getImageFilename () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the filename of a particular image
- * @link https://php.net/manual/en/imagick.setimagefilename.php
- * @param string $filename
- * @return bool TRUE on success.
- */
- public function setImageFilename ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the format of a particular image in a sequence
- * @link https://php.net/manual/en/imagick.getimageformat.php
- * @return string a string containing the image format on success.
- */
- public function getImageFormat () {}
-
- /**
- * @link https://secure.php.net/manual/en/imagick.getimagemimetype.php
- * @return string Returns the image mime-type.
- */
- public function getImageMimeType () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Removes an image from the image list
- * @link https://php.net/manual/en/imagick.removeimage.php
- * @return bool TRUE on success.
- */
- public function removeImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Destroys the Imagick object
- * @link https://php.net/manual/en/imagick.destroy.php
- * @return bool TRUE on success.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clears all resources associated to Imagick object
- * @link https://php.net/manual/en/imagick.clear.php
- * @return bool TRUE on success.
- */
- public function clear () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image length in bytes
- * @link https://php.net/manual/en/imagick.getimagesize.php
- * @return int an int containing the current image size.
- * @deprecated use {@see Imagick::getImageLength()} instead
- */
- public function getImageSize () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image sequence as a blob
- * @link https://php.net/manual/en/imagick.getimageblob.php
- * @return string a string containing the image.
- */
- public function getImageBlob () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns all image sequences as a blob
- * @link https://php.net/manual/en/imagick.getimagesblob.php
- * @return string a string containing the images. On failure, throws ImagickException on failure
- * @throws ImagickException on failure
- */
- public function getImagesBlob () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the Imagick iterator to the first image
- * @link https://php.net/manual/en/imagick.setfirstiterator.php
- * @return bool TRUE on success.
- */
- public function setFirstIterator () {}
-
- /**
- * (PECL imagick 2.0.1)
- * Sets the Imagick iterator to the last image
- * @link https://php.net/manual/en/imagick.setlastiterator.php
- * @return bool TRUE on success.
- */
- public function setLastIterator () {}
-
- public function resetIterator () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Move to the previous image in the object
- * @link https://php.net/manual/en/imagick.previousimage.php
- * @return bool TRUE on success.
- */
- public function previousImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Moves to the next image
- * @link https://php.net/manual/en/imagick.nextimage.php
- * @return bool TRUE on success.
- */
- public function nextImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Checks if the object has a previous image
- * @link https://php.net/manual/en/imagick.haspreviousimage.php
- * @return bool TRUE if the object has more images when traversing the list in the
- * reverse direction, returns FALSE if there are none.
- */
- public function hasPreviousImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Checks if the object has more images
- * @link https://php.net/manual/en/imagick.hasnextimage.php
- * @return bool TRUE if the object has more images when traversing the list in the
- * forward direction, returns FALSE if there are none.
- */
- public function hasNextImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Set the iterator position
- * @link https://php.net/manual/en/imagick.setimageindex.php
- * @param int $index
- * The position to set the iterator to
- *
- * @return bool TRUE on success.
- */
- public function setImageIndex ($index) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the index of the current active image
- * @link https://php.net/manual/en/imagick.getimageindex.php
- * @return int an integer containing the index of the image in the stack.
- */
- public function getImageIndex () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds a comment to your image
- * @link https://php.net/manual/en/imagick.commentimage.php
- * @param string $comment
- * The comment to add
- *
- * @return bool TRUE on success.
- */
- public function commentImage ($comment) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Extracts a region of the image
- * @link https://php.net/manual/en/imagick.cropimage.php
- * @param int $width
- * The width of the crop
- *
- * @param int $height
- * The height of the crop
- *
- * @param int $x
- * The X coordinate of the cropped region's top left corner
- *
- * @param int $y
- * The Y coordinate of the cropped region's top left corner
- *
- * @return bool TRUE on success.
- */
- public function cropImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds a label to an image
- * @link https://php.net/manual/en/imagick.labelimage.php
- * @param string $label
- * The label to add
- *
- * @return bool TRUE on success.
- */
- public function labelImage ($label) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the width and height as an associative array
- * @link https://php.net/manual/en/imagick.getimagegeometry.php
- * @return array an array with the width/height of the image.
- */
- public function getImageGeometry () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Renders the ImagickDraw object on the current image
- * @link https://php.net/manual/en/imagick.drawimage.php
- * @param ImagickDraw $draw
- * The drawing operations to render on the image.
- *
- * @return bool TRUE on success.
- */
- public function drawImage (ImagickDraw $draw) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Sets the image compression quality
- * @link https://php.net/manual/en/imagick.setimagecompressionquality.php
- * @param int $quality
- * The image compression quality as an integer
- *
- * @return bool TRUE on success.
- */
- public function setImageCompressionQuality ($quality) {}
-
- /**
- * (PECL imagick 2.2.2)
- * Gets the current image's compression quality
- * @link https://php.net/manual/en/imagick.getimagecompressionquality.php
- * @return int integer describing the images compression quality
- */
- public function getImageCompressionQuality () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Annotates an image with text
- * @link https://php.net/manual/en/imagick.annotateimage.php
- * @param ImagickDraw $draw_settings
- * The ImagickDraw object that contains settings for drawing the text
- *
- * @param float $x
- * Horizontal offset in pixels to the left of text
- *
- * @param float $y
- * Vertical offset in pixels to the baseline of text
- *
- * @param float $angle
- * The angle at which to write the text
- *
- * @param string $text
- * The string to draw
- *
- * @return bool TRUE on success.
- */
- public function annotateImage (ImagickDraw $draw_settings, $x, $y, $angle, $text) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Composite one image onto another
- * @link https://php.net/manual/en/imagick.compositeimage.php
- * @param Imagick $composite_object
- * Imagick object which holds the composite image
- *
- * @param int $composite Composite operator
- * @param int $x
- * The column offset of the composited image
- *
- * @param int $y
- * The row offset of the composited image
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function compositeImage (Imagick $composite_object, $composite, $x, $y, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Control the brightness, saturation, and hue
- * @link https://php.net/manual/en/imagick.modulateimage.php
- * @param float $brightness
- * @param float $saturation
- * @param float $hue
- * @return bool TRUE on success.
- */
- public function modulateImage ($brightness, $saturation, $hue) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the number of unique colors in the image
- * @link https://php.net/manual/en/imagick.getimagecolors.php
- * @return int TRUE on success.
- */
- public function getImageColors () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a composite image
- * @link https://php.net/manual/en/imagick.montageimage.php
- * @param ImagickDraw $draw
- * The font name, size, and color are obtained from this object.
- *
- * @param string $tile_geometry
- * The number of tiles per row and page (e.g. 6x4+0+0).
- *
- * @param string $thumbnail_geometry
- * Preferred image size and border size of each thumbnail
- * (e.g. 120x120+4+3>).
- *
- * Surround the image with an ornamental border (e.g. 15x15+3+3). The
- * frame color is that of the thumbnail's matte color.
- *
- * @return Imagick TRUE on success.
- */
- public function montageImage (ImagickDraw $draw, $tile_geometry, $thumbnail_geometry, $mode, $frame) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Identifies an image and fetches attributes
- * @link https://php.net/manual/en/imagick.identifyimage.php
- * @param bool $appendRawOutput [optional]
- * @return array Identifies an image and returns the attributes. Attributes include
- * the image width, height, size, and others.
- */
- public function identifyImage ($appendRawOutput = false) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Changes the value of individual pixels based on a threshold
- * @link https://php.net/manual/en/imagick.thresholdimage.php
- * @param float $threshold
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function thresholdImage ($threshold, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Selects a threshold for each pixel based on a range of intensity
- * @link https://php.net/manual/en/imagick.adaptivethresholdimage.php
- * @param int $width
- * Width of the local neighborhood.
- *
- * @param int $height
- * Height of the local neighborhood.
- *
- * @param int $offset
- * The mean offset
- *
- * @return bool TRUE on success.
- */
- public function adaptiveThresholdImage ($width, $height, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Forces all pixels below the threshold into black
- * @link https://php.net/manual/en/imagick.blackthresholdimage.php
- * @param mixed $threshold
- * The threshold below which everything turns black
- *
- * @return bool TRUE on success.
- */
- public function blackThresholdImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Force all pixels above the threshold into white
- * @link https://php.net/manual/en/imagick.whitethresholdimage.php
- * @param mixed $threshold
- * @return bool TRUE on success.
- */
- public function whiteThresholdImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Append a set of images
- * @link https://php.net/manual/en/imagick.appendimages.php
- * @param bool $stack [optional]
- * Whether to stack the images vertically.
- * By default (or if FALSE is specified) images are stacked left-to-right.
- * If stack is TRUE, images are stacked top-to-bottom.
- *
- * The radius of the Gaussian, in pixels, not counting the center pixel
- *
- * @param float $sigma
- * The standard deviation of the Gaussian, in pixels
- *
- * @return bool TRUE on success.
- */
- public function charcoalImage ($radius, $sigma) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Enhances the contrast of a color image
- * @link https://php.net/manual/en/imagick.normalizeimage.php
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function normalizeImage ($channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Simulates an oil painting
- * @link https://php.net/manual/en/imagick.oilpaintimage.php
- * @param float $radius
- * The radius of the circular neighborhood.
- *
- * @return bool TRUE on success.
- */
- public function oilPaintImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Reduces the image to a limited number of color level
- * @link https://php.net/manual/en/imagick.posterizeimage.php
- * @param int $levels
- * @param bool $dither
- * @return bool TRUE on success.
- */
- public function posterizeImage ($levels, $dither) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Radial blurs an image
- * @link https://php.net/manual/en/imagick.radialblurimage.php
- * @param float $angle
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function radialBlurImage ($angle, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a simulated 3d button-like effect
- * @link https://php.net/manual/en/imagick.raiseimage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @param bool $raise
- * @return bool TRUE on success.
- */
- public function raiseImage ($width, $height, $x, $y, $raise) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Resample image to desired resolution
- * @link https://php.net/manual/en/imagick.resampleimage.php
- * @param float $x_resolution
- * @param float $y_resolution
- * @param int $filter
- * @param float $blur
- * @return bool TRUE on success.
- */
- public function resampleImage ($x_resolution, $y_resolution, $filter, $blur) {}
-
- /**
- * Scales an image to the desired dimensions with one of these filters:
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
- * If false, the calculations should produce the same results as ImageMagick CLI does.
- *
- * Note: The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.
- * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @link https://php.net/manual/en/imagick.resizeimage.php
- * @param int $columns Width of the image
- * @param int $rows Height of the image
- * @param int $filter Refer to the list of filter constants.
- * @param float $blur The blur factor where > 1 is blurry, < 1 is sharp.
- * @param bool $bestfit [optional] Added since 2.1.0. Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success
- * @since 2.0.0
- */
- public function resizeImage ($columns, $rows, $filter, $blur, $bestfit = false, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Offsets an image
- * @link https://php.net/manual/en/imagick.rollimage.php
- * @param int $x
- * The X offset.
- *
- * @param int $y
- * The Y offset.
- *
- * @return bool TRUE on success.
- */
- public function rollImage ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Rotates an image
- * @link https://php.net/manual/en/imagick.rotateimage.php
- * @param mixed $background
- * The background color
- *
- * @param float $degrees
- * The number of degrees to rotate the image
- *
- * @return bool TRUE on success.
- */
- public function rotateImage ($background, $degrees) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Scales an image with pixel sampling
- * @link https://php.net/manual/en/imagick.sampleimage.php
- * @param int $columns
- * @param int $rows
- * @return bool TRUE on success.
- */
- public function sampleImage ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies a solarizing effect to the image
- * @link https://php.net/manual/en/imagick.solarizeimage.php
- * @param int $threshold
- * @return bool TRUE on success.
- */
- public function solarizeImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Simulates an image shadow
- * @link https://php.net/manual/en/imagick.shadowimage.php
- * @param float $opacity
- * @param float $sigma
- * @param int $x
- * @param int $y
- * @return bool TRUE on success.
- */
- public function shadowImage ($opacity, $sigma, $x, $y) {}
-
- /**
- * @param $key
- * @param $value
- */
- public function setImageAttribute ($key, $value) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image background color
- * @link https://php.net/manual/en/imagick.setimagebackgroundcolor.php
- * @param mixed $background
- * @return bool TRUE on success.
- */
- public function setImageBackgroundColor ($background) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image composite operator
- * @link https://php.net/manual/en/imagick.setimagecompose.php
- * @param int $compose
- * @return bool TRUE on success.
- */
- public function setImageCompose ($compose) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image compression
- * @link https://php.net/manual/en/imagick.setimagecompression.php
- * @param int $compression
- * One of the COMPRESSION constants
- *
- * @return bool TRUE on success.
- */
- public function setImageCompression ($compression) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image delay
- * @link https://php.net/manual/en/imagick.setimagedelay.php
- * @param int $delay
- * The amount of time expressed in 'ticks' that the image should be
- * displayed for. For animated GIFs there are 100 ticks per second, so a
- * value of 20 would be 20/100 of a second aka 1/5th of a second.
- *
- * @return bool TRUE on success.
- */
- public function setImageDelay ($delay) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image depth
- * @link https://php.net/manual/en/imagick.setimagedepth.php
- * @param int $depth
- * @return bool TRUE on success.
- */
- public function setImageDepth ($depth) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image gamma
- * @link https://php.net/manual/en/imagick.setimagegamma.php
- * @param float $gamma
- * @return bool TRUE on success.
- */
- public function setImageGamma ($gamma) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image iterations
- * @link https://php.net/manual/en/imagick.setimageiterations.php
- * @param int $iterations
- * The number of iterations the image should loop over. Set to '0' to loop
- * continuously.
- *
- * @return bool TRUE on success.
- */
- public function setImageIterations ($iterations) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image matte color
- * @link https://php.net/manual/en/imagick.setimagemattecolor.php
- * @param mixed $matte
- * @return bool TRUE on success.
- */
- public function setImageMatteColor ($matte) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the page geometry of the image
- * @link https://php.net/manual/en/imagick.setimagepage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @return bool TRUE on success.
- */
- public function setImagePage ($width, $height, $x, $y) {}
-
- /**
- * @param $filename
- */
- public function setImageProgressMonitor ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image resolution
- * @link https://php.net/manual/en/imagick.setimageresolution.php
- * @param float $x_resolution
- * @param float $y_resolution
- * @return bool TRUE on success.
- */
- public function setImageResolution ($x_resolution, $y_resolution) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image scene
- * @link https://php.net/manual/en/imagick.setimagescene.php
- * @param int $scene
- * @return bool TRUE on success.
- */
- public function setImageScene ($scene) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image ticks-per-second
- * @link https://php.net/manual/en/imagick.setimagetickspersecond.php
- * @param int $ticks_per_second
- * The duration for which an image should be displayed expressed in ticks
- * per second.
- *
- * @return bool TRUE on success.
- */
- public function setImageTicksPerSecond ($ticks_per_second) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image type
- * @link https://php.net/manual/en/imagick.setimagetype.php
- * @param int $image_type
- * @return bool TRUE on success.
- */
- public function setImageType ($image_type) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image units of resolution
- * @link https://php.net/manual/en/imagick.setimageunits.php
- * @param int $units
- * @return bool TRUE on success.
- */
- public function setImageUnits ($units) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sharpens an image
- * @link https://php.net/manual/en/imagick.sharpenimage.php
- * @param float $radius
- * @param float $sigma
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function sharpenImage ($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Shaves pixels from the image edges
- * @link https://php.net/manual/en/imagick.shaveimage.php
- * @param int $columns
- * @param int $rows
- * @return bool TRUE on success.
- */
- public function shaveImage ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creating a parallelogram
- * @link https://php.net/manual/en/imagick.shearimage.php
- * @param mixed $background
- * The background color
- *
- * @param float $x_shear
- * The number of degrees to shear on the x axis
- *
- * @param float $y_shear
- * The number of degrees to shear on the y axis
- *
- * @return bool TRUE on success.
- */
- public function shearImage ($background, $x_shear, $y_shear) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Splices a solid color into the image
- * @link https://php.net/manual/en/imagick.spliceimage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @return bool TRUE on success.
- */
- public function spliceImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Fetch basic attributes about the image
- * @link https://php.net/manual/en/imagick.pingimage.php
- * @param string $filename
- * The filename to read the information from.
- *
- * @return bool TRUE on success.
- */
- public function pingImage ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Reads image from open filehandle
- * @link https://php.net/manual/en/imagick.readimagefile.php
- * @param resource $filehandle
- * @param string $fileName [optional]
- * @return bool TRUE on success.
- */
- public function readImageFile ($filehandle, $fileName = null) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Displays an image
- * @link https://php.net/manual/en/imagick.displayimage.php
- * @param string $servername
- * The X server name
- *
- * @return bool TRUE on success.
- */
- public function displayImage ($servername) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Displays an image or image sequence
- * @link https://php.net/manual/en/imagick.displayimages.php
- * @param string $servername
- * The X server name
- *
- * @return bool TRUE on success.
- */
- public function displayImages ($servername) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Randomly displaces each pixel in a block
- * @link https://php.net/manual/en/imagick.spreadimage.php
- * @param float $radius
- * @return bool TRUE on success.
- */
- public function spreadImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Swirls the pixels about the center of the image
- * @link https://php.net/manual/en/imagick.swirlimage.php
- * @param float $degrees
- * @return bool TRUE on success.
- */
- public function swirlImage ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Strips an image of all profiles and comments
- * @link https://php.net/manual/en/imagick.stripimage.php
- * @return bool TRUE on success.
- */
- public function stripImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns formats supported by Imagick
- * @link https://php.net/manual/en/imagick.queryformats.php
- * @param string $pattern [optional]
- * @return array an array containing the formats supported by Imagick.
- */
- public static function queryFormats ($pattern = "*") {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the configured fonts
- * @link https://php.net/manual/en/imagick.queryfonts.php
- * @param string $pattern [optional]
- * The query pattern
- *
- * @return array an array containing the configured fonts.
- */
- public static function queryFonts ($pattern = "*") {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns an array representing the font metrics
- * @link https://php.net/manual/en/imagick.queryfontmetrics.php
- * @param ImagickDraw $properties
- * ImagickDraw object containing font properties
- *
- * @param string $text
- * The text
- *
- * @param bool $multiline [optional]
- * Multiline parameter. If left empty it is autodetected
- *
- * @return array a multi-dimensional array representing the font metrics.
- */
- public function queryFontMetrics (ImagickDraw $properties, $text, $multiline = null) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Hides a digital watermark within the image
- * @link https://php.net/manual/en/imagick.steganoimage.php
- * @param Imagick $watermark_wand
- * @param int $offset
- * @return Imagick TRUE on success.
- */
- public function steganoImage (Imagick $watermark_wand, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds random noise to the image
- * @link https://php.net/manual/en/imagick.addnoiseimage.php
- * @param int $noise_type
- * The type of the noise. Refer to this list of
- * noise constants.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * The radius of the Gaussian, in pixels, not counting the center pixel.
- *
- * @param float $sigma
- * The standard deviation of the Gaussian, in pixels.
- *
- * @param float $angle
- * Apply the effect along this angle.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * The channel argument affects only if Imagick is compiled against ImageMagick version
- * 6.4.4 or greater.
- *
- * @return bool TRUE on success.
- */
- public function motionBlurImage ($radius, $sigma, $angle, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Forms a mosaic from images
- * @link https://php.net/manual/en/imagick.mosaicimages.php
- * @return Imagick TRUE on success.
- */
- public function mosaicImages () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Method morphs a set of images
- * @link https://php.net/manual/en/imagick.morphimages.php
- * @param int $number_frames
- * The number of in-between images to generate.
- *
- * @return Imagick This method returns a new Imagick object on success.
- * Throw an ImagickException on error.
- * @throws ImagickException on error
- */
- public function morphImages ($number_frames) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Scales an image proportionally to half its size
- * @link https://php.net/manual/en/imagick.minifyimage.php
- * @return bool TRUE on success.
- */
- public function minifyImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Transforms an image
- * @link https://php.net/manual/en/imagick.affinetransformimage.php
- * @param ImagickDraw $matrix
- * The affine matrix
- *
- * @return bool TRUE on success.
- */
- public function affineTransformImage (ImagickDraw $matrix) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Average a set of images
- * @link https://php.net/manual/en/imagick.averageimages.php
- * @return Imagick a new Imagick object on success.
- */
- public function averageImages () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Surrounds the image with a border
- * @link https://php.net/manual/en/imagick.borderimage.php
- * @param mixed $bordercolor
- * ImagickPixel object or a string containing the border color
- *
- * @param int $width
- * Border width
- *
- * @param int $height
- * Border height
- *
- * @return bool TRUE on success.
- */
- public function borderImage ($bordercolor, $width, $height) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Removes a region of an image and trims
- * @link https://php.net/manual/en/imagick.chopimage.php
- * @param int $width
- * Width of the chopped area
- *
- * @param int $height
- * Height of the chopped area
- *
- * @param int $x
- * X origo of the chopped area
- *
- * @param int $y
- * Y origo of the chopped area
- *
- * @return bool TRUE on success.
- */
- public function chopImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clips along the first path from the 8BIM profile
- * @link https://php.net/manual/en/imagick.clipimage.php
- * @return bool TRUE on success.
- */
- public function clipImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clips along the named paths from the 8BIM profile
- * @link https://php.net/manual/en/imagick.clippathimage.php
- * @param string $pathname
- * The name of the path
- *
- * @param bool $inside
- * If TRUE later operations take effect inside clipping path.
- * Otherwise later operations take effect outside clipping path.
- *
- * @return bool TRUE on success.
- */
- public function clipPathImage ($pathname, $inside) {}
-
- /**
- * @param $pathname
- * @param $inside
- */
- public function clipImagePath ($pathname, $inside) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Composites a set of images
- * @link https://php.net/manual/en/imagick.coalesceimages.php
- * @return Imagick a new Imagick object on success.
- */
- public function coalesceImages () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.colorfloodfillimage.php
- * @param mixed $fill
- * ImagickPixel object containing the fill color
- *
- * @param float $fuzz
- * The amount of fuzz. For example, set fuzz to 10 and the color red at
- * intensities of 100 and 102 respectively are now interpreted as the
- * same color for the purposes of the floodfill.
- *
- * @param mixed $bordercolor
- * ImagickPixel object containing the border color
- *
- * @param int $x
- * X start position of the floodfill
- *
- * @param int $y
- * Y start position of the floodfill
- *
- * @return bool TRUE on success.
- */
- public function colorFloodfillImage ($fill, $fuzz, $bordercolor, $x, $y) {}
-
- /**
- * Blends the fill color with each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.
- * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0
- * @link https://php.net/manual/en/imagick.colorizeimage.php
- * @param mixed $colorize
- * ImagickPixel object or a string containing the colorize color
- *
- * @param mixed $opacity
- * ImagickPixel object or an float containing the opacity value.
- * 1.0 is fully opaque and 0.0 is fully transparent.
- *
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success.
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function colorizeImage ($colorize, $opacity, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the difference in one or more images
- * @link https://php.net/manual/en/imagick.compareimagechannels.php
- * @param Imagick $image
- * Imagick object containing the image to compare.
- *
- * @param int $channelType
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @param int $metricType
- * One of the metric type constants.
- *
- * @return array Array consisting of new_wand and
- * distortion.
- */
- public function compareImageChannels (Imagick $image, $channelType, $metricType) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Compares an image to a reconstructed image
- * @link https://php.net/manual/en/imagick.compareimages.php
- * @param Imagick $compare
- * An image to compare to.
- *
- * @param int $metric
- * Provide a valid metric type constant. Refer to this
- * list of metric constants.
- *
- * @return array Array consisting of an Imagick object of the
- * reconstructed image and a float representing the difference.
- * @throws ImagickException Throws ImagickException on error.
- */
- public function compareImages (Imagick $compare, $metric) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Change the contrast of the image
- * @link https://php.net/manual/en/imagick.contrastimage.php
- * @param bool $sharpen
- * The sharpen value
- *
- * @return bool TRUE on success.
- */
- public function contrastImage ($sharpen) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Combines one or more images into a single image
- * @link https://php.net/manual/en/imagick.combineimages.php
- * @param int $channelType
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return Imagick TRUE on success.
- */
- public function combineImages ($channelType) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies a custom convolution kernel to the image
- * @link https://php.net/manual/en/imagick.convolveimage.php
- * @param array $kernel
- * The convolution kernel
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function convolveImage (array $kernel, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Displaces an image's colormap
- * @link https://php.net/manual/en/imagick.cyclecolormapimage.php
- * @param int $displace
- * The amount to displace the colormap.
- *
- * @return bool TRUE on success.
- */
- public function cycleColormapImage ($displace) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns certain pixel differences between images
- * @link https://php.net/manual/en/imagick.deconstructimages.php
- * @return Imagick a new Imagick object on success.
- */
- public function deconstructImages () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Reduces the speckle noise in an image
- * @link https://php.net/manual/en/imagick.despeckleimage.php
- * @return bool TRUE on success.
- */
- public function despeckleImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Enhance edges within the image
- * @link https://php.net/manual/en/imagick.edgeimage.php
- * @param float $radius
- * The radius of the operation.
- *
- * @return bool TRUE on success.
- */
- public function edgeImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a grayscale image with a three-dimensional effect
- * @link https://php.net/manual/en/imagick.embossimage.php
- * @param float $radius
- * The radius of the effect
- *
- * @param float $sigma
- * The sigma of the effect
- *
- * @return bool TRUE on success.
- */
- public function embossImage ($radius, $sigma) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Improves the quality of a noisy image
- * @link https://php.net/manual/en/imagick.enhanceimage.php
- * @return bool TRUE on success.
- */
- public function enhanceImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Equalizes the image histogram
- * @link https://php.net/manual/en/imagick.equalizeimage.php
- * @return bool TRUE on success.
- */
- public function equalizeImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies an expression to an image
- * @link https://php.net/manual/en/imagick.evaluateimage.php
- * @param int $op
- * The evaluation operator
- *
- * @param float $constant
- * The value of the operator
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function evaluateImage ($op, $constant, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * Merges a sequence of images. This is useful for combining Photoshop layers into a single image.
- * This is replaced by:
- *
- * @link https://php.net/manual/en/imagick.flattenimages.php
- * @return Imagick Returns an Imagick object containing the merged image.
- * @throws ImagickException Throws ImagickException on error.
- * @since 2.0.0
- */
- public function flattenImages () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a vertical mirror image
- * @link https://php.net/manual/en/imagick.flipimage.php
- * @return bool TRUE on success.
- */
- public function flipImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a horizontal mirror image
- * @link https://php.net/manual/en/imagick.flopimage.php
- * @return bool TRUE on success.
- */
- public function flopImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds a simulated three-dimensional border
- * @link https://php.net/manual/en/imagick.frameimage.php
- * @param mixed $matte_color
- * ImagickPixel object or a string representing the matte color
- *
- * @param int $width
- * The width of the border
- *
- * @param int $height
- * The height of the border
- *
- * @param int $inner_bevel
- * The inner bevel width
- *
- * @param int $outer_bevel
- * The outer bevel width
- *
- * @return bool TRUE on success.
- */
- public function frameImage ($matte_color, $width, $height, $inner_bevel, $outer_bevel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Evaluate expression for each pixel in the image
- * @link https://php.net/manual/en/imagick.fximage.php
- * @param string $expression
- * The expression.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return Imagick TRUE on success.
- */
- public function fxImage ($expression, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gamma-corrects an image
- * @link https://php.net/manual/en/imagick.gammaimage.php
- * @param float $gamma
- * The amount of gamma-correction.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function gammaImage ($gamma, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Blurs an image
- * @link https://php.net/manual/en/imagick.gaussianblurimage.php
- * @param float $radius
- * The radius of the Gaussian, in pixels, not counting the center pixel.
- *
- * @param float $sigma
- * The standard deviation of the Gaussian, in pixels.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function gaussianBlurImage ($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * @param $key
- */
- public function getImageAttribute ($key) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image background color
- * @link https://php.net/manual/en/imagick.getimagebackgroundcolor.php
- * @return ImagickPixel an ImagickPixel set to the background color of the image.
- */
- public function getImageBackgroundColor () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the chromaticy blue primary point
- * @link https://php.net/manual/en/imagick.getimageblueprimary.php
- * @return array Array consisting of "x" and "y" coordinates of point.
- */
- public function getImageBluePrimary () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image border color
- * @link https://php.net/manual/en/imagick.getimagebordercolor.php
- * @return ImagickPixel TRUE on success.
- */
- public function getImageBorderColor () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the depth for a particular image channel
- * @link https://php.net/manual/en/imagick.getimagechanneldepth.php
- * @param int $channel
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- *
- * @return int TRUE on success.
- */
- public function getImageChannelDepth ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Compares image channels of an image to a reconstructed image
- * @link https://php.net/manual/en/imagick.getimagechanneldistortion.php
- * @param Imagick $reference
- * Imagick object to compare to.
- *
- * @param int $channel
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @param int $metric
- * One of the metric type constants.
- *
- * @return float TRUE on success.
- */
- public function getImageChannelDistortion (Imagick $reference, $channel, $metric) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the extrema for one or more image channels
- * @link https://php.net/manual/en/imagick.getimagechannelextrema.php
- * @param int $channel
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return array TRUE on success.
- */
- public function getImageChannelExtrema ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the mean and standard deviation
- * @link https://php.net/manual/en/imagick.getimagechannelmean.php
- * @param int $channel
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return array TRUE on success.
- */
- public function getImageChannelMean ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns statistics for each channel in the image
- * @link https://php.net/manual/en/imagick.getimagechannelstatistics.php
- * @return array TRUE on success.
- */
- public function getImageChannelStatistics () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the color of the specified colormap index
- * @link https://php.net/manual/en/imagick.getimagecolormapcolor.php
- * @param int $index
- * The offset into the image colormap.
- *
- * @return ImagickPixel TRUE on success.
- */
- public function getImageColormapColor ($index) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image colorspace
- * @link https://php.net/manual/en/imagick.getimagecolorspace.php
- * @return int TRUE on success.
- */
- public function getImageColorspace () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the composite operator associated with the image
- * @link https://php.net/manual/en/imagick.getimagecompose.php
- * @return int TRUE on success.
- */
- public function getImageCompose () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image delay
- * @link https://php.net/manual/en/imagick.getimagedelay.php
- * @return int the image delay.
- */
- public function getImageDelay () {}
-
- /**
- * (PECL imagick 0.9.1-0.9.9)
- * Gets the image depth
- * @link https://php.net/manual/en/imagick.getimagedepth.php
- * @return int The image depth.
- */
- public function getImageDepth () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Compares an image to a reconstructed image
- * @link https://php.net/manual/en/imagick.getimagedistortion.php
- * @param Imagick $reference
- * Imagick object to compare to.
- *
- * @param int $metric
- * One of the metric type constants.
- *
- * @return float the distortion metric used on the image (or the best guess
- * thereof).
- */
- public function getImageDistortion (Imagick $reference, $metric) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the extrema for the image
- * @link https://php.net/manual/en/imagick.getimageextrema.php
- * @return array an associative array with the keys "min" and "max".
- */
- public function getImageExtrema () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image disposal method
- * @link https://php.net/manual/en/imagick.getimagedispose.php
- * @return int the dispose method on success.
- */
- public function getImageDispose () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image gamma
- * @link https://php.net/manual/en/imagick.getimagegamma.php
- * @return float the image gamma on success.
- */
- public function getImageGamma () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the chromaticy green primary point
- * @link https://php.net/manual/en/imagick.getimagegreenprimary.php
- * @return array an array with the keys "x" and "y" on success, throws an ImagickException on failure.
- * @throws ImagickException on failure
- */
- public function getImageGreenPrimary () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image height
- * @link https://php.net/manual/en/imagick.getimageheight.php
- * @return int the image height in pixels.
- */
- public function getImageHeight () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image histogram
- * @link https://php.net/manual/en/imagick.getimagehistogram.php
- * @return array the image histogram as an array of ImagickPixel objects.
- */
- public function getImageHistogram () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image interlace scheme
- * @link https://php.net/manual/en/imagick.getimageinterlacescheme.php
- * @return int the interlace scheme as an integer on success.
- * Trhow an ImagickException on error.
- * @throws ImagickException on error
- */
- public function getImageInterlaceScheme () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image iterations
- * @link https://php.net/manual/en/imagick.getimageiterations.php
- * @return int the image iterations as an integer.
- */
- public function getImageIterations () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image matte color
- * @link https://php.net/manual/en/imagick.getimagemattecolor.php
- * @return ImagickPixel ImagickPixel object on success.
- */
- public function getImageMatteColor () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the page geometry
- * @link https://php.net/manual/en/imagick.getimagepage.php
- * @return array the page geometry associated with the image in an array with the
- * keys "width", "height", "x", and "y".
- */
- public function getImagePage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the color of the specified pixel
- * @link https://php.net/manual/en/imagick.getimagepixelcolor.php
- * @param int $x
- * The x-coordinate of the pixel
- *
- * @param int $y
- * The y-coordinate of the pixel
- *
- * @return ImagickPixel an ImagickPixel instance for the color at the coordinates given.
- */
- public function getImagePixelColor ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the named image profile
- * @link https://php.net/manual/en/imagick.getimageprofile.php
- * @param string $name
- * The name of the profile to return.
- *
- * @return string a string containing the image profile.
- */
- public function getImageProfile ($name) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the chromaticity red primary point
- * @link https://php.net/manual/en/imagick.getimageredprimary.php
- * @return array the chromaticity red primary point as an array with the keys "x"
- * and "y".
- * Throw an ImagickException on error.
- * @throws ImagickException on error
- */
- public function getImageRedPrimary () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image rendering intent
- * @link https://php.net/manual/en/imagick.getimagerenderingintent.php
- * @return int the image rendering intent.
- */
- public function getImageRenderingIntent () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image X and Y resolution
- * @link https://php.net/manual/en/imagick.getimageresolution.php
- * @return array the resolution as an array.
- */
- public function getImageResolution () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image scene
- * @link https://php.net/manual/en/imagick.getimagescene.php
- * @return int the image scene.
- */
- public function getImageScene () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Generates an SHA-256 message digest
- * @link https://php.net/manual/en/imagick.getimagesignature.php
- * @return string a string containing the SHA-256 hash of the file.
- */
- public function getImageSignature () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image ticks-per-second
- * @link https://php.net/manual/en/imagick.getimagetickspersecond.php
- * @return int the image ticks-per-second.
- */
- public function getImageTicksPerSecond () {}
-
- /**
- * (PECL imagick 0.9.10-0.9.9)
- * Gets the potential image type
- * @link https://php.net/manual/en/imagick.getimagetype.php
- * @return int the potential image type.
- * imagick::IMGTYPE_UNDEFINED
- * imagick::IMGTYPE_BILEVEL
- * imagick::IMGTYPE_GRAYSCALE
- * imagick::IMGTYPE_GRAYSCALEMATTE
- * imagick::IMGTYPE_PALETTE
- * imagick::IMGTYPE_PALETTEMATTE
- * imagick::IMGTYPE_TRUECOLOR
- * imagick::IMGTYPE_TRUECOLORMATTE
- * imagick::IMGTYPE_COLORSEPARATION
- * imagick::IMGTYPE_COLORSEPARATIONMATTE
- * imagick::IMGTYPE_OPTIMIZE
- */
- public function getImageType () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image units of resolution
- * @link https://php.net/manual/en/imagick.getimageunits.php
- * @return int the image units of resolution.
- */
- public function getImageUnits () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the virtual pixel method
- * @link https://php.net/manual/en/imagick.getimagevirtualpixelmethod.php
- * @return int the virtual pixel method on success.
- */
- public function getImageVirtualPixelMethod () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the chromaticity white point
- * @link https://php.net/manual/en/imagick.getimagewhitepoint.php
- * @return array the chromaticity white point as an associative array with the keys
- * "x" and "y".
- */
- public function getImageWhitePoint () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the image width
- * @link https://php.net/manual/en/imagick.getimagewidth.php
- * @return int the image width.
- */
- public function getImageWidth () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the number of images in the object
- * @link https://php.net/manual/en/imagick.getnumberimages.php
- * @return int the number of images associated with Imagick object.
- */
- public function getNumberImages () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the image total ink density
- * @link https://php.net/manual/en/imagick.getimagetotalinkdensity.php
- * @return float the image total ink density of the image.
- * Throw an ImagickException on error.
- * @throws ImagickException on error
- */
- public function getImageTotalInkDensity () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Extracts a region of the image
- * @link https://php.net/manual/en/imagick.getimageregion.php
- * @param int $width
- * The width of the extracted region.
- *
- * @param int $height
- * The height of the extracted region.
- *
- * @param int $x
- * X-coordinate of the top-left corner of the extracted region.
- *
- * @param int $y
- * Y-coordinate of the top-left corner of the extracted region.
- *
- * @return Imagick Extracts a region of the image and returns it as a new wand.
- */
- public function getImageRegion ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a new image as a copy
- * @link https://php.net/manual/en/imagick.implodeimage.php
- * @param float $radius
- * The radius of the implode
- *
- * @return bool TRUE on success.
- */
- public function implodeImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adjusts the levels of an image
- * @link https://php.net/manual/en/imagick.levelimage.php
- * @param float $blackPoint
- * The image black point
- *
- * @param float $gamma
- * The gamma value
- *
- * @param float $whitePoint
- * The image white point
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function levelImage ($blackPoint, $gamma, $whitePoint, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Scales an image proportionally 2x
- * @link https://php.net/manual/en/imagick.magnifyimage.php
- * @return bool TRUE on success.
- */
- public function magnifyImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Replaces the colors of an image with the closest color from a reference image.
- * @link https://php.net/manual/en/imagick.mapimage.php
- * @param Imagick $map
- * @param bool $dither
- * @return bool TRUE on success.
- */
- public function mapImage (Imagick $map, $dither) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Changes the transparency value of a color
- * @link https://php.net/manual/en/imagick.mattefloodfillimage.php
- * @param float $alpha
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully
- * transparent.
- *
- * @param float $fuzz
- * The fuzz member of image defines how much tolerance is acceptable to
- * consider two colors as the same.
- *
- * @param mixed $bordercolor
- * An ImagickPixel object or string representing the border color.
- *
- * @param int $x
- * The starting x coordinate of the operation.
- *
- * @param int $y
- * The starting y coordinate of the operation.
- *
- * @return bool TRUE on success.
- */
- public function matteFloodfillImage ($alpha, $fuzz, $bordercolor, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies a digital filter
- * @link https://php.net/manual/en/imagick.medianfilterimage.php
- * @param float $radius
- * The radius of the pixel neighborhood.
- *
- * @return bool TRUE on success.
- */
- public function medianFilterImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Negates the colors in the reference image
- * @link https://php.net/manual/en/imagick.negateimage.php
- * @param bool $gray
- * Whether to only negate grayscale pixels within the image.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function negateImage ($gray, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Change any pixel that matches color
- * @link https://php.net/manual/en/imagick.paintopaqueimage.php
- * @param mixed $target
- * Change this target color to the fill color within the image. An
- * ImagickPixel object or a string representing the target color.
- *
- * @param mixed $fill
- * An ImagickPixel object or a string representing the fill color.
- *
- * @param float $fuzz
- * The fuzz member of image defines how much tolerance is acceptable to
- * consider two colors as the same.
- *
- * @param int $channel [optional]
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- *
- * @return bool TRUE on success.
- */
- public function paintOpaqueImage ($target, $fill, $fuzz, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Changes any pixel that matches color with the color defined by fill
- * @link https://php.net/manual/en/imagick.painttransparentimage.php
- * @param mixed $target
- * Change this target color to specified opacity value within the image.
- *
- * @param float $alpha
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully
- * transparent.
- *
- * @param float $fuzz
- * The fuzz member of image defines how much tolerance is acceptable to
- * consider two colors as the same.
- *
- * @return bool TRUE on success.
- */
- public function paintTransparentImage ($target, $alpha, $fuzz) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Quickly pin-point appropriate parameters for image processing
- * @link https://php.net/manual/en/imagick.previewimages.php
- * @param int $preview
- * Preview type. See Preview type constants
- *
- * @return bool TRUE on success.
- */
- public function previewImages ($preview) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds or removes a profile from an image
- * @link https://php.net/manual/en/imagick.profileimage.php
- * @param string $name
- * @param string $profile
- * @return bool TRUE on success.
- */
- public function profileImage ($name, $profile) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Analyzes the colors within a reference image
- * @link https://php.net/manual/en/imagick.quantizeimage.php
- * @param int $numberColors
- * @param int $colorspace
- * @param int $treedepth
- * @param bool $dither
- * @param bool $measureError
- * @return bool TRUE on success.
- */
- public function quantizeImage ($numberColors, $colorspace, $treedepth, $dither, $measureError) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Analyzes the colors within a sequence of images
- * @link https://php.net/manual/en/imagick.quantizeimages.php
- * @param int $numberColors
- * @param int $colorspace
- * @param int $treedepth
- * @param bool $dither
- * @param bool $measureError
- * @return bool TRUE on success.
- */
- public function quantizeImages ($numberColors, $colorspace, $treedepth, $dither, $measureError) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Smooths the contours of an image
- * @link https://php.net/manual/en/imagick.reducenoiseimage.php
- * @param float $radius
- * @return bool TRUE on success.
- */
- public function reduceNoiseImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Removes the named image profile and returns it
- * @link https://php.net/manual/en/imagick.removeimageprofile.php
- * @param string $name
- * @return string a string containing the profile of the image.
- */
- public function removeImageProfile ($name) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Separates a channel from the image
- * @link https://php.net/manual/en/imagick.separateimagechannel.php
- * @param int $channel
- * @return bool TRUE on success.
- */
- public function separateImageChannel ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sepia tones an image
- * @link https://php.net/manual/en/imagick.sepiatoneimage.php
- * @param float $threshold
- * @return bool TRUE on success.
- */
- public function sepiaToneImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image bias for any method that convolves an image
- * @link https://php.net/manual/en/imagick.setimagebias.php
- * @param float $bias
- * @return bool TRUE on success.
- */
- public function setImageBias ($bias) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image chromaticity blue primary point
- * @link https://php.net/manual/en/imagick.setimageblueprimary.php
- * @param float $x
- * @param float $y
- * @return bool TRUE on success.
- */
- public function setImageBluePrimary ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image border color
- * @link https://php.net/manual/en/imagick.setimagebordercolor.php
- * @param mixed $border
- * The border color
- *
- * @return bool TRUE on success.
- */
- public function setImageBorderColor ($border) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the depth of a particular image channel
- * @link https://php.net/manual/en/imagick.setimagechanneldepth.php
- * @param int $channel
- * @param int $depth
- * @return bool TRUE on success.
- */
- public function setImageChannelDepth ($channel, $depth) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the color of the specified colormap index
- * @link https://php.net/manual/en/imagick.setimagecolormapcolor.php
- * @param int $index
- * @param ImagickPixel $color
- * @return bool TRUE on success.
- */
- public function setImageColormapColor ($index, ImagickPixel $color) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image colorspace
- * @link https://php.net/manual/en/imagick.setimagecolorspace.php
- * @param int $colorspace
- * One of the COLORSPACE constants
- *
- * @return bool TRUE on success.
- */
- public function setImageColorspace ($colorspace) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image disposal method
- * @link https://php.net/manual/en/imagick.setimagedispose.php
- * @param int $dispose
- * @return bool TRUE on success.
- */
- public function setImageDispose ($dispose) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image size
- * @link https://php.net/manual/en/imagick.setimageextent.php
- * @param int $columns
- * @param int $rows
- * @return bool TRUE on success.
- */
- public function setImageExtent ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image chromaticity green primary point
- * @link https://php.net/manual/en/imagick.setimagegreenprimary.php
- * @param float $x
- * @param float $y
- * @return bool TRUE on success.
- */
- public function setImageGreenPrimary ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image compression
- * @link https://php.net/manual/en/imagick.setimageinterlacescheme.php
- * @param int $interlace_scheme
- * @return bool TRUE on success.
- */
- public function setImageInterlaceScheme ($interlace_scheme) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds a named profile to the Imagick object
- * @link https://php.net/manual/en/imagick.setimageprofile.php
- * @param string $name
- * @param string $profile
- * @return bool TRUE on success.
- */
- public function setImageProfile ($name, $profile) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image chromaticity red primary point
- * @link https://php.net/manual/en/imagick.setimageredprimary.php
- * @param float $x
- * @param float $y
- * @return bool TRUE on success.
- */
- public function setImageRedPrimary ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image rendering intent
- * @link https://php.net/manual/en/imagick.setimagerenderingintent.php
- * @param int $rendering_intent
- * @return bool TRUE on success.
- */
- public function setImageRenderingIntent ($rendering_intent) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image virtual pixel method
- * @link https://php.net/manual/en/imagick.setimagevirtualpixelmethod.php
- * @param int $method
- * @return bool TRUE on success.
- */
- public function setImageVirtualPixelMethod ($method) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image chromaticity white point
- * @link https://php.net/manual/en/imagick.setimagewhitepoint.php
- * @param float $x
- * @param float $y
- * @return bool TRUE on success.
- */
- public function setImageWhitePoint ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adjusts the contrast of an image
- * @link https://php.net/manual/en/imagick.sigmoidalcontrastimage.php
- * @param bool $sharpen
- * @param float $alpha
- * @param float $beta
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function sigmoidalContrastImage ($sharpen, $alpha, $beta, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Composites two images
- * @link https://php.net/manual/en/imagick.stereoimage.php
- * @param Imagick $offset_wand
- * @return bool TRUE on success.
- */
- public function stereoImage (Imagick $offset_wand) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Repeatedly tiles the texture image
- * @link https://php.net/manual/en/imagick.textureimage.php
- * @param Imagick $texture_wand
- * @return bool TRUE on success.
- */
- public function textureImage (Imagick $texture_wand) {}
-
- /**
- * pplies a color vector to each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.
- * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0
- * @link https://php.net/manual/en/imagick.tintimage.php
- * @param mixed $tint
- * @param mixed $opacity
- * @param bool $legacy [optional]
- * @return bool TRUE on success.
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function tintImage ($tint, $opacity, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sharpens an image
- * @link https://php.net/manual/en/imagick.unsharpmaskimage.php
- * @param float $radius
- * @param float $sigma
- * @param float $amount
- * @param float $threshold
- * @param int $channel [optional]
- * @return bool TRUE on success.
- */
- public function unsharpMaskImage ($radius, $sigma, $amount, $threshold, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a new Imagick object
- * @link https://php.net/manual/en/imagick.getimage.php
- * @return Imagick a new Imagick object with the current image sequence.
- */
- public function getImage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds new image to Imagick object image list
- * @link https://php.net/manual/en/imagick.addimage.php
- * @param Imagick $source
- * The source Imagick object
- *
- * @return bool TRUE on success.
- */
- public function addImage (Imagick $source) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Replaces image in the object
- * @link https://php.net/manual/en/imagick.setimage.php
- * @param Imagick $replace
- * The replace Imagick object
- *
- * @return bool TRUE on success.
- */
- public function setImage (Imagick $replace) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a new image
- * @link https://php.net/manual/en/imagick.newimage.php
- * @param int $cols
- * Columns in the new image
- *
- * @param int $rows
- * Rows in the new image
- *
- * @param mixed $background
- * The background color used for this image
- *
- * @param string $format [optional]
- * Image format. This parameter was added in Imagick version 2.0.1.
- *
- * @return bool TRUE on success.
- */
- public function newImage ($cols, $rows, $background, $format = null) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Creates a new image
- * @link https://php.net/manual/en/imagick.newpseudoimage.php
- * @param int $columns
- * @return bool TRUE on success.
- */
- public function newPseudoImage ($columns, $rows, $pseudoString) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the object compression type
- * @link https://php.net/manual/en/imagick.getcompression.php
- * @return int the compression constant
- */
- public function getCompression () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the object compression quality
- * @link https://php.net/manual/en/imagick.getcompressionquality.php
- * @return int integer describing the compression quality
- */
- public function getCompressionQuality () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the ImageMagick API copyright as a string
- * @link https://php.net/manual/en/imagick.getcopyright.php
- * @return string a string containing the copyright notice of Imagemagick and
- * Magickwand C API.
- */
- public static function getCopyright () {}
-
- /**
- * (PECL imagick 2.0.0)
- * The filename associated with an image sequence
- * @link https://php.net/manual/en/imagick.getfilename.php
- * @return string a string on success.
- */
- public function getFilename () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the format of the Imagick object
- * @link https://php.net/manual/en/imagick.getformat.php
- * @return string the format of the image.
- */
- public function getFormat () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the ImageMagick home URL
- * @link https://php.net/manual/en/imagick.gethomeurl.php
- * @return string a link to the imagemagick homepage.
- */
- public static function getHomeURL () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the object interlace scheme
- * @link https://php.net/manual/en/imagick.getinterlacescheme.php
- * @return int Gets the wand interlace
- * scheme.
- */
- public function getInterlaceScheme () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a value associated with the specified key
- * @link https://php.net/manual/en/imagick.getoption.php
- * @param string $key
- * The name of the option
- *
- * @return string a value associated with a wand and the specified key.
- */
- public function getOption ($key) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the ImageMagick package name
- * @link https://php.net/manual/en/imagick.getpackagename.php
- * @return string the ImageMagick package name as a string.
- */
- public static function getPackageName () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the page geometry
- * @link https://php.net/manual/en/imagick.getpage.php
- * @return array the page geometry associated with the Imagick object in
- * an associative array with the keys "width", "height", "x", and "y",
- * throwing ImagickException on error.
- * @throws ImagickException on error
- */
- public function getPage () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the quantum depth
- * @link https://php.net/manual/en/imagick.getquantumdepth.php
- * @return array the Imagick quantum depth as a string.
- */
- public static function getQuantumDepth () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the Imagick quantum range
- * @link https://php.net/manual/en/imagick.getquantumrange.php
- * @return array the Imagick quantum range as a string.
- */
- public static function getQuantumRange () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the ImageMagick release date
- * @link https://php.net/manual/en/imagick.getreleasedate.php
- * @return string the ImageMagick release date as a string.
- */
- public static function getReleaseDate () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the specified resource's memory usage
- * @link https://php.net/manual/en/imagick.getresource.php
- * @param int $type
- * Refer to the list of resourcetype constants.
- *
- * @return int the specified resource's memory usage in megabytes.
- */
- public static function getResource ($type) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the specified resource limit
- * @link https://php.net/manual/en/imagick.getresourcelimit.php
- * @param int $type
- * Refer to the list of resourcetype constants.
- *
- * @return int the specified resource limit in megabytes.
- */
- public static function getResourceLimit ($type) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the horizontal and vertical sampling factor
- * @link https://php.net/manual/en/imagick.getsamplingfactors.php
- * @return array an associative array with the horizontal and vertical sampling
- * factors of the image.
- */
- public function getSamplingFactors () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the size associated with the Imagick object
- * @link https://php.net/manual/en/imagick.getsize.php
- * @return array the size associated with the Imagick object as an array with the
- * keys "columns" and "rows".
- */
- public function getSize () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the ImageMagick API version
- * @link https://php.net/manual/en/imagick.getversion.php
- * @return array the ImageMagick API version as a string and as a number.
- */
- public static function getVersion () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the object's default background color
- * @link https://php.net/manual/en/imagick.setbackgroundcolor.php
- * @param mixed $background
- * @return bool TRUE on success.
- */
- public function setBackgroundColor ($background) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the object's default compression type
- * @link https://php.net/manual/en/imagick.setcompression.php
- * @param int $compression
- * @return bool TRUE on success.
- */
- public function setCompression ($compression) {}
-
- /**
- * (PECL imagick 0.9.10-0.9.9)
- * Sets the object's default compression quality
- * @link https://php.net/manual/en/imagick.setcompressionquality.php
- * @param int $quality
- * @return bool TRUE on success.
- */
- public function setCompressionQuality ($quality) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the filename before you read or write the image
- * @link https://php.net/manual/en/imagick.setfilename.php
- * @param string $filename
- * @return bool TRUE on success.
- */
- public function setFilename ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the format of the Imagick object
- * @link https://php.net/manual/en/imagick.setformat.php
- * @param string $format
- * @return bool TRUE on success.
- */
- public function setFormat ($format) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image compression
- * @link https://php.net/manual/en/imagick.setinterlacescheme.php
- * @param int $interlace_scheme
- * @return bool TRUE on success.
- */
- public function setInterlaceScheme ($interlace_scheme) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Set an option
- * @link https://php.net/manual/en/imagick.setoption.php
- * @param string $key
- * @param string $value
- * @return bool TRUE on success.
- */
- public function setOption ($key, $value) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the page geometry of the Imagick object
- * @link https://php.net/manual/en/imagick.setpage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @return bool TRUE on success.
- */
- public function setPage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the limit for a particular resource in megabytes
- * @link https://php.net/manual/en/imagick.setresourcelimit.php
- * @param int $type
- * Refer to the list of resourcetype constants.
- *
- * @param int $limit
- * The resource limit. The unit depends on the type of the resource being limited.
- *
- * @return bool TRUE on success.
- */
- public static function setResourceLimit ($type, $limit) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image resolution
- * @link https://php.net/manual/en/imagick.setresolution.php
- * @param float $x_resolution
- * The horizontal resolution.
- *
- * @param float $y_resolution
- * The vertical resolution.
- *
- * @return bool TRUE on success.
- */
- public function setResolution ($x_resolution, $y_resolution) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image sampling factors
- * @link https://php.net/manual/en/imagick.setsamplingfactors.php
- * @param array $factors
- * @return bool TRUE on success.
- */
- public function setSamplingFactors (array $factors) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the size of the Imagick object
- * @link https://php.net/manual/en/imagick.setsize.php
- * @param int $columns
- * @param int $rows
- * @return bool TRUE on success.
- */
- public function setSize ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the image type attribute
- * @link https://php.net/manual/en/imagick.settype.php
- * @param int $image_type
- * @return bool TRUE on success.
- */
- public function setType ($image_type) {}
-
- public function key () {}
-
- public function next () {}
-
- public function rewind () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Checks if the current item is valid
- * @link https://php.net/manual/en/imagick.valid.php
- * @return bool TRUE on success.
- */
- public function valid () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a reference to the current Imagick object
- * @link https://php.net/manual/en/imagick.current.php
- * @return Imagick self on success.
- */
- public function current () {}
-
- /**
- * Change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.
- * @link https://php.net/manual/en/imagick.brightnesscontrastimage.php
- * @param string $brightness
- * @param string $contrast
- * @param int $CHANNEL [optional]
- * @return void
- * @since 3.3.0
- */
- public function brightnessContrastImage ($brightness, $contrast, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Applies a user supplied kernel to the image according to the given morphology method.
- * @link https://php.net/manual/en/imagick.morphology.php
- * @param int $morphologyMethod Which morphology method to use one of the \Imagick::MORPHOLOGY_* constants.
- * @param int $iterations The number of iteration to apply the morphology function. A value of -1 means loop until no change found. How this is applied may depend on the morphology method. Typically this is a value of 1.
- * @param ImagickKernel $ImagickKernel
- * @param int $CHANNEL [optional]
- * @return void
- * @since 3.3.0
- */
- public function morphology ($morphologyMethod, $iterations, ImagickKernel $ImagickKernel, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Applies a custom convolution kernel to the image.
- * @link https://php.net/manual/en/imagick.filter.php
- * @param ImagickKernel $ImagickKernel An instance of ImagickKernel that represents either a single kernel or a linked series of kernels.
- * @param int $CHANNEL [optional] Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- * @return void
- * @since 3.3.0
- */
- public function filter (ImagickKernel $ImagickKernel , $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets).
- * The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255)
- * @link https://php.net/manual/en/imagick.colormatriximage.php
- * @param string $color_matrix
- * @return void
- * @since 3.3.0
- */
- public function colorMatrixImage ($color_matrix = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Deletes an image property.
- * @link https://php.net/manual/en/imagick.deleteimageproperty.php
- * @param string $name The name of the property to delete.
- * @return void
- * @since 3.3.0
- */
- public function deleteImageProperty ($name) { }
-
- /**
- * Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
- * @link https://php.net/manual/en/imagick.forwardfouriertransformimage.php
- * @param bool $magnitude If true, return as magnitude / phase pair otherwise a real / imaginary image pair.
- * @return void
- * @since 3.3.0
- */
- public function forwardFourierTransformimage ($magnitude) { }
-
- /**
- * Gets the current image's compression type.
- * @link https://php.net/manual/en/imagick.getimagecompression.php
- * @return int
- * @since 3.3.0
- */
- public function getImageCompression () { }
-
- /**
- * Get the StringRegistry entry for the named key or false if not set.
- * @link https://php.net/manual/en/imagick.getregistry.php
- * @param string $key
- * @return string|false
- * @throws Exception Since version >=3.4.3. Throws an exception if the key does not exist, rather than terminating the program.
- * @since 3.3.0
- */
- public static function getRegistry ($key) { }
-
- /**
- * Returns the ImageMagick quantum range as an integer.
- * @link https://php.net/manual/en/imagick.getquantum.php
- * @return int
- * @since 3.3.0
- */
- public static function getQuantum () { }
-
- /**
- * Replaces any embedded formatting characters with the appropriate image property and returns the interpreted text. See https://www.imagemagick.org/script/escape.php for escape sequences.
- * @link https://php.net/manual/en/imagick.identifyformat.php
- * @see https://www.imagemagick.org/script/escape.php
- * @param string $embedText A string containing formatting sequences e.g. "Trim box: %@ number of unique colors: %k".
- * @return bool
- * @since 3.3.0
- */
- public function identifyFormat ($embedText) { }
-
- /**
- * Implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
- * @link https://php.net/manual/en/imagick.inversefouriertransformimage.php
- * @param Imagick $complement The second image to combine with this one to form either the magnitude / phase or real / imaginary image pair.
- * @param bool $magnitude If true, combine as magnitude / phase pair otherwise a real / imaginary image pair.
- * @return void
- * @since 3.3.0
- */
- public function inverseFourierTransformImage ($complement, $magnitude) { }
-
- /**
- * List all the registry settings. Returns an array of all the key/value pairs in the registry
- * @link https://php.net/manual/en/imagick.listregistry.php
- * @return array An array containing the key/values from the registry.
- * @since 3.3.0
- */
- public static function listRegistry () { }
-
- /**
- * Rotational blurs an image.
- * @link https://php.net/manual/en/imagick.rotationalblurimage.php
- * @param string $angle
- * @param string $CHANNEL
- * @return void
- * @since 3.3.0
- */
- public function rotationalBlurImage ($angle, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Selectively blur an image within a contrast threshold. It is similar to the unsharpen mask that sharpens everything with contrast above a certain threshold.
- * @link https://php.net/manual/en/imagick.selectiveblurimage.php
- * @param float $radius
- * @param float $sigma
- * @param float $threshold
- * @param int $CHANNEL Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- * @return void
- * @since 3.3.0
- */
- public function selectiveBlurImage ($radius, $sigma, $threshold, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Set whether antialiasing should be used for operations. On by default.
- * @param bool $antialias
- * @return int
- * @since 3.3.0
- */
- public function setAntiAlias ($antialias) { }
-
- /**
- * @link https://php.net/manual/en/imagick.setimagebiasquantum.php
- * @param string $bias
- * @return void
- * @since 3.3.0
- */
- public function setImageBiasQuantum ($bias) { }
-
- /**
- * Set a callback that will be called during the processing of the Imagick image.
- * @link https://php.net/manual/en/imagick.setprogressmonitor.php
- * @param callable $callback The progress function to call. It should return true if image processing should continue, or false if it should be cancelled.
- * The offset parameter indicates the progress and the span parameter indicates the total amount of work needed to be done.
- *
bool callback ( mixed $offset , mixed $span )
- * Caution
- * The values passed to the callback function are not consistent. In particular the span parameter can increase during image processing. Because of this calculating the percentage complete of an image operation is not trivial.
- * @return void
- * @since 3.3.0
- */
- public function setProgressMonitor ($callback) { }
-
- /**
- * Sets the ImageMagick registry entry named key to value. This is most useful for setting "temporary-path" which controls where ImageMagick creates temporary images e.g. while processing PDFs.
- * @link https://php.net/manual/en/imagick.setregistry.php
- * @param string $key
- * @param string $value
- * @return void
- * @since 3.3.0
- */
- public static function setRegistry ($key, $value) { }
-
- /**
- * Replace each pixel with corresponding statistic from the neighborhood of the specified width and height.
- * @link https://php.net/manual/en/imagick.statisticimage.php
- * @param int $type
- * @param int $width
- * @param int $height
- * @param int $channel [optional]
- * @return void
- * @since 3.3.0
- */
- public function statisticImage ($type, $width, $height, $channel = Imagick::CHANNEL_DEFAULT ) { }
-
- /**
- * Searches for a subimage in the current image and returns a similarity image such that an exact match location is
- * completely white and if none of the pixels match, black, otherwise some gray level in-between.
- * You can also pass in the optional parameters bestMatch and similarity. After calling the function similarity will
- * be set to the 'score' of the similarity between the subimage and the matching position in the larger image,
- * bestMatch will contain an associative array with elements x, y, width, height that describe the matching region.
- *
- * @link https://php.net/manual/en/imagick.subimagematch.php
- * @param Imagick $imagick
- * @param array &$bestMatch [optional]
- * @param float &$similarity [optional] A new image that displays the amount of similarity at each pixel.
- * @param float $similarity_threshold [optional] Only used if compiled with ImageMagick (library) > 7
- * @param int $metric [optional] Only used if compiled with ImageMagick (library) > 7
- * @return Imagick
- * @since 3.3.0
- */
- public function subImageMatch (Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) { }
-
- /**
- * Is an alias of Imagick::subImageMatch
- *
- * @param Imagick $imagick
- * @param array $bestMatch [optional]
- * @param float $similarity [optional] A new image that displays the amount of similarity at each pixel.
- * @param float $similarity_threshold [optional]
- * @param int $metric [optional]
- * @return Imagick
- * @see Imagick::subImageMatch() This function is an alias of subImageMatch()
- * @since 3.4.0
- */
- public function similarityImage (Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) { }
-
- /**
- * Returns any ImageMagick configure options that match the specified pattern (e.g. "*" for all). Options include NAME, VERSION, LIB_VERSION, etc.
- * @return string
- * @since 3.4.0
- */
- public function getConfigureOptions () { }
-
- /**
- * GetFeatures() returns the ImageMagick features that have been compiled into the runtime.
- * @return string
- * @since 3.4.0
- */
- public function getFeatures () { }
-
- /**
- * @return int
- * @since 3.4.0
- */
- public function getHDRIEnabled () { }
-
- /**
- * Sets the image channel mask. Returns the previous set channel mask.
- * Only works with Imagick >=7
- * @param int $channel
- * @since 3.4.0
- */
- public function setImageChannelMask ($channel) {}
-
- /**
- * Merge multiple images of the same size together with the selected operator. https://www.imagemagick.org/Usage/layers/#evaluate-sequence
- * @param int $EVALUATE_CONSTANT
- * @return bool
- * @see https://www.imagemagick.org/Usage/layers/#evaluate-sequence
- * @since 3.4.0
- */
- public function evaluateImages ($EVALUATE_CONSTANT) { }
-
- /**
- * Extracts the 'mean' from the image and adjust the image to try make set its gamma appropriately.
- * @param int $channel [optional] Default value Imagick::CHANNEL_ALL
- * @return bool
- * @since 3.4.1
- */
- public function autoGammaImage ($channel = Imagick::CHANNEL_ALL) { }
-
- /**
- * Adjusts an image so that its orientation is suitable $ for viewing (i.e. top-left orientation).
- * @return bool
- * @since 3.4.1
- */
- public function autoOrient () { }
-
- /**
- * Composite one image onto another using the specified gravity.
- *
- * @param Imagick $imagick
- * @param int $COMPOSITE_CONSTANT
- * @param int $GRAVITY_CONSTANT
- * @return bool
- * @since 3.4.1
- */
- public function compositeImageGravity(Imagick $imagick, $COMPOSITE_CONSTANT, $GRAVITY_CONSTANT) { }
-
- /**
- * Attempts to increase the appearance of large-scale light-dark transitions.
- *
- * @param float $radius
- * @param float $strength
- * @return bool
- * @since 3.4.1
- */
- public function localContrastImage($radius, $strength) { }
-
- /**
- * Identifies the potential image type, returns one of the Imagick::IMGTYPE_* constants
- * @return int
- * @since 3.4.3
- */
- public function identifyImageType() { }
-
- /**
- * Sets the image to the specified alpha level. Will replace ImagickDraw::setOpacity()
- *
- * @param float $alpha
- * @return bool
- * @since 3.4.3
- */
- public function setImageAlpha($alpha) { }
-}
-
-/**
- * @method ImagickDraw clone() (PECL imagick 2.0.0) Makes an exact copy of the specified ImagickDraw object
- * @link https://php.net/manual/en/class.imagickdraw.php
- */
-class ImagickDraw {
-
- public function resetVectorGraphics () {}
-
- public function getTextKerning () {}
-
- /**
- * @param $kerning
- */
- public function setTextKerning ($kerning) {}
-
- public function getTextInterWordSpacing () {}
-
- /**
- * @param $spacing
- */
- public function setTextInterWordSpacing ($spacing) {}
-
- public function getTextInterLineSpacing () {}
-
- /**
- * @param $spacing
- */
- public function setTextInterLineSpacing ($spacing) {}
-
- /**
- * (PECL imagick 2.0.0)
- * The ImagickDraw constructor
- * @link https://php.net/manual/en/imagickdraw.construct.php
- */
- public function __construct () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the fill color to be used for drawing filled objects
- * @link https://php.net/manual/en/imagickdraw.setfillcolor.php
- * @param ImagickPixel $fill_pixel
- * ImagickPixel to use to set the color
- *
- * @return bool No value is returned.
- */
- public function setFillColor (ImagickPixel $fill_pixel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the opacity to use when drawing using the fill color or fill texture
- * @link https://php.net/manual/en/imagickdraw.setfillalpha.php
- * @param float $opacity
- * fill alpha
- *
- * @return bool No value is returned.
- */
- public function setFillAlpha ($opacity) {}
-
- /**
- * @param $x_resolution
- * @param $y_resolution
- */
- public function setResolution ($x_resolution, $y_resolution) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the color used for stroking object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokecolor.php
- * @param ImagickPixel $stroke_pixel
- * the stroke color
- *
- * @return bool No value is returned.
- */
- public function setStrokeColor (ImagickPixel $stroke_pixel) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the opacity of stroked object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokealpha.php
- * @param float $opacity
- * opacity
- *
- * @return bool No value is returned.
- */
- public function setStrokeAlpha ($opacity) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the width of the stroke used to draw object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokewidth.php
- * @param float $stroke_width
- * stroke width
- *
- * @return bool No value is returned.
- */
- public function setStrokeWidth ($stroke_width) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clears the ImagickDraw
- * @link https://php.net/manual/en/imagickdraw.clear.php
- * @return bool an ImagickDraw object.
- */
- public function clear () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a circle
- * @link https://php.net/manual/en/imagickdraw.circle.php
- * @param float $ox
- * origin x coordinate
- *
- * @param float $oy
- * origin y coordinate
- *
- * @param float $px
- * perimeter x coordinate
- *
- * @param float $py
- * perimeter y coordinate
- *
- * @return bool No value is returned.
- */
- public function circle ($ox, $oy, $px, $py) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws text on the image
- * @link https://php.net/manual/en/imagickdraw.annotation.php
- * @param float $x
- * The x coordinate where text is drawn
- *
- * @param float $y
- * The y coordinate where text is drawn
- *
- * @param string $text
- * The text to draw on the image
- *
- * @return bool No value is returned.
- */
- public function annotation ($x, $y, $text) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Controls whether text is antialiased
- * @link https://php.net/manual/en/imagickdraw.settextantialias.php
- * @param bool $antiAlias
- * @return bool No value is returned.
- */
- public function setTextAntialias ($antiAlias) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies specifies the text code set
- * @link https://php.net/manual/en/imagickdraw.settextencoding.php
- * @param string $encoding
- * the encoding name
- *
- * @return bool No value is returned.
- */
- public function setTextEncoding ($encoding) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the fully-specified font to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfont.php
- * @param string $font_name
- * @return bool TRUE on success.
- */
- public function setFont ($font_name) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the font family to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontfamily.php
- * @param string $font_family
- * the font family
- *
- * @return bool TRUE on success.
- */
- public function setFontFamily ($font_family) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the font pointsize to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontsize.php
- * @param float $pointsize
- * the point size
- *
- * @return bool No value is returned.
- */
- public function setFontSize ($pointsize) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the font style to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontstyle.php
- * @param int $style
- * STYLETYPE_ constant
- *
- * @return bool No value is returned.
- */
- public function setFontStyle ($style) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the font weight
- * @link https://php.net/manual/en/imagickdraw.setfontweight.php
- * @param int $font_weight
- * @return bool
- */
- public function setFontWeight ($font_weight) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the font
- * @link https://php.net/manual/en/imagickdraw.getfont.php
- * @return string|false a string on success and false if no font is set.
- */
- public function getFont () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the font family
- * @link https://php.net/manual/en/imagickdraw.getfontfamily.php
- * @return string|false the font family currently selected or false if font family is not set.
- */
- public function getFontFamily () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the font pointsize
- * @link https://php.net/manual/en/imagickdraw.getfontsize.php
- * @return float the font size associated with the current ImagickDraw object.
- */
- public function getFontSize () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the font style
- * @link https://php.net/manual/en/imagickdraw.getfontstyle.php
- * @return int the font style constant (STYLE_) associated with the ImagickDraw object
- * or 0 if no style is set.
- */
- public function getFontStyle () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the font weight
- * @link https://php.net/manual/en/imagickdraw.getfontweight.php
- * @return int an int on success and 0 if no weight is set.
- */
- public function getFontWeight () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Frees all associated resources
- * @link https://php.net/manual/en/imagickdraw.destroy.php
- * @return bool No value is returned.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a rectangle
- * @link https://php.net/manual/en/imagickdraw.rectangle.php
- * @param float $x1
- * x coordinate of the top left corner
- *
- * @param float $y1
- * y coordinate of the top left corner
- *
- * @param float $x2
- * x coordinate of the bottom right corner
- *
- * @param float $y2
- * y coordinate of the bottom right corner
- *
- * @return bool No value is returned.
- */
- public function rectangle ($x1, $y1, $x2, $y2) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a rounded rectangle
- * @link https://php.net/manual/en/imagickdraw.roundrectangle.php
- * @param float $x1
- * x coordinate of the top left corner
- *
- * @param float $y1
- * y coordinate of the top left corner
- *
- * @param float $x2
- * x coordinate of the bottom right
- *
- * @param float $y2
- * y coordinate of the bottom right
- *
- * @param float $rx
- * x rounding
- *
- * @param float $ry
- * y rounding
- *
- * @return bool No value is returned.
- */
- public function roundRectangle ($x1, $y1, $x2, $y2, $rx, $ry) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws an ellipse on the image
- * @link https://php.net/manual/en/imagickdraw.ellipse.php
- * @param float $ox
- * @param float $oy
- * @param float $rx
- * @param float $ry
- * @param float $start
- * @param float $end
- * @return bool No value is returned.
- */
- public function ellipse ($ox, $oy, $rx, $ry, $start, $end) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Skews the current coordinate system in the horizontal direction
- * @link https://php.net/manual/en/imagickdraw.skewx.php
- * @param float $degrees
- * degrees to skew
- *
- * @return bool No value is returned.
- */
- public function skewX ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Skews the current coordinate system in the vertical direction
- * @link https://php.net/manual/en/imagickdraw.skewy.php
- * @param float $degrees
- * degrees to skew
- *
- * @return bool No value is returned.
- */
- public function skewY ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies a translation to the current coordinate system
- * @link https://php.net/manual/en/imagickdraw.translate.php
- * @param float $x
- * horizontal translation
- *
- * @param float $y
- * vertical translation
- *
- * @return bool No value is returned.
- */
- public function translate ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a line
- * @link https://php.net/manual/en/imagickdraw.line.php
- * @param float $sx
- * starting x coordinate
- *
- * @param float $sy
- * starting y coordinate
- *
- * @param float $ex
- * ending x coordinate
- *
- * @param float $ey
- * ending y coordinate
- *
- * @return bool No value is returned.
- */
- public function line ($sx, $sy, $ex, $ey) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws an arc
- * @link https://php.net/manual/en/imagickdraw.arc.php
- * @param float $sx
- * Starting x ordinate of bounding rectangle
- *
- * @param float $sy
- * starting y ordinate of bounding rectangle
- *
- * @param float $ex
- * ending x ordinate of bounding rectangle
- *
- * @param float $ey
- * ending y ordinate of bounding rectangle
- *
- * @param float $sd
- * starting degrees of rotation
- *
- * @param float $ed
- * ending degrees of rotation
- *
- * @return bool No value is returned.
- */
- public function arc ($sx, $sy, $ex, $ey, $sd, $ed) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Paints on the image's opacity channel
- * @link https://php.net/manual/en/imagickdraw.matte.php
- * @param float $x
- * x coordinate of the matte
- *
- * @param float $y
- * y coordinate of the matte
- *
- * @param int $paintMethod
- * PAINT_ constant
- *
- * @return bool TRUE on success or FALSE on failure.
- */
- public function matte ($x, $y, $paintMethod) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a polygon
- * @link https://php.net/manual/en/imagickdraw.polygon.php
- * @param array $coordinates
- * @return bool TRUE on success.
- */
- public function polygon (array $coordinates) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a point
- * @link https://php.net/manual/en/imagickdraw.point.php
- * @param float $x
- * point's x coordinate
- *
- * @param float $y
- * point's y coordinate
- *
- * @return bool No value is returned.
- */
- public function point ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the text decoration
- * @link https://php.net/manual/en/imagickdraw.gettextdecoration.php
- * @return int one of the DECORATION_ constants
- * and 0 if no decoration is set.
- */
- public function getTextDecoration () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the code set used for text annotations
- * @link https://php.net/manual/en/imagickdraw.gettextencoding.php
- * @return string a string specifying the code set
- * or false if text encoding is not set.
- */
- public function getTextEncoding () {}
-
- public function getFontStretch () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the font stretch to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontstretch.php
- * @param int $fontStretch
- * STRETCH_ constant
- *
- * @return bool No value is returned.
- */
- public function setFontStretch ($fontStretch) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Controls whether stroked outlines are antialiased
- * @link https://php.net/manual/en/imagickdraw.setstrokeantialias.php
- * @param bool $stroke_antialias
- * the antialias setting
- *
- * @return bool No value is returned.
- */
- public function setStrokeAntialias ($stroke_antialias) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies a text alignment
- * @link https://php.net/manual/en/imagickdraw.settextalignment.php
- * @param int $alignment
- * ALIGN_ constant
- *
- * @return bool No value is returned.
- */
- public function setTextAlignment ($alignment) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies a decoration
- * @link https://php.net/manual/en/imagickdraw.settextdecoration.php
- * @param int $decoration
- * DECORATION_ constant
- *
- * @return bool No value is returned.
- */
- public function setTextDecoration ($decoration) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the color of a background rectangle
- * @link https://php.net/manual/en/imagickdraw.settextundercolor.php
- * @param ImagickPixel $under_color
- * the under color
- *
- * @return bool No value is returned.
- */
- public function setTextUnderColor (ImagickPixel $under_color) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the overall canvas size
- * @link https://php.net/manual/en/imagickdraw.setviewbox.php
- * @param int $x1
- * left x coordinate
- *
- * @param int $y1
- * left y coordinate
- *
- * @param int $x2
- * right x coordinate
- *
- * @param int $y2
- * right y coordinate
- *
- * @return bool No value is returned.
- */
- public function setViewbox ($x1, $y1, $x2, $y2) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adjusts the current affine transformation matrix
- * @link https://php.net/manual/en/imagickdraw.affine.php
- * @param array $affine
- * Affine matrix parameters
- *
- * @return bool No value is returned.
- */
- public function affine (array $affine) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a bezier curve
- * @link https://php.net/manual/en/imagickdraw.bezier.php
- * @param array $coordinates
- * @return bool No value is returned.
- */
- public function bezier (array $coordinates) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Composites an image onto the current image
- * @link https://php.net/manual/en/imagickdraw.composite.php
- * @param int $compose
- * composition operator. One of COMPOSITE_ constants
- *
- * @param float $x
- * x coordinate of the top left corner
- *
- * @param float $y
- * y coordinate of the top left corner
- *
- * @param float $width
- * width of the composition image
- *
- * @param float $height
- * height of the composition image
- *
- * @param Imagick $compositeWand
- * the Imagick object where composition image is taken from
- *
- * @return bool TRUE on success.
- */
- public function composite ($compose, $x, $y, $width, $height, Imagick $compositeWand) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws color on image
- * @link https://php.net/manual/en/imagickdraw.color.php
- * @param float $x
- * x coordinate of the paint
- *
- * @param float $y
- * y coordinate of the paint
- *
- * @param int $paintMethod
- * one of the PAINT_ constants
- *
- * @return bool No value is returned.
- */
- public function color ($x, $y, $paintMethod) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds a comment
- * @link https://php.net/manual/en/imagickdraw.comment.php
- * @param string $comment
- * The comment string to add to vector output stream
- *
- * @return bool No value is returned.
- */
- public function comment ($comment) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Obtains the current clipping path ID
- * @link https://php.net/manual/en/imagickdraw.getclippath.php
- * @return string|false a string containing the clip path ID or false if no clip path exists.
- */
- public function getClipPath () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the current polygon fill rule
- * @link https://php.net/manual/en/imagickdraw.getcliprule.php
- * @return int one of the FILLRULE_ constants.
- */
- public function getClipRule () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the interpretation of clip path units
- * @link https://php.net/manual/en/imagickdraw.getclipunits.php
- * @return int an int on success.
- */
- public function getClipUnits () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the fill color
- * @link https://php.net/manual/en/imagickdraw.getfillcolor.php
- * @return ImagickPixel an ImagickPixel object.
- */
- public function getFillColor () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the opacity used when drawing
- * @link https://php.net/manual/en/imagickdraw.getfillopacity.php
- * @return float The opacity.
- */
- public function getFillOpacity () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the fill rule
- * @link https://php.net/manual/en/imagickdraw.getfillrule.php
- * @return int a FILLRULE_ constant
- */
- public function getFillRule () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the text placement gravity
- * @link https://php.net/manual/en/imagickdraw.getgravity.php
- * @return int a GRAVITY_ constant on success and 0 if no gravity is set.
- */
- public function getGravity () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the current stroke antialias setting
- * @link https://php.net/manual/en/imagickdraw.getstrokeantialias.php
- * @return bool TRUE if antialiasing is on and false if it is off.
- */
- public function getStrokeAntialias () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the color used for stroking object outlines
- * @link https://php.net/manual/en/imagickdraw.getstrokecolor.php
- * @return ImagickPixel an ImagickPixel object which describes the color.
- */
- public function getStrokeColor () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns an array representing the pattern of dashes and gaps used to stroke paths
- * @link https://php.net/manual/en/imagickdraw.getstrokedasharray.php
- * @return array an array on success and empty array if not set.
- */
- public function getStrokeDashArray () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the offset into the dash pattern to start the dash
- * @link https://php.net/manual/en/imagickdraw.getstrokedashoffset.php
- * @return float a float representing the offset and 0 if it's not set.
- */
- public function getStrokeDashOffset () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the shape to be used at the end of open subpaths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.getstrokelinecap.php
- * @return int one of the LINECAP_ constants or 0 if stroke linecap is not set.
- */
- public function getStrokeLineCap () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the shape to be used at the corners of paths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.getstrokelinejoin.php
- * @return int one of the LINEJOIN_ constants or 0 if stroke line join is not set.
- */
- public function getStrokeLineJoin () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the stroke miter limit
- * @link https://php.net/manual/en/imagickdraw.getstrokemiterlimit.php
- * @return int an int describing the miter limit
- * and 0 if no miter limit is set.
- */
- public function getStrokeMiterLimit () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the opacity of stroked object outlines
- * @link https://php.net/manual/en/imagickdraw.getstrokeopacity.php
- * @return float a float describing the opacity.
- */
- public function getStrokeOpacity () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the width of the stroke used to draw object outlines
- * @link https://php.net/manual/en/imagickdraw.getstrokewidth.php
- * @return float a float describing the stroke width.
- */
- public function getStrokeWidth () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the text alignment
- * @link https://php.net/manual/en/imagickdraw.gettextalignment.php
- * @return int one of the ALIGN_ constants and 0 if no align is set.
- */
- public function getTextAlignment () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the current text antialias setting
- * @link https://php.net/manual/en/imagickdraw.gettextantialias.php
- * @return bool TRUE if text is antialiased and false if not.
- */
- public function getTextAntialias () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a string containing vector graphics
- * @link https://php.net/manual/en/imagickdraw.getvectorgraphics.php
- * @return string a string containing the vector graphics.
- */
- public function getVectorGraphics () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the text under color
- * @link https://php.net/manual/en/imagickdraw.gettextundercolor.php
- * @return ImagickPixel an ImagickPixel object describing the color.
- */
- public function getTextUnderColor () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adds a path element to the current path
- * @link https://php.net/manual/en/imagickdraw.pathclose.php
- * @return bool No value is returned.
- */
- public function pathClose () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoabsolute.php
- * @param float $x1
- * x coordinate of the first control point
- *
- * @param float $y1
- * y coordinate of the first control point
- *
- * @param float $x2
- * x coordinate of the second control point
- *
- * @param float $y2
- * y coordinate of the first control point
- *
- * @param float $x
- * x coordinate of the curve end
- *
- * @param float $y
- * y coordinate of the curve end
- *
- * @return bool No value is returned.
- */
- public function pathCurveToAbsolute ($x1, $y1, $x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetorelative.php
- * @param float $x1
- * x coordinate of starting control point
- *
- * @param float $y1
- * y coordinate of starting control point
- *
- * @param float $x2
- * x coordinate of ending control point
- *
- * @param float $y2
- * y coordinate of ending control point
- *
- * @param float $x
- * ending x coordinate
- *
- * @param float $y
- * ending y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathCurveToRelative ($x1, $y1, $x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierabsolute.php
- * @param float $x1
- * x coordinate of the control point
- *
- * @param float $y1
- * y coordinate of the control point
- *
- * @param float $x
- * x coordinate of the end point
- *
- * @param float $y
- * y coordinate of the end point
- *
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierAbsolute ($x1, $y1, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierrelative.php
- * @param float $x1
- * starting x coordinate
- *
- * @param float $y1
- * starting y coordinate
- *
- * @param float $x
- * ending x coordinate
- *
- * @param float $y
- * ending y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierRelative ($x1, $y1, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothabsolute.php
- * @param float $x
- * ending x coordinate
- *
- * @param float $y
- * ending y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierSmoothAbsolute ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothrelative.php
- * @param float $x
- * ending x coordinate
- *
- * @param float $y
- * ending y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierSmoothRelative ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothabsolute.php
- * @param float $x2
- * x coordinate of the second control point
- *
- * @param float $y2
- * y coordinate of the second control point
- *
- * @param float $x
- * x coordinate of the ending point
- *
- * @param float $y
- * y coordinate of the ending point
- *
- * @return bool No value is returned.
- */
- public function pathCurveToSmoothAbsolute ($x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothrelative.php
- * @param float $x2
- * x coordinate of the second control point
- *
- * @param float $y2
- * y coordinate of the second control point
- *
- * @param float $x
- * x coordinate of the ending point
- *
- * @param float $y
- * y coordinate of the ending point
- *
- * @return bool No value is returned.
- */
- public function pathCurveToSmoothRelative ($x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws an elliptical arc
- * @link https://php.net/manual/en/imagickdraw.pathellipticarcabsolute.php
- * @param float $rx
- * x radius
- *
- * @param float $ry
- * y radius
- *
- * @param float $x_axis_rotation
- * x axis rotation
- *
- * @param bool $large_arc_flag
- * large arc flag
- *
- * @param bool $sweep_flag
- * sweep flag
- *
- * @param float $x
- * x coordinate
- *
- * @param float $y
- * y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathEllipticArcAbsolute ($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws an elliptical arc
- * @link https://php.net/manual/en/imagickdraw.pathellipticarcrelative.php
- * @param float $rx
- * x radius
- *
- * @param float $ry
- * y radius
- *
- * @param float $x_axis_rotation
- * x axis rotation
- *
- * @param bool $large_arc_flag
- * large arc flag
- *
- * @param bool $sweep_flag
- * sweep flag
- *
- * @param float $x
- * x coordinate
- *
- * @param float $y
- * y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathEllipticArcRelative ($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Terminates the current path
- * @link https://php.net/manual/en/imagickdraw.pathfinish.php
- * @return bool No value is returned.
- */
- public function pathFinish () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetoabsolute.php
- * @param float $x
- * starting x coordinate
- *
- * @param float $y
- * ending x coordinate
- *
- * @return bool No value is returned.
- */
- public function pathLineToAbsolute ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetorelative.php
- * @param float $x
- * starting x coordinate
- *
- * @param float $y
- * starting y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathLineToRelative ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a horizontal line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalabsolute.php
- * @param float $x
- * x coordinate
- *
- * @return bool No value is returned.
- */
- public function pathLineToHorizontalAbsolute ($x) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a horizontal line
- * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalrelative.php
- * @param float $x
- * x coordinate
- *
- * @return bool No value is returned.
- */
- public function pathLineToHorizontalRelative ($x) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a vertical line
- * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalabsolute.php
- * @param float $y
- * y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathLineToVerticalAbsolute ($y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a vertical line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalrelative.php
- * @param float $y
- * y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathLineToVerticalRelative ($y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Starts a new sub-path
- * @link https://php.net/manual/en/imagickdraw.pathmovetoabsolute.php
- * @param float $x
- * x coordinate of the starting point
- *
- * @param float $y
- * y coordinate of the starting point
- *
- * @return bool No value is returned.
- */
- public function pathMoveToAbsolute ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Starts a new sub-path
- * @link https://php.net/manual/en/imagickdraw.pathmovetorelative.php
- * @param float $x
- * target x coordinate
- *
- * @param float $y
- * target y coordinate
- *
- * @return bool No value is returned.
- */
- public function pathMoveToRelative ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Declares the start of a path drawing list
- * @link https://php.net/manual/en/imagickdraw.pathstart.php
- * @return bool No value is returned.
- */
- public function pathStart () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Draws a polyline
- * @link https://php.net/manual/en/imagickdraw.polyline.php
- * @param array $coordinates
- * array of x and y coordinates: array( array( 'x' => 4, 'y' => 6 ), array( 'x' => 8, 'y' => 10 ) )
- *
- * @return bool TRUE on success.
- */
- public function polyline (array $coordinates) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Terminates a clip path definition
- * @link https://php.net/manual/en/imagickdraw.popclippath.php
- * @return bool No value is returned.
- */
- public function popClipPath () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Terminates a definition list
- * @link https://php.net/manual/en/imagickdraw.popdefs.php
- * @return bool No value is returned.
- */
- public function popDefs () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Terminates a pattern definition
- * @link https://php.net/manual/en/imagickdraw.poppattern.php
- * @return bool TRUE on success or FALSE on failure.
- */
- public function popPattern () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Starts a clip path definition
- * @link https://php.net/manual/en/imagickdraw.pushclippath.php
- * @param string $clip_mask_id
- * Clip mask Id
- *
- * @return bool No value is returned.
- */
- public function pushClipPath ($clip_mask_id) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Indicates that following commands create named elements for early processing
- * @link https://php.net/manual/en/imagickdraw.pushdefs.php
- * @return bool No value is returned.
- */
- public function pushDefs () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern
- * @link https://php.net/manual/en/imagickdraw.pushpattern.php
- * @param string $pattern_id
- * the pattern Id
- *
- * @param float $x
- * x coordinate of the top-left corner
- *
- * @param float $y
- * y coordinate of the top-left corner
- *
- * @param float $width
- * width of the pattern
- *
- * @param float $height
- * height of the pattern
- *
- * @return bool TRUE on success or FALSE on failure.
- */
- public function pushPattern ($pattern_id, $x, $y, $width, $height) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Renders all preceding drawing commands onto the image
- * @link https://php.net/manual/en/imagickdraw.render.php
- * @return bool TRUE on success or FALSE on failure.
- */
- public function render () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Applies the specified rotation to the current coordinate space
- * @link https://php.net/manual/en/imagickdraw.rotate.php
- * @param float $degrees
- * degrees to rotate
- *
- * @return bool No value is returned.
- */
- public function rotate ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Adjusts the scaling factor
- * @link https://php.net/manual/en/imagickdraw.scale.php
- * @param float $x
- * horizontal factor
- *
- * @param float $y
- * vertical factor
- *
- * @return bool No value is returned.
- */
- public function scale ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Associates a named clipping path with the image
- * @link https://php.net/manual/en/imagickdraw.setclippath.php
- * @param string $clip_mask
- * the clipping path name
- *
- * @return bool No value is returned.
- */
- public function setClipPath ($clip_mask) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Set the polygon fill rule to be used by the clipping path
- * @link https://php.net/manual/en/imagickdraw.setcliprule.php
- * @param int $fill_rule
- * FILLRULE_ constant
- *
- * @return bool No value is returned.
- */
- public function setClipRule ($fill_rule) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the interpretation of clip path units
- * @link https://php.net/manual/en/imagickdraw.setclipunits.php
- * @param int $clip_units
- * the number of clip units
- *
- * @return bool No value is returned.
- */
- public function setClipUnits ($clip_units) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the opacity to use when drawing using the fill color or fill texture
- * @link https://php.net/manual/en/imagickdraw.setfillopacity.php
- * @param float $fillOpacity
- * the fill opacity
- *
- * @return bool No value is returned.
- */
- public function setFillOpacity ($fillOpacity) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the URL to use as a fill pattern for filling objects
- * @link https://php.net/manual/en/imagickdraw.setfillpatternurl.php
- * @param string $fill_url
- * URL to use to obtain fill pattern.
- *
- * @return bool TRUE on success or FALSE on failure.
- */
- public function setFillPatternURL ($fill_url) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the fill rule to use while drawing polygons
- * @link https://php.net/manual/en/imagickdraw.setfillrule.php
- * @param int $fill_rule
- * FILLRULE_ constant
- *
- * @return bool No value is returned.
- */
- public function setFillRule ($fill_rule) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the text placement gravity
- * @link https://php.net/manual/en/imagickdraw.setgravity.php
- * @param int $gravity
- * GRAVITY_ constant
- *
- * @return bool No value is returned.
- */
- public function setGravity ($gravity) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the pattern used for stroking object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokepatternurl.php
- * @param string $stroke_url
- * stroke URL
- *
- * @return bool imagick.imagickdraw.return.success;
- */
- public function setStrokePatternURL ($stroke_url) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the offset into the dash pattern to start the dash
- * @link https://php.net/manual/en/imagickdraw.setstrokedashoffset.php
- * @param float $dash_offset
- * dash offset
- *
- * @return bool No value is returned.
- */
- public function setStrokeDashOffset ($dash_offset) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the shape to be used at the end of open subpaths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.setstrokelinecap.php
- * @param int $linecap
- * LINECAP_ constant
- *
- * @return bool No value is returned.
- */
- public function setStrokeLineCap ($linecap) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the shape to be used at the corners of paths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.setstrokelinejoin.php
- * @param int $linejoin
- * LINEJOIN_ constant
- *
- * @return bool No value is returned.
- */
- public function setStrokeLineJoin ($linejoin) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the miter limit
- * @link https://php.net/manual/en/imagickdraw.setstrokemiterlimit.php
- * @param int $miterlimit
- * the miter limit
- *
- * @return bool No value is returned.
- */
- public function setStrokeMiterLimit ($miterlimit) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the opacity of stroked object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokeopacity.php
- * @param float $stroke_opacity
- * stroke opacity. 1.0 is fully opaque
- *
- * @return bool No value is returned.
- */
- public function setStrokeOpacity ($stroke_opacity) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the vector graphics
- * @link https://php.net/manual/en/imagickdraw.setvectorgraphics.php
- * @param string $xml
- * xml containing the vector graphics
- *
- * @return bool TRUE on success or FALSE on failure.
- */
- public function setVectorGraphics ($xml) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw
- * @link https://php.net/manual/en/imagickdraw.pop.php
- * @return bool TRUE on success and false on failure.
- */
- public function pop () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clones the current ImagickDraw and pushes it to the stack
- * @link https://php.net/manual/en/imagickdraw.push.php
- * @return bool TRUE on success or FALSE on failure.
- */
- public function push () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Specifies the pattern of dashes and gaps used to stroke paths
- * @link https://php.net/manual/en/imagickdraw.setstrokedasharray.php
- * @param array $dashArray
- * array of floats
- *
- * @return bool TRUE on success.
- */
- public function setStrokeDashArray (array $dashArray) {}
-
- /**
- * Sets the opacity to use when drawing using the fill or stroke color or texture. Fully opaque is 1.0.
- *
- * @param float $opacity
- * @return void
- * @since 3.4.1
- */
- public function setOpacity($opacity) { }
-
- /**
- * Returns the opacity used when drawing with the fill or stroke color or texture. Fully opaque is 1.0.
- *
- * @return float
- * @since 3.4.1
- */
- public function getOpacity() { }
-
- /**
- * Sets the image font resolution.
- *
- * @param float $x
- * @param float $y
- * @return bool
- * @since 3.4.1
- */
- public function setFontResolution($x, $y) { }
-
- /**
- * Gets the image X and Y resolution.
- *
- * @return array
- * @since 3.4.1
- */
- public function getFontResolution() { }
-
- /**
- * Returns the direction that will be used when annotating with text.
- * @return bool
- * @since 3.4.1
- */
- public function getTextDirection() { }
-
- /**
- * Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.
- *
- * @param int $direction
- * @return bool
- * @since 3.4.1
- */
- public function setTextDirection($direction) { }
-
- /**
- * Returns the border color used for drawing bordered objects.
- *
- * @return ImagickPixel
- * @since 3.4.1
- */
- public function getBorderColor() { }
-
- /**
- * Sets the border color to be used for drawing bordered objects.
- * @param ImagickPixel $color
- * @return bool
- * @since 3.4.1
- */
- public function setBorderColor(ImagickPixel $color) { }
-
- /**
- * Obtains the vertical and horizontal resolution.
- *
- * @return string|null
- * @since 3.4.1
- */
- public function getDensity() { }
-
- /**
- * Sets the vertical and horizontal resolution.
- * @param string $density_string
- * @return bool
- * @since 3.4.1
- */
- public function setDensity($density_string) { }
-}
-
-/**
- * @link https://php.net/manual/en/class.imagickpixeliterator.php
- */
-class ImagickPixelIterator implements Iterator {
-
- /**
- * (PECL imagick 2.0.0)
- * The ImagickPixelIterator constructor
- * @link https://php.net/manual/en/imagickpixeliterator.construct.php
- * @param Imagick $wand
- */
- public function __construct (Imagick $wand) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a new pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.newpixeliterator.php
- * @param Imagick $wand
- * @return bool TRUE on success. Throwing ImagickPixelIteratorException.
- * @throws ImagickPixelIteratorException
- */
- public function newPixelIterator (Imagick $wand) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns a new pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.newpixelregioniterator.php
- * @param Imagick $wand
- * @param int $x
- * @param int $y
- * @param int $columns
- * @param int $rows
- * @return bool a new ImagickPixelIterator on success; on failure, throws ImagickPixelIteratorException
- * @throws ImagickPixelIteratorException
- */
- public function newPixelRegionIterator (Imagick $wand, $x, $y, $columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the current pixel iterator row
- * @link https://php.net/manual/en/imagickpixeliterator.getiteratorrow.php
- * @return int the integer offset of the row, throwing ImagickPixelIteratorException on error.
- * @throws ImagickPixelIteratorException on error
- */
- public function getIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Set the pixel iterator row
- * @link https://php.net/manual/en/imagickpixeliterator.setiteratorrow.php
- * @param int $row
- * @return bool TRUE on success.
- */
- public function setIteratorRow ($row) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the pixel iterator to the first pixel row
- * @link https://php.net/manual/en/imagickpixeliterator.setiteratorfirstrow.php
- * @return bool TRUE on success.
- */
- public function setIteratorFirstRow () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the pixel iterator to the last pixel row
- * @link https://php.net/manual/en/imagickpixeliterator.setiteratorlastrow.php
- * @return bool TRUE on success.
- */
- public function setIteratorLastRow () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the previous row
- * @link https://php.net/manual/en/imagickpixeliterator.getpreviousiteratorrow.php
- * @return array the previous row as an array of ImagickPixelWand objects from the
- * ImagickPixelIterator, throwing ImagickPixelIteratorException on error.
- * @throws ImagickPixelIteratorException on error
- */
- public function getPreviousIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the current row of ImagickPixel objects
- * @link https://php.net/manual/en/imagickpixeliterator.getcurrentiteratorrow.php
- * @return array a row as an array of ImagickPixel objects that can themselves be iterated.
- */
- public function getCurrentIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the next row of the pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.getnextiteratorrow.php
- * @return array the next row as an array of ImagickPixel objects, throwing
- * ImagickPixelIteratorException on error.
- * @throws ImagickPixelIteratorException on error
- */
- public function getNextIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Resets the pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.resetiterator.php
- * @return bool TRUE on success.
- */
- public function resetIterator () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Syncs the pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.synciterator.php
- * @return bool TRUE on success.
- */
- public function syncIterator () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Deallocates resources associated with a PixelIterator
- * @link https://php.net/manual/en/imagickpixeliterator.destroy.php
- * @return bool TRUE on success.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clear resources associated with a PixelIterator
- * @link https://php.net/manual/en/imagickpixeliterator.clear.php
- * @return bool TRUE on success.
- */
- public function clear () {}
-
- /**
- * @param Imagick $Imagick
- */
- public static function getpixeliterator (Imagick $Imagick) {}
-
- /**
- * @param Imagick $Imagick
- * @param $x
- * @param $y
- * @param $columns
- * @param $rows
- */
- public static function getpixelregioniterator (Imagick $Imagick, $x, $y, $columns, $rows) {}
-
- public function key () {}
-
- public function next () {}
-
- public function rewind () {}
-
- public function current () {}
-
- public function valid () {}
-
-}
-
-/**
- * @method clone()
- * @link https://php.net/manual/en/class.imagickpixel.php
- */
-class ImagickPixel {
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the normalized HSL color of the ImagickPixel object
- * @link https://php.net/manual/en/imagickpixel.gethsl.php
- * @return array the HSL value in an array with the keys "hue",
- * "saturation", and "luminosity". Throws ImagickPixelException on failure.
- * @throws ImagickPixelException on failure
- */
- public function getHSL () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the normalized HSL color
- * @link https://php.net/manual/en/imagickpixel.sethsl.php
- * @param float $hue
- * The normalized value for hue, described as a fractional arc
- * (between 0 and 1) of the hue circle, where the zero value is
- * red.
- *
- * @param float $saturation
- * The normalized value for saturation, with 1 as full saturation.
- *
- * @param float $luminosity
- * The normalized value for luminosity, on a scale from black at
- * 0 to white at 1, with the full HS value at 0.5 luminosity.
- *
- * @return bool TRUE on success.
- */
- public function setHSL ($hue, $saturation, $luminosity) {}
-
- public function getColorValueQuantum () {}
-
- /**
- * @param $color_value
- */
- public function setColorValueQuantum ($color_value) {}
-
- public function getIndex () {}
-
- /**
- * @param $index
- */
- public function setIndex ($index) {}
-
- /**
- * (PECL imagick 2.0.0)
- * The ImagickPixel constructor
- * @link https://php.net/manual/en/imagickpixel.construct.php
- * @param string $color [optional]
- * The optional color string to use as the initial value of this object.
- *
- */
- public function __construct ($color = null) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the color
- * @link https://php.net/manual/en/imagickpixel.setcolor.php
- * @param string $color
- * The color definition to use in order to initialise the
- * ImagickPixel object.
- *
- * @return bool TRUE if the specified color was set, FALSE otherwise.
- */
- public function setColor ($color) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Sets the normalized value of one of the channels
- * @link https://php.net/manual/en/imagickpixel.setcolorvalue.php
- * @param int $color
- * One of the Imagick color constants e.g. \Imagick::COLOR_GREEN or \Imagick::COLOR_ALPHA.
- *
- * @param float $value
- * The value to set this channel to, ranging from 0 to 1.
- *
- * @return bool TRUE on success.
- */
- public function setColorValue ($color, $value) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Gets the normalized value of the provided color channel
- * @link https://php.net/manual/en/imagickpixel.getcolorvalue.php
- * @param int $color
- * The color to get the value of, specified as one of the Imagick color
- * constants. This can be one of the RGB colors, CMYK colors, alpha and
- * opacity e.g (Imagick::COLOR_BLUE, Imagick::COLOR_MAGENTA).
- *
- * @return float The value of the channel, as a normalized floating-point number, throwing
- * ImagickPixelException on error.
- * @throws ImagickPixelException on error
- */
- public function getColorValue ($color) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Clears resources associated with this object
- * @link https://php.net/manual/en/imagickpixel.clear.php
- * @return bool TRUE on success.
- */
- public function clear () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Deallocates resources associated with this object
- * @link https://php.net/manual/en/imagickpixel.destroy.php
- * @return bool TRUE on success.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Check the distance between this color and another
- * @link https://php.net/manual/en/imagickpixel.issimilar.php
- * @param ImagickPixel $color
- * The ImagickPixel object to compare this object against.
- *
- * @param float $fuzz
- * The maximum distance within which to consider these colors as similar.
- * The theoretical maximum for this value is the square root of three
- * (1.732).
- *
- * @return bool TRUE on success.
- */
- public function isSimilar (ImagickPixel $color, $fuzz) {}
-
- /**
- * (No version information available, might only be in SVN)
- * Check the distance between this color and another
- * @link https://php.net/manual/en/imagickpixel.ispixelsimilar.php
- * @param ImagickPixel $color
- * The ImagickPixel object to compare this object against.
- *
- * @param float $fuzz
- * The maximum distance within which to consider these colors as similar.
- * The theoretical maximum for this value is the square root of three
- * (1.732).
- *
- * @return bool TRUE on success.
- */
- public function isPixelSimilar (ImagickPixel $color, $fuzz) {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the color
- * @link https://php.net/manual/en/imagickpixel.getcolor.php
- * @param bool $normalized [optional]
- * Normalize the color values
- *
- * @return array An array of channel values, each normalized if TRUE is given as param. Throws
- * ImagickPixelException on error.
- * @throws ImagickPixelException on error.
- */
- public function getColor ($normalized = false) {}
-
- /**
- * (PECL imagick 2.1.0)
- * Returns the color as a string
- * @link https://php.net/manual/en/imagickpixel.getcolorasstring.php
- * @return string the color of the ImagickPixel object as a string.
- */
- public function getColorAsString () {}
-
- /**
- * (PECL imagick 2.0.0)
- * Returns the color count associated with this color
- * @link https://php.net/manual/en/imagickpixel.getcolorcount.php
- * @return int the color count as an integer on success, throws
- * ImagickPixelException on failure.
- * @throws ImagickPixelException on failure.
- */
- public function getColorCount () {}
-
- /**
- * @param $colorCount
- */
- public function setColorCount ($colorCount) {}
-
-
- /**
- * Returns true if the distance between two colors is less than the specified distance. The fuzz value should be in the range 0-QuantumRange.
- * The maximum value represents the longest possible distance in the colorspace. e.g. from RGB(0, 0, 0) to RGB(255, 255, 255) for the RGB colorspace
- * @link https://php.net/manual/en/imagickpixel.ispixelsimilarquantum.php
- * @param string $pixel
- * @param string $fuzz
- * @return bool
- * @since 3.3.0
- */
- public function isPixelSimilarQuantum($color, $fuzz) { }
-
- /**
- * Returns the color of the pixel in an array as Quantum values. If ImageMagick was compiled as HDRI these will be floats, otherwise they will be integers.
- * @link https://php.net/manual/en/imagickpixel.getcolorquantum.php
- * @return mixed The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int.
- * @since 3.3.0
- */
- public function getColorQuantum() { }
-
- /**
- * Sets the color count associated with this color from another ImagickPixel object.
- *
- * @param ImagickPixel $srcPixel
- * @return bool
- * @since 3.4.1
- */
- public function setColorFromPixel(ImagickPixel $srcPixel) { }
-}
-// End of imagick v.3.2.0RC1
-
-// Start of Imagick v3.3.0RC1
-
-/**
- * @link https://php.net/manual/en/class.imagickkernel.php
- */
-class ImagickKernel {
- /**
- * Attach another kernel to this kernel to allow them to both be applied in a single morphology or filter function. Returns the new combined kernel.
- * @link https://php.net/manual/en/imagickkernel.addkernel.php
- * @param ImagickKernel $imagickKernel
- * @return void
- * @since 3.3.0
- */
- public function addKernel(ImagickKernel $imagickKernel) { }
-
- /**
- * Adds a given amount of the 'Unity' Convolution Kernel to the given pre-scaled and normalized Kernel. This in effect adds that amount of the original image into the resulting convolution kernel. The resulting effect is to convert the defined kernels into blended soft-blurs, unsharp kernels or into sharpening kernels.
- * @link https://php.net/manual/en/imagickkernel.addunitykernel.php
- * @return void
- * @since 3.3.0
- */
- public function addUnityKernel() { }
-
- /**
- * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.
- * Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");
- * @link https://php.net/manual/en/imagickkernel.frombuiltin.php
- * @param string $kernelType The type of kernel to build e.g. \Imagick::KERNEL_DIAMOND
- * @param string $kernelString A string that describes the parameters e.g. "4,2.5"
- * @return void
- * @since 3.3.0
- */
- public static function fromBuiltin($kernelType, $kernelString) { }
-
- /**
- * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.
- * Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");
- * @link https://php.net/manual/en/imagickkernel.frombuiltin.php
- * @see https://www.imagemagick.org/Usage/morphology/#kernel
- * @param array $matrix A matrix (i.e. 2d array) of values that define the kernel. Each element should be either a float value, or FALSE if that element shouldn't be used by the kernel.
- * @param array $origin [optional] Which element of the kernel should be used as the origin pixel. e.g. For a 3x3 matrix specifying the origin as [2, 2] would specify that the bottom right element should be the origin pixel.
- * @return ImagickKernel
- * @since 3.3.0
- */
- public static function fromMatrix($matrix, $origin) { }
-
- /**
- * Get the 2d matrix of values used in this kernel. The elements are either float for elements that are used or 'false' if the element should be skipped.
- * @link https://php.net/manual/en/imagickkernel.getmatrix.php
- * @return array A matrix (2d array) of the values that represent the kernel.
- * @since 3.3.0
- */
- public function getMatrix() { }
-
- /**
- * ScaleKernelInfo() scales the given kernel list by the given amount, with or without normalization of the sum of the kernel values (as per given flags).
- * The exact behaviour of this function depends on the normalization type being used please see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo for details.
- * Flag should be one of Imagick::NORMALIZE_KERNEL_VALUE, Imagick::NORMALIZE_KERNEL_CORRELATE, Imagick::NORMALIZE_KERNEL_PERCENT or not set.
- * @link https://php.net/manual/en/imagickkernel.scale.php
- * @see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo
- * @return void
- * @since 3.3.0
- */
- public function scale() { }
-
- /**
- * Separates a linked set of kernels and returns an array of ImagickKernels.
- * @link https://php.net/manual/en/imagickkernel.separate.php
- * @return void
- * @since 3.3.0
- */
- public function seperate() { }
-}
diff --git a/vendor/chillerlan/php-qrcode/.scrutinizer.yml b/vendor/chillerlan/php-qrcode/.scrutinizer.yml
deleted file mode 100644
index 2a7e7028b..000000000
--- a/vendor/chillerlan/php-qrcode/.scrutinizer.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-build:
- nodes:
- analysis:
- tests:
- override:
- - php-scrutinizer-run
- environment:
- php: 8.0.0
-
-filter:
- excluded_paths:
- - examples/*
- - tests/*
- - vendor/*
- - .github/*
- - .phan/*
diff --git a/vendor/chillerlan/php-qrcode/README.md b/vendor/chillerlan/php-qrcode/README.md
index f266e9bd5..3ad7bad88 100644
--- a/vendor/chillerlan/php-qrcode/README.md
+++ b/vendor/chillerlan/php-qrcode/README.md
@@ -7,26 +7,23 @@ namespaced, cleaned up, improved and other stuff.
[![PHP Version Support][php-badge]][php]
[![Packagist version][packagist-badge]][packagist]
-[![License][license-badge]][license]
-[![CodeCov][coverage-badge]][coverage]
-[![Scrunitizer CI][scrutinizer-badge]][scrutinizer]
-[![Packagist downloads][downloads-badge]][downloads]
[![Continuous Integration][gh-action-badge]][gh-action]
+[![CodeCov][coverage-badge]][coverage]
+[![Codacy][codacy-badge]][codacy]
+[![Packagist downloads][downloads-badge]][downloads]
[php-badge]: https://img.shields.io/packagist/php-v/chillerlan/php-qrcode?logo=php&color=8892BF
[php]: https://www.php.net/supported-versions.php
[packagist-badge]: https://img.shields.io/packagist/v/chillerlan/php-qrcode.svg?logo=packagist
[packagist]: https://packagist.org/packages/chillerlan/php-qrcode
-[license-badge]: https://img.shields.io/github/license/chillerlan/php-qrcode.svg
-[license]: https://github.com/chillerlan/php-qrcode/blob/main/LICENSE
-[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-qrcode.svg?logo=codecov
-[coverage]: https://codecov.io/github/chillerlan/php-qrcode
-[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/chillerlan/php-qrcode.svg?logo=scrutinizer
-[scrutinizer]: https://scrutinizer-ci.com/g/chillerlan/php-qrcode
-[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode.svg?logo=packagist
+[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-qrcode/v4.3.x?logo=codecov
+[coverage]: https://app.codecov.io/gh/chillerlan/php-qrcode/tree/v4.3.x
+[codacy-badge]: https://img.shields.io/codacy/grade/edccfc4fe5a34b74b1c53ee03f097b8d/v4.3.x?logo=codacy
+[codacy]: https://app.codacy.com/gh/chillerlan/php-qrcode/dashboard?branch=v4.3.x
+[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode?logo=packagist
[downloads]: https://packagist.org/packages/chillerlan/php-qrcode/stats
-[gh-action-badge]: https://github.com/chillerlan/php-qrcode/workflows/Continuous%20Integration/badge.svg
-[gh-action]: https://github.com/chillerlan/php-qrcode/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Av4.3.x
+[gh-action-badge]: https://img.shields.io/github/actions/workflow/status/chillerlan/php-qrcode/tests.yml?branch=v4.3.x&logo=github
+[gh-action]: https://github.com/chillerlan/php-qrcode/actions/workflows/tests.yml?query=branch%3Av4.3.x
# Documentation
@@ -48,7 +45,7 @@ via terminal: `composer require chillerlan/php-qrcode`
{
"require": {
"php": "^7.4 || ^8.0",
- "chillerlan/php-qrcode": "v4.3.x-dev"
+ "chillerlan/php-qrcode": "v4.3.x-dev#"
}
}
```
@@ -62,7 +59,7 @@ For PHP version ...
In case you want to keep using `v4.3.x-dev`, specify the hash of a commit to avoid running into unforseen issues like so: `v4.3.x-dev#c115f7bc51d466ccb24c544e88329804aad8c2a0`
-PSA: [PHP 7.0 - 7.3 are EOL](https://www.php.net/supported-versions.php) and therefore the respective `QRCode` versions are also no longer supported!
+PSA: [PHP 7.0 - 7.4 are EOL](https://www.php.net/supported-versions.php) and therefore the respective `QRCode` versions are also no longer supported!
## Quickstart
We want to encode this URI for a mobile authenticator into a QRcode image:
@@ -252,40 +249,41 @@ $options = new QROptions;
// for HTML, SVG and ImageMagick
$options->moduleValues = [
// finder
- 1536 => '#A71111', // dark (true)
- 6 => '#FFBFBF', // light (false)
+ QRMatrix::M_FINDER_DARK => '#A71111', // dark (true)
+ QRMatrix::M_FINDER_DOT_DARK => '#A71111', // dark (true)
+ QRMatrix::M_FINDER => '#FFBFBF', // light (false)
// alignment
- 2560 => '#A70364',
- 10 => '#FFC9C9',
+ QRMatrix::M_ALIGNMENT_DARK => '#A70364',
+ QRMatrix::M_ALIGNMENT => '#FFC9C9',
// timing
- 3072 => '#98005D',
- 12 => '#FFB8E9',
+ QRMatrix::M_TIMING_DARK => '#98005D',
+ QRMatrix::M_TIMING => '#FFB8E9',
// format
- 3584 => '#003804',
- 14 => '#00FB12',
+ QRMatrix::M_FORMAT_DARK => '#003804',
+ QRMatrix::M_FORMAT => '#00FB12',
// version
- 4096 => '#650098',
- 16 => '#E0B8FF',
+ QRMatrix::M_VERSION_DARK => '#650098',
+ QRMatrix::M_VERSION => '#E0B8FF',
// data
- 1024 => '#4A6000',
- 4 => '#ECF9BE',
+ QRMatrix::M_DATA_DARK => '#4A6000',
+ QRMatrix::M_DATA => '#ECF9BE',
// darkmodule
- 512 => '#080063',
+ QRMatrix::M_DARKMODULE_DARK => '#080063',
// separator
- 8 => '#AFBFBF',
+ QRMatrix::M_SEPARATOR => '#AFBFBF',
// quietzone
- 18 => '#FFFFFF',
+ QRMatrix::M_QUIETZONE => '#FFFFFF',
];
// for the image output types
$options->moduleValues = [
- 512 => [0, 0, 0],
+ QRMatrix::M_DATA_DARK => [0, 0, 0],
// ...
];
// for string/text output
$options->moduleValues = [
- 512 => '#',
+ QRMatrix::M_DATA_DARK => '#',
// ...
];
```
@@ -294,106 +292,115 @@ $options->moduleValues = [
## Public API
### `QRCode` API
-#### Methods
-method | return | description
------- | ------ | -----------
-`__construct(QROptions $options = null)` | - | see [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php)
-`render(string $data, string $file = null)` | mixed, `QROutputInterface::dump()` | renders a QR Code for the given `$data` and `QROptions`, saves `$file` optional
-`getMatrix(string $data)` | `QRMatrix` | returns a `QRMatrix` object for the given `$data` and current `QROptions`
-`initDataInterface(string $data)` | `QRDataInterface` | returns a fresh `QRDataInterface` for the given `$data`
-`isNumber(string $string)` | bool | checks if a string qualifies for `Number`
-`isAlphaNum(string $string)` | bool | checks if a string qualifies for `AlphaNum`
-`isKanji(string $string)` | bool | checks if a string qualifies for `Kanji`
-`isByte(string $string)` | bool | checks if a string is non-empty
-
-#### Constants
-name | description
----- | -----------
-`VERSION_AUTO` | `QROptions::$version`
-`MASK_PATTERN_AUTO` | `QROptions::$maskPattern`
-`OUTPUT_MARKUP_SVG`, `OUTPUT_MARKUP_HTML` | `QROptions::$outputType` markup
-`OUTPUT_IMAGE_PNG`, `OUTPUT_IMAGE_JPG`, `OUTPUT_IMAGE_GIF` | `QROptions::$outputType` image
-`OUTPUT_STRING_JSON`, `OUTPUT_STRING_TEXT` | `QROptions::$outputType` string
-`OUTPUT_IMAGICK` | `QROptions::$outputType` ImageMagick
-`OUTPUT_FPDF` | `QROptions::$outputType` PDF, using [FPDF](https://github.com/setasign/fpdf)
-`OUTPUT_CUSTOM` | `QROptions::$outputType`, requires `QROptions::$outputInterface`
-`ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel`
-`DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode`
+#### Methods
+| method | return | description |
+|---------------------------------------------|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
+| `__construct(QROptions $options = null)` | - | see [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) |
+| `render(string $data, string $file = null)` | mixed, `QROutputInterface::dump()` | renders a QR Code for the given `$data` and `QROptions`, saves `$file` optional |
+| `getMatrix(string $data)` | `QRMatrix` | returns a `QRMatrix` object for the given `$data` and current `QROptions` |
+| `initDataInterface(string $data)` | `QRDataInterface` | returns a fresh `QRDataInterface` for the given `$data` |
+| `isNumber(string $string)` | bool | checks if a string qualifies for `Number` |
+| `isAlphaNum(string $string)` | bool | checks if a string qualifies for `AlphaNum` |
+| `isKanji(string $string)` | bool | checks if a string qualifies for `Kanji` |
+| `isByte(string $string)` | bool | checks if a string is non-empty |
+#### Constants
+| name | description |
+|------------------------------------------------------------|------------------------------------------------------------------------------|
+| `VERSION_AUTO` | `QROptions::$version` |
+| `MASK_PATTERN_AUTO` | `QROptions::$maskPattern` |
+| `OUTPUT_MARKUP_SVG`, `OUTPUT_MARKUP_HTML` | `QROptions::$outputType` markup |
+| `OUTPUT_IMAGE_PNG`, `OUTPUT_IMAGE_JPG`, `OUTPUT_IMAGE_GIF` | `QROptions::$outputType` image |
+| `OUTPUT_STRING_JSON`, `OUTPUT_STRING_TEXT` | `QROptions::$outputType` string |
+| `OUTPUT_IMAGICK` | `QROptions::$outputType` ImageMagick |
+| `OUTPUT_FPDF` | `QROptions::$outputType` PDF, using [FPDF](https://github.com/setasign/fpdf) |
+| `OUTPUT_CUSTOM` | `QROptions::$outputType`, requires `QROptions::$outputInterface` |
+| `ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel` |
+| `DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode` |
### `QRMatrix` API
#### Methods
-method | return | description
------- | ------ | -----------
-`__construct(int $version, int $eclevel)` | - | -
-`init(int $maskPattern, bool $test = null)` | `QRMatrix` |
-`matrix()` | array | the internal matrix representation as a 2 dimensional array
-`version()` | int | the current QR Code version
-`eccLevel()` | int | current ECC level
-`maskPattern()` | int | the used mask pattern
-`size()` | int | the absoulute size of the matrix, including quiet zone (if set). `$version * 4 + 17 + 2 * $quietzone`
-`get(int $x, int $y)` | int | returns the value of the module
-`set(int $x, int $y, bool $value, int $M_TYPE)` | `QRMatrix` | sets the `$M_TYPE` value for the module
-`check(int $x, int $y)` | bool | checks whether a module is true (dark) or false (light)
+| method | return | description |
+|-------------------------------------------------|------------|-------------------------------------------------------------------------------------------------------|
+| `__construct(int $version, int $eclevel)` | - | - |
+| `init(int $maskPattern, bool $test = null)` | `QRMatrix` | |
+| `matrix()` | array | the internal matrix representation as a 2 dimensional array |
+| `version()` | int | the current QR Code version |
+| `eccLevel()` | int | current ECC level |
+| `maskPattern()` | int | the used mask pattern |
+| `size()` | int | the absoulute size of the matrix, including quiet zone (if set). `$version * 4 + 17 + 2 * $quietzone` |
+| `get(int $x, int $y)` | int | returns the value of the module |
+| `set(int $x, int $y, bool $value, int $M_TYPE)` | `QRMatrix` | sets the `$M_TYPE` value for the module |
+| `check(int $x, int $y)` | bool | checks whether a module is true (dark) or false (light) |
#### Constants
-name | light (false) | dark (true) | description
----- | ------------- | ----------- | -----------
-`M_NULL` | 0 | - | module not set (should never appear. if so, there's an error)
-`M_DARKMODULE` | - | 512 | once per matrix at `$xy = [8, 4 * $version + 9]`
-`M_DATA` | 4 | 1024 | the actual encoded data
-`M_FINDER` | 6 | 1536 | the 7x7 finder patterns
-`M_SEPARATOR` | 8 | - | separator lines around the finder patterns
-`M_ALIGNMENT` | 10 | 2560 | the 5x5 alignment patterns
-`M_TIMING` | 12 | 3072 | the timing pattern lines
-`M_FORMAT` | 14 | 3584 | format information pattern
-`M_VERSION` | 16 | 4096 | version information pattern
-`M_QUIETZONE` | 18 | - | margin around the QR Code
-`M_LOGO` | 20 | - | space for a logo image (not used yet)
-`M_TEST` | 255 | 65280 | test value
+| name | description |
+|----------------------|---------------------------------------------------------------|
+| `M_NULL` | module not set (should never appear. if so, there's an error) |
+| `M_DARKMODULE` | once per matrix at `$xy = [8, 4 * $version + 9]` |
+| `M_DARKMODULE_LIGHT` | (reserved for reflectance reversal) |
+| `M_DATA` | the actual encoded data |
+| `M_DATA_DARK` | |
+| `M_FINDER` | the 7x7 finder patterns |
+| `M_FINDER_DARK` | |
+| `M_FINDER_DOT` | the 3x3 dot inside the finder patterns |
+| `M_FINDER_DOT_LIGHT` | (reserved for reflectance reversal) |
+| `M_SEPARATOR` | separator lines around the finder patterns |
+| `M_SEPARATOR_DARK` | (reserved for reflectance reversal) |
+| `M_ALIGNMENT` | the 5x5 alignment patterns |
+| `M_ALIGNMENT_DARK` | |
+| `M_TIMING` | the timing pattern lines |
+| `M_TIMING_DARK` | |
+| `M_FORMAT` | format information pattern |
+| `M_FORMAT_DARK` | |
+| `M_VERSION` | version information pattern |
+| `M_VERSION_DARK` | |
+| `M_QUIETZONE` | margin around the QR Code |
+| `M_QUIETZONE_DARK` | (reserved for reflectance reversal) |
+| `M_LOGO` | space for a logo image |
+| `M_LOGO_DARK` | (reserved for reflectance reversal) |
### `QROptions` API
#### Properties
-property | type | default | allowed | description
--------- | ---- | ------- | ------- | -----------
-`$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html)
-`$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`)
-`$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`)
-`$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%)
-`$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use
-`$addQuietzone` | bool | `true` | - | Add a "quiet zone" (margin) according to the QR code spec
-`$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone
-`$dataModeOverride` | string | `null` | `Number`, `AlphaNum`, `Kanji`, `Byte` | allows overriding the data type detection
-`$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type
-`$outputInterface` | string | `null` | * | FQCN of the custom `QROutputInterface` if `QROptions::$outputType` is set to `QRCode::OUTPUT_CUSTOM`
-`$cachefile` | string | `null` | * | optional cache file path
-`$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT)
-`$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS
-`$cssClass` | string | `null` | * | a common css class
-`$svgOpacity` | float | 1.0 | 0...1 |
-`$svgDefs` | string | * | * | anything between [``](https://developer.mozilla.org/docs/Web/SVG/Element/defs)
-`$svgViewBoxSize` | int | `null` | * | a positive integer which defines width/height of the [viewBox attribute](https://css-tricks.com/scale-svg/#article-header-id-3)
-`$textDark` | string | '🔴' | * | string substitute for dark
-`$textLight` | string | '⭕' | * | string substitute for light
-`$markupDark` | string | '#000' | * | markup substitute for dark (CSS value)
-`$markupLight` | string | '#fff' | * | markup substitute for light (CSS value)
-`$imageBase64` | bool | `true` | - | whether to return the image data as base64 or raw like from `file_get_contents()`
-`$imageTransparent` | bool | `true` | - | toggle transparency (no jpeg support)
-`$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php)
-`$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto
-`$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality
-`$imagickFormat` | string | 'png' | * | ImageMagick output type, see `Imagick::setType()`
-`$imagickBG` | string | `null` | * | ImageMagick background color, see `ImagickPixel::__construct()`
-`$moduleValues` | array | `null` | * | Module values map, see [[Custom output interface]] and `QROutputInterface::DEFAULT_MODULE_VALUES`
-
+| property | type | default | allowed | description |
+|------------------------|--------|-----------------------------|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
+| `$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html) |
+| `$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`) |
+| `$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`) |
+| `$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%) |
+| `$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use |
+| `$addQuietzone` | bool | `true` | - | Add a "quiet zone" (margin) according to the QR code spec |
+| `$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone |
+| `$dataModeOverride` | string | `null` | `Number`, `AlphaNum`, `Kanji`, `Byte` | allows overriding the data type detection |
+| `$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type |
+| `$outputInterface` | string | `null` | * | FQCN of the custom `QROutputInterface` if `QROptions::$outputType` is set to `QRCode::OUTPUT_CUSTOM` |
+| `$cachefile` | string | `null` | * | optional cache file path |
+| `$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT) |
+| `$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS |
+| `$cssClass` | string | `null` | * | a common css class |
+| `$svgOpacity` | float | 1.0 | 0...1 | |
+| `$svgDefs` | string | * | * | anything between [``](https://developer.mozilla.org/docs/Web/SVG/Element/defs) |
+| `$svgViewBoxSize` | int | `null` | * | a positive integer which defines width/height of the [viewBox attribute](https://css-tricks.com/scale-svg/#article-header-id-3) |
+| `$textDark` | string | '██' | * | string substitute for dark |
+| `$textLight` | string | '░░' | * | string substitute for light |
+| `$markupDark` | string | '#000' | * | markup substitute for dark (CSS value) |
+| `$markupLight` | string | '#fff' | * | markup substitute for light (CSS value) |
+| `$imageBase64` | bool | `true` | - | whether to return the image data as base64 or raw like from `file_get_contents()` |
+| `$imageTransparent` | bool | `true` | - | toggle transparency (no jpeg support) |
+| `$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php) |
+| `$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto |
+| `$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality |
+| `$imagickFormat` | string | 'png' | * | ImageMagick output type, see `Imagick::setType()` |
+| `$imagickBG` | string | `null` | * | ImageMagick background color, see `ImagickPixel::__construct()` |
+| `$moduleValues` | array | `null` | * | Module values map, see [[Custom output interface]] and `QROutputInterface::DEFAULT_MODULE_VALUES` |
## Framework Integration
- Drupal:
- [Google Authenticator Login `ga_login`](https://www.drupal.org/project/ga_login)
- Symfony
- - [phpqrcode-bundle](https://github.com/jonasarts/phpqrcode-bundle)
+ - [phpqrcode-bundle](https://github.com/jonasarts/phpqrcode-bundle)
- WordPress:
- [`wp-two-factor-auth`](https://github.com/sjinks/wp-two-factor-auth)
- [`simple-2fa`](https://wordpress.org/plugins/simple-2fa/)
diff --git a/vendor/chillerlan/php-qrcode/composer.json b/vendor/chillerlan/php-qrcode/composer.json
index afe5bf68e..5453fc40f 100644
--- a/vendor/chillerlan/php-qrcode/composer.json
+++ b/vendor/chillerlan/php-qrcode/composer.json
@@ -1,6 +1,6 @@
{
"name": "chillerlan/php-qrcode",
- "description": "A QR code generator. PHP 7.4+",
+ "description": "A QR code generator with a user friendly API. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"license": "MIT",
"minimum-stability": "stable",
@@ -26,16 +26,19 @@
"require": {
"php": "^7.4 || ^8.0",
"ext-mbstring": "*",
- "chillerlan/php-settings-container": "^2.1.4"
+ "chillerlan/php-settings-container": "^2.1.6 || ^3.2.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.5",
- "phan/phan": "^5.3",
- "setasign/fpdf": "^1.8.2"
+ "phan/phan": "^5.4.5",
+ "phpmd/phpmd": "^2.15",
+ "phpunit/phpunit": "^9.6",
+ "setasign/fpdf": "^1.8.2",
+ "squizlabs/php_codesniffer": "^3.11"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
- "setasign/fpdf": "Required to use the QR FPDF output."
+ "setasign/fpdf": "Required to use the QR FPDF output.",
+ "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
},
"autoload": {
"psr-4": {
@@ -44,9 +47,7 @@
},
"autoload-dev": {
"psr-4": {
- "chillerlan\\QRCodePublic\\": "public/",
- "chillerlan\\QRCodeTest\\": "tests/",
- "chillerlan\\QRCodeExamples\\": "examples/"
+ "chillerlan\\QRCodeTest\\": "tests/"
}
},
"scripts": {
diff --git a/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php b/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
deleted file mode 100644
index 3664989b8..000000000
--- a/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\Output\QROutputAbstract;
-
-class MyCustomOutput extends QROutputAbstract{
-
- protected function setModuleValues():void{
- // TODO: Implement setModuleValues() method.
- }
-
- public function dump(string $file = null){
-
- $output = '';
-
- for($row = 0; $row < $this->moduleCount; $row++){
- for($col = 0; $col < $this->moduleCount; $col++){
- $output .= (int)$this->matrix->check($col, $row);
- }
-
- $output .= \PHP_EOL;
- }
-
- return $output;
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
deleted file mode 100644
index 76aa5ced7..000000000
--- a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
+++ /dev/null
@@ -1,81 +0,0 @@
-
- * @copyright 2020 smiley
- * @license MIT
- *
- * @noinspection PhpComposerExtensionStubsInspection
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\Output\{QRCodeOutputException, QRImage};
-
-use function imagecopyresampled, imagecreatefrompng, imagesx, imagesy, is_file, is_readable;
-
-/**
- * @property \chillerlan\QRCodeExamples\LogoOptions $options
- */
-class QRImageWithLogo extends QRImage{
-
- /**
- * @param string|null $file
- * @param string|null $logo
- *
- * @return string
- * @throws \chillerlan\QRCode\Output\QRCodeOutputException
- */
- public function dump(string $file = null, string $logo = null):string{
- // set returnResource to true to skip further processing for now
- $this->options->returnResource = true;
-
- // of course you could accept other formats too (such as resource or Imagick)
- // i'm not checking for the file type either for simplicity reasons (assuming PNG)
- if(!is_file($logo) || !is_readable($logo)){
- throw new QRCodeOutputException('invalid logo');
- }
-
- $this->matrix->setLogoSpace(
- $this->options->logoSpaceWidth,
- $this->options->logoSpaceHeight
- // not utilizing the position here
- );
-
- // there's no need to save the result of dump() into $this->image here
- parent::dump($file);
-
- $im = imagecreatefrompng($logo);
-
- // get logo image size
- $w = imagesx($im);
- $h = imagesy($im);
-
- // set new logo size, leave a border of 1 module (no proportional resize/centering)
- $lw = ($this->options->logoSpaceWidth - 2) * $this->options->scale;
- $lh = ($this->options->logoSpaceHeight - 2) * $this->options->scale;
-
- // get the qrcode size
- $ql = $this->matrix->size() * $this->options->scale;
-
- // scale the logo and copy it over. done!
- imagecopyresampled($this->image, $im, ($ql - $lw) / 2, ($ql - $lh) / 2, 0, 0, $lw, $lh, $w, $h);
-
- $imageData = $this->dumpImage();
-
- if($file !== null){
- $this->saveToFile($imageData, $file);
- }
-
- if($this->options->imageBase64){
- $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
- }
-
- return $imageData;
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
deleted file mode 100644
index fe6b962a9..000000000
--- a/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
+++ /dev/null
@@ -1,100 +0,0 @@
-
- * @copyright 2019 smiley
- * @license MIT
- *
- * @noinspection PhpComposerExtensionStubsInspection
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\Output\QRImage;
-
-use function base64_encode, imagechar, imagecolorallocate, imagecolortransparent, imagecopymerge, imagecreatetruecolor,
- imagedestroy, imagefilledrectangle, imagefontwidth, in_array, round, str_split, strlen;
-
-class QRImageWithText extends QRImage{
-
- /**
- * @param string|null $file
- * @param string|null $text
- *
- * @return string
- */
- public function dump(string $file = null, string $text = null):string{
- // set returnResource to true to skip further processing for now
- $this->options->returnResource = true;
-
- // there's no need to save the result of dump() into $this->image here
- parent::dump($file);
-
- // render text output if a string is given
- if($text !== null){
- $this->addText($text);
- }
-
- $imageData = $this->dumpImage();
-
- if($file !== null){
- $this->saveToFile($imageData, $file);
- }
-
- if($this->options->imageBase64){
- $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
- }
-
- return $imageData;
- }
-
- /**
- * @param string $text
- */
- protected function addText(string $text):void{
- // save the qrcode image
- $qrcode = $this->image;
-
- // options things
- $textSize = 3; // see imagefontheight() and imagefontwidth()
- $textBG = [200, 200, 200];
- $textColor = [50, 50, 50];
-
- $bgWidth = $this->length;
- $bgHeight = $bgWidth + 20; // 20px extra space
-
- // create a new image with additional space
- $this->image = imagecreatetruecolor($bgWidth, $bgHeight);
- $background = imagecolorallocate($this->image, ...$textBG);
-
- // allow transparency
- if($this->options->imageTransparent && in_array($this->options->outputType, $this::TRANSPARENCY_TYPES, true)){
- imagecolortransparent($this->image, $background);
- }
-
- // fill the background
- imagefilledrectangle($this->image, 0, 0, $bgWidth, $bgHeight, $background);
-
- // copy over the qrcode
- imagecopymerge($this->image, $qrcode, 0, 0, 0, 0, $this->length, $this->length, 100);
- imagedestroy($qrcode);
-
- $fontColor = imagecolorallocate($this->image, ...$textColor);
- $w = imagefontwidth($textSize);
- $x = round(($bgWidth - strlen($text) * $w) / 2);
-
- // loop through the string and draw the letters
- foreach(str_split($text) as $i => $chr){
- imagechar($this->image, $textSize, (int)($i * $w + $x), $this->length, $chr, $fontColor);
- }
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/examples/custom_output.php b/vendor/chillerlan/php-qrcode/examples/custom_output.php
deleted file mode 100644
index 71ea62682..000000000
--- a/vendor/chillerlan/php-qrcode/examples/custom_output.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-// invoke the QROutputInterface manually
-$options = new QROptions([
- 'version' => 5,
- 'eccLevel' => QRCode::ECC_L,
-]);
-
-$qrOutputInterface = new MyCustomOutput($options, (new QRCode($options))->getMatrix($data));
-
-var_dump($qrOutputInterface->dump());
-
-
-// or just
-$options = new QROptions([
- 'version' => 5,
- 'eccLevel' => QRCode::ECC_L,
- 'outputType' => QRCode::OUTPUT_CUSTOM,
- 'outputInterface' => MyCustomOutput::class,
-]);
-
-var_dump((new QRCode($options))->render($data));
diff --git a/vendor/chillerlan/php-qrcode/examples/example_image.png b/vendor/chillerlan/php-qrcode/examples/example_image.png
deleted file mode 100644
index b4a80f2ab..000000000
Binary files a/vendor/chillerlan/php-qrcode/examples/example_image.png and /dev/null differ
diff --git a/vendor/chillerlan/php-qrcode/examples/example_svg.png b/vendor/chillerlan/php-qrcode/examples/example_svg.png
deleted file mode 100644
index f1e7b32f7..000000000
Binary files a/vendor/chillerlan/php-qrcode/examples/example_svg.png and /dev/null differ
diff --git a/vendor/chillerlan/php-qrcode/examples/fpdf.php b/vendor/chillerlan/php-qrcode/examples/fpdf.php
deleted file mode 100644
index 9c690a7f7..000000000
--- a/vendor/chillerlan/php-qrcode/examples/fpdf.php
+++ /dev/null
@@ -1,47 +0,0 @@
- 7,
- 'outputType' => QRCode::OUTPUT_FPDF,
- 'eccLevel' => QRCode::ECC_L,
- 'scale' => 5,
- 'imageBase64' => false,
- 'moduleValues' => [
- // finder
- 1536 => [0, 63, 255], // dark (true)
- 6 => [255, 255, 255], // light (false), white is the transparency color and is enabled by default
- // alignment
- 2560 => [255, 0, 255],
- 10 => [255, 255, 255],
- // timing
- 3072 => [255, 0, 0],
- 12 => [255, 255, 255],
- // format
- 3584 => [67, 191, 84],
- 14 => [255, 255, 255],
- // version
- 4096 => [62, 174, 190],
- 16 => [255, 255, 255],
- // data
- 1024 => [0, 0, 0],
- 4 => [255, 255, 255],
- // darkmodule
- 512 => [0, 0, 0],
- // separator
- 8 => [255, 255, 255],
- // quietzone
- 18 => [255, 255, 255],
- ],
-]);
-
-\header('Content-type: application/pdf');
-
-echo (new QRCode($options))->render($data);
diff --git a/vendor/chillerlan/php-qrcode/examples/html.php b/vendor/chillerlan/php-qrcode/examples/html.php
deleted file mode 100644
index aa5305d24..000000000
--- a/vendor/chillerlan/php-qrcode/examples/html.php
+++ /dev/null
@@ -1,102 +0,0 @@
-
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once '../vendor/autoload.php';
-
-header('Content-Type: text/html; charset=utf-8');
-
-?>
-
-
-
-
-
- QRCode test
-
-
-
-
+ If set to true, blank nodes will be removed. This can be useful for maintaining
+ backwards compatibility when upgrading from previous versions of PHP.
+
+--# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
index 3ef2d09ec..0f2b83dc8 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
@@ -116,8 +116,8 @@ class HTMLPurifier_EntityParser
protected function entityCallback($matches)
{
$entity = $matches[0];
- $hex_part = @$matches[1];
- $dec_part = @$matches[2];
+ $hex_part = isset($matches[1]) ? $matches[1] : null;
+ $dec_part = isset($matches[2]) ? $matches[2] : null;
$named_part = empty($matches[3]) ? (empty($matches[4]) ? "" : $matches[4]) : $matches[3];
if ($hex_part !== NULL && $hex_part !== "") {
return HTMLPurifier_Encoder::unichr(hexdec($hex_part));
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
index 6f8e7790e..e7e3cac1a 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
@@ -54,6 +54,11 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
*/
private $_enum_attrdef;
+ /**
+ * @type HTMLPurifier_AttrDef_Enum
+ */
+ private $_universal_attrdef;
+
public function __construct()
{
$this->_tidy = new csstidy();
@@ -70,6 +75,13 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
'focus'
)
);
+ $this->_universal_attrdef = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'initial',
+ 'inherit',
+ 'unset',
+ )
+ );
}
/**
@@ -307,6 +319,11 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
unset($style[$name]);
continue;
}
+ $uni_ret = $this->_universal_attrdef->validate($value, $config, $context);
+ if ($uni_ret !== false) {
+ $style[$name] = $uni_ret;
+ continue;
+ }
$def = $css_definition->info[$name];
$ret = $def->validate($value, $config, $context);
if ($ret === false) {
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
index f7e7c91c0..71dfc7744 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
@@ -28,22 +28,28 @@ class HTMLPurifier_HTMLModule_Iframe extends HTMLPurifier_HTMLModule
if ($config->get('HTML.SafeIframe')) {
$this->safe = true;
}
+ $attrs = array(
+ 'src' => 'URI#embedded',
+ 'width' => 'Length',
+ 'height' => 'Length',
+ 'name' => 'ID',
+ 'scrolling' => 'Enum#yes,no,auto',
+ 'frameborder' => 'Enum#0,1',
+ 'longdesc' => 'URI',
+ 'marginheight' => 'Pixels',
+ 'marginwidth' => 'Pixels',
+ );
+
+ if ($config->get('HTML.Trusted')) {
+ $attrs['allowfullscreen'] = 'Bool#allowfullscreen';
+ }
+
$this->addElement(
'iframe',
'Inline',
'Flow',
'Common',
- array(
- 'src' => 'URI#embedded',
- 'width' => 'Length',
- 'height' => 'Length',
- 'name' => 'ID',
- 'scrolling' => 'Enum#yes,no,auto',
- 'frameborder' => 'Enum#0,1',
- 'longdesc' => 'URI',
- 'marginheight' => 'Pixels',
- 'marginwidth' => 'Pixels',
- )
+ $attrs
);
}
}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
index 1f552a17a..fe87fa4ba 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
@@ -269,20 +269,6 @@ class HTMLPurifier_Lexer
);
}
- /**
- * Special Internet Explorer conditional comments should be removed.
- * @param string $string HTML string to process.
- * @return string HTML with conditional comments removed.
- */
- protected static function removeIEConditional($string)
- {
- return preg_replace(
- '##si', // probably should generalize for all strings
- '',
- $string
- );
- }
-
/**
* Callback function for escapeCDATA() that does the work.
*
@@ -323,8 +309,6 @@ class HTMLPurifier_Lexer
// escape CDATA
$html = $this->escapeCDATA($html);
- $html = $this->removeIEConditional($html);
-
// extract body from document if applicable
if ($config->get('Core.ConvertDocumentToFragment')) {
$e = false;
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
index 5e8104be9..7d579837c 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
@@ -72,6 +72,9 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
if ($config->get('Core.AllowParseManyTags') && defined('LIBXML_PARSEHUGE')) {
$options |= LIBXML_PARSEHUGE;
}
+ if ($config->get('Core.RemoveBlanks') && defined('LIBXML_NOBLANKS')) {
+ $options |= LIBXML_NOBLANKS;
+ }
set_error_handler(array($this, 'muteErrorHandler'));
// loadHTML() fails on PHP 5.3 when second parameter is given
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php
index d643fa64e..dcf365589 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php
@@ -44,7 +44,7 @@ abstract class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
$this->name = ctype_lower($name) ? $name : strtolower($name);
foreach ($attr as $key => $value) {
// normalization only necessary when key is not lowercase
- if (!ctype_lower($key)) {
+ if (!ctype_lower((string)$key)) {
$new_key = strtolower($key);
if (!isset($attr[$new_key])) {
$attr[$new_key] = $attr[$key];
diff --git a/vendor/paragonie/constant_time_encoding/README.md b/vendor/paragonie/constant_time_encoding/README.md
index cedddd863..211f0dc9f 100644
--- a/vendor/paragonie/constant_time_encoding/README.md
+++ b/vendor/paragonie/constant_time_encoding/README.md
@@ -1,6 +1,7 @@
# Constant-Time Encoding
[](https://github.com/paragonie/constant_time_encoding/actions)
+[](https://github.com/paragonie/constant_time_encoding/actions)
[](https://packagist.org/packages/paragonie/constant_time_encoding)
[](https://packagist.org/packages/paragonie/constant_time_encoding)
[](https://packagist.org/packages/paragonie/constant_time_encoding)
@@ -11,7 +12,7 @@ this library aims to offer character encoding functions that do not leak
information about what you are encoding/decoding via processor cache
misses. Further reading on [cache-timing attacks](http://blog.ircmaxell.com/2014/11/its-all-about-time.html).
-Our fork offers the following enchancements:
+Our fork offers the following enhancements:
* `mbstring.func_overload` resistance
* Unit tests
@@ -22,10 +23,13 @@ Our fork offers the following enchancements:
## PHP Version Requirements
-Version 2 of this library should work on **PHP 7** or newer. For PHP 5
-support, see [the v1.x branch](https://github.com/paragonie/constant_time_encoding/tree/v1.x).
+Version 3 of this library should work on **PHP 8** or newer.
-If you are adding this as a dependency to a project intended to work on both PHP 5 and PHP 7, please set the required version to `^1|^2` instead of just `^1` or `^2`.
+Version 2 of this library should work on **PHP 7** or newer. See [the v2.x branch](https://github.com/paragonie/constant_time_encoding/tree/v2.x).
+
+For PHP 5 support, see [the v1.x branch](https://github.com/paragonie/constant_time_encoding/tree/v1.x).
+
+If you are adding this as a dependency to a project intended to work on PHP 5 through 8.4, please set the required version to `^1|^2|^3`.
## How to Install
diff --git a/vendor/paragonie/constant_time_encoding/composer.json b/vendor/paragonie/constant_time_encoding/composer.json
index 2fe9717ad..5023095b4 100644
--- a/vendor/paragonie/constant_time_encoding/composer.json
+++ b/vendor/paragonie/constant_time_encoding/composer.json
@@ -37,11 +37,11 @@
"source": "https://github.com/paragonie/constant_time_encoding"
},
"require": {
- "php": "^7|^8"
+ "php": "^8"
},
"require-dev": {
- "phpunit/phpunit": "^6|^7|^8|^9",
- "vimeo/psalm": "^1|^2|^3|^4"
+ "phpunit/phpunit": "^9",
+ "vimeo/psalm": "^4|^5"
},
"autoload": {
"psr-4": {
diff --git a/vendor/paragonie/constant_time_encoding/src/Base32.php b/vendor/paragonie/constant_time_encoding/src/Base32.php
index 7508b3df6..48d00b991 100644
--- a/vendor/paragonie/constant_time_encoding/src/Base32.php
+++ b/vendor/paragonie/constant_time_encoding/src/Base32.php
@@ -44,8 +44,11 @@ abstract class Base32 implements EncoderInterface
* @param bool $strictPadding
* @return string
*/
- public static function decode(string $encodedString, bool $strictPadding = false): string
- {
+ public static function decode(
+ #[\SensitiveParameter]
+ string $encodedString,
+ bool $strictPadding = false
+ ): string {
return static::doDecode($encodedString, false, $strictPadding);
}
@@ -56,8 +59,11 @@ abstract class Base32 implements EncoderInterface
* @param bool $strictPadding
* @return string
*/
- public static function decodeUpper(string $src, bool $strictPadding = false): string
- {
+ public static function decodeUpper(
+ #[\SensitiveParameter]
+ string $src,
+ bool $strictPadding = false
+ ): string {
return static::doDecode($src, true, $strictPadding);
}
@@ -68,10 +74,13 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encode(string $binString): string
- {
+ public static function encode(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
return static::doEncode($binString, false, true);
}
+
/**
* Encode into Base32 (RFC 4648)
*
@@ -79,8 +88,10 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUnpadded(string $src): string
- {
+ public static function encodeUnpadded(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, false, false);
}
@@ -91,8 +102,10 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUpper(string $src): string
- {
+ public static function encodeUpper(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, true, true);
}
@@ -103,8 +116,10 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUpperUnpadded(string $src): string
- {
+ public static function encodeUpperUnpadded(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, true, false);
}
@@ -191,8 +206,11 @@ abstract class Base32 implements EncoderInterface
* @param bool $upper
* @return string
*/
- public static function decodeNoPadding(string $encodedString, bool $upper = false): string
- {
+ public static function decodeNoPadding(
+ #[\SensitiveParameter]
+ string $encodedString,
+ bool $upper = false
+ ): string {
$srcLen = Binary::safeStrlen($encodedString);
if ($srcLen === 0) {
return '';
@@ -222,9 +240,9 @@ abstract class Base32 implements EncoderInterface
* @return string
*
* @throws TypeError
- * @psalm-suppress RedundantCondition
*/
protected static function doDecode(
+ #[\SensitiveParameter]
string $src,
bool $upper = false,
bool $strictPadding = false
@@ -434,8 +452,12 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- protected static function doEncode(string $src, bool $upper = false, $pad = true): string
- {
+ protected static function doEncode(
+ #[\SensitiveParameter]
+ string $src,
+ bool $upper = false,
+ $pad = true
+ ): string {
// We do this to reduce code duplication:
$method = $upper
? 'encode5BitsUpper'
diff --git a/vendor/paragonie/constant_time_encoding/src/Base64.php b/vendor/paragonie/constant_time_encoding/src/Base64.php
index f5716179f..2e3ecc859 100644
--- a/vendor/paragonie/constant_time_encoding/src/Base64.php
+++ b/vendor/paragonie/constant_time_encoding/src/Base64.php
@@ -47,8 +47,10 @@ abstract class Base64 implements EncoderInterface
*
* @throws TypeError
*/
- public static function encode(string $binString): string
- {
+ public static function encode(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
return static::doEncode($binString, true);
}
@@ -62,8 +64,10 @@ abstract class Base64 implements EncoderInterface
*
* @throws TypeError
*/
- public static function encodeUnpadded(string $src): string
- {
+ public static function encodeUnpadded(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, false);
}
@@ -74,8 +78,11 @@ abstract class Base64 implements EncoderInterface
*
* @throws TypeError
*/
- protected static function doEncode(string $src, bool $pad = true): string
- {
+ protected static function doEncode(
+ #[\SensitiveParameter]
+ string $src,
+ bool $pad = true
+ ): string {
$dest = '';
$srcLen = Binary::safeStrlen($src);
// Main loop (no padding):
@@ -129,10 +136,12 @@ abstract class Base64 implements EncoderInterface
*
* @throws RangeException
* @throws TypeError
- * @psalm-suppress RedundantCondition
*/
- public static function decode(string $encodedString, bool $strictPadding = false): string
- {
+ public static function decode(
+ #[\SensitiveParameter]
+ string $encodedString,
+ bool $strictPadding = false
+ ): string {
// Remove padding
$srcLen = Binary::safeStrlen($encodedString);
if ($srcLen === 0) {
@@ -227,25 +236,21 @@ abstract class Base64 implements EncoderInterface
* @param string $encodedString
* @return string
*/
- public static function decodeNoPadding(string $encodedString): string
- {
+ public static function decodeNoPadding(
+ #[\SensitiveParameter]
+ string $encodedString
+ ): string {
$srcLen = Binary::safeStrlen($encodedString);
if ($srcLen === 0) {
return '';
}
if (($srcLen & 3) === 0) {
- if ($encodedString[$srcLen - 1] === '=') {
+ // If $strLen is not zero, and it is divisible by 4, then it's at least 4.
+ if ($encodedString[$srcLen - 1] === '=' || $encodedString[$srcLen - 2] === '=') {
throw new InvalidArgumentException(
"decodeNoPadding() doesn't tolerate padding"
);
}
- if (($srcLen & 3) > 1) {
- if ($encodedString[$srcLen - 2] === '=') {
- throw new InvalidArgumentException(
- "decodeNoPadding() doesn't tolerate padding"
- );
- }
- }
}
return static::decode(
$encodedString,
diff --git a/vendor/paragonie/constant_time_encoding/src/Binary.php b/vendor/paragonie/constant_time_encoding/src/Binary.php
index 828f3e0f6..a958f2f7c 100644
--- a/vendor/paragonie/constant_time_encoding/src/Binary.php
+++ b/vendor/paragonie/constant_time_encoding/src/Binary.php
@@ -45,8 +45,10 @@ abstract class Binary
* @param string $str
* @return int
*/
- public static function safeStrlen(string $str): int
- {
+ public static function safeStrlen(
+ #[\SensitiveParameter]
+ string $str
+ ): int {
if (\function_exists('mb_strlen')) {
// mb_strlen in PHP 7.x can return false.
/** @psalm-suppress RedundantCast */
@@ -70,9 +72,10 @@ abstract class Binary
* @throws TypeError
*/
public static function safeSubstr(
+ #[\SensitiveParameter]
string $str,
int $start = 0,
- $length = null
+ ?int $length = null
): string {
if ($length === 0) {
return '';
diff --git a/vendor/paragonie/constant_time_encoding/src/Encoding.php b/vendor/paragonie/constant_time_encoding/src/Encoding.php
index 8649f31fc..8b7e3878e 100644
--- a/vendor/paragonie/constant_time_encoding/src/Encoding.php
+++ b/vendor/paragonie/constant_time_encoding/src/Encoding.php
@@ -40,8 +40,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32Encode(string $str): string
- {
+ public static function base32Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encode($str);
}
@@ -52,8 +54,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32EncodeUpper(string $str): string
- {
+ public static function base32EncodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encodeUpper($str);
}
@@ -64,8 +68,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32Decode(string $str): string
- {
+ public static function base32Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decode($str);
}
@@ -76,8 +82,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32DecodeUpper(string $str): string
- {
+ public static function base32DecodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decodeUpper($str);
}
@@ -88,8 +96,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexEncode(string $str): string
- {
+ public static function base32HexEncode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::encode($str);
}
@@ -100,8 +110,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexEncodeUpper(string $str): string
- {
+ public static function base32HexEncodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::encodeUpper($str);
}
@@ -112,8 +124,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexDecode(string $str): string
- {
+ public static function base32HexDecode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::decode($str);
}
@@ -124,8 +138,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexDecodeUpper(string $str): string
- {
+ public static function base32HexDecodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::decodeUpper($str);
}
@@ -136,8 +152,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64Encode(string $str): string
- {
+ public static function base64Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::encode($str);
}
@@ -148,8 +166,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64Decode(string $str): string
- {
+ public static function base64Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::decode($str);
}
@@ -161,8 +181,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64EncodeDotSlash(string $str): string
- {
+ public static function base64EncodeDotSlash(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlash::encode($str);
}
@@ -176,8 +198,10 @@ abstract class Encoding
* @throws \RangeException
* @throws TypeError
*/
- public static function base64DecodeDotSlash(string $str): string
- {
+ public static function base64DecodeDotSlash(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlash::decode($str);
}
@@ -189,8 +213,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64EncodeDotSlashOrdered(string $str): string
- {
+ public static function base64EncodeDotSlashOrdered(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlashOrdered::encode($str);
}
@@ -204,8 +230,10 @@ abstract class Encoding
* @throws \RangeException
* @throws TypeError
*/
- public static function base64DecodeDotSlashOrdered(string $str): string
- {
+ public static function base64DecodeDotSlashOrdered(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlashOrdered::decode($str);
}
@@ -217,8 +245,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function hexEncode(string $bin_string): string
- {
+ public static function hexEncode(
+ #[\SensitiveParameter]
+ string $bin_string
+ ): string {
return Hex::encode($bin_string);
}
@@ -230,8 +260,10 @@ abstract class Encoding
* @return string (raw binary)
* @throws \RangeException
*/
- public static function hexDecode(string $hex_string): string
- {
+ public static function hexDecode(
+ #[\SensitiveParameter]
+ string $hex_string
+ ): string {
return Hex::decode($hex_string);
}
@@ -243,8 +275,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function hexEncodeUpper(string $bin_string): string
- {
+ public static function hexEncodeUpper(
+ #[\SensitiveParameter]
+ string $bin_string
+ ): string {
return Hex::encodeUpper($bin_string);
}
@@ -255,8 +289,10 @@ abstract class Encoding
* @param string $bin_string (raw binary)
* @return string
*/
- public static function hexDecodeUpper(string $bin_string): string
- {
+ public static function hexDecodeUpper(
+ #[\SensitiveParameter]
+ string $bin_string
+ ): string {
return Hex::decode($bin_string);
}
}
diff --git a/vendor/paragonie/constant_time_encoding/src/Hex.php b/vendor/paragonie/constant_time_encoding/src/Hex.php
index a9e058cd3..97c2046f0 100644
--- a/vendor/paragonie/constant_time_encoding/src/Hex.php
+++ b/vendor/paragonie/constant_time_encoding/src/Hex.php
@@ -42,8 +42,10 @@ abstract class Hex implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encode(string $binString): string
- {
+ public static function encode(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
$hex = '';
$len = Binary::safeStrlen($binString);
for ($i = 0; $i < $len; ++$i) {
@@ -69,8 +71,10 @@ abstract class Hex implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUpper(string $binString): string
- {
+ public static function encodeUpper(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
$hex = '';
$len = Binary::safeStrlen($binString);
@@ -99,6 +103,7 @@ abstract class Hex implements EncoderInterface
* @throws RangeException
*/
public static function decode(
+ #[\SensitiveParameter]
string $encodedString,
bool $strictPadding = false
): string {
diff --git a/vendor/paragonie/constant_time_encoding/src/RFC4648.php b/vendor/paragonie/constant_time_encoding/src/RFC4648.php
index f124d65bf..7cd2e9909 100644
--- a/vendor/paragonie/constant_time_encoding/src/RFC4648.php
+++ b/vendor/paragonie/constant_time_encoding/src/RFC4648.php
@@ -46,8 +46,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64Encode(string $str): string
- {
+ public static function base64Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::encode($str);
}
@@ -61,8 +63,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64Decode(string $str): string
- {
+ public static function base64Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::decode($str, true);
}
@@ -76,8 +80,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64UrlSafeEncode(string $str): string
- {
+ public static function base64UrlSafeEncode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64UrlSafe::encode($str);
}
@@ -91,8 +97,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64UrlSafeDecode(string $str): string
- {
+ public static function base64UrlSafeDecode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64UrlSafe::decode($str, true);
}
@@ -106,8 +114,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32Encode(string $str): string
- {
+ public static function base32Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encodeUpper($str);
}
@@ -121,8 +131,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32Decode(string $str): string
- {
+ public static function base32Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decodeUpper($str, true);
}
@@ -136,8 +148,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32HexEncode(string $str): string
- {
+ public static function base32HexEncode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encodeUpper($str);
}
@@ -151,8 +165,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32HexDecode(string $str): string
- {
+ public static function base32HexDecode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decodeUpper($str, true);
}
@@ -166,8 +182,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base16Encode(string $str): string
- {
+ public static function base16Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Hex::encodeUpper($str);
}
@@ -179,8 +197,10 @@ abstract class RFC4648
* @param string $str
* @return string
*/
- public static function base16Decode(string $str): string
- {
+ public static function base16Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Hex::decode($str, true);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/phpseclib/phpseclib/BACKERS.md b/vendor/phpseclib/phpseclib/BACKERS.md
index efca482ad..cafcf60a2 100644
--- a/vendor/phpseclib/phpseclib/BACKERS.md
+++ b/vendor/phpseclib/phpseclib/BACKERS.md
@@ -14,4 +14,6 @@ phpseclib ongoing development is made possible by [Tidelift](https://tidelift.co
- Tharyrok
- [cjhaas](https://github.com/cjhaas)
- [istiak-tridip](https://github.com/istiak-tridip)
-- [Anna Filina](https://github.com/afilina)
\ No newline at end of file
+- [Anna Filina](https://github.com/afilina)
+- [blakemckeeby](https://github.com/blakemckeeby)
+- [ssddanbrown](https://github.com/ssddanbrown)
\ No newline at end of file
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
index ab5944cde..2d4225a3f 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
@@ -611,7 +611,6 @@ abstract class Base
*
* @access public
* @param string $key
- * @internal Could, but not must, extend by the child Crypt_* class
*/
function setKey($key)
{
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
index fec689585..7f5df1d5f 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
@@ -1396,9 +1396,14 @@ class RSA
$this->components = array();
$xml = xml_parser_create('UTF-8');
- xml_set_object($xml, $this);
- xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler');
- xml_set_character_data_handler($xml, '_data_handler');
+ if (version_compare(PHP_VERSION, '8.4.0', '>=')) {
+ xml_set_element_handler($xml, array($this, '_start_element_handler'), array($this, '_stop_element_handler'));
+ xml_set_character_data_handler($xml, array($this, '_data_handler'));
+ } else {
+ xml_set_object($xml, $this);
+ xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler');
+ xml_set_character_data_handler($xml, '_data_handler');
+ }
// add to account for "dangling" tags like ... that are sometimes added
if (!xml_parse($xml, '' . $key . '')) {
xml_parser_free($xml);
diff --git a/vendor/phpseclib/phpseclib/phpseclib/File/X509.php b/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
index 7b8d96e29..64e22655c 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
@@ -3847,7 +3847,8 @@ class X509
array(
'version' => 'v1',
'subject' => $this->dn,
- 'subjectPKInfo' => $publicKey
+ 'subjectPKInfo' => $publicKey,
+ 'attributes' => array()
),
'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm),
'signature' => false // this is going to be overwritten later
@@ -4003,11 +4004,11 @@ class X509
$version = isset($tbsCertList['version']) ? $tbsCertList['version'] : 0;
if (!$version) {
if (!empty($tbsCertList['crlExtensions'])) {
- $version = 1; // v2.
+ $version = 'v2'; // v2.
} elseif (!empty($tbsCertList['revokedCertificates'])) {
foreach ($tbsCertList['revokedCertificates'] as $cert) {
if (!empty($cert['crlEntryExtensions'])) {
- $version = 1; // v2.
+ $version = 'v2'; // v2.
}
}
}
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php b/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
index 7747a95b6..5f2283678 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
@@ -251,8 +251,17 @@ class BigInteger
function __construct($x = 0, $base = 10)
{
if (!defined('MATH_BIGINTEGER_MODE')) {
+
+ // https://github.com/php/php-src/commit/e0a0e216a909dc4ee4ea7c113a5f41d49525f02e broke GMP
+ // https://github.com/php/php-src/commit/424ba0f2ff9677d16b4e339e90885bd4bc49fcf1 fixed it
+ // see https://github.com/php/php-src/issues/16870 for more info
+ if (version_compare(PHP_VERSION, '8.2.26', '<')) {
+ $gmpOK = true;
+ } else {
+ $gmpOK = !in_array(PHP_VERSION_ID, array(80226, 80314, 80400, 80401));
+ }
switch (true) {
- case extension_loaded('gmp'):
+ case extension_loaded('gmp') && $gmpOK:
define('MATH_BIGINTEGER_MODE', self::MODE_GMP);
break;
case extension_loaded('bcmath'):
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
index 28b568062..1c6ef7f9a 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
@@ -758,7 +758,8 @@ class SFTP extends SSH2
return false;
}
$this->canonicalize_paths = false;
- $this->_reset_connection(NET_SSH2_DISCONNECT_CONNECTION_LOST);
+ $this->_reset_sftp();
+ return $this->_init_sftp_connection();
}
$this->_update_stat_cache($this->pwd, array());
@@ -3629,20 +3630,30 @@ class SFTP extends SSH2
}
/**
- * Resets a connection for re-use
+ * Resets the SFTP channel for re-use
*
- * @param int $reason
* @access private
*/
- function _reset_connection($reason)
+ function _reset_sftp()
{
- parent::_reset_connection($reason);
$this->use_request_id = false;
$this->pwd = false;
$this->requestBuffer = array();
$this->partial_init = false;
}
+ /**
+ * Resets a connection for re-use
+ *
+ * @param int $reason
+ * @access private
+ */
+ function _reset_connection($reason)
+ {
+ parent::_reset_connection($reason);
+ $this->_reset_sftp();
+ }
+
/**
* Receives SFTP Packets
*
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
index 607cc2145..775d894fb 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
@@ -146,6 +146,10 @@ class SSH2
* Dumps the content real-time to a file
*/
const LOG_REALTIME_FILE = 4;
+ /**
+ * Dumps the message numbers real-time
+ */
+ const LOG_REALTIME_SIMPLE = 5;
/**
* Make sure that the log never gets larger than this
*/
@@ -1005,7 +1009,7 @@ class SSH2
* @var bool
* @access private
*/
- var $retry_connect = false;
+ var $login_credentials_finalized = false;
/**
* Binary Packet Buffer
@@ -1097,12 +1101,57 @@ class SSH2
var $smartMFA = true;
/**
- * Extra packets counter
+ * Bytes Transferred Since Last Key Exchange
+ *
+ * Includes outbound and inbound totals
*
+ * @var int
+ * @access private
+ */
+ var $bytesTransferredSinceLastKEX = 0;
+
+ /**
+ * After how many transferred byte should phpseclib initiate a key re-exchange?
+ *
+ * @var int
+ * @access private
+ */
+ var $doKeyReexchangeAfterXBytes = 1073741824;
+
+ /**
+ * Has a key re-exchange been initialized?
+ *
* @var bool
* @access private
*/
- var $extra_packets;
+ var $keyExchangeInProgress = false;
+
+ /**
+ * KEX Buffer
+ *
+ * If we're in the middle of a key exchange we want to buffer any additional packets we get until
+ * the key exchange is over
+ *
+ * @see self::_get_binary_packet()
+ * @see self::_key_exchange()
+ * @see self::exec()
+ * @var array
+ * @access private
+ */
+ var $kex_buffer = array();
+
+ /**
+ * Strict KEX Flag
+ *
+ * If kex-strict-s-v00@openssh.com is present in the first KEX packet it need not
+ * be present in subsequent packet
+ *
+ * @see self::_key_exchange()
+ * @see self::exec()
+ * @var array
+ * @access private
+ */
+ var $strict_kex_flag = false;
/**
* Default Constructor.
@@ -1361,25 +1410,17 @@ class SSH2
}
$temp = stream_get_line($this->fsock, 255, "\n");
- if (strlen($temp) == 255) {
- continue;
- }
if ($temp === false) {
return false;
}
- $line.= "$temp\n";
-
- // quoting RFC4253, "Implementers who wish to maintain
- // compatibility with older, undocumented versions of this protocol may
- // want to process the identification string without expecting the
- // presence of the carriage return character for reasons described in
- // Section 5 of this document."
+ $line .= $temp;
+ if (strlen($temp) == 255) {
+ continue;
+ }
- //if (substr($line, -2) == "\r\n") {
- // break;
- //}
+ $line .= "\n";
break;
}
@@ -1400,7 +1441,8 @@ class SSH2
$this->_append_log('->', $this->identifier . "\r\n");
}
- $this->server_identifier = trim($temp, "\r\n");
+ $this->server_identifier = trim($data, "\r\n");
+
if (strlen($extra)) {
$this->errors[] = $data;
}
@@ -1485,8 +1527,13 @@ class SSH2
*/
function _key_exchange($kexinit_payload_server = false)
{
+ $this->bytesTransferredSinceLastKEX = 0;
+
$preferred = $this->preferred;
- $send_kex = true;
+ // for the initial key exchange $send_kex is true (no key re-exchange has been started)
+ // for phpseclib initiated key exchanges $send_kex is false
+ $send_kex = !$this->keyExchangeInProgress;
+ $this->keyExchangeInProgress = true;
$kex_algorithms = isset($preferred['kex']) ?
$preferred['kex'] :
@@ -1572,22 +1619,29 @@ class SSH2
0
);
- if ($kexinit_payload_server === false) {
+ if ($kexinit_payload_server === false && $send_kex) {
if (!$this->_send_binary_packet($kexinit_payload_client)) {
return false;
}
- $this->extra_packets = 0;
- $kexinit_payload_server = $this->_get_binary_packet();
- if ($kexinit_payload_server === false) {
- $this->bitmap = 0;
- user_error('Connection closed by server');
- return false;
- }
+ while (true) {
+ $kexinit_payload_server = $this->_get_binary_packet();
+ if ($kexinit_payload_server === false) {
+ $this->bitmap = 0;
+ user_error('Connection closed by server');
+ return false;
+ }
+
+ if (strlen($kexinit_payload_server)) {
+ switch (ord($kexinit_payload_server[0])) {
+ case NET_SSH2_MSG_KEXINIT:
+ break 2;
+ case NET_SSH2_MSG_DISCONNECT:
+ return $this->_handleDisconnect($kexinit_payload_server);
+ }
+ }
- if (!strlen($kexinit_payload_server) || ord($kexinit_payload_server[0]) != NET_SSH2_MSG_KEXINIT) {
- user_error('Expected SSH_MSG_KEXINIT');
- return false;
+ $this->kex_buffer[] = $kexinit_payload_server;
}
$send_kex = false;
@@ -1603,9 +1657,14 @@ class SSH2
$temp = unpack('Nlength', $this->_string_shift($response, 4));
$this->kex_algorithms = explode(',', $this->_string_shift($response, $temp['length']));
if (in_array('kex-strict-s-v00@openssh.com', $this->kex_algorithms)) {
- if ($this->session_id === false && $this->extra_packets) {
- user_error('Possible Terrapin Attack detected');
- return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ if ($this->session_id === false) {
+ // [kex-strict-s-v00@openssh.com is] only valid in the initial SSH2_MSG_KEXINIT and MUST be ignored
+ // if [it is] present in subsequent SSH2_MSG_KEXINIT packets
+ $this->strict_kex_flag = true;
+ if (count($this->kex_buffer)) {
+ user_error('Possible Terrapin Attack detected');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ }
}
}
@@ -2014,7 +2073,9 @@ class SSH2
return false;
}
- if (in_array('kex-strict-s-v00@openssh.com', $this->kex_algorithms)) {
+ $this->keyExchangeInProgress = false;
+
+ if ($this->strict_kex_flag) {
$this->get_seq_no = $this->send_seq_no = 0;
}
@@ -2292,7 +2353,7 @@ class SSH2
function login($username)
{
$args = func_get_args();
- if (!$this->retry_connect) {
+ if (!$this->login_credentials_finalized) {
$this->auth[] = $args;
}
@@ -2383,6 +2444,7 @@ class SSH2
foreach ($newargs as $arg) {
if ($this->_login_helper($username, $arg)) {
+ $this->login_credentials_finalized = true;
return true;
}
}
@@ -2418,10 +2480,14 @@ class SSH2
return false;
}
+ $bad_key_size_fix = $this->bad_key_size_fix;
$response = $this->_get_binary_packet();
if ($response === false) {
- if ($this->retry_connect) {
- $this->retry_connect = false;
+ // bad_key_size_fix is only ever re-assigned to true
+ // under certain conditions. when it's newly set we'll
+ // retry the connection with that new setting but we'll
+ // only try it once.
+ if ($bad_key_size_fix != $this->bad_key_size_fix) {
if (!$this->_connect()) {
return false;
}
@@ -2790,10 +2856,12 @@ class SSH2
{
$this->agent = $agent;
$keys = $agent->requestIdentities();
+ $orig_algorithms = $this->supported_private_key_algorithms;
foreach ($keys as $key) {
if ($this->_privatekey_login($username, $key)) {
return true;
}
+ $this->supported_private_key_algorithms = $orig_algorithms;
}
return false;
@@ -3551,7 +3619,6 @@ class SSH2
function _reconnect()
{
$this->_reset_connection(NET_SSH2_DISCONNECT_CONNECTION_LOST);
- $this->retry_connect = true;
if (!$this->_connect()) {
return false;
}
@@ -3575,7 +3642,6 @@ class SSH2
$this->hmac_check = $this->hmac_create = false;
$this->hmac_size = false;
$this->session_id = false;
- $this->retry_connect = true;
$this->get_seq_no = $this->send_seq_no = 0;
}
@@ -3590,6 +3656,10 @@ class SSH2
*/
function _get_binary_packet($skip_channel_filter = false)
{
+ if (!$this->keyExchangeInProgress && count($this->kex_buffer)) {
+ return $this->_filter(array_shift($this->kex_buffer), $skip_channel_filter);
+ }
+
if ($skip_channel_filter) {
$read = array($this->fsock);
$write = $except = null;
@@ -3674,9 +3744,13 @@ class SSH2
$remaining_length = $packet_length + 4 - $this->decrypt_block_size;
+ if (!$this->keyExchangeInProgress) {
+ $this->bytesTransferredSinceLastKEX+= $packet_length + $padding_length + 5;
+ }
+
// quoting ,
// "implementations SHOULD check that the packet length is reasonable"
- // PuTTY uses 0x9000 as the actual max packet size and so to shall we
+ // PuTTY uses 0x9000 as the actual max packet size and so, too, shall we
if ($remaining_length < -$this->decrypt_block_size || $remaining_length > 0x9000 || $remaining_length % $this->decrypt_block_size != 0) {
if (!$this->bad_key_size_fix && $this->_bad_algorithm_candidate($this->decryptName) && !($this->bitmap & SSH2::MASK_LOGIN)) {
$this->bad_key_size_fix = true;
@@ -3766,7 +3840,34 @@ class SSH2
$this->last_packet = $current;
}
- return $this->_filter($payload, $skip_channel_filter);
+ if ($this->bytesTransferredSinceLastKEX > $this->doKeyReexchangeAfterXBytes) {
+ $this->_key_exchange();
+ }
+
+ // don't filter if we're in the middle of a key exchange (since _filter might send out packets)
+ return $this->keyExchangeInProgress ? $payload : $this->_filter($payload, $skip_channel_filter);
+ }
+
+ /**
+ * Handle Disconnect
+ *
+ * Because some binary packets need to be ignored...
+ *
+ * @see self::_filter()
+ * @see self::_key_exchange
+ * @return boolean
+ * @access private
+ */
+ function _handleDisconnect($payload)
+ {
+ $this->_string_shift($payload, 1);
+ if (strlen($payload) < 8) {
+ return false;
+ }
+ extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
+ $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . $this->_string_shift($payload, $length);
+ $this->bitmap = 0;
+ return false;
}
/**
@@ -3782,20 +3883,11 @@ class SSH2
{
switch (ord($payload[0])) {
case NET_SSH2_MSG_DISCONNECT:
- $this->_string_shift($payload, 1);
- if (strlen($payload) < 8) {
- return false;
- }
- extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
- $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . $this->_string_shift($payload, $length);
- $this->bitmap = 0;
- return false;
+ return $this->_handleDisconnect($payload);
case NET_SSH2_MSG_IGNORE:
- $this->extra_packets++;
$payload = $this->_get_binary_packet($skip_channel_filter);
break;
case NET_SSH2_MSG_DEBUG:
- $this->extra_packets++;
$this->_string_shift($payload, 2);
if (strlen($payload) < 4) {
return false;
@@ -3807,7 +3899,7 @@ class SSH2
case NET_SSH2_MSG_UNIMPLEMENTED:
return false;
case NET_SSH2_MSG_KEXINIT:
- // this is here for key re-exchanges after the initial key exchange
+ // this is here for server initiated key re-exchanges after the initial key exchange
if ($this->session_id !== false) {
$this->send_kex_first = false;
if (!$this->_key_exchange($payload)) {
@@ -3816,6 +3908,28 @@ class SSH2
}
$payload = $this->_get_binary_packet($skip_channel_filter);
}
+ break;
+ case NET_SSH2_MSG_EXT_INFO:
+ $this->_string_shift($payload, 1);
+ if (strlen($payload) < 4) {
+ return false;
+ }
+ $nr_extensions = unpack('Nlength', $this->_string_shift($payload, 4));
+ for ($i = 0; $i < $nr_extensions['length']; $i++) {
+ if (strlen($payload) < 4) {
+ return false;
+ }
+ $temp = unpack('Nlength', $this->_string_shift($payload, 4));
+ $extension_name = $this->_string_shift($payload, $temp['length']);
+ if ($extension_name == 'server-sig-algs') {
+ if (strlen($payload) < 4) {
+ return false;
+ }
+ $temp = unpack('Nlength', $this->_string_shift($payload, 4));
+ $this->supported_private_key_algorithms = explode(',', $this->_string_shift($payload, $temp['length']));
+ }
+ }
+ $payload = $this->_get_binary_packet($skip_channel_filter);
}
// see http://tools.ietf.org/html/rfc4252#section-5.4; only called when the encryption has been activated and when we haven't already logged in
@@ -4059,9 +4173,6 @@ class SSH2
} else {
$response = $this->_get_binary_packet(true);
if ($response === true && $this->is_timeout) {
- if ($client_channel == self::CHANNEL_EXEC && !$this->request_pty) {
- $this->_close_channel($client_channel);
- }
return true;
}
if ($response === false) {
@@ -4352,6 +4463,10 @@ class SSH2
$packet.= $hmac;
+ if (!$this->keyExchangeInProgress) {
+ $this->bytesTransferredSinceLastKEX+= strlen($packet);
+ }
+
$start = microtime(true);
$result = strlen($packet) == @fputs($this->fsock, $packet);
$stop = microtime(true);
@@ -4365,6 +4480,10 @@ class SSH2
$this->last_packet = $current;
}
+ if ($this->bytesTransferredSinceLastKEX > $this->doKeyReexchangeAfterXBytes) {
+ $this->_key_exchange();
+ }
+
return $result;
}
@@ -4442,6 +4561,10 @@ class SSH2
$this->realtime_log_wrap = true;
}
fputs($this->realtime_log_file, $entry);
+ break;
+ case NET_SSH2_LOG_REALTIME_SIMPLE:
+ echo $message_number;
+ echo PHP_SAPI == 'cli' ? "\r\n" : ' ';
}
}
@@ -5111,42 +5234,66 @@ class SSH2
*/
function setPreferredAlgorithms($methods)
{
+ $keys = array('client_to_server', 'server_to_client');
+
+ if (isset($methods['kex']) && is_string($methods['kex'])) {
+ $methods['kex'] = explode(',', $methods['kex']);
+ }
+
+ if (isset($methods['hostkey']) && is_string($methods['hostkey'])) {
+ $methods['hostkey'] = explode(',', $methods['hostkey']);
+ }
+
+ foreach ($keys as $key) {
+ if (isset($methods[$key])) {
+ $a = &$methods[$key];
+ if (isset($a['crypt']) && is_string($a['crypt'])) {
+ $a['crypt'] = explode(',', $a['crypt']);
+ }
+ if (isset($a['comp']) && is_string($a['comp'])) {
+ $a['comp'] = explode(',', $a['comp']);
+ }
+ if (isset($a['mac']) && is_string($a['mac'])) {
+ $a['mac'] = explode(',', $a['mac']);
+ }
+ }
+ }
+
$preferred = $methods;
if (isset($preferred['kex'])) {
$preferred['kex'] = array_intersect(
$preferred['kex'],
- $this->getSupportedKEXAlgorithms()
+ static::getSupportedKEXAlgorithms()
);
}
if (isset($preferred['hostkey'])) {
$preferred['hostkey'] = array_intersect(
$preferred['hostkey'],
- $this->getSupportedHostKeyAlgorithms()
+ static::getSupportedHostKeyAlgorithms()
);
}
- $keys = array('client_to_server', 'server_to_client');
foreach ($keys as $key) {
if (isset($preferred[$key])) {
$a = &$preferred[$key];
if (isset($a['crypt'])) {
$a['crypt'] = array_intersect(
$a['crypt'],
- $this->getSupportedEncryptionAlgorithms()
+ static::getSupportedEncryptionAlgorithms()
);
}
if (isset($a['comp'])) {
$a['comp'] = array_intersect(
$a['comp'],
- $this->getSupportedCompressionAlgorithms()
+ static::getSupportedCompressionAlgorithms()
);
}
if (isset($a['mac'])) {
$a['mac'] = array_intersect(
$a['mac'],
- $this->getSupportedMACAlgorithms()
+ static::getSupportedMACAlgorithms()
);
}
}
@@ -5526,4 +5673,12 @@ class SSH2
{
$this->smartMFA = false;
}
+
+ /**
+ * How many bytes until the next key re-exchange?
+ */
+ function bytesUntilKeyReexchange($bytes)
+ {
+ $this->doKeyReexchangeAfterXBytes = $bytes;
+ }
}
diff --git a/vendor/psr/clock/CHANGELOG.md b/vendor/psr/clock/CHANGELOG.md
new file mode 100644
index 000000000..3cd6b9b75
--- /dev/null
+++ b/vendor/psr/clock/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Changelog
+
+All notable changes to this project will be documented in this file, in reverse chronological order by release.
+
+## 1.0.0
+
+First stable release after PSR-20 acceptance
+
+## 0.1.0
+
+First release
diff --git a/vendor/psr/clock/LICENSE b/vendor/psr/clock/LICENSE
new file mode 100644
index 000000000..be6834212
--- /dev/null
+++ b/vendor/psr/clock/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 PHP Framework Interoperability Group
+
+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.
diff --git a/vendor/psr/clock/README.md b/vendor/psr/clock/README.md
new file mode 100644
index 000000000..6ca877eeb
--- /dev/null
+++ b/vendor/psr/clock/README.md
@@ -0,0 +1,61 @@
+# PSR Clock
+
+This repository holds the interface for [PSR-20][psr-url].
+
+Note that this is not a clock of its own. It is merely an interface that
+describes a clock. See the specification for more details.
+
+## Installation
+
+```bash
+composer require psr/clock
+```
+
+## Usage
+
+If you need a clock, you can use the interface like this:
+
+```php
+clock = $clock;
+ }
+
+ public function doSomething()
+ {
+ /** @var DateTimeImmutable $currentDateAndTime */
+ $currentDateAndTime = $this->clock->now();
+ // do something useful with that information
+ }
+}
+```
+
+You can then pick one of the [implementations][implementation-url] of the interface to get a clock.
+
+If you want to implement the interface, you can require this package and
+implement `Psr\Clock\ClockInterface` in your code.
+
+Don't forget to add `psr/clock-implementation` to your `composer.json`s `provides`-section like this:
+
+```json
+{
+ "provides": {
+ "psr/clock-implementation": "1.0"
+ }
+}
+```
+
+And please read the [specification text][specification-url] for details on the interface.
+
+[psr-url]: https://www.php-fig.org/psr/psr-20
+[package-url]: https://packagist.org/packages/psr/clock
+[implementation-url]: https://packagist.org/providers/psr/clock-implementation
+[specification-url]: https://github.com/php-fig/fig-standards/blob/master/proposed/clock.md
diff --git a/vendor/psr/clock/composer.json b/vendor/psr/clock/composer.json
new file mode 100644
index 000000000..77992eda7
--- /dev/null
+++ b/vendor/psr/clock/composer.json
@@ -0,0 +1,21 @@
+{
+ "name": "psr/clock",
+ "description": "Common interface for reading the clock.",
+ "keywords": ["psr", "psr-20", "time", "clock", "now"],
+ "homepage": "https://github.com/php-fig/clock",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ }
+}
diff --git a/vendor/psr/clock/src/ClockInterface.php b/vendor/psr/clock/src/ClockInterface.php
new file mode 100644
index 000000000..7b6d8d8aa
--- /dev/null
+++ b/vendor/psr/clock/src/ClockInterface.php
@@ -0,0 +1,13 @@
+logger = $logger;
}
diff --git a/vendor/psr/log/src/LoggerInterface.php b/vendor/psr/log/src/LoggerInterface.php
index b4d062b9b..cb4cf648b 100644
--- a/vendor/psr/log/src/LoggerInterface.php
+++ b/vendor/psr/log/src/LoggerInterface.php
@@ -22,12 +22,9 @@ interface LoggerInterface
/**
* System is unusable.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function emergency(string|\Stringable $message, array $context = []);
+ public function emergency(string|\Stringable $message, array $context = []): void;
/**
* Action must be taken immediately.
@@ -35,35 +32,26 @@ interface LoggerInterface
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function alert(string|\Stringable $message, array $context = []);
+ public function alert(string|\Stringable $message, array $context = []): void;
/**
* Critical conditions.
*
* Example: Application component unavailable, unexpected exception.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function critical(string|\Stringable $message, array $context = []);
+ public function critical(string|\Stringable $message, array $context = []): void;
/**
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function error(string|\Stringable $message, array $context = []);
+ public function error(string|\Stringable $message, array $context = []): void;
/**
* Exceptional occurrences that are not errors.
@@ -71,55 +59,40 @@ interface LoggerInterface
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function warning(string|\Stringable $message, array $context = []);
+ public function warning(string|\Stringable $message, array $context = []): void;
/**
* Normal but significant events.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function notice(string|\Stringable $message, array $context = []);
+ public function notice(string|\Stringable $message, array $context = []): void;
/**
* Interesting events.
*
* Example: User logs in, SQL logs.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function info(string|\Stringable $message, array $context = []);
+ public function info(string|\Stringable $message, array $context = []): void;
/**
* Detailed debug information.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function debug(string|\Stringable $message, array $context = []);
+ public function debug(string|\Stringable $message, array $context = []): void;
/**
* Logs with an arbitrary level.
*
- * @param mixed $level
- * @param string|\Stringable $message
+ * @param mixed $level
* @param mixed[] $context
*
- * @return void
- *
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, string|\Stringable $message, array $context = []);
+ public function log($level, string|\Stringable $message, array $context = []): void;
}
diff --git a/vendor/psr/log/src/LoggerTrait.php b/vendor/psr/log/src/LoggerTrait.php
index 920bda77f..a5d9980b6 100644
--- a/vendor/psr/log/src/LoggerTrait.php
+++ b/vendor/psr/log/src/LoggerTrait.php
@@ -14,13 +14,8 @@ trait LoggerTrait
{
/**
* System is unusable.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function emergency(string|\Stringable $message, array $context = [])
+ public function emergency(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::EMERGENCY, $message, $context);
}
@@ -30,13 +25,8 @@ trait LoggerTrait
*
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function alert(string|\Stringable $message, array $context = [])
+ public function alert(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::ALERT, $message, $context);
}
@@ -45,13 +35,8 @@ trait LoggerTrait
* Critical conditions.
*
* Example: Application component unavailable, unexpected exception.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function critical(string|\Stringable $message, array $context = [])
+ public function critical(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::CRITICAL, $message, $context);
}
@@ -59,13 +44,8 @@ trait LoggerTrait
/**
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function error(string|\Stringable $message, array $context = [])
+ public function error(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::ERROR, $message, $context);
}
@@ -75,26 +55,16 @@ trait LoggerTrait
*
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function warning(string|\Stringable $message, array $context = [])
+ public function warning(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::WARNING, $message, $context);
}
/**
* Normal but significant events.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function notice(string|\Stringable $message, array $context = [])
+ public function notice(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::NOTICE, $message, $context);
}
@@ -103,26 +73,16 @@ trait LoggerTrait
* Interesting events.
*
* Example: User logs in, SQL logs.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function info(string|\Stringable $message, array $context = [])
+ public function info(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::INFO, $message, $context);
}
/**
* Detailed debug information.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function debug(string|\Stringable $message, array $context = [])
+ public function debug(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::DEBUG, $message, $context);
}
@@ -130,13 +90,9 @@ trait LoggerTrait
/**
* Logs with an arbitrary level.
*
- * @param mixed $level
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
+ * @param mixed $level
*
* @throws \Psr\Log\InvalidArgumentException
*/
- abstract public function log($level, string|\Stringable $message, array $context = []);
+ abstract public function log($level, string|\Stringable $message, array $context = []): void;
}
diff --git a/vendor/psr/log/src/NullLogger.php b/vendor/psr/log/src/NullLogger.php
index 560770571..de0561e2a 100644
--- a/vendor/psr/log/src/NullLogger.php
+++ b/vendor/psr/log/src/NullLogger.php
@@ -15,15 +15,11 @@ class NullLogger extends AbstractLogger
/**
* Logs with an arbitrary level.
*
- * @param mixed $level
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
+ * @param mixed[] $context
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, string|\Stringable $message, array $context = [])
+ public function log($level, string|\Stringable $message, array $context = []): void
{
// noop
}
diff --git a/vendor/ramsey/collection/LICENSE b/vendor/ramsey/collection/LICENSE
index ae15f590c..a7fcf1201 100644
--- a/vendor/ramsey/collection/LICENSE
+++ b/vendor/ramsey/collection/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2021 Ben Ramsey
+Copyright (c) 2015-2022 Ben Ramsey
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/ramsey/collection/README.md b/vendor/ramsey/collection/README.md
index 9124dd77e..c77ffcb18 100644
--- a/vendor/ramsey/collection/README.md
+++ b/vendor/ramsey/collection/README.md
@@ -9,7 +9,7 @@
-
+
@@ -34,25 +34,13 @@ composer require ramsey/collection
## Usage
-Examples of how to use this framework can be found in the
+Examples of how to use this library may be found in the
[Wiki pages](https://github.com/ramsey/collection/wiki/Examples).
## Contributing
-Contributions are welcome! Before contributing to this project, familiarize
-yourself with [CONTRIBUTING.md](CONTRIBUTING.md).
-
-To develop this project, you will need [PHP](https://www.php.net) 7.3 or greater
-and [Composer](https://getcomposer.org).
-
-After cloning this repository locally, execute the following commands:
-
-``` bash
-cd /path/to/repository
-composer install
-```
-
-Now, you are ready to develop!
+Contributions are welcome! To contribute, please familiarize yourself with
+[CONTRIBUTING.md](CONTRIBUTING.md).
## Coordinated Disclosure
@@ -79,4 +67,4 @@ MIT License (MIT). Please see [LICENSE](LICENSE) for more information.
[java]: http://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html
-[security.md]: https://github.com/ramsey/collection/blob/master/SECURITY.md
+[security.md]: https://github.com/ramsey/collection/blob/main/SECURITY.md
diff --git a/vendor/ramsey/collection/SECURITY.md b/vendor/ramsey/collection/SECURITY.md
index b052f3b65..3de4c0cbd 100644
--- a/vendor/ramsey/collection/SECURITY.md
+++ b/vendor/ramsey/collection/SECURITY.md
@@ -1,29 +1,59 @@
-# Vulnerability Disclosure Policy
+# Vulnerability Disclosure Policy (VDP)
+
+## Brand Promise
+
+
Keeping user information safe and secure is a top priority, and we welcome the
contribution of external security researchers.
## Scope
+
+
If you believe you've found a security issue in software that is maintained in
this repository, we encourage you to notify us.
| Version | In scope | Source code |
-| :-----: | :------: | :---------- |
+| ------- | :------: | ----------- |
| latest | ✅ | https://github.com/ramsey/collection |
## How to Submit a Report
-To submit a vulnerability report, please contact us at .
+
+
+To submit a vulnerability report, please contact us at security@ramsey.dev.
Your submission will be reviewed and validated by a member of our team.
## Safe Harbor
+
+
We support safe harbor for security researchers who:
* Make a good faith effort to avoid privacy violations, destruction of data, and
@@ -33,7 +63,7 @@ We support safe harbor for security researchers who:
us immediately, do not proceed with access, and immediately purge any local
information.
* Provide us with a reasonable amount of time to resolve vulnerabilities prior
- to any disclosure to the public or a third-party.
+ to any disclosure to the public or a third party.
We will consider activities conducted consistent with this policy to constitute
"authorized" conduct and will not pursue civil action or initiate a complaint to
@@ -45,15 +75,41 @@ with or unaddressed by this policy.
## Preferences
+
+
* Please provide detailed reports with reproducible steps and a clearly defined
impact.
* Include the version number of the vulnerable package in your report
* Social engineering (e.g. phishing, vishing, smishing) is prohibited.
+
+
## Encryption Key for security@ramsey.dev
For increased privacy when reporting sensitive issues, you may encrypt your
-messages using the following key:
+message using the following public key:
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
diff --git a/vendor/ramsey/collection/composer.json b/vendor/ramsey/collection/composer.json
index 98862ee46..56709015a 100644
--- a/vendor/ramsey/collection/composer.json
+++ b/vendor/ramsey/collection/composer.json
@@ -1,7 +1,8 @@
{
"name": "ramsey/collection",
- "type": "library",
"description": "A PHP library for representing and manipulating collections.",
+ "license": "MIT",
+ "type": "library",
"keywords": [
"array",
"collection",
@@ -10,7 +11,6 @@
"queue",
"set"
],
- "license": "MIT",
"authors": [
{
"name": "Ben Ramsey",
@@ -19,31 +19,32 @@
}
],
"require": {
- "php": "^7.3 || ^8",
- "symfony/polyfill-php81": "^1.23"
+ "php": "^8.1"
},
"require-dev": {
- "captainhook/captainhook": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "ergebnis/composer-normalize": "^2.6",
- "fakerphp/faker": "^1.5",
- "hamcrest/hamcrest-php": "^2",
- "jangregor/phpstan-prophecy": "^0.8",
- "mockery/mockery": "^1.3",
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
"phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1",
- "phpstan/phpstan": "^0.12.32",
- "phpstan/phpstan-mockery": "^0.12.5",
- "phpstan/phpstan-phpunit": "^0.12.11",
- "phpunit/phpunit": "^8.5 || ^9",
- "psy/psysh": "^0.10.4",
- "slevomat/coding-standard": "^6.3",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.4"
- },
- "config": {
- "sort-packages": true
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
},
+ "minimum-stability": "RC",
+ "prefer-stable": true,
"autoload": {
"psr-4": {
"Ramsey\\Collection\\": "src/"
@@ -51,7 +52,6 @@
},
"autoload-dev": {
"psr-4": {
- "Ramsey\\Console\\": "resources/console/",
"Ramsey\\Collection\\Test\\": "tests/",
"Ramsey\\Test\\Generics\\": "tests/generics/"
},
@@ -59,44 +59,61 @@
"vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php"
]
},
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true,
+ "ergebnis/composer-normalize": true,
+ "phpstan/extension-installer": true,
+ "captainhook/plugin-composer": true
+ },
+ "sort-packages": true
+ },
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
+ }
+ },
"scripts": {
- "post-autoload-dump": "captainhook install --ansi -f -s",
"dev:analyze": [
"@dev:analyze:phpstan",
"@dev:analyze:psalm"
],
- "dev:analyze:phpstan": "phpstan --memory-limit=1G analyse",
- "dev:analyze:psalm": "psalm --diff --config=psalm.xml",
- "dev:build:clean": "git clean -fX build/.",
- "dev:build:clear-cache": "git clean -fX build/cache/.",
- "dev:lint": "phpcs --cache=build/cache/phpcs.cache",
- "dev:lint:fix": "./bin/lint-fix.sh",
- "dev:repl": [
- "echo ; echo 'Type ./bin/repl to start the REPL.'"
+ "dev:analyze:phpstan": "phpstan analyse --ansi --memory-limit=1G",
+ "dev:analyze:psalm": "psalm",
+ "dev:build:clean": "git clean -fX build/",
+ "dev:lint": [
+ "@dev:lint:syntax",
+ "@dev:lint:style"
],
- "dev:test": "phpunit",
- "dev:test:all": [
+ "dev:lint:fix": "phpcbf",
+ "dev:lint:style": "phpcs --colors",
+ "dev:lint:syntax": "parallel-lint --colors src/ tests/",
+ "dev:test": [
"@dev:lint",
"@dev:analyze",
- "@dev:test"
+ "@dev:test:unit"
],
- "dev:test:coverage:ci": "phpunit --coverage-clover build/logs/clover.xml",
- "dev:test:coverage:html": "phpunit --coverage-html build/coverage",
- "test": "@dev:test:all"
+ "dev:test:coverage:ci": "phpunit --colors=always --coverage-text --coverage-clover build/coverage/clover.xml --coverage-cobertura build/coverage/cobertura.xml --coverage-crap4j build/coverage/crap4j.xml --coverage-xml build/coverage/coverage-xml --log-junit build/junit.xml",
+ "dev:test:coverage:html": "phpunit --colors=always --coverage-html build/coverage/coverage-html/",
+ "dev:test:unit": "phpunit --colors=always",
+ "test": "@dev:test"
},
"scripts-descriptions": {
- "dev:analyze": "Performs static analysis on the code base.",
+ "dev:analyze": "Runs all static analysis checks.",
"dev:analyze:phpstan": "Runs the PHPStan static analyzer.",
"dev:analyze:psalm": "Runs the Psalm static analyzer.",
- "dev:build:clean": "Removes everything not under version control from the build directory.",
- "dev:build:clear-cache": "Removes everything not under version control from build/cache/.",
- "dev:lint": "Checks all source code for coding standards issues.",
- "dev:lint:fix": "Checks source code for coding standards issues and fixes them, if possible.",
- "dev:repl": "Note: Use ./bin/repl to run the REPL.",
- "dev:test": "Runs the full unit test suite.",
- "dev:test:all": "Runs linting, static analysis, and unit tests.",
- "dev:test:coverage:ci": "Runs the unit test suite and generates a Clover coverage report.",
- "dev:test:coverage:html": "Runs the unit tests suite and generates an HTML coverage report.",
- "test": "Shortcut to run the full test suite."
+ "dev:build:clean": "Cleans the build/ directory.",
+ "dev:lint": "Runs all linting checks.",
+ "dev:lint:fix": "Auto-fixes coding standards issues, if possible.",
+ "dev:lint:style": "Checks for coding standards issues.",
+ "dev:lint:syntax": "Checks for syntax errors.",
+ "dev:test": "Runs linting, static analysis, and unit tests.",
+ "dev:test:coverage:ci": "Runs unit tests and generates CI coverage reports.",
+ "dev:test:coverage:html": "Runs unit tests and generates HTML coverage report.",
+ "dev:test:unit": "Runs unit tests.",
+ "test": "Runs linting, static analysis, and unit tests."
}
}
diff --git a/vendor/ramsey/collection/conventional-commits.json b/vendor/ramsey/collection/conventional-commits.json
new file mode 100644
index 000000000..5fe21d2fa
--- /dev/null
+++ b/vendor/ramsey/collection/conventional-commits.json
@@ -0,0 +1,22 @@
+{
+ "typeCase": "kebab",
+ "types": [
+ "chore",
+ "ci",
+ "docs",
+ "feat",
+ "fix",
+ "refactor",
+ "security",
+ "style",
+ "test"
+ ],
+ "scopeCase": "kebab",
+ "scopeRequired": false,
+ "scopes": [],
+ "descriptionCase": null,
+ "descriptionEndMark": "",
+ "bodyRequired": false,
+ "bodyWrapWidth": 72,
+ "requiredFooters": []
+}
diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php
index d72dbe697..5ce622aa7 100644
--- a/vendor/ramsey/collection/src/AbstractArray.php
+++ b/vendor/ramsey/collection/src/AbstractArray.php
@@ -17,8 +17,7 @@ namespace Ramsey\Collection;
use ArrayIterator;
use Traversable;
-use function serialize;
-use function unserialize;
+use function count;
/**
* This class provides a basic implementation of `ArrayInterface`, to minimize
@@ -34,7 +33,7 @@ abstract class AbstractArray implements ArrayInterface
*
* @var array
*/
- protected $data = [];
+ protected array $data = [];
/**
* Constructs a new array object.
@@ -69,7 +68,7 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset to check.
*/
- public function offsetExists($offset): bool
+ public function offsetExists(mixed $offset): bool
{
return isset($this->data[$offset]);
}
@@ -81,15 +80,12 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset for which a value should be returned.
*
- * @return T|null the value stored at the offset, or null if the offset
+ * @return T the value stored at the offset, or null if the offset
* does not exist.
- *
- * @psalm-suppress InvalidAttribute
*/
- #[\ReturnTypeWillChange] // phpcs:ignore
- public function offsetGet($offset)
+ public function offsetGet(mixed $offset): mixed
{
- return $this->data[$offset] ?? null;
+ return $this->data[$offset];
}
/**
@@ -97,12 +93,11 @@ abstract class AbstractArray implements ArrayInterface
*
* @link http://php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet()
*
- * @param array-key|null $offset The offset to set. If `null`, the value may be
- * set at a numerically-indexed offset.
+ * @param array-key | null $offset The offset to set. If `null`, the value
+ * may be set at a numerically-indexed offset.
* @param T $value The value to set at the given offset.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($offset === null) {
$this->data[] = $value;
@@ -118,25 +113,11 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset to remove from the array.
*/
- public function offsetUnset($offset): void
+ public function offsetUnset(mixed $offset): void
{
unset($this->data[$offset]);
}
- /**
- * Returns a serialized string representation of this array object.
- *
- * @deprecated The Serializable interface will go away in PHP 9.
- *
- * @link http://php.net/manual/en/serializable.serialize.php Serializable::serialize()
- *
- * @return string a PHP serialized string.
- */
- public function serialize(): string
- {
- return serialize($this->data);
- }
-
/**
* Returns data suitable for PHP serialization.
*
@@ -150,25 +131,6 @@ abstract class AbstractArray implements ArrayInterface
return $this->data;
}
- /**
- * Converts a serialized string representation into an instance object.
- *
- * @deprecated The Serializable interface will go away in PHP 9.
- *
- * @link http://php.net/manual/en/serializable.unserialize.php Serializable::unserialize()
- *
- * @param string $serialized A PHP serialized string to unserialize.
- *
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- */
- public function unserialize($serialized): void
- {
- /** @var array $data */
- $data = unserialize($serialized, ['allowed_classes' => false]);
-
- $this->data = $data;
- }
-
/**
* Adds unserialized data to the object.
*
@@ -204,6 +166,6 @@ abstract class AbstractArray implements ArrayInterface
public function isEmpty(): bool
{
- return count($this->data) === 0;
+ return $this->data === [];
}
}
diff --git a/vendor/ramsey/collection/src/AbstractCollection.php b/vendor/ramsey/collection/src/AbstractCollection.php
index d2cd1151c..8cb21ec02 100644
--- a/vendor/ramsey/collection/src/AbstractCollection.php
+++ b/vendor/ramsey/collection/src/AbstractCollection.php
@@ -17,25 +17,27 @@ namespace Ramsey\Collection;
use Closure;
use Ramsey\Collection\Exception\CollectionMismatchException;
use Ramsey\Collection\Exception\InvalidArgumentException;
-use Ramsey\Collection\Exception\InvalidSortOrderException;
-use Ramsey\Collection\Exception\OutOfBoundsException;
+use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
+use Ramsey\Collection\Exception\NoSuchElementException;
+use Ramsey\Collection\Exception\UnsupportedOperationException;
use Ramsey\Collection\Tool\TypeTrait;
use Ramsey\Collection\Tool\ValueExtractorTrait;
use Ramsey\Collection\Tool\ValueToStringTrait;
use function array_filter;
+use function array_key_first;
+use function array_key_last;
use function array_map;
use function array_merge;
+use function array_reduce;
use function array_search;
use function array_udiff;
use function array_uintersect;
-use function current;
-use function end;
use function in_array;
use function is_int;
-use function reset;
+use function is_object;
+use function spl_object_id;
use function sprintf;
-use function unserialize;
use function usort;
/**
@@ -53,32 +55,29 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
use ValueExtractorTrait;
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type.
*/
- public function add($element): bool
+ public function add(mixed $element): bool
{
$this[] = $element;
return true;
}
- /**
- * @inheritDoc
- */
- public function contains($element, bool $strict = true): bool
+ public function contains(mixed $element, bool $strict = true): bool
{
return in_array($element, $this->data, $strict);
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type.
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($this->checkType($this->getType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
@@ -89,13 +88,10 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
}
- /**
- * @inheritDoc
- */
- public function remove($element): bool
+ public function remove(mixed $element): bool
{
if (($position = array_search($element, $this->data, true)) !== false) {
- unset($this->data[$position]);
+ unset($this[$position]);
return true;
}
@@ -104,6 +100,11 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call column() on this
+ * collection.
+ *
* @inheritDoc
*/
public function column(string $propertyOrMethod): array
@@ -111,55 +112,55 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
$temp = [];
foreach ($this->data as $item) {
- /** @var mixed $value */
- $value = $this->extractValue($item, $propertyOrMethod);
-
/** @psalm-suppress MixedAssignment */
- $temp[] = $value;
+ $temp[] = $this->extractValue($item, $propertyOrMethod);
}
return $temp;
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function first()
+ public function first(): mixed
{
- if ($this->isEmpty()) {
- throw new OutOfBoundsException('Can\'t determine first item. Collection is empty');
- }
-
- reset($this->data);
+ $firstIndex = array_key_first($this->data);
- /** @var T $first */
- $first = current($this->data);
+ if ($firstIndex === null) {
+ throw new NoSuchElementException('Can\'t determine first item. Collection is empty');
+ }
- return $first;
+ return $this->data[$firstIndex];
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function last()
+ public function last(): mixed
{
- if ($this->isEmpty()) {
- throw new OutOfBoundsException('Can\'t determine last item. Collection is empty');
- }
+ $lastIndex = array_key_last($this->data);
- /** @var T $item */
- $item = end($this->data);
- reset($this->data);
+ if ($lastIndex === null) {
+ throw new NoSuchElementException('Can\'t determine last item. Collection is empty');
+ }
- return $item;
+ return $this->data[$lastIndex];
}
- public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): CollectionInterface
+ /**
+ * @return CollectionInterface
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call sort() on this
+ * collection.
+ */
+ public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): CollectionInterface
{
- if (!in_array($order, [self::SORT_ASC, self::SORT_DESC], true)) {
- throw new InvalidSortOrderException('Invalid sort order given: ' . $order);
- }
-
$collection = clone $this;
usort(
@@ -168,20 +169,25 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
* @param T $a
* @param T $b
*/
- function ($a, $b) use ($propertyOrMethod, $order): int {
+ function (mixed $a, mixed $b) use ($propertyOrMethod, $order): int {
/** @var mixed $aValue */
$aValue = $this->extractValue($a, $propertyOrMethod);
/** @var mixed $bValue */
$bValue = $this->extractValue($b, $propertyOrMethod);
- return ($aValue <=> $bValue) * ($order === self::SORT_DESC ? -1 : 1);
- }
+ return ($aValue <=> $bValue) * ($order === Sort::Descending ? -1 : 1);
+ },
);
return $collection;
}
+ /**
+ * @param callable(T): bool $callback A callable to use for filtering elements.
+ *
+ * @return CollectionInterface
+ */
public function filter(callable $callback): CollectionInterface
{
$collection = clone $this;
@@ -191,23 +197,66 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
- * {@inheritdoc}
+ * @return CollectionInterface
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call where() on this
+ * collection.
*/
- public function where(string $propertyOrMethod, $value): CollectionInterface
+ public function where(?string $propertyOrMethod, mixed $value): CollectionInterface
{
- return $this->filter(function ($item) use ($propertyOrMethod, $value) {
- /** @var mixed $accessorValue */
- $accessorValue = $this->extractValue($item, $propertyOrMethod);
+ return $this->filter(
+ /**
+ * @param T $item
+ */
+ function (mixed $item) use ($propertyOrMethod, $value): bool {
+ /** @var mixed $accessorValue */
+ $accessorValue = $this->extractValue($item, $propertyOrMethod);
- return $accessorValue === $value;
- });
+ return $accessorValue === $value;
+ },
+ );
}
+ /**
+ * @param callable(T): TCallbackReturn $callback A callable to apply to each
+ * item of the collection.
+ *
+ * @return CollectionInterface
+ *
+ * @template TCallbackReturn
+ */
public function map(callable $callback): CollectionInterface
{
+ /** @var Collection */
return new Collection('mixed', array_map($callback, $this->data));
}
+ /**
+ * @param callable(TCarry, T): TCarry $callback A callable to apply to each
+ * item of the collection to reduce it to a single value.
+ * @param TCarry $initial This is the initial value provided to the callback.
+ *
+ * @return TCarry
+ *
+ * @template TCarry
+ */
+ public function reduce(callable $callback, mixed $initial): mixed
+ {
+ /** @var TCarry */
+ return array_reduce($this->data, $callback, $initial);
+ }
+
+ /**
+ * @param CollectionInterface $other The collection to check for divergent
+ * items.
+ *
+ * @return CollectionInterface
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
+ */
public function diff(CollectionInterface $other): CollectionInterface
{
$this->compareCollectionTypes($other);
@@ -224,6 +273,15 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $collection;
}
+ /**
+ * @param CollectionInterface $other The collection to check for
+ * intersecting items.
+ *
+ * @return CollectionInterface
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
+ */
public function intersect(CollectionInterface $other): CollectionInterface
{
$this->compareCollectionTypes($other);
@@ -237,6 +295,15 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $collection;
}
+ /**
+ * @param CollectionInterface ...$collections The collections to merge.
+ *
+ * @return CollectionInterface
+ *
+ * @throws CollectionMismatchException if unable to merge any of the given
+ * collections or items within the given collections due to type
+ * mismatch errors.
+ */
public function merge(CollectionInterface ...$collections): CollectionInterface
{
$mergedCollection = clone $this;
@@ -244,15 +311,19 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
foreach ($collections as $index => $collection) {
if (!$collection instanceof static) {
throw new CollectionMismatchException(
- sprintf('Collection with index %d must be of type %s', $index, static::class)
+ sprintf('Collection with index %d must be of type %s', $index, static::class),
);
}
// When using generics (Collection.php, Set.php, etc),
// we also need to make sure that the internal types match each other
- if ($collection->getType() !== $this->getType()) {
+ if ($this->getUniformType($collection) !== $this->getUniformType($this)) {
throw new CollectionMismatchException(
- sprintf('Collection items in collection with index %d must be of type %s', $index, $this->getType())
+ sprintf(
+ 'Collection items in collection with index %d must be of type %s',
+ $index,
+ $this->getType(),
+ ),
);
}
@@ -268,19 +339,10 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $mergedCollection;
}
- /**
- * @inheritDoc
- */
- public function unserialize($serialized): void
- {
- /** @var array $data */
- $data = unserialize($serialized, ['allowed_classes' => [$this->getType()]]);
-
- $this->data = $data;
- }
-
/**
* @param CollectionInterface $other
+ *
+ * @throws CollectionMismatchException
*/
private function compareCollectionTypes(CollectionInterface $other): void
{
@@ -290,7 +352,7 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
// When using generics (Collection.php, Set.php, etc),
// we also need to make sure that the internal types match each other
- if ($other->getType() !== $this->getType()) {
+ if ($this->getUniformType($other) !== $this->getUniformType($this)) {
throw new CollectionMismatchException('Collection items must be of type ' . $this->getType());
}
}
@@ -301,7 +363,7 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
* @param T $a
* @param T $b
*/
- function ($a, $b): int {
+ function (mixed $a, mixed $b): int {
// If the two values are object, we convert them to unique scalars.
// If the collection contains mixed values (unlikely) where some are objects
// and some are not, we leave them as they are.
@@ -315,4 +377,17 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $a === $b ? 0 : ($a < $b ? 1 : -1);
};
}
+
+ /**
+ * @param CollectionInterface $collection
+ */
+ private function getUniformType(CollectionInterface $collection): string
+ {
+ return match ($collection->getType()) {
+ 'integer' => 'int',
+ 'boolean' => 'bool',
+ 'double' => 'float',
+ default => $collection->getType(),
+ };
+ }
}
diff --git a/vendor/ramsey/collection/src/AbstractSet.php b/vendor/ramsey/collection/src/AbstractSet.php
index 1126ccb0a..7186939d7 100644
--- a/vendor/ramsey/collection/src/AbstractSet.php
+++ b/vendor/ramsey/collection/src/AbstractSet.php
@@ -24,10 +24,7 @@ namespace Ramsey\Collection;
*/
abstract class AbstractSet extends AbstractCollection
{
- /**
- * @inheritDoc
- */
- public function add($element): bool
+ public function add(mixed $element): bool
{
if ($this->contains($element)) {
return false;
@@ -36,10 +33,7 @@ abstract class AbstractSet extends AbstractCollection
return parent::add($element);
}
- /**
- * @inheritDoc
- */
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($this->contains($value)) {
return;
diff --git a/vendor/ramsey/collection/src/ArrayInterface.php b/vendor/ramsey/collection/src/ArrayInterface.php
index 27af6102b..bc7f6f424 100644
--- a/vendor/ramsey/collection/src/ArrayInterface.php
+++ b/vendor/ramsey/collection/src/ArrayInterface.php
@@ -17,7 +17,6 @@ namespace Ramsey\Collection;
use ArrayAccess;
use Countable;
use IteratorAggregate;
-use Serializable;
/**
* `ArrayInterface` provides traversable array functionality to data types.
@@ -29,8 +28,7 @@ use Serializable;
interface ArrayInterface extends
ArrayAccess,
Countable,
- IteratorAggregate,
- Serializable
+ IteratorAggregate
{
/**
* Removes all items from this array.
diff --git a/vendor/ramsey/collection/src/Collection.php b/vendor/ramsey/collection/src/Collection.php
index 1299c12c2..44d26bf2e 100644
--- a/vendor/ramsey/collection/src/Collection.php
+++ b/vendor/ramsey/collection/src/Collection.php
@@ -75,27 +75,16 @@ namespace Ramsey\Collection;
*/
class Collection extends AbstractCollection
{
- /**
- * The type of elements stored in this collection.
- *
- * A collection's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string
- */
- private $collectionType;
-
/**
* Constructs a collection object of the specified type, optionally with the
* specified data.
*
- * @param string $collectionType The type (FQCN) associated with this
+ * @param string $collectionType The type or class name associated with this
* collection.
* @param array $data The initial items to store in the collection.
*/
- public function __construct(string $collectionType, array $data = [])
+ public function __construct(private readonly string $collectionType, array $data = [])
{
- $this->collectionType = $collectionType;
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/CollectionInterface.php b/vendor/ramsey/collection/src/CollectionInterface.php
index aa86feb04..e3ad01470 100644
--- a/vendor/ramsey/collection/src/CollectionInterface.php
+++ b/vendor/ramsey/collection/src/CollectionInterface.php
@@ -14,8 +14,14 @@ declare(strict_types=1);
namespace Ramsey\Collection;
+use Ramsey\Collection\Exception\CollectionMismatchException;
+use Ramsey\Collection\Exception\InvalidArgumentException;
+use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
+use Ramsey\Collection\Exception\NoSuchElementException;
+use Ramsey\Collection\Exception\UnsupportedOperationException;
+
/**
- * A collection represents a group of objects, known as its elements.
+ * A collection represents a group of values, known as its elements.
*
* Some collections allow duplicate elements and others do not. Some are ordered
* and others unordered.
@@ -25,16 +31,6 @@ namespace Ramsey\Collection;
*/
interface CollectionInterface extends ArrayInterface
{
- /**
- * Ascending sort type.
- */
- public const SORT_ASC = 'asc';
-
- /**
- * Descending sort type.
- */
- public const SORT_DESC = 'desc';
-
/**
* Ensures that this collection contains the specified element (optional
* operation).
@@ -58,9 +54,11 @@ interface CollectionInterface extends ArrayInterface
* @param T $element The element to add to the collection.
*
* @return bool `true` if this collection changed as a result of the call.
+ *
+ * @throws InvalidArgumentException if the collection refuses to add the
+ * $element for any reason other than that it already contains the element.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function add($element): bool;
+ public function add(mixed $element): bool;
/**
* Returns `true` if this collection contains the specified element.
@@ -68,8 +66,7 @@ interface CollectionInterface extends ArrayInterface
* @param T $element The element to check whether the collection contains.
* @param bool $strict Whether to perform a strict type check on the value.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function contains($element, bool $strict = true): bool;
+ public function contains(mixed $element, bool $strict = true): bool;
/**
* Returns the type associated with this collection.
@@ -84,15 +81,20 @@ interface CollectionInterface extends ArrayInterface
*
* @return bool `true` if an element was removed as a result of this call.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function remove($element): bool;
+ public function remove(mixed $element): bool;
/**
- * Returns the values from the given property or method.
+ * Returns the values from the given property, method, or array key.
+ *
+ * @param string $propertyOrMethod The name of the property, method, or
+ * array key to evaluate and return.
*
- * @param string $propertyOrMethod The property or method name to filter by.
+ * @return array
*
- * @return list
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call column() on this
+ * collection.
*/
public function column(string $propertyOrMethod): array;
@@ -100,29 +102,41 @@ interface CollectionInterface extends ArrayInterface
* Returns the first item of the collection.
*
* @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function first();
+ public function first(): mixed;
/**
* Returns the last item of the collection.
*
* @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function last();
+ public function last(): mixed;
/**
- * Sort the collection by a property or method with the given sort order.
+ * Sort the collection by a property, method, or array key with the given
+ * sort order.
+ *
+ * If $propertyOrMethod is `null`, this will sort by comparing each element.
*
* This will always leave the original collection untouched and will return
* a new one.
*
- * @param string $propertyOrMethod The property or method to sort by.
- * @param string $order The sort order for the resulting collection (one of
- * this interface's `SORT_*` constants).
+ * @param string | null $propertyOrMethod The property, method, or array key
+ * to sort by.
+ * @param Sort $order The sort order for the resulting collection.
*
* @return CollectionInterface
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call sort() on this
+ * collection.
*/
- public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): self;
+ public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): self;
/**
* Filter out items of the collection which don't match the criteria of
@@ -134,24 +148,31 @@ interface CollectionInterface extends ArrayInterface
* See the {@link http://php.net/manual/en/function.array-filter.php PHP array_filter() documentation}
* for examples of how the `$callback` parameter works.
*
- * @param callable(T):bool $callback A callable to use for filtering elements.
+ * @param callable(T): bool $callback A callable to use for filtering elements.
*
* @return CollectionInterface
*/
public function filter(callable $callback): self;
/**
- * Create a new collection where items match the criteria of given callback.
+ * Create a new collection where the result of the given property, method,
+ * or array key of each item in the collection equals the given value.
*
* This will always leave the original collection untouched and will return
* a new one.
*
- * @param string $propertyOrMethod The property or method to evaluate.
+ * @param string | null $propertyOrMethod The property, method, or array key
+ * to evaluate. If `null`, the element itself is compared to $value.
* @param mixed $value The value to match.
*
* @return CollectionInterface
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call where() on this
+ * collection.
*/
- public function where(string $propertyOrMethod, $value): self;
+ public function where(?string $propertyOrMethod, mixed $value): self;
/**
* Apply a given callback method on each item of the collection.
@@ -163,7 +184,7 @@ interface CollectionInterface extends ArrayInterface
* See the {@link http://php.net/manual/en/function.array-map.php PHP array_map() documentation}
* for examples of how the `$callback` parameter works.
*
- * @param callable(T):TCallbackReturn $callback A callable to apply to each
+ * @param callable(T): TCallbackReturn $callback A callable to apply to each
* item of the collection.
*
* @return CollectionInterface
@@ -172,6 +193,23 @@ interface CollectionInterface extends ArrayInterface
*/
public function map(callable $callback): self;
+ /**
+ * Apply a given callback method on each item of the collection
+ * to reduce it to a single value.
+ *
+ * See the {@link http://php.net/manual/en/function.array-reduce.php PHP array_reduce() documentation}
+ * for examples of how the `$callback` and `$initial` parameters work.
+ *
+ * @param callable(TCarry, T): TCarry $callback A callable to apply to each
+ * item of the collection to reduce it to a single value.
+ * @param TCarry $initial This is the initial value provided to the callback.
+ *
+ * @return TCarry
+ *
+ * @template TCarry
+ */
+ public function reduce(callable $callback, mixed $initial): mixed;
+
/**
* Create a new collection with divergent items between current and given
* collection.
@@ -180,6 +218,9 @@ interface CollectionInterface extends ArrayInterface
* items.
*
* @return CollectionInterface
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
*/
public function diff(CollectionInterface $other): self;
@@ -191,6 +232,9 @@ interface CollectionInterface extends ArrayInterface
* intersecting items.
*
* @return CollectionInterface
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
*/
public function intersect(CollectionInterface $other): self;
@@ -200,6 +244,10 @@ interface CollectionInterface extends ArrayInterface
* @param CollectionInterface ...$collections The collections to merge.
*
* @return CollectionInterface
+ *
+ * @throws CollectionMismatchException if unable to merge any of the given
+ * collections or items within the given collections due to type
+ * mismatch errors.
*/
public function merge(CollectionInterface ...$collections): self;
}
diff --git a/vendor/ramsey/collection/src/DoubleEndedQueue.php b/vendor/ramsey/collection/src/DoubleEndedQueue.php
index c9c59502d..62947a24f 100644
--- a/vendor/ramsey/collection/src/DoubleEndedQueue.php
+++ b/vendor/ramsey/collection/src/DoubleEndedQueue.php
@@ -17,6 +17,10 @@ namespace Ramsey\Collection;
use Ramsey\Collection\Exception\InvalidArgumentException;
use Ramsey\Collection\Exception\NoSuchElementException;
+use function array_key_last;
+use function array_pop;
+use function array_unshift;
+
/**
* This class provides a basic implementation of `DoubleEndedQueueInterface`, to
* minimize the effort required to implement this interface.
@@ -28,160 +32,135 @@ use Ramsey\Collection\Exception\NoSuchElementException;
class DoubleEndedQueue extends Queue implements DoubleEndedQueueInterface
{
/**
- * Index of the last element in the queue.
+ * Constructs a double-ended queue (dequeue) object of the specified type,
+ * optionally with the specified data.
*
- * @var int
- */
- private $tail = -1;
-
- /**
- * @inheritDoc
+ * @param string $queueType The type or class name associated with this dequeue.
+ * @param array $data The initial items to store in the dequeue.
*/
- public function offsetSet($offset, $value): void
+ public function __construct(private readonly string $queueType, array $data = [])
{
- if ($this->checkType($this->getType(), $value) === false) {
- throw new InvalidArgumentException(
- 'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value)
- );
- }
-
- $this->tail++;
-
- $this->data[$this->tail] = $value;
+ parent::__construct($this->queueType, $data);
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type
*/
- public function addFirst($element): bool
+ public function addFirst(mixed $element): bool
{
if ($this->checkType($this->getType(), $element) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($element)
+ . $this->toolValueToString($element),
);
}
- $this->index--;
-
- $this->data[$this->index] = $element;
+ array_unshift($this->data, $element);
return true;
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type
*/
- public function addLast($element): bool
+ public function addLast(mixed $element): bool
{
return $this->add($element);
}
- /**
- * @inheritDoc
- */
- public function offerFirst($element): bool
+ public function offerFirst(mixed $element): bool
{
try {
return $this->addFirst($element);
- } catch (InvalidArgumentException $e) {
+ } catch (InvalidArgumentException) {
return false;
}
}
- /**
- * @inheritDoc
- */
- public function offerLast($element): bool
+ public function offerLast(mixed $element): bool
{
return $this->offer($element);
}
/**
- * @inheritDoc
+ * @return T the first element in this queue.
+ *
+ * @throws NoSuchElementException if the queue is empty
*/
- public function removeFirst()
+ public function removeFirst(): mixed
{
return $this->remove();
}
/**
- * @inheritDoc
+ * @return T the last element in this queue.
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function removeLast()
+ public function removeLast(): mixed
{
- $tail = $this->pollLast();
-
- if ($tail === null) {
- throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
- }
-
- return $tail;
+ return $this->pollLast() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
/**
- * @inheritDoc
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function pollFirst()
+ public function pollFirst(): mixed
{
return $this->poll();
}
/**
- * @inheritDoc
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function pollLast()
+ public function pollLast(): mixed
{
- if ($this->count() === 0) {
- return null;
- }
-
- $tail = $this[$this->tail];
-
- unset($this[$this->tail]);
- $this->tail--;
-
- return $tail;
+ return array_pop($this->data);
}
/**
- * @inheritDoc
+ * @return T the head of this queue.
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function firstElement()
+ public function firstElement(): mixed
{
return $this->element();
}
/**
- * @inheritDoc
+ * @return T the tail of this queue.
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function lastElement()
+ public function lastElement(): mixed
{
- if ($this->count() === 0) {
- throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
- }
-
- return $this->data[$this->tail];
+ return $this->peekLast() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
/**
- * @inheritDoc
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function peekFirst()
+ public function peekFirst(): mixed
{
return $this->peek();
}
/**
- * @inheritDoc
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function peekLast()
+ public function peekLast(): mixed
{
- if ($this->count() === 0) {
+ $lastIndex = array_key_last($this->data);
+
+ if ($lastIndex === null) {
return null;
}
- return $this->data[$this->tail];
+ return $this->data[$lastIndex];
}
}
diff --git a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
index d7df53469..15cc0e97b 100644
--- a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
+++ b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Ramsey\Collection;
use Ramsey\Collection\Exception\NoSuchElementException;
+use RuntimeException;
/**
* A linear collection that supports element insertion and removal at both ends.
@@ -175,13 +176,12 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws \RuntimeException if a queue refuses to add a particular element
+ * @throws RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function addFirst($element): bool;
+ public function addFirst(mixed $element): bool;
/**
* Inserts the specified element at the end of this queue if it is possible
@@ -196,13 +196,12 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws \RuntimeException if a queue refuses to add a particular element
+ * @throws RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function addLast($element): bool;
+ public function addLast(mixed $element): bool;
/**
* Inserts the specified element at the front of this queue if it is
@@ -216,8 +215,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offerFirst($element): bool;
+ public function offerFirst(mixed $element): bool;
/**
* Inserts the specified element at the end of this queue if it is possible
@@ -231,8 +229,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offerLast($element): bool;
+ public function offerLast(mixed $element): bool;
/**
* Retrieves and removes the head of this queue.
@@ -244,7 +241,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function removeFirst();
+ public function removeFirst(): mixed;
/**
* Retrieves and removes the tail of this queue.
@@ -256,23 +253,23 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function removeLast();
+ public function removeLast(): mixed;
/**
* Retrieves and removes the head of this queue, or returns `null` if this
* queue is empty.
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function pollFirst();
+ public function pollFirst(): mixed;
/**
* Retrieves and removes the tail of this queue, or returns `null` if this
* queue is empty.
*
- * @return T|null the tail of this queue, or `null` if this queue is empty.
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function pollLast();
+ public function pollLast(): mixed;
/**
* Retrieves, but does not remove, the head of this queue.
@@ -284,7 +281,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function firstElement();
+ public function firstElement(): mixed;
/**
* Retrieves, but does not remove, the tail of this queue.
@@ -296,21 +293,21 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function lastElement();
+ public function lastElement(): mixed;
/**
* Retrieves, but does not remove, the head of this queue, or returns `null`
* if this queue is empty.
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function peekFirst();
+ public function peekFirst(): mixed;
/**
* Retrieves, but does not remove, the tail of this queue, or returns `null`
* if this queue is empty.
*
- * @return T|null the tail of this queue, or `null` if this queue is empty.
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function peekLast();
+ public function peekLast(): mixed;
}
diff --git a/vendor/ramsey/collection/src/Exception/CollectionException.php b/vendor/ramsey/collection/src/Exception/CollectionException.php
new file mode 100644
index 000000000..4aa92bed8
--- /dev/null
+++ b/vendor/ramsey/collection/src/Exception/CollectionException.php
@@ -0,0 +1,21 @@
+
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+declare(strict_types=1);
+
+namespace Ramsey\Collection\Exception;
+
+use Throwable;
+
+interface CollectionException extends Throwable
+{
+}
diff --git a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
index d4b335f45..42f5be2df 100644
--- a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
+++ b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use RuntimeException;
+
/**
* Thrown when attempting to operate on collections of differing types.
*/
-class CollectionMismatchException extends \RuntimeException
+class CollectionMismatchException extends RuntimeException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
index dcc3eac60..7b41b4a7c 100644
--- a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
+++ b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use InvalidArgumentException as PhpInvalidArgumentException;
+
/**
* Thrown to indicate an argument is not of the expected type.
*/
-class InvalidArgumentException extends \InvalidArgumentException
+class InvalidArgumentException extends PhpInvalidArgumentException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php b/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php
new file mode 100644
index 000000000..a53be14aa
--- /dev/null
+++ b/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php
@@ -0,0 +1,26 @@
+
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+declare(strict_types=1);
+
+namespace Ramsey\Collection\Exception;
+
+use RuntimeException;
+
+/**
+ * Thrown when attempting to evaluate a property, method, or array key
+ * that doesn't exist on an element or cannot otherwise be evaluated in the
+ * current context.
+ */
+class InvalidPropertyOrMethod extends RuntimeException implements CollectionException
+{
+}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php
deleted file mode 100644
index 9337ccc66..000000000
--- a/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- * @license http://opensource.org/licenses/MIT MIT
- */
-
-declare(strict_types=1);
-
-namespace Ramsey\Collection\Exception;
-
-/**
- * Thrown when attempting to use a sort order that is not recognized.
- */
-class InvalidSortOrderException extends \RuntimeException
-{
-}
diff --git a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
index 9debe8f66..cd98f0c0f 100644
--- a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
+++ b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use RuntimeException;
+
/**
* Thrown when attempting to access an element that does not exist.
*/
-class NoSuchElementException extends \RuntimeException
+class NoSuchElementException extends RuntimeException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
index 4e9d16fa3..c75294e53 100644
--- a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
+++ b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use OutOfBoundsException as PhpOutOfBoundsException;
+
/**
* Thrown when attempting to access an element out of the range of the collection.
*/
-class OutOfBoundsException extends \OutOfBoundsException
+class OutOfBoundsException extends PhpOutOfBoundsException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
index 8f45e5836..d074f45fd 100644
--- a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
+++ b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use RuntimeException;
+
/**
* Thrown to indicate that the requested operation is not supported.
*/
-class UnsupportedOperationException extends \RuntimeException
+class UnsupportedOperationException extends RuntimeException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/ValueExtractionException.php b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php
deleted file mode 100644
index f6c6cb4ec..000000000
--- a/vendor/ramsey/collection/src/Exception/ValueExtractionException.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- * @license http://opensource.org/licenses/MIT MIT
- */
-
-declare(strict_types=1);
-
-namespace Ramsey\Collection\Exception;
-
-/**
- * Thrown when attempting to extract a value for a method or property that does not exist.
- */
-class ValueExtractionException extends \RuntimeException
-{
-}
diff --git a/vendor/ramsey/collection/src/Map/AbstractMap.php b/vendor/ramsey/collection/src/Map/AbstractMap.php
index ae9f2fe61..7a851a80f 100644
--- a/vendor/ramsey/collection/src/Map/AbstractMap.php
+++ b/vendor/ramsey/collection/src/Map/AbstractMap.php
@@ -16,48 +16,65 @@ namespace Ramsey\Collection\Map;
use Ramsey\Collection\AbstractArray;
use Ramsey\Collection\Exception\InvalidArgumentException;
+use Traversable;
use function array_key_exists;
use function array_keys;
use function in_array;
+use function var_export;
/**
* This class provides a basic implementation of `MapInterface`, to minimize the
* effort required to implement this interface.
*
+ * @template K of array-key
* @template T
* @extends AbstractArray
- * @implements MapInterface
+ * @implements MapInterface
*/
abstract class AbstractMap extends AbstractArray implements MapInterface
{
/**
+ * @param array $data The initial items to add to this map.
+ */
+ public function __construct(array $data = [])
+ {
+ parent::__construct($data);
+ }
+
+ /**
+ * @return Traversable
+ */
+ public function getIterator(): Traversable
+ {
+ return parent::getIterator();
+ }
+
+ /**
+ * @param K $offset The offset to set
+ * @param T $value The value to set at the given offset.
+ *
* @inheritDoc
+ * @psalm-suppress MoreSpecificImplementedParamType,DocblockTypeContradiction
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($offset === null) {
throw new InvalidArgumentException(
'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true)
+ . 'value ' . var_export($value, true),
);
}
$this->data[$offset] = $value;
}
- /**
- * @inheritDoc
- */
- public function containsKey($key): bool
+ public function containsKey(int | string $key): bool
{
return array_key_exists($key, $this->data);
}
- /**
- * @inheritDoc
- */
- public function containsValue($value): bool
+ public function containsValue(mixed $value): bool
{
return in_array($value, $this->data, true);
}
@@ -71,21 +88,24 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to return from the map.
+ * @param T | null $defaultValue The default value to use if `$key` is not found.
+ *
+ * @return T | null the value or `null` if the key could not be found.
*/
- public function get($key, $defaultValue = null)
+ public function get(int | string $key, mixed $defaultValue = null): mixed
{
- if (!$this->containsKey($key)) {
- return $defaultValue;
- }
-
- return $this[$key];
+ return $this[$key] ?? $defaultValue;
}
/**
- * @inheritDoc
+ * @param K $key The key to put or replace in the map.
+ * @param T $value The value to store at `$key`.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function put($key, $value)
+ public function put(int | string $key, mixed $value): mixed
{
$previousValue = $this->get($key);
$this[$key] = $value;
@@ -94,9 +114,13 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to put in the map.
+ * @param T $value The value to store at `$key`.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function putIfAbsent($key, $value)
+ public function putIfAbsent(int | string $key, mixed $value): mixed
{
$currentValue = $this->get($key);
@@ -108,9 +132,12 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to remove from the map.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function remove($key)
+ public function remove(int | string $key): mixed
{
$previousValue = $this->get($key);
unset($this[$key]);
@@ -118,10 +145,7 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return $previousValue;
}
- /**
- * @inheritDoc
- */
- public function removeIf($key, $value): bool
+ public function removeIf(int | string $key, mixed $value): bool
{
if ($this->get($key) === $value) {
unset($this[$key]);
@@ -133,9 +157,13 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to replace.
+ * @param T $value The value to set at `$key`.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function replace($key, $value)
+ public function replace(int | string $key, mixed $value): mixed
{
$currentValue = $this->get($key);
@@ -146,10 +174,7 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return $currentValue;
}
- /**
- * @inheritDoc
- */
- public function replaceIf($key, $oldValue, $newValue): bool
+ public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool
{
if ($this->get($key) === $oldValue) {
$this[$key] = $newValue;
@@ -159,4 +184,20 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return false;
}
+
+ /**
+ * @return array
+ */
+ public function __serialize(): array
+ {
+ return parent::__serialize();
+ }
+
+ /**
+ * @return array
+ */
+ public function toArray(): array
+ {
+ return parent::toArray();
+ }
}
diff --git a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
index 551d2e6c6..92fdcd54c 100644
--- a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
+++ b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
@@ -22,10 +22,10 @@ use Ramsey\Collection\Tool\ValueToStringTrait;
* This class provides a basic implementation of `TypedMapInterface`, to
* minimize the effort required to implement this interface.
*
- * @template K
+ * @template K of array-key
* @template T
- * @extends AbstractMap
- * @implements TypedMapInterface
+ * @extends AbstractMap
+ * @implements TypedMapInterface
*/
abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface
{
@@ -33,37 +33,28 @@ abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface
use ValueToStringTrait;
/**
- * @param K|null $offset
+ * @param K $offset
* @param T $value
*
* @inheritDoc
- *
* @psalm-suppress MoreSpecificImplementedParamType
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
- if ($offset === null) {
- throw new InvalidArgumentException(
- 'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true)
- );
- }
-
if ($this->checkType($this->getKeyType(), $offset) === false) {
throw new InvalidArgumentException(
'Key must be of type ' . $this->getKeyType() . '; key is '
- . $this->toolValueToString($offset)
+ . $this->toolValueToString($offset),
);
}
if ($this->checkType($this->getValueType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getValueType() . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
- /** @psalm-suppress MixedArgumentTypeCoercion */
parent::offsetSet($offset, $value);
}
}
diff --git a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
index 79a314d96..34e4e853b 100644
--- a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
+++ b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
@@ -17,8 +17,7 @@ namespace Ramsey\Collection\Map;
/**
* `AssociativeArrayMap` represents a standard associative array object.
*
- * @template T
- * @extends AbstractMap
+ * @extends AbstractMap
*/
class AssociativeArrayMap extends AbstractMap
{
diff --git a/vendor/ramsey/collection/src/Map/MapInterface.php b/vendor/ramsey/collection/src/Map/MapInterface.php
index 6ed0b2967..22ba1bdd1 100644
--- a/vendor/ramsey/collection/src/Map/MapInterface.php
+++ b/vendor/ramsey/collection/src/Map/MapInterface.php
@@ -21,6 +21,7 @@ use Ramsey\Collection\ArrayInterface;
*
* A map cannot contain duplicate keys; each key can map to at most one value.
*
+ * @template K of array-key
* @template T
* @extends ArrayInterface
*/
@@ -29,9 +30,9 @@ interface MapInterface extends ArrayInterface
/**
* Returns `true` if this map contains a mapping for the specified key.
*
- * @param array-key $key The key to check in the map.
+ * @param K $key The key to check in the map.
*/
- public function containsKey($key): bool;
+ public function containsKey(int | string $key): bool;
/**
* Returns `true` if this map maps one or more keys to the specified value.
@@ -40,13 +41,12 @@ interface MapInterface extends ArrayInterface
*
* @param T $value The value to check in the map.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function containsValue($value): bool;
+ public function containsValue(mixed $value): bool;
/**
* Return an array of the keys contained in this map.
*
- * @return list
+ * @return list
*/
public function keys(): array;
@@ -55,13 +55,12 @@ interface MapInterface extends ArrayInterface
* map contains no mapping for the key, or (optionally) `$defaultValue` if
* this map contains no mapping for the key.
*
- * @param array-key $key The key to return from the map.
- * @param T|null $defaultValue The default value to use if `$key` is not found.
+ * @param K $key The key to return from the map.
+ * @param T | null $defaultValue The default value to use if `$key` is not found.
*
- * @return T|null the value or `null` if the key could not be found.
+ * @return T | null the value or `null` if the key could not be found.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function get($key, $defaultValue = null);
+ public function get(int | string $key, mixed $defaultValue = null): mixed;
/**
* Associates the specified value with the specified key in this map.
@@ -69,14 +68,13 @@ interface MapInterface extends ArrayInterface
* If the map previously contained a mapping for the key, the old value is
* replaced by the specified value.
*
- * @param array-key $key The key to put or replace in the map.
+ * @param K $key The key to put or replace in the map.
* @param T $value The value to store at `$key`.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function put($key, $value);
+ public function put(int | string $key, mixed $value): mixed;
/**
* Associates the specified value with the specified key in this map only if
@@ -85,25 +83,23 @@ interface MapInterface extends ArrayInterface
* If there is already a value associated with `$key`, this returns that
* value without replacing it.
*
- * @param array-key $key The key to put in the map.
+ * @param K $key The key to put in the map.
* @param T $value The value to store at `$key`.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function putIfAbsent($key, $value);
+ public function putIfAbsent(int | string $key, mixed $value): mixed;
/**
* Removes the mapping for a key from this map if it is present.
*
- * @param array-key $key The key to remove from the map.
+ * @param K $key The key to remove from the map.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function remove($key);
+ public function remove(int | string $key): mixed;
/**
* Removes the entry for the specified key only if it is currently mapped to
@@ -111,26 +107,24 @@ interface MapInterface extends ArrayInterface
*
* This performs a strict type check on the value.
*
- * @param array-key $key The key to remove from the map.
+ * @param K $key The key to remove from the map.
* @param T $value The value to match.
*
* @return bool true if the value was removed.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function removeIf($key, $value): bool;
+ public function removeIf(int | string $key, mixed $value): bool;
/**
* Replaces the entry for the specified key only if it is currently mapped
* to some value.
*
- * @param array-key $key The key to replace.
+ * @param K $key The key to replace.
* @param T $value The value to set at `$key`.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function replace($key, $value);
+ public function replace(int | string $key, mixed $value): mixed;
/**
* Replaces the entry for the specified key only if currently mapped to the
@@ -138,12 +132,11 @@ interface MapInterface extends ArrayInterface
*
* This performs a strict type check on the value.
*
- * @param array-key $key The key to remove from the map.
+ * @param K $key The key to remove from the map.
* @param T $oldValue The value to match.
* @param T $newValue The value to use as a replacement.
*
* @return bool true if the value was replaced.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function replaceIf($key, $oldValue, $newValue): bool;
+ public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool;
}
diff --git a/vendor/ramsey/collection/src/Map/NamedParameterMap.php b/vendor/ramsey/collection/src/Map/NamedParameterMap.php
index 9926ddd8c..f948e476c 100644
--- a/vendor/ramsey/collection/src/Map/NamedParameterMap.php
+++ b/vendor/ramsey/collection/src/Map/NamedParameterMap.php
@@ -26,7 +26,7 @@ use function is_int;
* `NamedParameterMap` represents a mapping of values to a set of named keys
* that may optionally be typed
*
- * @extends AbstractMap
+ * @extends AbstractMap
*/
class NamedParameterMap extends AbstractMap
{
@@ -38,13 +38,13 @@ class NamedParameterMap extends AbstractMap
*
* @var array
*/
- protected $namedParameters;
+ private readonly array $namedParameters;
/**
* Constructs a new `NamedParameterMap`.
*
* @param array $namedParameters The named parameters defined for this map.
- * @param array $data An initial set of data to set on this map.
+ * @param array $data An initial set of data to set on this map.
*/
public function __construct(array $namedParameters, array $data = [])
{
@@ -62,22 +62,12 @@ class NamedParameterMap extends AbstractMap
return $this->namedParameters;
}
- /**
- * @inheritDoc
- */
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
- if ($offset === null) {
- throw new InvalidArgumentException(
- 'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true)
- );
- }
-
if (!array_key_exists($offset, $this->namedParameters)) {
throw new InvalidArgumentException(
'Attempting to set value for unconfigured parameter \''
- . $offset . '\''
+ . $this->toolValueToString($offset) . '\'',
);
}
@@ -85,7 +75,7 @@ class NamedParameterMap extends AbstractMap
throw new InvalidArgumentException(
'Value for \'' . $offset . '\' must be of type '
. $this->namedParameters[$offset] . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
diff --git a/vendor/ramsey/collection/src/Map/TypedMap.php b/vendor/ramsey/collection/src/Map/TypedMap.php
index 2e796377a..f914d9c70 100644
--- a/vendor/ramsey/collection/src/Map/TypedMap.php
+++ b/vendor/ramsey/collection/src/Map/TypedMap.php
@@ -14,13 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Map;
-use Ramsey\Collection\Tool\TypeTrait;
-
/**
* A `TypedMap` represents a map of elements where key and value are typed.
*
* Each element is identified by a key with defined type and a value of defined
- * type. The keys of the map must be unique. The values on the map can be=
+ * type. The keys of the map must be unique. The values on the map can be
* repeated but each with its own different key.
*
* The most common case is to use a string type key, but it's not limited to
@@ -80,34 +78,12 @@ use Ramsey\Collection\Tool\TypeTrait;
* }
* ```
*
- * @template K
+ * @template K of array-key
* @template T
* @extends AbstractTypedMap
*/
class TypedMap extends AbstractTypedMap
{
- use TypeTrait;
-
- /**
- * The data type of keys stored in this collection.
- *
- * A map key's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string data type of the map key.
- */
- private $keyType;
-
- /**
- * The data type of values stored in this collection.
- *
- * A map value's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string data type of the map value.
- */
- private $valueType;
-
/**
* Constructs a map object of the specified key and value types,
* optionally with the specified data.
@@ -116,12 +92,11 @@ class TypedMap extends AbstractTypedMap
* @param string $valueType The data type of the map's values.
* @param array $data The initial data to set for this map.
*/
- public function __construct(string $keyType, string $valueType, array $data = [])
- {
- $this->keyType = $keyType;
- $this->valueType = $valueType;
-
- /** @psalm-suppress MixedArgumentTypeCoercion */
+ public function __construct(
+ private readonly string $keyType,
+ private readonly string $valueType,
+ array $data = [],
+ ) {
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/Map/TypedMapInterface.php b/vendor/ramsey/collection/src/Map/TypedMapInterface.php
index 0308109cc..5a44f0647 100644
--- a/vendor/ramsey/collection/src/Map/TypedMapInterface.php
+++ b/vendor/ramsey/collection/src/Map/TypedMapInterface.php
@@ -18,8 +18,9 @@ namespace Ramsey\Collection\Map;
* A `TypedMapInterface` represents a map of elements where key and value are
* typed.
*
+ * @template K of array-key
* @template T
- * @extends MapInterface
+ * @extends MapInterface
*/
interface TypedMapInterface extends MapInterface
{
diff --git a/vendor/ramsey/collection/src/Queue.php b/vendor/ramsey/collection/src/Queue.php
index 93e032b43..0f5b33740 100644
--- a/vendor/ramsey/collection/src/Queue.php
+++ b/vendor/ramsey/collection/src/Queue.php
@@ -19,6 +19,8 @@ use Ramsey\Collection\Exception\NoSuchElementException;
use Ramsey\Collection\Tool\TypeTrait;
use Ramsey\Collection\Tool\ValueToStringTrait;
+use function array_key_first;
+
/**
* This class provides a basic implementation of `QueueInterface`, to minimize
* the effort required to implement this interface.
@@ -32,33 +34,15 @@ class Queue extends AbstractArray implements QueueInterface
use TypeTrait;
use ValueToStringTrait;
- /**
- * The type of elements stored in this queue.
- *
- * A queue's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string
- */
- private $queueType;
-
- /**
- * The index of the head of the queue.
- *
- * @var int
- */
- protected $index = 0;
-
/**
* Constructs a queue object of the specified type, optionally with the
* specified data.
*
- * @param string $queueType The type (FQCN) associated with this queue.
- * @param array $data The initial items to store in the collection.
+ * @param string $queueType The type or class name associated with this queue.
+ * @param array $data The initial items to store in the queue.
*/
- public function __construct(string $queueType, array $data = [])
+ public function __construct(private readonly string $queueType, array $data = [])
{
- $this->queueType = $queueType;
parent::__construct($data);
}
@@ -68,13 +52,15 @@ class Queue extends AbstractArray implements QueueInterface
* Since arbitrary offsets may not be manipulated in a queue, this method
* serves only to fulfill the `ArrayAccess` interface requirements. It is
* invoked by other operations when adding values to the queue.
+ *
+ * @throws InvalidArgumentException if $value is of the wrong type.
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($this->checkType($this->getType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
@@ -82,9 +68,9 @@ class Queue extends AbstractArray implements QueueInterface
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $value is of the wrong type.
*/
- public function add($element): bool
+ public function add(mixed $element): bool
{
$this[] = $element;
@@ -92,74 +78,67 @@ class Queue extends AbstractArray implements QueueInterface
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function element()
+ public function element(): mixed
{
- $element = $this->peek();
-
- if ($element === null) {
- throw new NoSuchElementException(
- 'Can\'t return element from Queue. Queue is empty.'
- );
- }
-
- return $element;
+ return $this->peek() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
- /**
- * @inheritDoc
- */
- public function offer($element): bool
+ public function offer(mixed $element): bool
{
try {
return $this->add($element);
- } catch (InvalidArgumentException $e) {
+ } catch (InvalidArgumentException) {
return false;
}
}
/**
- * @inheritDoc
+ * @return T | null
*/
- public function peek()
+ public function peek(): mixed
{
- if ($this->count() === 0) {
+ $index = array_key_first($this->data);
+
+ if ($index === null) {
return null;
}
- return $this[$this->index];
+ return $this[$index];
}
/**
- * @inheritDoc
+ * @return T | null
*/
- public function poll()
+ public function poll(): mixed
{
- if ($this->count() === 0) {
+ $index = array_key_first($this->data);
+
+ if ($index === null) {
return null;
}
- $head = $this[$this->index];
-
- unset($this[$this->index]);
- $this->index++;
+ $head = $this[$index];
+ unset($this[$index]);
return $head;
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function remove()
+ public function remove(): mixed
{
- $head = $this->poll();
-
- if ($head === null) {
- throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
- }
-
- return $head;
+ return $this->poll() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
public function getType(): string
diff --git a/vendor/ramsey/collection/src/QueueInterface.php b/vendor/ramsey/collection/src/QueueInterface.php
index 8c7383df8..f29ce43ab 100644
--- a/vendor/ramsey/collection/src/QueueInterface.php
+++ b/vendor/ramsey/collection/src/QueueInterface.php
@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Ramsey\Collection;
use Ramsey\Collection\Exception\NoSuchElementException;
+use RuntimeException;
/**
* A queue is a collection in which the entities in the collection are kept in
@@ -123,13 +124,12 @@ interface QueueInterface extends ArrayInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws \RuntimeException if a queue refuses to add a particular element
+ * @throws RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function add($element): bool;
+ public function add(mixed $element): bool;
/**
* Retrieves, but does not remove, the head of this queue.
@@ -143,7 +143,7 @@ interface QueueInterface extends ArrayInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function element();
+ public function element(): mixed;
/**
* Inserts the specified element into this queue if it is possible to do so
@@ -159,8 +159,7 @@ interface QueueInterface extends ArrayInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offer($element): bool;
+ public function offer(mixed $element): bool;
/**
* Retrieves, but does not remove, the head of this queue, or returns `null`
@@ -168,9 +167,9 @@ interface QueueInterface extends ArrayInterface
*
* @see self::element()
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function peek();
+ public function peek(): mixed;
/**
* Retrieves and removes the head of this queue, or returns `null`
@@ -178,9 +177,9 @@ interface QueueInterface extends ArrayInterface
*
* @see self::remove()
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function poll();
+ public function poll(): mixed;
/**
* Retrieves and removes the head of this queue.
@@ -194,7 +193,7 @@ interface QueueInterface extends ArrayInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function remove();
+ public function remove(): mixed;
/**
* Returns the type associated with this queue.
diff --git a/vendor/ramsey/collection/src/Set.php b/vendor/ramsey/collection/src/Set.php
index 6932f247a..aa93351c4 100644
--- a/vendor/ramsey/collection/src/Set.php
+++ b/vendor/ramsey/collection/src/Set.php
@@ -28,7 +28,7 @@ namespace Ramsey\Collection;
* $foo = new \My\Foo();
* $set = new Set(\My\Foo::class);
*
- * $set->add($foo); // returns TRUE, the element don't exists
+ * $set->add($foo); // returns TRUE, the element doesn't exist
* $set->add($foo); // returns FALSE, the element already exists
*
* $bar = new \My\Foo();
@@ -40,25 +40,15 @@ namespace Ramsey\Collection;
*/
class Set extends AbstractSet
{
- /**
- * The type of elements stored in this set
- *
- * A set's type is immutable. For this reason, this property is private.
- *
- * @var string
- */
- private $setType;
-
/**
* Constructs a set object of the specified type, optionally with the
* specified data.
*
- * @param string $setType The type (FQCN) associated with this set.
+ * @param string $setType The type or class name associated with this set.
* @param array $data The initial items to store in the set.
*/
- public function __construct(string $setType, array $data = [])
+ public function __construct(private readonly string $setType, array $data = [])
{
- $this->setType = $setType;
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/Sort.php b/vendor/ramsey/collection/src/Sort.php
new file mode 100644
index 000000000..0c3c19213
--- /dev/null
+++ b/vendor/ramsey/collection/src/Sort.php
@@ -0,0 +1,31 @@
+
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+declare(strict_types=1);
+
+namespace Ramsey\Collection;
+
+/**
+ * Collection sorting
+ */
+enum Sort: string
+{
+ /**
+ * Sort items in a collection in ascending order.
+ */
+ case Ascending = 'asc';
+
+ /**
+ * Sort items in a collection in descending order.
+ */
+ case Descending = 'desc';
+}
diff --git a/vendor/ramsey/collection/src/Tool/TypeTrait.php b/vendor/ramsey/collection/src/Tool/TypeTrait.php
index 8214e9654..ac51b7f10 100644
--- a/vendor/ramsey/collection/src/Tool/TypeTrait.php
+++ b/vendor/ramsey/collection/src/Tool/TypeTrait.php
@@ -36,38 +36,22 @@ trait TypeTrait
* @param string $type The type to check the value against.
* @param mixed $value The value to check.
*/
- protected function checkType(string $type, $value): bool
+ protected function checkType(string $type, mixed $value): bool
{
- switch ($type) {
- case 'array':
- return is_array($value);
- case 'bool':
- case 'boolean':
- return is_bool($value);
- case 'callable':
- return is_callable($value);
- case 'float':
- case 'double':
- return is_float($value);
- case 'int':
- case 'integer':
- return is_int($value);
- case 'null':
- return $value === null;
- case 'numeric':
- return is_numeric($value);
- case 'object':
- return is_object($value);
- case 'resource':
- return is_resource($value);
- case 'scalar':
- return is_scalar($value);
- case 'string':
- return is_string($value);
- case 'mixed':
- return true;
- default:
- return $value instanceof $type;
- }
+ return match ($type) {
+ 'array' => is_array($value),
+ 'bool', 'boolean' => is_bool($value),
+ 'callable' => is_callable($value),
+ 'float', 'double' => is_float($value),
+ 'int', 'integer' => is_int($value),
+ 'null' => $value === null,
+ 'numeric' => is_numeric($value),
+ 'object' => is_object($value),
+ 'resource' => is_resource($value),
+ 'scalar' => is_scalar($value),
+ 'string' => is_string($value),
+ 'mixed' => true,
+ default => $value instanceof $type,
+ };
}
}
diff --git a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
index f9be1be28..44c422252 100644
--- a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
+++ b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Tool;
-use Ramsey\Collection\Exception\ValueExtractionException;
+use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
+use Ramsey\Collection\Exception\UnsupportedOperationException;
-use function get_class;
+use function is_array;
+use function is_object;
use function method_exists;
use function property_exists;
use function sprintf;
@@ -27,32 +29,53 @@ use function sprintf;
trait ValueExtractorTrait
{
/**
- * Extracts the value of the given property or method from the object.
+ * Extracts the value of the given property, method, or array key from the
+ * element.
*
- * @param mixed $object The object to extract the value from.
- * @param string $propertyOrMethod The property or method for which the
+ * If `$propertyOrMethod` is `null`, we return the element as-is.
+ *
+ * @param mixed $element The element to extract the value from.
+ * @param string | null $propertyOrMethod The property or method for which the
* value should be extracted.
*
- * @return mixed the value extracted from the specified property or method.
+ * @return mixed the value extracted from the specified property, method,
+ * or array key, or the element itself.
*
- * @throws ValueExtractionException if the method or property is not defined.
+ * @throws InvalidPropertyOrMethod
+ * @throws UnsupportedOperationException
*/
- protected function extractValue($object, string $propertyOrMethod)
+ protected function extractValue(mixed $element, ?string $propertyOrMethod): mixed
{
- if (!is_object($object)) {
- throw new ValueExtractionException('Unable to extract a value from a non-object');
+ if ($propertyOrMethod === null) {
+ return $element;
+ }
+
+ if (!is_object($element) && !is_array($element)) {
+ throw new UnsupportedOperationException(sprintf(
+ 'The collection type "%s" does not support the $propertyOrMethod parameter',
+ $this->getType(),
+ ));
+ }
+
+ if (is_array($element)) {
+ return $element[$propertyOrMethod] ?? throw new InvalidPropertyOrMethod(sprintf(
+ 'Key or index "%s" not found in collection elements',
+ $propertyOrMethod,
+ ));
}
- if (property_exists($object, $propertyOrMethod)) {
- return $object->$propertyOrMethod;
+ if (property_exists($element, $propertyOrMethod)) {
+ return $element->$propertyOrMethod;
}
- if (method_exists($object, $propertyOrMethod)) {
- return $object->{$propertyOrMethod}();
+ if (method_exists($element, $propertyOrMethod)) {
+ return $element->{$propertyOrMethod}();
}
- throw new ValueExtractionException(
- sprintf('Method or property "%s" not defined in %s', $propertyOrMethod, get_class($object))
- );
+ throw new InvalidPropertyOrMethod(sprintf(
+ 'Method or property "%s" not defined in %s',
+ $propertyOrMethod,
+ $element::class,
+ ));
}
}
diff --git a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
index 721ade002..64fc5fa42 100644
--- a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
+++ b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
@@ -16,11 +16,12 @@ namespace Ramsey\Collection\Tool;
use DateTimeInterface;
-use function get_class;
+use function assert;
use function get_resource_type;
use function is_array;
use function is_bool;
use function is_callable;
+use function is_object;
use function is_resource;
use function is_scalar;
@@ -44,7 +45,7 @@ trait ValueToStringTrait
*
* @param mixed $value the value to return as a string.
*/
- protected function toolValueToString($value): string
+ protected function toolValueToString(mixed $value): string
{
// null
if ($value === null) {
@@ -71,12 +72,8 @@ trait ValueToStringTrait
return '(' . get_resource_type($value) . ' resource #' . (int) $value . ')';
}
- // If we don't know what it is, use var_export().
- if (!is_object($value)) {
- return '(' . var_export($value, true) . ')';
- }
-
// From here, $value should be an object.
+ assert(is_object($value));
// __toString() is implemented
if (is_callable([$value, '__toString'])) {
@@ -89,6 +86,6 @@ trait ValueToStringTrait
}
// unknown type
- return '(' . get_class($value) . ' Object)';
+ return '(' . $value::class . ' Object)';
}
}
diff --git a/vendor/sabre/dav/bin/googlecode_upload.py b/vendor/sabre/dav/bin/googlecode_upload.py
deleted file mode 100755
index caafd5ded..000000000
--- a/vendor/sabre/dav/bin/googlecode_upload.py
+++ /dev/null
@@ -1,248 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2006, 2007 Google Inc. All Rights Reserved.
-# Author: danderson@google.com (David Anderson)
-#
-# Script for uploading files to a Google Code project.
-#
-# This is intended to be both a useful script for people who want to
-# streamline project uploads and a reference implementation for
-# uploading files to Google Code projects.
-#
-# To upload a file to Google Code, you need to provide a path to the
-# file on your local machine, a small summary of what the file is, a
-# project name, and a valid account that is a member or owner of that
-# project. You can optionally provide a list of labels that apply to
-# the file. The file will be uploaded under the same name that it has
-# in your local filesystem (that is, the "basename" or last path
-# component). Run the script with '--help' to get the exact syntax
-# and available options.
-#
-# Note that the upload script requests that you enter your
-# googlecode.com password. This is NOT your Gmail account password!
-# This is the password you use on googlecode.com for committing to
-# Subversion and uploading files. You can find your password by going
-# to http://code.google.com/hosting/settings when logged in with your
-# Gmail account. If you have already committed to your project's
-# Subversion repository, the script will automatically retrieve your
-# credentials from there (unless disabled, see the output of '--help'
-# for details).
-#
-# If you are looking at this script as a reference for implementing
-# your own Google Code file uploader, then you should take a look at
-# the upload() function, which is the meat of the uploader. You
-# basically need to build a multipart/form-data POST request with the
-# right fields and send it to https://PROJECT.googlecode.com/files .
-# Authenticate the request using HTTP Basic authentication, as is
-# shown below.
-#
-# Licensed under the terms of the Apache Software License 2.0:
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Questions, comments, feature requests and patches are most welcome.
-# Please direct all of these to the Google Code users group:
-# http://groups.google.com/group/google-code-hosting
-
-"""Google Code file uploader script.
-"""
-
-__author__ = 'danderson@google.com (David Anderson)'
-
-import httplib
-import os.path
-import optparse
-import getpass
-import base64
-import sys
-
-
-def upload(file, project_name, user_name, password, summary, labels=None):
- """Upload a file to a Google Code project's file server.
-
- Args:
- file: The local path to the file.
- project_name: The name of your project on Google Code.
- user_name: Your Google account name.
- password: The googlecode.com password for your account.
- Note that this is NOT your global Google Account password!
- summary: A small description for the file.
- labels: an optional list of label strings with which to tag the file.
-
- Returns: a tuple:
- http_status: 201 if the upload succeeded, something else if an
- error occurred.
- http_reason: The human-readable string associated with http_status
- file_url: If the upload succeeded, the URL of the file on Google
- Code, None otherwise.
- """
- # The login is the user part of user@gmail.com. If the login provided
- # is in the full user@domain form, strip it down.
- if user_name.endswith('@gmail.com'):
- user_name = user_name[:user_name.index('@gmail.com')]
-
- form_fields = [('summary', summary)]
- if labels is not None:
- form_fields.extend([('label', l.strip()) for l in labels])
-
- content_type, body = encode_upload_request(form_fields, file)
-
- upload_host = '%s.googlecode.com' % project_name
- upload_uri = '/files'
- auth_token = base64.b64encode('%s:%s'% (user_name, password))
- headers = {
- 'Authorization': 'Basic %s' % auth_token,
- 'User-Agent': 'Googlecode.com uploader v0.9.4',
- 'Content-Type': content_type,
- }
-
- server = httplib.HTTPSConnection(upload_host)
- server.request('POST', upload_uri, body, headers)
- resp = server.getresponse()
- server.close()
-
- if resp.status == 201:
- location = resp.getheader('Location', None)
- else:
- location = None
- return resp.status, resp.reason, location
-
-
-def encode_upload_request(fields, file_path):
- """Encode the given fields and file into a multipart form body.
-
- fields is a sequence of (name, value) pairs. file is the path of
- the file to upload. The file will be uploaded to Google Code with
- the same file name.
-
- Returns: (content_type, body) ready for httplib.HTTP instance
- """
- BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla'
- CRLF = '\r\n'
-
- body = []
-
- # Add the metadata about the upload first
- for key, value in fields:
- body.extend(
- ['--' + BOUNDARY,
- 'Content-Disposition: form-data; name="%s"' % key,
- '',
- value,
- ])
-
- # Now add the file itself
- file_name = os.path.basename(file_path)
- f = open(file_path, 'rb')
- file_content = f.read()
- f.close()
-
- body.extend(
- ['--' + BOUNDARY,
- 'Content-Disposition: form-data; name="filename"; filename="%s"'
- % file_name,
- # The upload server determines the mime-type, no need to set it.
- 'Content-Type: application/octet-stream',
- '',
- file_content,
- ])
-
- # Finalize the form body
- body.extend(['--' + BOUNDARY + '--', ''])
-
- return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body)
-
-
-def upload_find_auth(file_path, project_name, summary, labels=None,
- user_name=None, password=None, tries=3):
- """Find credentials and upload a file to a Google Code project's file server.
-
- file_path, project_name, summary, and labels are passed as-is to upload.
-
- Args:
- file_path: The local path to the file.
- project_name: The name of your project on Google Code.
- summary: A small description for the file.
- labels: an optional list of label strings with which to tag the file.
- config_dir: Path to Subversion configuration directory, 'none', or None.
- user_name: Your Google account name.
- tries: How many attempts to make.
- """
-
- while tries > 0:
- if user_name is None:
- # Read username if not specified or loaded from svn config, or on
- # subsequent tries.
- sys.stdout.write('Please enter your googlecode.com username: ')
- sys.stdout.flush()
- user_name = sys.stdin.readline().rstrip()
- if password is None:
- # Read password if not loaded from svn config, or on subsequent tries.
- print 'Please enter your googlecode.com password.'
- print '** Note that this is NOT your Gmail account password! **'
- print 'It is the password you use to access Subversion repositories,'
- print 'and can be found here: http://code.google.com/hosting/settings'
- password = getpass.getpass()
-
- status, reason, url = upload(file_path, project_name, user_name, password,
- summary, labels)
- # Returns 403 Forbidden instead of 401 Unauthorized for bad
- # credentials as of 2007-07-17.
- if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]:
- # Rest for another try.
- user_name = password = None
- tries = tries - 1
- else:
- # We're done.
- break
-
- return status, reason, url
-
-
-def main():
- parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY '
- '-p PROJECT [options] FILE')
- parser.add_option('-s', '--summary', dest='summary',
- help='Short description of the file')
- parser.add_option('-p', '--project', dest='project',
- help='Google Code project name')
- parser.add_option('-u', '--user', dest='user',
- help='Your Google Code username')
- parser.add_option('-w', '--password', dest='password',
- help='Your Google Code password')
- parser.add_option('-l', '--labels', dest='labels',
- help='An optional list of comma-separated labels to attach '
- 'to the file')
-
- options, args = parser.parse_args()
-
- if not options.summary:
- parser.error('File summary is missing.')
- elif not options.project:
- parser.error('Project name is missing.')
- elif len(args) < 1:
- parser.error('File to upload not provided.')
- elif len(args) > 1:
- parser.error('Only one file may be specified.')
-
- file_path = args[0]
-
- if options.labels:
- labels = options.labels.split(',')
- else:
- labels = None
-
- status, reason, url = upload_find_auth(file_path, options.project,
- options.summary, labels,
- options.user, options.password)
- if url:
- print 'The file was uploaded successfully.'
- print 'URL: %s' % url
- return 0
- else:
- print 'An error occurred. Your file was not uploaded.'
- print 'Google Code upload server said: %s (%s)' % (reason, status)
- return 1
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php
index 8bfa7446a..ccaa2519a 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php
@@ -221,7 +221,7 @@ interface BackendInterface
*
* This default may well be good enough for personal use, and calendars
* that aren't very large. But if you anticipate high usage, big calendars
- * or high loads, you are strongly adviced to optimize certain paths.
+ * or high loads, you are strongly advised to optimize certain paths.
*
* The best way to do so is override this method and to optimize
* specifically for 'common filters'.
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
index 6e48d5454..5c04ae44c 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
@@ -36,7 +36,7 @@ interface NotificationSupport extends BackendInterface
public function getNotificationsForPrincipal($principalUri);
/**
- * This deletes a specific notifcation.
+ * This deletes a specific notification.
*
* This may be called by a client once it deems a notification handled.
*
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
index b9f112cf8..634b9828c 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
@@ -196,7 +196,7 @@ SQL
//$stmt2 = $this->pdo->prepare('SELECT principaluri FROM ' . $this->calendarInstancesTableName . ' WHERE access = 1 AND id = ?');
//$stmt2->execute([$row['id']]);
- // read-only is for backwards compatbility. Might go away in
+ // read-only is for backwards compatibility. Might go away in
// the future.
$calendar['read-only'] = \Sabre\DAV\Sharing\Plugin::ACCESS_READ === (int) $row['access'];
}
@@ -730,7 +730,7 @@ SQL
*
* This default may well be good enough for personal use, and calendars
* that aren't very large. But if you anticipate high usage, big calendars
- * or high loads, you are strongly adviced to optimize certain paths.
+ * or high loads, you are strongly advised to optimize certain paths.
*
* The best way to do so is override this method and to optimize
* specifically for 'common filters'.
diff --git a/vendor/sabre/dav/lib/CalDAV/Calendar.php b/vendor/sabre/dav/lib/CalDAV/Calendar.php
index 6c0bf5411..ba8c704a5 100644
--- a/vendor/sabre/dav/lib/CalDAV/Calendar.php
+++ b/vendor/sabre/dav/lib/CalDAV/Calendar.php
@@ -435,7 +435,7 @@ class Calendar implements ICalendar, DAV\IProperties, DAV\Sync\ISyncCollection,
* return null.
*
* The limit is 'suggestive'. You are free to ignore it.
- * TODO: RFC6578 Setion 3.7 says that the server must fail when the server
+ * TODO: RFC6578 Section 3.7 says that the server must fail when the server
* cannot truncate according to the limit, so it may not be just suggestive.
*
* @param string $syncToken
diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
index 7d3a3f46b..5bf9a6018 100644
--- a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
+++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
@@ -70,7 +70,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL
/**
* Returns the etag for the notification.
*
- * The etag must be surrounded by litteral double-quotes.
+ * The etag must be surrounded by literal double-quotes.
*
* @return string
*/
@@ -101,7 +101,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL
/**
* Returns the owner principal.
*
- * This must be a url to a principal, or null if there's no owner
+ * This must be an url to a principal, or null if there's no owner
*
* @return string|null
*/
diff --git a/vendor/sabre/dav/lib/CalDAV/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Plugin.php
index 98f4f554c..ccb722f85 100644
--- a/vendor/sabre/dav/lib/CalDAV/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Plugin.php
@@ -720,7 +720,7 @@ class Plugin extends DAV\ServerPlugin
return;
}
- // We're onyl interested in ICalendarObject nodes that are inside of a
+ // We're only interested in ICalendarObject nodes that are inside of a
// real calendar. This is to avoid triggering validation and scheduling
// for non-calendars (such as an inbox).
list($parent) = Uri\split($path);
@@ -913,7 +913,7 @@ class Plugin extends DAV\ServerPlugin
}
/**
- * This method is triggered whenever a subsystem reqeuests the privileges
+ * This method is triggered whenever a subsystem requests the privileges
* that are supported on a particular node.
*/
public function getSupportedPrivilegeSet(INode $node, array &$supportedPrivilegeSet)
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
index 5e5659610..5bca56d47 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
@@ -25,6 +25,7 @@ use Sabre\HTTP\ResponseInterface;
use Sabre\VObject;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\ITip;
+use Sabre\VObject\ITip\Broker;
use Sabre\VObject\ITip\Message;
use Sabre\VObject\Reader;
@@ -389,7 +390,7 @@ class Plugin extends ServerPlugin
$node->getOwner()
);
- $broker = new ITip\Broker();
+ $broker = $this->createITipBroker();
$messages = $broker->parseEvent(null, $addresses, $node->get());
foreach ($messages as $message) {
@@ -500,7 +501,7 @@ class Plugin extends ServerPlugin
$isNewNode = true;
}
- $broker = new ITip\Broker();
+ $broker = $this->createITipBroker();
$newObject = $broker->processMessage($iTipMessage, $currentObject);
$inbox->createFile($newFileName, $iTipMessage->message->serialize());
@@ -611,7 +612,7 @@ class Plugin extends ServerPlugin
*/
protected function processICalendarChange($oldObject, VCalendar $newObject, array $addresses, array $ignore = [], &$modified = false)
{
- $broker = new ITip\Broker();
+ $broker = $this->createITipBroker();
$messages = $broker->parseEvent($newObject, $addresses, $oldObject);
if ($messages) {
@@ -994,4 +995,12 @@ class Plugin extends ServerPlugin
'link' => 'http://sabre.io/dav/scheduling/',
];
}
+
+ /**
+ * Returns an instance of the iTip\Broker.
+ */
+ protected function createITipBroker(): Broker
+ {
+ return new Broker();
+ }
}
diff --git a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
index f7dca9be6..bacfe0441 100644
--- a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
@@ -136,7 +136,7 @@ class SharingPlugin extends DAV\ServerPlugin
}
/**
- * This method is trigged when a user attempts to update a node's
+ * This method is triggered when a user attempts to update a node's
* properties.
*
* A previous draft of the sharing spec stated that it was possible to use
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
index 3b3a94b26..4771a2070 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
@@ -48,7 +48,7 @@ class CalendarMultiGetReport implements XmlDeserializable
public $expand = null;
/**
- * The mimetype of the content that should be returend. Usually
+ * The mimetype of the content that should be returned. Usually
* text/calendar.
*
* @var string
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
index b3cc299d3..5a4df4674 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
@@ -48,7 +48,7 @@ class CalendarQueryReport implements XmlDeserializable
public $expand = null;
/**
- * The mimetype of the content that should be returend. Usually
+ * The mimetype of the content that should be returned. Usually
* text/calendar.
*
* @var string
diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
index 6ef34d173..f9955ac83 100644
--- a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
@@ -88,7 +88,7 @@ interface BackendInterface
* * size - The size of the card in bytes.
*
* If these last two properties are provided, less time will be spent
- * calculating them. If they are specified, you can also ommit carddata.
+ * calculating them. If they are specified, you can also omit carddata.
* This may speed up certain requests, especially with large cards.
*
* @param mixed $addressbookId
@@ -98,7 +98,7 @@ interface BackendInterface
public function getCards($addressbookId);
/**
- * Returns a specfic card.
+ * Returns a specific card.
*
* The same set of properties must be returned as with getCards. The only
* exception is that 'carddata' is absolutely required.
diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
index 4ca9284a9..7b935a4ae 100644
--- a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
@@ -205,7 +205,7 @@ class PDO extends AbstractBackend implements SyncSupport
* * size - The size of the card in bytes.
*
* If these last two properties are provided, less time will be spent
- * calculating them. If they are specified, you can also ommit carddata.
+ * calculating them. If they are specified, you can also omit carddata.
* This may speed up certain requests, especially with large cards.
*
* @param mixed $addressbookId
diff --git a/vendor/sabre/dav/lib/CardDAV/Plugin.php b/vendor/sabre/dav/lib/CardDAV/Plugin.php
index c2d31d9df..810ae3a1a 100644
--- a/vendor/sabre/dav/lib/CardDAV/Plugin.php
+++ b/vendor/sabre/dav/lib/CardDAV/Plugin.php
@@ -800,7 +800,7 @@ class Plugin extends DAV\ServerPlugin
*
* @return string
*/
- protected function convertVCard($data, $target, array $propertiesFilter = null)
+ protected function convertVCard($data, $target, ?array $propertiesFilter = null)
{
if (is_resource($data)) {
$data = stream_get_contents($data);
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
index fe5f976a0..536c5a19f 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
@@ -34,7 +34,7 @@ class SupportedAddressData implements XmlSerializable
/**
* Creates the property.
*/
- public function __construct(array $supportedData = null)
+ public function __construct(?array $supportedData = null)
{
if (is_null($supportedData)) {
$supportedData = [
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
index e1096fe28..02402f6c7 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
@@ -82,7 +82,7 @@ class AddressBookQueryReport implements XmlDeserializable
public $test;
/**
- * The mimetype of the content that should be returend. Usually
+ * The mimetype of the content that should be returned. Usually
* text/vcard.
*
* @var string
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php
index 39324e4db..d142cbfbf 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php
@@ -44,7 +44,7 @@ class PDOBasicAuth extends AbstractBasic
* Digest prefix:
* if the backend you are using for is prefixing
* your password hashes set this option to your prefix to
- * cut it off before verfiying.
+ * cut it off before verifying.
*
* @var string
*/
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
index eb4f27ca6..47fbe205a 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
@@ -58,7 +58,7 @@ class Plugin extends ServerPlugin
*
* @param Backend\BackendInterface $authBackend
*/
- public function __construct(Backend\BackendInterface $authBackend = null)
+ public function __construct(?Backend\BackendInterface $authBackend = null)
{
if (!is_null($authBackend)) {
$this->addBackend($authBackend);
diff --git a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
index 89495e5db..a8a6f430e 100644
--- a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
@@ -522,7 +522,7 @@ HTML;
/**
* This method takes a path/name of an asset and turns it into url
- * suiteable for http access.
+ * suitable for http access.
*
* @param string $assetName
*
diff --git a/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php b/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php
index 37b28ca54..f28d20f41 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php
@@ -9,7 +9,7 @@ use Sabre\DAV;
/**
* InvalidSyncToken.
*
- * This exception is emited for the {DAV:}valid-sync-token pre-condition, as
+ * This exception is emitted for the {DAV:}valid-sync-token pre-condition, as
* defined in rfc6578, section 3.2.
*
* http://tools.ietf.org/html/rfc6578#section-3.2
diff --git a/vendor/sabre/dav/lib/DAV/Exception/Locked.php b/vendor/sabre/dav/lib/DAV/Exception/Locked.php
index 28263cf13..24fad7095 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/Locked.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/Locked.php
@@ -32,7 +32,7 @@ class Locked extends DAV\Exception
*
* @param DAV\Locks\LockInfo $lock
*/
- public function __construct(DAV\Locks\LockInfo $lock = null)
+ public function __construct(?DAV\Locks\LockInfo $lock = null)
{
parent::__construct();
diff --git a/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php b/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php
index 3f7d2d5fb..ef6f50243 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php
@@ -9,7 +9,7 @@ use Sabre\DAV;
/**
* TooManyMatches.
*
- * This exception is emited for the {DAV:}number-of-matches-within-limits
+ * This exception is emitted for the {DAV:}number-of-matches-within-limits
* post-condition, as defined in rfc6578, section 3.2.
*
* http://tools.ietf.org/html/rfc6578#section-3.2
diff --git a/vendor/sabre/dav/lib/DAV/INodeByPath.php b/vendor/sabre/dav/lib/DAV/INodeByPath.php
index 4d63a33bd..349ea1053 100644
--- a/vendor/sabre/dav/lib/DAV/INodeByPath.php
+++ b/vendor/sabre/dav/lib/DAV/INodeByPath.php
@@ -9,7 +9,7 @@ namespace Sabre\DAV;
*
* This interface adds a tiny bit of functionality to collections.
*
- * Getting a node that is deep in the tree normally requires going trough each parent node
+ * Getting a node that is deep in the tree normally requires going through each parent node
* which can cause a significant performance overhead.
*
* Implementing this interface allows solving this overhead by directly jumping to the target node.
diff --git a/vendor/sabre/dav/lib/DAV/Server.php b/vendor/sabre/dav/lib/DAV/Server.php
index 1f8300d4a..3133e54ad 100644
--- a/vendor/sabre/dav/lib/DAV/Server.php
+++ b/vendor/sabre/dav/lib/DAV/Server.php
@@ -211,7 +211,7 @@ class Server implements LoggerAwareInterface, EmitterInterface
*
* @throws Exception
*/
- public function __construct($treeOrNode = null, HTTP\Sapi $sapi = null)
+ public function __construct($treeOrNode = null, ?HTTP\Sapi $sapi = null)
{
if ($treeOrNode instanceof Tree) {
$this->tree = $treeOrNode;
@@ -882,7 +882,7 @@ class Server implements LoggerAwareInterface, EmitterInterface
*
* @return \Traversable
*/
- private function generatePathNodes(PropFind $propFind, array $yieldFirst = null)
+ private function generatePathNodes(PropFind $propFind, ?array $yieldFirst = null)
{
if (null !== $yieldFirst) {
yield $yieldFirst;
@@ -1635,6 +1635,8 @@ class Server implements LoggerAwareInterface, EmitterInterface
*/
public function generateMultiStatus($fileProperties, $strip404s = false)
{
+ $this->emit('beforeMultiStatus', [&$fileProperties]);
+
$w = $this->xml->getWriter();
if (self::$streamMultiStatus) {
return function () use ($fileProperties, $strip404s, $w) {
diff --git a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
index e7adbeee6..d766ae0de 100644
--- a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
@@ -194,7 +194,7 @@ class Plugin extends ServerPlugin
}
/**
- * This method is triggered whenever a subsystem reqeuests the privileges
+ * This method is triggered whenever a subsystem requests the privileges
* hat are supported on a particular node.
*
* We need to add a number of privileges for scheduling purposes.
diff --git a/vendor/sabre/dav/lib/DAV/Tree.php b/vendor/sabre/dav/lib/DAV/Tree.php
index 65b4583ce..1483e1bc5 100644
--- a/vendor/sabre/dav/lib/DAV/Tree.php
+++ b/vendor/sabre/dav/lib/DAV/Tree.php
@@ -62,9 +62,21 @@ class Tree implements INodeByPath
return $this->rootNode;
}
- $parts = explode('/', $path);
$node = $this->rootNode;
+ // look for any cached parent and collect the parts below the parent
+ $parts = [];
+ $remainingPath = $path;
+ do {
+ list($remainingPath, $baseName) = Uri\split($remainingPath);
+ array_unshift($parts, $baseName);
+
+ if (isset($this->cache[$remainingPath])) {
+ $node = $this->cache[$remainingPath];
+ break;
+ }
+ } while ('' !== $remainingPath);
+
while (count($parts)) {
if (!($node instanceof ICollection)) {
throw new Exception\NotFound('Could not find node at path: '.$path);
diff --git a/vendor/sabre/dav/lib/DAV/Version.php b/vendor/sabre/dav/lib/DAV/Version.php
index 345c62d7e..e6aee097c 100644
--- a/vendor/sabre/dav/lib/DAV/Version.php
+++ b/vendor/sabre/dav/lib/DAV/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '4.6.0';
+ public const VERSION = '4.7.0';
}
diff --git a/vendor/sabre/dav/lib/DAVACL/Plugin.php b/vendor/sabre/dav/lib/DAVACL/Plugin.php
index 46d680e15..f0497844d 100644
--- a/vendor/sabre/dav/lib/DAVACL/Plugin.php
+++ b/vendor/sabre/dav/lib/DAVACL/Plugin.php
@@ -716,7 +716,7 @@ class Plugin extends DAV\ServerPlugin
* @param array $requestedProperties this is the list of properties to
* return for every match
* @param string $collectionUri the principal collection to search on.
- * If this is ommitted, the standard
+ * If this is omitted, the standard
* principal collection-set will be used
* @param string $test "allof" to use AND to search the
* properties. 'anyof' for OR.
diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
index 17bc245c5..178bd7276 100644
--- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
+++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
@@ -80,7 +80,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport
* return any additional properties if you wish so. Common properties are:
* {DAV:}displayname
* {http://sabredav.org/ns}email-address - This is a custom SabreDAV
- * field that's actualy injected in a number of other properties. If
+ * field that's actually injected in a number of other properties. If
* you have an email address, use this property.
*
* @param string $prefixPath
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
index 52092128f..5b9ee4517 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
@@ -149,7 +149,7 @@ class Principal extends DAV\Xml\Property\Href
/**
* The deserialize method is called during xml parsing.
*
- * This method is called staticly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/event/.github/workflows/ci.yml b/vendor/sabre/event/.github/workflows/ci.yml
deleted file mode 100644
index 3473cd2de..000000000
--- a/vendor/sabre/event/.github/workflows/ci.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: continuous-integration
-on:
- push:
- branches:
- - master
- - release/*
- pull_request:
-jobs:
- unit-testing:
- name: PHPUnit (PHP ${{ matrix.php-versions }})
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1']
- coverage: ['pcov']
- code-analysis: ['no']
- include:
- - php-versions: '7.1'
- coverage: 'none'
- code-analysis: 'yes'
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: mbstring, dom, fileinfo, mysql, redis, opcache
- coverage: ${{ matrix.coverage }}
- tools: composer
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "::set-output name=dir::$(composer config cache-files-dir)"
-
- - name: Cache composer dependencies
- uses: actions/cache@v2
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- # Use composer.json for key, if composer.lock is not committed.
- # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
-
- - name: Install composer dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
-
- - name: Code Analysis (PHP CS-Fixer)
- if: matrix.code-analysis == 'yes'
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
-
- - name: Code Analysis (PHPStan)
- if: matrix.code-analysis == 'yes'
- run: composer phpstan
-
- - name: Test with phpunit
- run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
-
- - name: Code Coverage
- uses: codecov/codecov-action@v2
- if: matrix.coverage != 'none'
diff --git a/vendor/sabre/event/.php-cs-fixer.dist.php b/vendor/sabre/event/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..319886c6b
--- /dev/null
+++ b/vendor/sabre/event/.php-cs-fixer.dist.php
@@ -0,0 +1,18 @@
+exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+$config->setRules([
+ '@PSR1' => true,
+ '@Symfony' => true,
+ 'blank_line_between_import_groups' => false,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
+]);
+$config->setFinder($finder);
+return $config;
\ No newline at end of file
diff --git a/vendor/sabre/event/.php_cs.dist b/vendor/sabre/event/.php_cs.dist
deleted file mode 100644
index c5c78a971..000000000
--- a/vendor/sabre/event/.php_cs.dist
+++ /dev/null
@@ -1,12 +0,0 @@
-getFinder()
- ->exclude('vendor')
- ->in(__DIR__);
-$config->setRules([
- '@PSR1' => true,
- '@Symfony' => true
-]);
-
-return $config;
\ No newline at end of file
diff --git a/vendor/sabre/event/bin/.empty b/vendor/sabre/event/bin/.empty
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/sabre/event/composer.json b/vendor/sabre/event/composer.json
index 42fb4aa22..0d3ec0621 100644
--- a/vendor/sabre/event/composer.json
+++ b/vendor/sabre/event/composer.json
@@ -46,16 +46,16 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6"
},
"scripts": {
"phpstan": [
"phpstan analyse lib tests"
],
"cs-fixer": [
- "php-cs-fixer fix"
+ "PHP_CS_FIXER_IGNORE_ENV=true php-cs-fixer fix"
],
"phpunit": [
"phpunit --configuration tests/phpunit.xml"
diff --git a/vendor/sabre/event/lib/EmitterInterface.php b/vendor/sabre/event/lib/EmitterInterface.php
index 6ce0f34db..662efd739 100644
--- a/vendor/sabre/event/lib/EmitterInterface.php
+++ b/vendor/sabre/event/lib/EmitterInterface.php
@@ -47,7 +47,7 @@ interface EmitterInterface
* Lastly, if there are 5 event handlers for an event. The continueCallback
* will be called at most 4 times.
*/
- public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool;
+ public function emit(string $eventName, array $arguments = [], ?callable $continueCallBack = null): bool;
/**
* Returns the list of listeners for an event.
@@ -74,5 +74,5 @@ interface EmitterInterface
* removed. If it is not specified, every listener for every event is
* removed.
*/
- public function removeAllListeners(string $eventName = null);
+ public function removeAllListeners(?string $eventName = null);
}
diff --git a/vendor/sabre/event/lib/EmitterTrait.php b/vendor/sabre/event/lib/EmitterTrait.php
index 5502ef9f3..5a0a23457 100644
--- a/vendor/sabre/event/lib/EmitterTrait.php
+++ b/vendor/sabre/event/lib/EmitterTrait.php
@@ -73,7 +73,7 @@ trait EmitterTrait
* Lastly, if there are 5 event handlers for an event. The continueCallback
* will be called at most 4 times.
*/
- public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool
+ public function emit(string $eventName, array $arguments = [], ?callable $continueCallBack = null): bool
{
if (\is_null($continueCallBack)) {
foreach ($this->listeners($eventName) as $listener) {
@@ -160,7 +160,7 @@ trait EmitterTrait
* removed. If it is not specified, every listener for every event is
* removed.
*/
- public function removeAllListeners(string $eventName = null)
+ public function removeAllListeners(?string $eventName = null)
{
if (!\is_null($eventName)) {
unset($this->listeners[$eventName]);
diff --git a/vendor/sabre/event/lib/Loop/Loop.php b/vendor/sabre/event/lib/Loop/Loop.php
index b85a7a440..74981da08 100644
--- a/vendor/sabre/event/lib/Loop/Loop.php
+++ b/vendor/sabre/event/lib/Loop/Loop.php
@@ -24,7 +24,7 @@ class Loop
*/
public function setTimeout(callable $cb, float $timeout)
{
- $triggerTime = microtime(true) + ($timeout);
+ $triggerTime = microtime(true) + $timeout;
if (!$this->timers) {
// Special case when the timers array was empty.
@@ -265,7 +265,7 @@ class Loop
* If $timeout is 0, it will return immediately. If $timeout is null, it
* will wait indefinitely.
*
- * @param float|null timeout
+ * @param float|null $timeout
*/
protected function runStreams($timeout)
{
diff --git a/vendor/sabre/event/lib/Loop/functions.php b/vendor/sabre/event/lib/Loop/functions.php
index bf4d933f2..9412a77ff 100644
--- a/vendor/sabre/event/lib/Loop/functions.php
+++ b/vendor/sabre/event/lib/Loop/functions.php
@@ -130,7 +130,7 @@ function stop()
/**
* Retrieves or sets the global Loop object.
*/
-function instance(Loop $newLoop = null): Loop
+function instance(?Loop $newLoop = null): Loop
{
static $loop;
if ($newLoop) {
diff --git a/vendor/sabre/event/lib/Promise.php b/vendor/sabre/event/lib/Promise.php
index 42969a55f..66903fb9f 100644
--- a/vendor/sabre/event/lib/Promise.php
+++ b/vendor/sabre/event/lib/Promise.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Event;
use Exception;
-use Throwable;
/**
* An implementation of the Promise pattern.
@@ -30,17 +29,17 @@ class Promise
/**
* The asynchronous operation is pending.
*/
- const PENDING = 0;
+ public const PENDING = 0;
/**
* The asynchronous operation has completed, and has a result.
*/
- const FULFILLED = 1;
+ public const FULFILLED = 1;
/**
* The asynchronous operation has completed with an error.
*/
- const REJECTED = 2;
+ public const REJECTED = 2;
/**
* The current state of this promise.
@@ -58,7 +57,7 @@ class Promise
* Each are callbacks that map to $this->fulfill and $this->reject.
* Using the executor is optional.
*/
- public function __construct(callable $executor = null)
+ public function __construct(?callable $executor = null)
{
if ($executor) {
$executor(
@@ -87,7 +86,7 @@ class Promise
* If either of the callbacks throw an exception, the returned promise will
* be rejected and the exception will be passed back.
*/
- public function then(callable $onFulfilled = null, callable $onRejected = null): Promise
+ public function then(?callable $onFulfilled = null, ?callable $onRejected = null): Promise
{
// This new subPromise will be returned from this function, and will
// be fulfilled with the result of the onFulfilled or onRejected event
@@ -128,8 +127,6 @@ class Promise
/**
* Marks this promise as fulfilled and sets its return value.
- *
- * @param mixed $value
*/
public function fulfill($value = null)
{
@@ -146,7 +143,7 @@ class Promise
/**
* Marks this promise as rejected, and set its rejection reason.
*/
- public function reject(Throwable $reason)
+ public function reject(\Throwable $reason)
{
if (self::PENDING !== $this->state) {
throw new PromiseAlreadyResolvedException('This promise is already resolved, and you\'re not allowed to resolve a promise more than once');
@@ -169,7 +166,6 @@ class Promise
* one. In PHP it might be useful to call this on the last promise in a
* chain.
*
- * @return mixed
* @psalm-return TReturn
*/
public function wait()
@@ -208,10 +204,8 @@ class Promise
*
* If the promise was fulfilled, this will be the result value. If the
* promise was rejected, this property hold the rejection reason.
- *
- * @var mixed
*/
- protected $value = null;
+ protected $value;
/**
* This method is used to call either an onFulfilled or onRejected callback.
@@ -219,10 +213,8 @@ class Promise
* This method makes sure that the result of these callbacks are handled
* correctly, and any chained promises are also correctly fulfilled or
* rejected.
- *
- * @param callable $callBack
*/
- private function invokeCallback(Promise $subPromise, callable $callBack = null)
+ private function invokeCallback(Promise $subPromise, ?callable $callBack = null)
{
// We use 'nextTick' to ensure that the event handlers are always
// triggered outside of the calling stack in which they were originally
@@ -244,7 +236,7 @@ class Promise
// immediately fulfill the chained promise.
$subPromise->fulfill($result);
}
- } catch (Throwable $e) {
+ } catch (\Throwable $e) {
// If the event handler threw an exception, we need to make sure that
// the chained promise is rejected as well.
$subPromise->reject($e);
diff --git a/vendor/sabre/event/lib/Promise/functions.php b/vendor/sabre/event/lib/Promise/functions.php
index fbed63471..67e80cbe4 100644
--- a/vendor/sabre/event/lib/Promise/functions.php
+++ b/vendor/sabre/event/lib/Promise/functions.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Event\Promise;
use Sabre\Event\Promise;
-use Throwable;
/**
* This file contains a set of functions that are useful for dealing with the
@@ -101,8 +100,6 @@ function race(array $promises): Promise
*
* If the value is a promise, the returned promise will attach itself to that
* promise and eventually get the same state as the followed promise.
- *
- * @param mixed $value
*/
function resolve($value): Promise
{
@@ -119,7 +116,7 @@ function resolve($value): Promise
/**
* Returns a Promise that will reject with the given reason.
*/
-function reject(Throwable $reason): Promise
+function reject(\Throwable $reason): Promise
{
$promise = new Promise();
$promise->reject($reason);
diff --git a/vendor/sabre/event/lib/Version.php b/vendor/sabre/event/lib/Version.php
index fe8f5c3bf..10a98c607 100644
--- a/vendor/sabre/event/lib/Version.php
+++ b/vendor/sabre/event/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '5.1.4';
+ public const VERSION = '5.1.7';
}
diff --git a/vendor/sabre/event/lib/WildcardEmitterTrait.php b/vendor/sabre/event/lib/WildcardEmitterTrait.php
index 206a8f3c5..69243ff83 100644
--- a/vendor/sabre/event/lib/WildcardEmitterTrait.php
+++ b/vendor/sabre/event/lib/WildcardEmitterTrait.php
@@ -82,7 +82,7 @@ trait WildcardEmitterTrait
* Lastly, if there are 5 event handlers for an event. The continueCallback
* will be called at most 4 times.
*/
- public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool
+ public function emit(string $eventName, array $arguments = [], ?callable $continueCallBack = null): bool
{
if (\is_null($continueCallBack)) {
foreach ($this->listeners($eventName) as $listener) {
@@ -195,7 +195,7 @@ trait WildcardEmitterTrait
* removed. If it is not specified, every listener for every event is
* removed.
*/
- public function removeAllListeners(string $eventName = null)
+ public function removeAllListeners(?string $eventName = null)
{
if (\is_null($eventName)) {
$this->listeners = [];
diff --git a/vendor/sabre/event/lib/coroutine.php b/vendor/sabre/event/lib/coroutine.php
index cdf2d3ecd..f664efa78 100644
--- a/vendor/sabre/event/lib/coroutine.php
+++ b/vendor/sabre/event/lib/coroutine.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Event;
use Generator;
-use Throwable;
/**
* Turn asynchronous promise-based code into something that looks synchronous
@@ -42,10 +41,10 @@ use Throwable;
*
* });
*
- * @return \Sabre\Event\Promise
- *
* @psalm-template TReturn
+ *
* @psalm-param callable():\Generator $gen
+ *
* @psalm-return Promise
*
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
@@ -55,7 +54,7 @@ use Throwable;
function coroutine(callable $gen): Promise
{
$generator = $gen();
- if (!$generator instanceof Generator) {
+ if (!$generator instanceof \Generator) {
throw new \InvalidArgumentException('You must pass a generator function');
}
@@ -75,11 +74,11 @@ function coroutine(callable $gen): Promise
$generator->send($value);
$advanceGenerator();
},
- function (Throwable $reason) use ($generator, $advanceGenerator) {
+ function (\Throwable $reason) use ($generator, $advanceGenerator) {
$generator->throw($reason);
$advanceGenerator();
}
- )->otherwise(function (Throwable $reason) use ($promise) {
+ )->otherwise(function (\Throwable $reason) use ($promise) {
// This error handler would be called, if something in the
// generator throws an exception, and it's not caught
// locally.
@@ -104,7 +103,7 @@ function coroutine(callable $gen): Promise
if ($returnValue instanceof Promise) {
$returnValue->then(function ($value) use ($promise) {
$promise->fulfill($value);
- }, function (Throwable $reason) use ($promise) {
+ }, function (\Throwable $reason) use ($promise) {
$promise->reject($reason);
});
} else {
@@ -115,7 +114,7 @@ function coroutine(callable $gen): Promise
try {
$advanceGenerator();
- } catch (Throwable $e) {
+ } catch (\Throwable $e) {
$promise->reject($e);
}
diff --git a/vendor/sabre/event/phpstan.neon b/vendor/sabre/event/phpstan.neon
deleted file mode 100644
index 213da6dad..000000000
--- a/vendor/sabre/event/phpstan.neon
+++ /dev/null
@@ -1,2 +0,0 @@
-parameters:
- level: 1
diff --git a/vendor/sabre/http/.github/workflows/ci.yml b/vendor/sabre/http/.github/workflows/ci.yml
index cbb681e53..56bc1a321 100644
--- a/vendor/sabre/http/.github/workflows/ci.yml
+++ b/vendor/sabre/http/.github/workflows/ci.yml
@@ -12,15 +12,20 @@ jobs:
strategy:
fail-fast: false
matrix:
- php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1']
+ php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
coverage: ['xdebug']
+ code-style: ['yes']
code-analysis: ['no']
include:
- php-versions: '7.1'
+ code-style: 'yes'
+ code-analysis: 'yes'
+ - php-versions: '8.4'
+ code-style: 'yes'
code-analysis: 'yes'
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
@@ -35,7 +40,7 @@ jobs:
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
- uses: actions/cache@v2
+ uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
@@ -45,8 +50,8 @@ jobs:
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Code Analysis (PHP CS-Fixer)
- if: matrix.code-analysis == 'yes'
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
+ if: matrix.code-style == 'yes'
+ run: PHP_CS_FIXER_IGNORE_ENV=true php vendor/bin/php-cs-fixer fix --dry-run --diff
- name: Code Analysis (PHPStan)
if: matrix.code-analysis == 'yes'
@@ -59,5 +64,5 @@ jobs:
run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
- name: Code Coverage
- uses: codecov/codecov-action@v2
+ uses: codecov/codecov-action@v4
if: matrix.coverage != 'none'
diff --git a/vendor/sabre/http/.gitignore b/vendor/sabre/http/.gitignore
index 367bba576..a5356dd00 100644
--- a/vendor/sabre/http/.gitignore
+++ b/vendor/sabre/http/.gitignore
@@ -6,3 +6,4 @@ composer.lock
tests/cov/
.phpunit.result.cache
.php_cs.cache
+.php-cs-fixer.cache
diff --git a/vendor/sabre/http/.php-cs-fixer.dist.php b/vendor/sabre/http/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..f9d4b7a8d
--- /dev/null
+++ b/vendor/sabre/http/.php-cs-fixer.dist.php
@@ -0,0 +1,17 @@
+exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+$config->setRules([
+ '@PSR1' => true,
+ '@Symfony' => true,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
+]);
+$config->setFinder($finder);
+return $config;
\ No newline at end of file
diff --git a/vendor/sabre/http/CHANGELOG.md b/vendor/sabre/http/CHANGELOG.md
index 2dddce4fb..4158150f4 100644
--- a/vendor/sabre/http/CHANGELOG.md
+++ b/vendor/sabre/http/CHANGELOG.md
@@ -1,6 +1,37 @@
ChangeLog
=========
+5.1.12 (2024-08-27)
+------------------
+
+* #243 add cs-fixer v3 (@phil-davis)
+
+5.1.11 (2024-07-26)
+------------------
+
+* #241 PHP 8.4 compliance (@phil-davis)
+
+5.1.10 (2023-08-18)
+------------------
+
+* #225 Enhance tests/bootstrap.php to find autoloader in more environments (@phil-davis)
+
+5.1.9 (2023-08-17)
+------------------
+
+* #223 skip testParseMimeTypeOnInvalidMimeType (@phil-davis)
+
+5.1.8 (2023-08-17)
+------------------
+
+* #215 Improve CURLOPT_HTTPHEADER Setting Assignment (@amrita-shrestha)
+
+5.1.7 (2023-06-26)
+------------------
+
+* #98 and #176 Add more tests (@peter279k)
+* #207 fix: handle client disconnect properly with ignore_user_abort true (@kesselb)
+
5.1.6 (2022-07-15)
------------------
diff --git a/vendor/sabre/http/composer.json b/vendor/sabre/http/composer.json
index 353646a28..48caa44f8 100644
--- a/vendor/sabre/http/composer.json
+++ b/vendor/sabre/http/composer.json
@@ -13,9 +13,9 @@
"sabre/uri" : "^2.0"
},
"require-dev" : {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6"
},
"suggest" : {
"ext-curl" : " to make http requests with the Client class"
@@ -50,7 +50,7 @@
"phpstan analyse lib tests"
],
"cs-fixer": [
- "php-cs-fixer fix"
+ "PHP_CS_FIXER_IGNORE_ENV=true php-cs-fixer fix"
],
"phpunit": [
"phpunit --configuration tests/phpunit.xml"
diff --git a/vendor/sabre/http/lib/Auth/AWS.php b/vendor/sabre/http/lib/Auth/AWS.php
index ffda3cf15..2690c634d 100644
--- a/vendor/sabre/http/lib/Auth/AWS.php
+++ b/vendor/sabre/http/lib/Auth/AWS.php
@@ -22,14 +22,14 @@ class AWS extends AbstractAuth
*
* @var string
*/
- private $signature = null;
+ private $signature;
/**
* The accesskey supplied by the HTTP client.
*
* @var string
*/
- private $accessKey = null;
+ private $accessKey;
/**
* An error code, if any.
@@ -40,11 +40,11 @@ class AWS extends AbstractAuth
*/
public $errorCode = 0;
- const ERR_NOAWSHEADER = 1;
- const ERR_MD5CHECKSUMWRONG = 2;
- const ERR_INVALIDDATEFORMAT = 3;
- const ERR_REQUESTTIMESKEWED = 4;
- const ERR_INVALIDSIGNATURE = 5;
+ public const ERR_NOAWSHEADER = 1;
+ public const ERR_MD5CHECKSUMWRONG = 2;
+ public const ERR_INVALIDDATEFORMAT = 3;
+ public const ERR_REQUESTTIMESKEWED = 4;
+ public const ERR_INVALIDSIGNATURE = 5;
/**
* Gathers all information from the headers.
@@ -212,7 +212,7 @@ class AWS extends AbstractAuth
}
$key = str_pad($key, $blocksize, chr(0x00));
$ipad = str_repeat(chr(0x36), $blocksize);
- $opad = str_repeat(chr(0x5c), $blocksize);
+ $opad = str_repeat(chr(0x5C), $blocksize);
$hmac = pack('H*', sha1(($key ^ $opad).pack('H*', sha1(($key ^ $ipad).$message))));
return $hmac;
diff --git a/vendor/sabre/http/lib/Auth/Digest.php b/vendor/sabre/http/lib/Auth/Digest.php
index e80e78305..08fa34f90 100644
--- a/vendor/sabre/http/lib/Auth/Digest.php
+++ b/vendor/sabre/http/lib/Auth/Digest.php
@@ -34,8 +34,8 @@ class Digest extends AbstractAuth
/**
* These constants are used in setQOP();.
*/
- const QOP_AUTH = 1;
- const QOP_AUTHINT = 2;
+ public const QOP_AUTH = 1;
+ public const QOP_AUTHINT = 2;
protected $nonce;
protected $opaque;
@@ -177,8 +177,6 @@ class Digest extends AbstractAuth
* It should be compatible with mod_php format and other webservers.
*
* If the header could not be found, null will be returned
- *
- * @return mixed
*/
public function getDigest()
{
diff --git a/vendor/sabre/http/lib/Client.php b/vendor/sabre/http/lib/Client.php
index 2bc7483a7..c00f9e1b1 100644
--- a/vendor/sabre/http/lib/Client.php
+++ b/vendor/sabre/http/lib/Client.php
@@ -175,7 +175,7 @@ class Client extends EventEmitter
* After calling sendAsync, you must therefore occasionally call the poll()
* method, or wait().
*/
- public function sendAsync(RequestInterface $request, callable $success = null, callable $error = null)
+ public function sendAsync(RequestInterface $request, ?callable $success = null, ?callable $error = null)
{
$this->emit('beforeRequest', [$request]);
$this->sendAsyncInternal($request, $success, $error);
@@ -299,8 +299,6 @@ class Client extends EventEmitter
* Adds a CURL setting.
*
* These settings will be included in every HTTP request.
- *
- * @param mixed $value
*/
public function addCurlSetting(int $name, $value)
{
@@ -402,7 +400,10 @@ class Client extends EventEmitter
$nHeaders[] = $key.': '.$value;
}
}
- $settings[CURLOPT_HTTPHEADER] = $nHeaders;
+
+ if ([] !== $nHeaders) {
+ $settings[CURLOPT_HTTPHEADER] = $nHeaders;
+ }
$settings[CURLOPT_URL] = $request->getUrl();
// FIXME: CURLOPT_PROTOCOLS is currently unsupported by HHVM
if (defined('CURLOPT_PROTOCOLS')) {
@@ -416,9 +417,9 @@ class Client extends EventEmitter
return $settings;
}
- const STATUS_SUCCESS = 0;
- const STATUS_CURLERROR = 1;
- const STATUS_HTTPERROR = 2;
+ public const STATUS_SUCCESS = 0;
+ public const STATUS_CURLERROR = 1;
+ public const STATUS_HTTPERROR = 2;
private function parseResponse(string $response, $curlHandle): array
{
diff --git a/vendor/sabre/http/lib/Request.php b/vendor/sabre/http/lib/Request.php
index b8395ff45..99a13d25a 100644
--- a/vendor/sabre/http/lib/Request.php
+++ b/vendor/sabre/http/lib/Request.php
@@ -4,7 +4,6 @@ declare(strict_types=1);
namespace Sabre\HTTP;
-use LogicException;
use Sabre\Uri;
/**
diff --git a/vendor/sabre/http/lib/Response.php b/vendor/sabre/http/lib/Response.php
index c06c9637e..78ebb220d 100644
--- a/vendor/sabre/http/lib/Response.php
+++ b/vendor/sabre/http/lib/Response.php
@@ -100,10 +100,9 @@ class Response extends Message implements ResponseInterface
* Creates the response object.
*
* @param string|int $status
- * @param array $headers
* @param resource $body
*/
- public function __construct($status = 500, array $headers = null, $body = null)
+ public function __construct($status = 500, ?array $headers = null, $body = null)
{
if (null !== $status) {
$this->setStatus($status);
diff --git a/vendor/sabre/http/lib/Sapi.php b/vendor/sabre/http/lib/Sapi.php
index f8e8397fc..4c8fb6732 100644
--- a/vendor/sabre/http/lib/Sapi.php
+++ b/vendor/sabre/http/lib/Sapi.php
@@ -4,8 +4,6 @@ declare(strict_types=1);
namespace Sabre\HTTP;
-use InvalidArgumentException;
-
/**
* PHP SAPI.
*
@@ -115,6 +113,12 @@ class Sapi
if ($copied <= 0) {
break;
}
+ // Abort on client disconnect.
+ // With ignore_user_abort(true), the script is not aborted on client disconnect.
+ // To avoid reading the entire stream and dismissing the data afterward, check between the chunks if the client is still there.
+ if (1 === ignore_user_abort() && 1 === connection_aborted()) {
+ break;
+ }
$left -= $copied;
}
} else {
@@ -162,7 +166,7 @@ class Sapi
$url = $value;
break;
- // These sometimes show up without a HTTP_ prefix
+ // These sometimes show up without a HTTP_ prefix
case 'CONTENT_TYPE':
$headers['Content-Type'] = $value;
break;
@@ -170,21 +174,21 @@ class Sapi
$headers['Content-Length'] = $value;
break;
- // mod_php on apache will put credentials in these variables.
- // (fast)cgi does not usually do this, however.
+ // mod_php on apache will put credentials in these variables.
+ // (fast)cgi does not usually do this, however.
case 'PHP_AUTH_USER':
if (isset($serverArray['PHP_AUTH_PW'])) {
$headers['Authorization'] = 'Basic '.base64_encode($value.':'.$serverArray['PHP_AUTH_PW']);
}
break;
- // Similarly, mod_php may also screw around with digest auth.
+ // Similarly, mod_php may also screw around with digest auth.
case 'PHP_AUTH_DIGEST':
$headers['Authorization'] = 'Digest '.$value;
break;
- // Apache may prefix the HTTP_AUTHORIZATION header with
- // REDIRECT_, if mod_rewrite was used.
+ // Apache may prefix the HTTP_AUTHORIZATION header with
+ // REDIRECT_, if mod_rewrite was used.
case 'REDIRECT_HTTP_AUTHORIZATION':
$headers['Authorization'] = $value;
break;
@@ -220,11 +224,11 @@ class Sapi
}
if (null === $url) {
- throw new InvalidArgumentException('The _SERVER array must have a REQUEST_URI key');
+ throw new \InvalidArgumentException('The _SERVER array must have a REQUEST_URI key');
}
if (null === $method) {
- throw new InvalidArgumentException('The _SERVER array must have a REQUEST_METHOD key');
+ throw new \InvalidArgumentException('The _SERVER array must have a REQUEST_METHOD key');
}
$r = new Request($method, $url, $headers);
$r->setHttpVersion($httpVersion);
diff --git a/vendor/sabre/http/lib/Version.php b/vendor/sabre/http/lib/Version.php
index 47582f22e..4ac82f6d7 100644
--- a/vendor/sabre/http/lib/Version.php
+++ b/vendor/sabre/http/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '5.1.6';
+ public const VERSION = '5.1.12';
}
diff --git a/vendor/sabre/http/lib/functions.php b/vendor/sabre/http/lib/functions.php
index d0477d943..9ecc1758a 100644
--- a/vendor/sabre/http/lib/functions.php
+++ b/vendor/sabre/http/lib/functions.php
@@ -4,9 +4,6 @@ declare(strict_types=1);
namespace Sabre\HTTP;
-use DateTime;
-use InvalidArgumentException;
-
/**
* A collection of useful helpers for parsing or generating various HTTP
* headers.
@@ -29,7 +26,7 @@ use InvalidArgumentException;
* See:
* http://tools.ietf.org/html/rfc7231#section-7.1.1.1
*
- * @return bool|DateTime
+ * @return bool|\DateTime
*/
function parseDate(string $dateString)
{
@@ -65,7 +62,7 @@ function parseDate(string $dateString)
}
try {
- return new DateTime($dateString, new \DateTimeZone('UTC'));
+ return new \DateTime($dateString, new \DateTimeZone('UTC'));
} catch (\Exception $e) {
return false;
}
@@ -74,7 +71,7 @@ function parseDate(string $dateString)
/**
* Transforms a DateTime object to a valid HTTP/1.1 Date header value.
*/
-function toDate(DateTime $dateTime): string
+function toDate(\DateTime $dateTime): string
{
// We need to clone it, as we don't want to affect the existing
// DateTime.
@@ -171,9 +168,9 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions)
// Does this entry win?
if (
- ($proposal['quality'] > $lastQuality) ||
- ($proposal['quality'] === $lastQuality && $specificity > $lastSpecificity) ||
- ($proposal['quality'] === $lastQuality && $specificity === $lastSpecificity && $optionIndex < $lastOptionIndex)
+ ($proposal['quality'] > $lastQuality)
+ || ($proposal['quality'] === $lastQuality && $specificity > $lastSpecificity)
+ || ($proposal['quality'] === $lastQuality && $specificity === $lastSpecificity && $optionIndex < $lastOptionIndex)
) {
$lastQuality = $proposal['quality'];
$lastSpecificity = $specificity;
@@ -331,7 +328,7 @@ function parseMimeType(string $str): array
if (2 !== count($mimeType)) {
// Illegal value
var_dump($mimeType);
- exit();
+ exit;
// throw new InvalidArgumentException('Not a valid mime-type: '.$str);
}
list($type, $subType) = $mimeType;
diff --git a/vendor/sabre/uri/.php-cs-fixer.dist.php b/vendor/sabre/uri/.php-cs-fixer.dist.php
index 87337520b..f9d4b7a8d 100644
--- a/vendor/sabre/uri/.php-cs-fixer.dist.php
+++ b/vendor/sabre/uri/.php-cs-fixer.dist.php
@@ -7,7 +7,11 @@ $finder = PhpCsFixer\Finder::create()
$config = new PhpCsFixer\Config();
$config->setRules([
'@PSR1' => true,
- '@Symfony' => true
+ '@Symfony' => true,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
]);
$config->setFinder($finder);
return $config;
\ No newline at end of file
diff --git a/vendor/sabre/uri/composer.json b/vendor/sabre/uri/composer.json
index 0e0cf2d36..ba4a8e093 100644
--- a/vendor/sabre/uri/composer.json
+++ b/vendor/sabre/uri/composer.json
@@ -37,9 +37,12 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.9",
- "phpstan/phpstan": "^1.8",
- "phpunit/phpunit" : "^9.0"
+ "friendsofphp/php-cs-fixer": "^3.63",
+ "phpstan/phpstan": "^1.12",
+ "phpstan/phpstan-phpunit": "^1.4",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpstan/extension-installer": "^1.4",
+ "phpunit/phpunit" : "^9.6"
},
"scripts": {
"phpstan": [
@@ -56,5 +59,10 @@
"composer cs-fixer",
"composer phpunit"
]
+ },
+ "config": {
+ "allow-plugins": {
+ "phpstan/extension-installer": true
+ }
}
}
diff --git a/vendor/sabre/uri/lib/Version.php b/vendor/sabre/uri/lib/Version.php
index e4f289e90..c7652f4f2 100644
--- a/vendor/sabre/uri/lib/Version.php
+++ b/vendor/sabre/uri/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '2.3.2';
+ public const VERSION = '2.3.4';
}
diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php
index 64e64027f..ce3027e2e 100644
--- a/vendor/sabre/uri/lib/functions.php
+++ b/vendor/sabre/uri/lib/functions.php
@@ -26,15 +26,15 @@ function resolve(string $basePath, string $newPath): string
// If the new path defines a scheme, it's absolute and we can just return
// that.
- if ($delta['scheme']) {
+ if (null !== $delta['scheme']) {
return build($delta);
}
$base = parse($basePath);
$pick = function ($part) use ($base, $delta) {
- if ($delta[$part]) {
+ if (null !== $delta[$part]) {
return $delta[$part];
- } elseif ($base[$part]) {
+ } elseif (null !== $base[$part]) {
return $base[$part];
}
@@ -47,7 +47,6 @@ function resolve(string $basePath, string $newPath): string
$newParts['host'] = $pick('host');
$newParts['port'] = $pick('port');
- $path = '';
if (is_string($delta['path']) and strlen($delta['path']) > 0) {
// If the path starts with a slash
if ('/' === $delta['path'][0]) {
@@ -62,7 +61,10 @@ function resolve(string $basePath, string $newPath): string
$path .= '/'.$delta['path'];
}
} else {
- $path = $base['path'] ?: '/';
+ $path = $base['path'] ?? '/';
+ if ('' === $path) {
+ $path = '/';
+ }
}
// Removing .. and .
$pathParts = explode('/', $path);
@@ -85,13 +87,17 @@ function resolve(string $basePath, string $newPath): string
// If the source url ended with a /, we want to preserve that.
$newParts['path'] = 0 === strpos($path, '/') ? $path : '/'.$path;
- if ($delta['query']) {
+ // From PHP 8, no "?" query at all causes 'query' to be null.
+ // An empty query "http://example.com/foo?" causes 'query' to be the empty string
+ if (null !== $delta['query'] && '' !== $delta['query']) {
$newParts['query'] = $delta['query'];
- } elseif (!empty($base['query']) && empty($delta['host']) && empty($delta['path'])) {
+ } elseif (isset($base['query']) && null === $delta['host'] && null === $delta['path']) {
// Keep the old query if host and path didn't change
$newParts['query'] = $base['query'];
}
- if ($delta['fragment']) {
+ // From PHP 8, no "#" fragment at all causes 'fragment' to be null.
+ // An empty fragment "http://example.com/foo#" causes 'fragment' to be the empty string
+ if (null !== $delta['fragment'] && '' !== $delta['fragment']) {
$newParts['fragment'] = $delta['fragment'];
}
@@ -113,7 +119,7 @@ function normalize(string $uri): string
{
$parts = parse($uri);
- if (!empty($parts['path'])) {
+ if (null !== $parts['path']) {
$pathParts = explode('/', ltrim($parts['path'], '/'));
$newPathParts = [];
foreach ($pathParts as $pathPart) {
@@ -134,14 +140,14 @@ function normalize(string $uri): string
$parts['path'] = '/'.implode('/', $newPathParts);
}
- if ($parts['scheme']) {
+ if (null !== $parts['scheme']) {
$parts['scheme'] = strtolower($parts['scheme']);
$defaultPorts = [
'http' => '80',
'https' => '443',
];
- if (!empty($parts['port']) && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
+ if (null !== $parts['port'] && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
// Removing default ports.
unset($parts['port']);
}
@@ -149,7 +155,7 @@ function normalize(string $uri): string
switch ($parts['scheme']) {
case 'http':
case 'https':
- if (empty($parts['path'])) {
+ if (null === $parts['path']) {
// An empty path is equivalent to / in http.
$parts['path'] = '/';
}
@@ -157,7 +163,7 @@ function normalize(string $uri): string
}
}
- if ($parts['host']) {
+ if (null !== $parts['host']) {
$parts['host'] = strtolower($parts['host']);
}
@@ -201,7 +207,7 @@ function parse(string $uri): array
}
$result = parse_url($uri);
- if (!$result) {
+ if (false === $result) {
$result = _parse_fallback($uri);
}
@@ -217,14 +223,14 @@ function parse(string $uri): array
*/
return
$result + [
- 'scheme' => null,
- 'host' => null,
- 'path' => null,
- 'port' => null,
- 'user' => null,
- 'query' => null,
- 'fragment' => null,
- ];
+ 'scheme' => null,
+ 'host' => null,
+ 'path' => null,
+ 'port' => null,
+ 'user' => null,
+ 'query' => null,
+ 'fragment' => null,
+ ];
}
/**
@@ -238,32 +244,32 @@ function build(array $parts): string
$uri = '';
$authority = '';
- if (!empty($parts['host'])) {
+ if (isset($parts['host'])) {
$authority = $parts['host'];
- if (!empty($parts['user'])) {
+ if (isset($parts['user'])) {
$authority = $parts['user'].'@'.$authority;
}
- if (!empty($parts['port'])) {
+ if (isset($parts['port'])) {
$authority = $authority.':'.$parts['port'];
}
}
- if (!empty($parts['scheme'])) {
+ if (isset($parts['scheme'])) {
// If there's a scheme, there's also a host.
$uri = $parts['scheme'].':';
}
- if ($authority || (!empty($parts['scheme']) && 'file' === $parts['scheme'])) {
+ if ('' !== $authority || (isset($parts['scheme']) && 'file' === $parts['scheme'])) {
// No scheme, but there is a host.
$uri .= '//'.$authority;
}
- if (!empty($parts['path'])) {
+ if (isset($parts['path'])) {
$uri .= $parts['path'];
}
- if (!empty($parts['query'])) {
+ if (isset($parts['query'])) {
$uri .= '?'.$parts['query'];
}
- if (!empty($parts['fragment'])) {
+ if (isset($parts['fragment'])) {
$uri .= '#'.$parts['fragment'];
}
@@ -290,7 +296,7 @@ function build(array $parts): string
function split(string $path): array
{
$matches = [];
- if (preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
+ if (1 === preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
return [$matches[1], $matches[2]];
}
@@ -307,7 +313,7 @@ function split(string $path): array
* This function is only called if the main parse method fails. It's pretty
* crude and probably slow, so the original parse_url is usually preferred.
*
- * @return array
+ * @return array{scheme: string|null, host: string|null, path: string|null, port: positive-int|null, user: string|null, query: string|null, fragment: string|null}
*
* @throws InvalidUriException
*/
@@ -340,10 +346,14 @@ function _parse_fallback(string $uri): array
'query' => null,
];
- if (preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
+ if (1 === preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
$result['scheme'] = $matches[1];
// Take what's left.
$uri = substr($uri, strlen($result['scheme']) + 1);
+ if (false === $uri) {
+ // There was nothing left.
+ $uri = '';
+ }
}
// Taking off a fragment part
@@ -358,7 +368,11 @@ function _parse_fallback(string $uri): array
if ('///' === substr($uri, 0, 3)) {
// The triple slash uris are a bit unusual, but we have special handling
// for them.
- $result['path'] = substr($uri, 2);
+ $path = substr($uri, 2);
+ if (false === $path) {
+ throw new \RuntimeException('The string cannot be false');
+ }
+ $result['path'] = $path;
$result['host'] = '';
} elseif ('//' === substr($uri, 0, 2)) {
// Uris that have an authority part.
@@ -369,22 +383,25 @@ function _parse_fallback(string $uri): array
(?: : (? [0-9]+))?
(? / .*)?
$%x';
- if (!preg_match($regex, $uri, $matches)) {
+ if (1 !== preg_match($regex, $uri, $matches)) {
throw new InvalidUriException('Invalid, or could not parse URI');
}
- if ($matches['host']) {
+ if (isset($matches['host']) && '' !== $matches['host']) {
$result['host'] = $matches['host'];
}
if (isset($matches['port'])) {
- $result['port'] = (int) $matches['port'];
+ $port = (int) $matches['port'];
+ if ($port > 0) {
+ $result['port'] = $port;
+ }
}
if (isset($matches['path'])) {
$result['path'] = $matches['path'];
}
- if ($matches['user']) {
+ if (isset($matches['user']) && '' !== $matches['user']) {
$result['user'] = $matches['user'];
}
- if ($matches['pass']) {
+ if (isset($matches['pass']) && '' !== $matches['pass']) {
$result['pass'] = $matches['pass'];
}
} else {
diff --git a/vendor/sabre/vobject/composer.json b/vendor/sabre/vobject/composer.json
index b08684bce..df0261feb 100644
--- a/vendor/sabre/vobject/composer.json
+++ b/vendor/sabre/vobject/composer.json
@@ -38,9 +38,9 @@
},
"require-dev" : {
"friendsofphp/php-cs-fixer": "~2.17.1",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0",
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6",
"phpunit/php-invoker" : "^2.0 || ^3.1",
- "phpstan/phpstan": "^0.12"
+ "phpstan/phpstan": "^0.12 || ^1.11"
},
"suggest" : {
"hoa/bench" : "If you would like to run the benchmark scripts"
diff --git a/vendor/sabre/vobject/lib/Component/VCalendar.php b/vendor/sabre/vobject/lib/Component/VCalendar.php
index 4db318135..017aed70c 100644
--- a/vendor/sabre/vobject/lib/Component/VCalendar.php
+++ b/vendor/sabre/vobject/lib/Component/VCalendar.php
@@ -281,7 +281,7 @@ class VCalendar extends VObject\Document
*
* @return VCalendar
*/
- public function expand(DateTimeInterface $start, DateTimeInterface $end, DateTimeZone $timeZone = null)
+ public function expand(DateTimeInterface $start, DateTimeInterface $end, ?DateTimeZone $timeZone = null)
{
$newChildren = [];
$recurringEvents = [];
diff --git a/vendor/sabre/vobject/lib/DateTimeParser.php b/vendor/sabre/vobject/lib/DateTimeParser.php
index c5dbac97d..69072ef8c 100644
--- a/vendor/sabre/vobject/lib/DateTimeParser.php
+++ b/vendor/sabre/vobject/lib/DateTimeParser.php
@@ -31,7 +31,7 @@ class DateTimeParser
*
* @return DateTimeImmutable
*/
- public static function parseDateTime($dt, DateTimeZone $tz = null)
+ public static function parseDateTime($dt, ?DateTimeZone $tz = null)
{
// Format is YYYYMMDD + "T" + hhmmss
$result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])T([0-2][0-9])([0-5][0-9])([0-5][0-9])([Z]?)$/', $dt, $matches);
@@ -61,7 +61,7 @@ class DateTimeParser
*
* @return DateTimeImmutable
*/
- public static function parseDate($date, DateTimeZone $tz = null)
+ public static function parseDate($date, ?DateTimeZone $tz = null)
{
// Format is YYYYMMDD
$result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])$/', $date, $matches);
diff --git a/vendor/sabre/vobject/lib/Document.php b/vendor/sabre/vobject/lib/Document.php
index 6b908c70e..d2131f479 100644
--- a/vendor/sabre/vobject/lib/Document.php
+++ b/vendor/sabre/vobject/lib/Document.php
@@ -157,7 +157,7 @@ abstract class Document extends Component
*
* @return Component
*/
- public function createComponent($name, array $children = null, $defaults = true)
+ public function createComponent($name, ?array $children = null, $defaults = true)
{
$name = strtoupper($name);
$class = Component::class;
@@ -187,7 +187,7 @@ abstract class Document extends Component
* @param array $parameters
* @param string $valueType Force a specific valuetype, such as URI or TEXT
*/
- public function createProperty($name, $value = null, array $parameters = null, $valueType = null, int $lineIndex = null, string $lineString = null): Property
+ public function createProperty($name, $value = null, ?array $parameters = null, $valueType = null, ?int $lineIndex = null, ?string $lineString = null): Property
{
// If there's a . in the name, it means it's prefixed by a groupname.
if (false !== ($i = strpos($name, '.'))) {
diff --git a/vendor/sabre/vobject/lib/FreeBusyGenerator.php b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
index 81b8126d5..56ae166fa 100644
--- a/vendor/sabre/vobject/lib/FreeBusyGenerator.php
+++ b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
@@ -89,7 +89,7 @@ class FreeBusyGenerator
* @param mixed $objects
* @param DateTimeZone $timeZone
*/
- public function __construct(DateTimeInterface $start = null, DateTimeInterface $end = null, $objects = null, DateTimeZone $timeZone = null)
+ public function __construct(?DateTimeInterface $start = null, ?DateTimeInterface $end = null, $objects = null, ?DateTimeZone $timeZone = null)
{
$this->setTimeRange($start, $end);
@@ -158,7 +158,7 @@ class FreeBusyGenerator
* @param DateTimeInterface $start
* @param DateTimeInterface $end
*/
- public function setTimeRange(DateTimeInterface $start = null, DateTimeInterface $end = null)
+ public function setTimeRange(?DateTimeInterface $start = null, ?DateTimeInterface $end = null)
{
if (!$start) {
$start = new DateTimeImmutable(Settings::$minDate);
diff --git a/vendor/sabre/vobject/lib/ITip/Broker.php b/vendor/sabre/vobject/lib/ITip/Broker.php
index dbdd80b78..9d68fc4c6 100644
--- a/vendor/sabre/vobject/lib/ITip/Broker.php
+++ b/vendor/sabre/vobject/lib/ITip/Broker.php
@@ -108,7 +108,7 @@ class Broker
*
* @return VCalendar|null
*/
- public function processMessage(Message $itipMessage, VCalendar $existingObject = null)
+ public function processMessage(Message $itipMessage, ?VCalendar $existingObject = null)
{
// We only support events at the moment.
if ('VEVENT' !== $itipMessage->component) {
@@ -266,7 +266,7 @@ class Broker
*
* @return VCalendar|null
*/
- protected function processMessageRequest(Message $itipMessage, VCalendar $existingObject = null)
+ protected function processMessageRequest(Message $itipMessage, ?VCalendar $existingObject = null)
{
if (!$existingObject) {
// This is a new invite, and we're just going to copy over
@@ -301,7 +301,7 @@ class Broker
*
* @return VCalendar|null
*/
- protected function processMessageCancel(Message $itipMessage, VCalendar $existingObject = null)
+ protected function processMessageCancel(Message $itipMessage, ?VCalendar $existingObject = null)
{
if (!$existingObject) {
// The event didn't exist in the first place, so we're just
@@ -326,7 +326,7 @@ class Broker
*
* @return VCalendar|null
*/
- protected function processMessageReply(Message $itipMessage, VCalendar $existingObject = null)
+ protected function processMessageReply(Message $itipMessage, ?VCalendar $existingObject = null)
{
// A reply can only be processed based on an existing object.
// If the object is not available, the reply is ignored.
@@ -510,10 +510,11 @@ class Broker
$icalMsg->add(clone $timezone);
}
- if (!$attendee['newInstances']) {
- // If there are no instances the attendee is a part of, it
- // means the attendee was removed and we need to send him a
- // CANCEL.
+ if (!$attendee['newInstances'] || 'CANCELLED' === $eventInfo['status']) {
+ // If there are no instances the attendee is a part of, it means
+ // the attendee was removed and we need to send them a CANCEL message.
+ // Also If the meeting STATUS property was changed to CANCELLED
+ // we need to send the attendee a CANCEL message.
$message->method = 'CANCEL';
$icalMsg->METHOD = $message->method;
@@ -807,7 +808,7 @@ class Broker
*
* @return array
*/
- protected function parseEventInfo(VCalendar $calendar = null)
+ protected function parseEventInfo(?VCalendar $calendar = null)
{
$uid = null;
$organizer = null;
diff --git a/vendor/sabre/vobject/lib/Property.php b/vendor/sabre/vobject/lib/Property.php
index 0805c139a..f52760f9c 100644
--- a/vendor/sabre/vobject/lib/Property.php
+++ b/vendor/sabre/vobject/lib/Property.php
@@ -81,7 +81,7 @@ abstract class Property extends Node
* @param array $parameters List of parameters
* @param string $group The vcard property group
*/
- public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null, int $lineIndex = null, string $lineString = null)
+ public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null, ?int $lineIndex = null, ?string $lineString = null)
{
$this->name = $name;
$this->group = $group;
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
index ca71633b9..3ea21e2ec 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
@@ -131,7 +131,7 @@ class DateTime extends Property
*
* @return \DateTimeImmutable
*/
- public function getDateTime(DateTimeZone $timeZone = null)
+ public function getDateTime(?DateTimeZone $timeZone = null)
{
$dt = $this->getDateTimes($timeZone);
if (!$dt) {
@@ -153,7 +153,7 @@ class DateTime extends Property
* @return \DateTimeImmutable[]
* @return \DateTime[]
*/
- public function getDateTimes(DateTimeZone $timeZone = null)
+ public function getDateTimes(?DateTimeZone $timeZone = null)
{
// Does the property have a TZID?
$tzid = $this['TZID'];
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
index 3d632fec1..cd3d7a5e4 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
@@ -2,6 +2,7 @@
namespace Sabre\VObject\Property\ICalendar;
+use Sabre\VObject\InvalidDataException;
use Sabre\VObject\Property;
use Sabre\Xml;
@@ -198,7 +199,14 @@ class Recur extends Property
if (empty($part)) {
continue;
}
- list($partName, $partValue) = explode('=', $part);
+
+ $parts = explode('=', $part);
+
+ if (2 !== count($parts)) {
+ throw new InvalidDataException('The supplied iCalendar RRULE part is incorrect: '.$part);
+ }
+
+ list($partName, $partValue) = $parts;
// The value itself had multiple values..
if (false !== strpos($partValue, ',')) {
diff --git a/vendor/sabre/vobject/lib/Recur/EventIterator.php b/vendor/sabre/vobject/lib/Recur/EventIterator.php
index 61f05d7de..55d6e4779 100644
--- a/vendor/sabre/vobject/lib/Recur/EventIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/EventIterator.php
@@ -93,7 +93,7 @@ class EventIterator implements \Iterator
* @param DateTimeZone $timeZone reference timezone for floating dates and
* times
*/
- public function __construct($input, $uid = null, DateTimeZone $timeZone = null)
+ public function __construct($input, $uid = null, ?DateTimeZone $timeZone = null)
{
if (is_null($timeZone)) {
$timeZone = new DateTimeZone('UTC');
diff --git a/vendor/sabre/vobject/lib/TimeZoneUtil.php b/vendor/sabre/vobject/lib/TimeZoneUtil.php
index 6422c0930..0d77e71ed 100644
--- a/vendor/sabre/vobject/lib/TimeZoneUtil.php
+++ b/vendor/sabre/vobject/lib/TimeZoneUtil.php
@@ -75,7 +75,7 @@ class TimeZoneUtil
* Alternatively, if $failIfUncertain is set to true, it will throw an
* exception if we cannot accurately determine the timezone.
*/
- private function findTimeZone(string $tzid, Component $vcalendar = null, bool $failIfUncertain = false): DateTimeZone
+ private function findTimeZone(string $tzid, ?Component $vcalendar = null, bool $failIfUncertain = false): DateTimeZone
{
foreach ($this->timezoneFinders as $timezoneFinder) {
$timezone = $timezoneFinder->find($tzid, $failIfUncertain);
@@ -126,7 +126,7 @@ class TimeZoneUtil
*
* @return DateTimeZone
*/
- public static function getTimeZone($tzid, Component $vcalendar = null, $failIfUncertain = false)
+ public static function getTimeZone($tzid, ?Component $vcalendar = null, $failIfUncertain = false)
{
return self::getInstance()->findTimeZone($tzid, $vcalendar, $failIfUncertain);
}
diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php
index 309b995cf..060c69a30 100644
--- a/vendor/sabre/vobject/lib/Version.php
+++ b/vendor/sabre/vobject/lib/Version.php
@@ -14,5 +14,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '4.5.5';
+ public const VERSION = '4.5.6';
}
diff --git a/vendor/sabre/xml/.github/workflows/ci.yml b/vendor/sabre/xml/.github/workflows/ci.yml
index 3473cd2de..5775abaf8 100644
--- a/vendor/sabre/xml/.github/workflows/ci.yml
+++ b/vendor/sabre/xml/.github/workflows/ci.yml
@@ -12,16 +12,22 @@ jobs:
strategy:
fail-fast: false
matrix:
- php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1']
+ php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
coverage: ['pcov']
+ code-style: ['yes']
code-analysis: ['no']
include:
- php-versions: '7.1'
coverage: 'none'
+ code-style: 'yes'
+ code-analysis: 'yes'
+ - php-versions: '8.4'
+ coverage: 'pcov'
+ code-style: 'yes'
code-analysis: 'yes'
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
@@ -36,7 +42,7 @@ jobs:
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
# Use composer.json for key, if composer.lock is not committed.
@@ -48,8 +54,8 @@ jobs:
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Code Analysis (PHP CS-Fixer)
- if: matrix.code-analysis == 'yes'
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
+ if: matrix.code-style == 'yes'
+ run: PHP_CS_FIXER_IGNORE_ENV=true php vendor/bin/php-cs-fixer fix --dry-run --diff
- name: Code Analysis (PHPStan)
if: matrix.code-analysis == 'yes'
@@ -59,5 +65,5 @@ jobs:
run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
- name: Code Coverage
- uses: codecov/codecov-action@v2
+ uses: codecov/codecov-action@v3
if: matrix.coverage != 'none'
diff --git a/vendor/sabre/xml/.php-cs-fixer.dist.php b/vendor/sabre/xml/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..f9d4b7a8d
--- /dev/null
+++ b/vendor/sabre/xml/.php-cs-fixer.dist.php
@@ -0,0 +1,17 @@
+exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+$config->setRules([
+ '@PSR1' => true,
+ '@Symfony' => true,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
+]);
+$config->setFinder($finder);
+return $config;
\ No newline at end of file
diff --git a/vendor/sabre/xml/composer.json b/vendor/sabre/xml/composer.json
index 4524cf59b..d7577c2cf 100644
--- a/vendor/sabre/xml/composer.json
+++ b/vendor/sabre/xml/composer.json
@@ -44,16 +44,16 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||3.63.2",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6"
},
"scripts": {
"phpstan": [
"phpstan analyse lib tests"
],
"cs-fixer": [
- "php-cs-fixer fix"
+ "PHP_CS_FIXER_IGNORE_ENV=true php-cs-fixer fix"
],
"phpunit": [
"phpunit --configuration tests/phpunit.xml"
diff --git a/vendor/sabre/xml/lib/Deserializer/functions.php b/vendor/sabre/xml/lib/Deserializer/functions.php
index c4f240970..50818098b 100644
--- a/vendor/sabre/xml/lib/Deserializer/functions.php
+++ b/vendor/sabre/xml/lib/Deserializer/functions.php
@@ -55,7 +55,7 @@ use Sabre\Xml\Reader;
* Attributes will be removed from the top-level elements. If elements with
* the same name appear twice in the list, only the last one will be kept.
*/
-function keyValue(Reader $reader, string $namespace = null): array
+function keyValue(Reader $reader, ?string $namespace = null): array
{
// If there's no children, we don't do anything.
if ($reader->isEmptyElement) {
@@ -144,7 +144,7 @@ function keyValue(Reader $reader, string $namespace = null): array
*
* @return string[]
*/
-function enum(Reader $reader, string $namespace = null): array
+function enum(Reader $reader, ?string $namespace = null): array
{
// If there's no children, we don't do anything.
if ($reader->isEmptyElement) {
@@ -215,8 +215,11 @@ function valueObject(Reader $reader, string $className, string $namespace)
// Ignore property
$reader->next();
}
+ } elseif (Reader::ELEMENT === $reader->nodeType) {
+ // Skipping element from different namespace
+ $reader->next();
} else {
- if (!$reader->read()) {
+ if (Reader::END_ELEMENT !== $reader->nodeType && !$reader->read()) {
break;
}
}
@@ -322,8 +325,6 @@ function mixedContent(Reader $reader): array
*
* You can use, e.g., a named constructor (factory method) to create an object using
* this function.
- *
- * @return mixed
*/
function functionCaller(Reader $reader, callable $func, string $namespace)
{
diff --git a/vendor/sabre/xml/lib/Element/Base.php b/vendor/sabre/xml/lib/Element/Base.php
index 8a93191b1..02fd76966 100644
--- a/vendor/sabre/xml/lib/Element/Base.php
+++ b/vendor/sabre/xml/lib/Element/Base.php
@@ -21,8 +21,6 @@ class Base implements Xml\Element
{
/**
* PHP value to serialize.
- *
- * @var mixed
*/
protected $value;
@@ -72,8 +70,6 @@ class Base implements Xml\Element
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/Elements.php b/vendor/sabre/xml/lib/Element/Elements.php
index fecce4c75..6915fd462 100644
--- a/vendor/sabre/xml/lib/Element/Elements.php
+++ b/vendor/sabre/xml/lib/Element/Elements.php
@@ -90,8 +90,6 @@ class Elements implements Xml\Element
*
* $reader->parseSubTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/KeyValue.php b/vendor/sabre/xml/lib/Element/KeyValue.php
index 17448880d..7d75a3ac8 100644
--- a/vendor/sabre/xml/lib/Element/KeyValue.php
+++ b/vendor/sabre/xml/lib/Element/KeyValue.php
@@ -90,8 +90,6 @@ class KeyValue implements Xml\Element
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/Uri.php b/vendor/sabre/xml/lib/Element/Uri.php
index 336212a53..65276380e 100644
--- a/vendor/sabre/xml/lib/Element/Uri.php
+++ b/vendor/sabre/xml/lib/Element/Uri.php
@@ -84,8 +84,6 @@ class Uri implements Xml\Element
*
* $reader->parseSubTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/XmlFragment.php b/vendor/sabre/xml/lib/Element/XmlFragment.php
index bf110eaee..99d1f87f9 100644
--- a/vendor/sabre/xml/lib/Element/XmlFragment.php
+++ b/vendor/sabre/xml/lib/Element/XmlFragment.php
@@ -135,8 +135,6 @@ XML;
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/LibXMLException.php b/vendor/sabre/xml/lib/LibXMLException.php
index fb074f97d..993f95fd9 100644
--- a/vendor/sabre/xml/lib/LibXMLException.php
+++ b/vendor/sabre/xml/lib/LibXMLException.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Xml;
use LibXMLError;
-use Throwable;
/**
* This exception is thrown when the Reader runs into a parsing error.
@@ -30,10 +29,9 @@ class LibXMLException extends ParseException
*
* You should pass a list of LibXMLError objects in its constructor.
*
- * @param LibXMLError[] $errors
- * @param Throwable $previousException
+ * @param \LibXMLError[] $errors
*/
- public function __construct(array $errors, int $code = 0, Throwable $previousException = null)
+ public function __construct(array $errors, int $code = 0, ?\Throwable $previousException = null)
{
$this->errors = $errors;
parent::__construct($errors[0]->message.' on line '.$errors[0]->line.', column '.$errors[0]->column, $code, $previousException);
diff --git a/vendor/sabre/xml/lib/ParseException.php b/vendor/sabre/xml/lib/ParseException.php
index e237b8732..158cf0119 100644
--- a/vendor/sabre/xml/lib/ParseException.php
+++ b/vendor/sabre/xml/lib/ParseException.php
@@ -13,6 +13,6 @@ use Exception;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class ParseException extends Exception
+class ParseException extends \Exception
{
}
diff --git a/vendor/sabre/xml/lib/Reader.php b/vendor/sabre/xml/lib/Reader.php
index 7871a74f5..f680bf4cd 100644
--- a/vendor/sabre/xml/lib/Reader.php
+++ b/vendor/sabre/xml/lib/Reader.php
@@ -19,7 +19,7 @@ use XMLReader;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Reader extends XMLReader
+class Reader extends \XMLReader
{
use ContextStackTrait;
@@ -103,7 +103,7 @@ class Reader extends XMLReader
* If the $elementMap argument is specified, the existing elementMap will
* be overridden while parsing the tree, and restored after this process.
*/
- public function parseGetElements(array $elementMap = null): array
+ public function parseGetElements(?array $elementMap = null): array
{
$result = $this->parseInnerTree($elementMap);
if (!is_array($result)) {
@@ -126,7 +126,7 @@ class Reader extends XMLReader
*
* @return array|string|null
*/
- public function parseInnerTree(array $elementMap = null)
+ public function parseInnerTree(?array $elementMap = null)
{
$text = null;
$elements = [];
@@ -205,7 +205,7 @@ class Reader extends XMLReader
$previousDepth = $this->depth;
while ($this->read() && $this->depth != $previousDepth) {
- if (in_array($this->nodeType, [XMLReader::TEXT, XMLReader::CDATA, XMLReader::WHITESPACE])) {
+ if (in_array($this->nodeType, [\XMLReader::TEXT, \XMLReader::CDATA, \XMLReader::WHITESPACE])) {
$result .= $this->value;
}
}
diff --git a/vendor/sabre/xml/lib/Serializer/functions.php b/vendor/sabre/xml/lib/Serializer/functions.php
index 8d0330558..23f22d4c8 100644
--- a/vendor/sabre/xml/lib/Serializer/functions.php
+++ b/vendor/sabre/xml/lib/Serializer/functions.php
@@ -4,7 +4,6 @@ declare(strict_types=1);
namespace Sabre\Xml\Serializer;
-use InvalidArgumentException;
use Sabre\Xml\Writer;
use Sabre\Xml\XmlSerializable;
@@ -197,12 +196,12 @@ function standardSerializer(Writer $writer, $value)
$writer->write($item);
$writer->endElement();
} else {
- throw new InvalidArgumentException('The writer does not know how to serialize arrays with keys of type: '.gettype($name));
+ throw new \InvalidArgumentException('The writer does not know how to serialize arrays with keys of type: '.gettype($name));
}
}
} elseif (is_object($value)) {
- throw new InvalidArgumentException('The writer cannot serialize objects of class: '.get_class($value));
+ throw new \InvalidArgumentException('The writer cannot serialize objects of class: '.get_class($value));
} elseif (!is_null($value)) {
- throw new InvalidArgumentException('The writer cannot serialize values of type: '.gettype($value));
+ throw new \InvalidArgumentException('The writer cannot serialize values of type: '.gettype($value));
}
}
diff --git a/vendor/sabre/xml/lib/Service.php b/vendor/sabre/xml/lib/Service.php
index a8e34d254..6e522630e 100644
--- a/vendor/sabre/xml/lib/Service.php
+++ b/vendor/sabre/xml/lib/Service.php
@@ -105,16 +105,23 @@ class Service
*
* @param string|resource $input
*
- * @throws ParseException
- *
* @return array|object|string
+ *
+ * @throws ParseException
*/
- public function parse($input, string $contextUri = null, string &$rootElementName = null)
+ public function parse($input, ?string $contextUri = null, ?string &$rootElementName = null)
{
- if (is_resource($input)) {
+ if (!is_string($input)) {
// Unfortunately the XMLReader doesn't support streams. When it
// does, we can optimize this.
- $input = (string) stream_get_contents($input);
+ if (is_resource($input)) {
+ $input = (string) stream_get_contents($input);
+ } else {
+ // Input is not a string and not a resource.
+ // Therefore, it has to be a closed resource.
+ // Effectively empty input has been passed in.
+ $input = '';
+ }
}
// If input is empty, then it's safe to throw an exception
@@ -149,16 +156,23 @@ class Service
* @param string|string[] $rootElementName
* @param string|resource $input
*
- * @throws ParseException
- *
* @return array|object|string
+ *
+ * @throws ParseException
*/
- public function expect($rootElementName, $input, string $contextUri = null)
+ public function expect($rootElementName, $input, ?string $contextUri = null)
{
- if (is_resource($input)) {
+ if (!is_string($input)) {
// Unfortunately the XMLReader doesn't support streams. When it
// does, we can optimize this.
- $input = (string) stream_get_contents($input);
+ if (is_resource($input)) {
+ $input = (string) stream_get_contents($input);
+ } else {
+ // Input is not a string and not a resource.
+ // Therefore, it has to be a closed resource.
+ // Effectively empty input has been passed in.
+ $input = '';
+ }
}
// If input is empty, then it's safe to throw an exception
@@ -204,7 +218,7 @@ class Service
*
* @return string
*/
- public function write(string $rootElementName, $value, string $contextUri = null)
+ public function write(string $rootElementName, $value, ?string $contextUri = null)
{
$w = $this->getWriter();
$w->openMemory();
@@ -266,7 +280,7 @@ class Service
*
* @throws \InvalidArgumentException
*/
- public function writeValueObject($object, string $contextUri = null)
+ public function writeValueObject($object, ?string $contextUri = null)
{
if (!isset($this->valueObjectMap[get_class($object)])) {
throw new \InvalidArgumentException('"'.get_class($object).'" is not a registered value object class. Register your class with mapValueObject.');
diff --git a/vendor/sabre/xml/lib/Version.php b/vendor/sabre/xml/lib/Version.php
index 1144bf085..c2da842ec 100644
--- a/vendor/sabre/xml/lib/Version.php
+++ b/vendor/sabre/xml/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '2.2.5';
+ public const VERSION = '2.2.11';
}
diff --git a/vendor/sabre/xml/lib/Writer.php b/vendor/sabre/xml/lib/Writer.php
index e3238a7ed..76989612e 100644
--- a/vendor/sabre/xml/lib/Writer.php
+++ b/vendor/sabre/xml/lib/Writer.php
@@ -30,7 +30,7 @@ use XMLWriter;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Writer extends XMLWriter
+class Writer extends \XMLWriter
{
use ContextStackTrait;
@@ -93,8 +93,6 @@ class Writer extends XMLWriter
* ]
* ]
* ]
- *
- * @param mixed $value
*/
public function write($value)
{
@@ -151,7 +149,7 @@ class Writer extends XMLWriter
if (!$this->namespacesWritten) {
foreach ($this->namespaceMap as $namespace => $prefix) {
- $this->writeAttribute(($prefix ? 'xmlns:'.$prefix : 'xmlns'), $namespace);
+ $this->writeAttribute($prefix ? 'xmlns:'.$prefix : 'xmlns', $namespace);
}
$this->namespacesWritten = true;
}
diff --git a/vendor/sabre/xml/lib/XmlDeserializable.php b/vendor/sabre/xml/lib/XmlDeserializable.php
index 83f33db1e..0a5720334 100644
--- a/vendor/sabre/xml/lib/XmlDeserializable.php
+++ b/vendor/sabre/xml/lib/XmlDeserializable.php
@@ -31,8 +31,6 @@ interface XmlDeserializable
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Reader $reader);
}
diff --git a/vendor/simplepie/simplepie/.php-cs-fixer.dist.php b/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
index d26f7c6c6..ed111568f 100644
--- a/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
+++ b/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
@@ -14,6 +14,8 @@ return (new PhpCsFixer\Config())
'@PHP71Migration:risky' => true,
'void_return' => false,
'@PHPUnit84Migration:risky' => true,
+ 'declare_strict_types' => false,
])
+ ->setRiskyAllowed(true)
->setFinder($finder)
;
diff --git a/vendor/simplepie/simplepie/CHANGELOG.md b/vendor/simplepie/simplepie/CHANGELOG.md
index dba92bbf7..afc58588b 100644
--- a/vendor/simplepie/simplepie/CHANGELOG.md
+++ b/vendor/simplepie/simplepie/CHANGELOG.md
@@ -5,7 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [Unreleased](https://github.com/simplepie/simplepie/compare/1.8.0...master)
+## [Unreleased](https://github.com/simplepie/simplepie/compare/1.8.1...one-dot-eight)
+
+Nothing yet.
+
+## [1.8.1](https://github.com/simplepie/simplepie/compare/1.8.0...1.8.1) - 2024-10-01
+
+### Changed
+
+- Disable Composer lockfile by @jrfnl in [#887](https://github.com/simplepie/simplepie/pull/887), backported in [#895](https://github.com/simplepie/simplepie/pull/895)
+
+### Fixed
+
+- Fixes for PHP 8.4 deprecations by @Girgias, @jrfnl and @jtojnar, backported in [#875](https://github.com/simplepie/simplepie/pull/875)
+- Fix locator with website missing `Content-Type` header by @jtojnar in [#891](https://github.com/simplepie/simplepie/pull/891)
+- Fix `encode` argument of `SimplePie::strip_htmltags()` @jtojnar in [#894](https://github.com/simplepie/simplepie/pull/894), backported in [#898](https://github.com/simplepie/simplepie/pull/898)
+- Reverted `strict_types` by @jtojnar in [#842](https://github.com/simplepie/simplepie/pull/842)
## [1.8.0](https://github.com/simplepie/simplepie/compare/1.7.0...1.8.0) - 2023-01-20
diff --git a/vendor/simplepie/simplepie/README.markdown b/vendor/simplepie/simplepie/README.markdown
index 5500f03c2..ee8d08672 100644
--- a/vendor/simplepie/simplepie/README.markdown
+++ b/vendor/simplepie/simplepie/README.markdown
@@ -18,6 +18,22 @@ Requirements
* PCRE support
+PSR-16: Caching support
+--------------
+
+Since SimplePie 1.8.0 you can use the [PSR-16](https://www.php-fig.org/psr/psr-16/) cache from
+[Symfony](https://symfony.com/doc/current/components/cache.html)
+or [every other implementation](https://packagist.org/providers/psr/simple-cache-implementation).
+
+```php
+$simplepie = new \SimplePie\SimplePie();
+$simplepie->set_cache(
+ new \Symfony\Component\Cache\Psr16Cache(
+ new \Symfony\Component\Cache\Adapter\FilesystemAdapter()
+ ),
+);
+```
+
What comes in the package?
--------------------------
1. `src/` - SimplePie classes for use with the autoloader
diff --git a/vendor/simplepie/simplepie/autoloader.php b/vendor/simplepie/simplepie/autoloader.php
index a19c25476..b1635ff15 100644
--- a/vendor/simplepie/simplepie/autoloader.php
+++ b/vendor/simplepie/simplepie/autoloader.php
@@ -88,7 +88,7 @@ spl_autoload_register(array(new SimplePie_Autoloader(), 'autoload'));
if (!class_exists('SimplePie'))
{
- trigger_error('Autoloader not registered properly', E_USER_ERROR);
+ exit('Autoloader not registered properly');
}
/**
diff --git a/vendor/simplepie/simplepie/composer.json b/vendor/simplepie/simplepie/composer.json
index cfede2b53..f0a800c80 100644
--- a/vendor/simplepie/simplepie/composer.json
+++ b/vendor/simplepie/simplepie/composer.json
@@ -57,6 +57,7 @@
},
"config": {
"bin-dir": "bin",
+ "lock": false,
"sort-packages": true
},
"scripts": {
diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php
index 8a2b334e1..14f5380c2 100755
--- a/vendor/simplepie/simplepie/library/SimplePie.php
+++ b/vendor/simplepie/simplepie/library/SimplePie.php
@@ -1,6 +1,5 @@
cache->load();
- if (! is_array($data)) {
+ if (!is_array($data)) {
return $default;
}
// ignore data if internal cache expiration time is not set
- if (! array_key_exists('__cache_expiration_time', $data)) {
+ if (!array_key_exists('__cache_expiration_time', $data)) {
return $default;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/DB.php b/vendor/simplepie/simplepie/src/Cache/DB.php
index 7994e3210..a5357b26d 100644
--- a/vendor/simplepie/simplepie/src/Cache/DB.php
+++ b/vendor/simplepie/simplepie/src/Cache/DB.php
@@ -1,6 +1,5 @@
data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
} elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
} elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
} elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0];
} else {
$channel = null;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/DataCache.php b/vendor/simplepie/simplepie/src/Cache/DataCache.php
index bf3aebe90..e75413243 100644
--- a/vendor/simplepie/simplepie/src/Cache/DataCache.php
+++ b/vendor/simplepie/simplepie/src/Cache/DataCache.php
@@ -1,6 +1,5 @@
cache->get($key, $default);
- if (! is_array($data) || $data === $default) {
+ if (!is_array($data) || $data === $default) {
return $default;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/Redis.php b/vendor/simplepie/simplepie/src/Cache/Redis.php
index 0effccadb..5997668c0 100644
--- a/vendor/simplepie/simplepie/src/Cache/Redis.php
+++ b/vendor/simplepie/simplepie/src/Cache/Redis.php
@@ -1,6 +1,5 @@
get_length();
if ($length !== null) {
- return round($length/1048576, 2);
+ return round($length / 1048576, 2);
}
return null;
@@ -812,7 +811,7 @@ class Enclosure
* @param array|string $options See first parameter to {@see embed}
* @return string HTML string to output
*/
- public function native_embed($options='')
+ public function native_embed($options = '')
{
return $this->embed($options, true);
}
@@ -943,9 +942,9 @@ class Enclosure
if ($height === 'auto') {
$width = 480;
} elseif ($widescreen) {
- $width = round((intval($height)/9)*16);
+ $width = round((intval($height) / 9) * 16);
} else {
- $width = round((intval($height)/3)*4);
+ $width = round((intval($height) / 3) * 4);
}
} else {
$width = '100%';
@@ -963,9 +962,9 @@ class Enclosure
$height = 360;
}
} elseif ($widescreen) {
- $height = round((intval($width)/16)*9);
+ $height = round((intval($width) / 16) * 9);
} else {
- $height = round((intval($width)/4)*3);
+ $height = round((intval($width) / 4) * 3);
}
} else {
$height = 376;
@@ -1115,7 +1114,7 @@ class Enclosure
$type = 'audio/x-ms-wma';
break;
- // Video mime-types
+ // Video mime-types
case '3gp':
case '3gpp':
$type = 'video/3gpp';
@@ -1178,7 +1177,7 @@ class Enclosure
$type = 'video/x-ms-wvx';
break;
- // Flash mime-types
+ // Flash mime-types
case 'spl':
$type = 'application/futuresplash';
break;
diff --git a/vendor/simplepie/simplepie/src/Exception.php b/vendor/simplepie/simplepie/src/Exception.php
index a20681f55..ae67ae38c 100644
--- a/vendor/simplepie/simplepie/src/Exception.php
+++ b/vendor/simplepie/simplepie/src/Exception.php
@@ -1,6 +1,5 @@
registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) {
if (isset($this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key])) {
$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
+ $this->data['links'][$key] = &$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
} else {
- $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key];
}
} elseif (substr($key, 0, 41) === \SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY) {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ $this->data['links'][substr($key, 41)] = &$this->data['links'][$key];
}
$this->data['links'][$key] = array_unique($this->data['links'][$key]);
}
diff --git a/vendor/simplepie/simplepie/src/Locator.php b/vendor/simplepie/simplepie/src/Locator.php
index 1dc005b47..e17b3a376 100644
--- a/vendor/simplepie/simplepie/src/Locator.php
+++ b/vendor/simplepie/simplepie/src/Locator.php
@@ -1,6 +1,5 @@
encoding, $this->separator);
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
- xml_set_object($xml, $this);
- xml_set_character_data_handler($xml, 'cdata');
- xml_set_element_handler($xml, 'tag_open', 'tag_close');
+ xml_set_character_data_handler($xml, [$this, 'cdata']);
+ xml_set_element_handler($xml, [$this, 'tag_open'], [$this, 'tag_close']);
// Parse!
$wrapper = @is_writable(sys_get_temp_dir()) ? 'php://temp' : 'php://memory';
@@ -303,8 +301,8 @@ class Parser implements RegistryAware
$this->data['data'] .= '>';
}
} else {
- $this->datas[] =& $this->data;
- $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
+ $this->datas[] = &$this->data;
+ $this->data = &$this->data['child'][end($this->namespace)][end($this->element)][];
$this->data = ['data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang)];
if ((end($this->namespace) === \SimplePie\SimplePie::NAMESPACE_ATOM_03 && in_array(end($this->element), ['title', 'tagline', 'copyright', 'info', 'summary', 'content']) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml')
|| (end($this->namespace) === \SimplePie\SimplePie::NAMESPACE_ATOM_10 && in_array(end($this->element), ['rights', 'subtitle', 'summary', 'info', 'title', 'content']) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml')
@@ -334,7 +332,7 @@ class Parser implements RegistryAware
}
}
if ($this->current_xhtml_construct === -1) {
- $this->data =& $this->datas[count($this->datas) - 1];
+ $this->data = &$this->datas[count($this->datas) - 1];
array_pop($this->datas);
}
diff --git a/vendor/simplepie/simplepie/src/Rating.php b/vendor/simplepie/simplepie/src/Rating.php
index f4f303d99..24c27337f 100644
--- a/vendor/simplepie/simplepie/src/Rating.php
+++ b/vendor/simplepie/simplepie/src/Rating.php
@@ -1,6 +1,5 @@
legacyTypes[$type];
}
- if (! array_key_exists($type, $this->default)) {
+ if (!array_key_exists($type, $this->default)) {
return false;
}
@@ -197,7 +196,7 @@ class Registry
$type = $this->legacyTypes[$type];
}
- if (! array_key_exists($type, $this->default)) {
+ if (!array_key_exists($type, $this->default)) {
return null;
}
diff --git a/vendor/simplepie/simplepie/src/RegistryAware.php b/vendor/simplepie/simplepie/src/RegistryAware.php
index 9d60bdd0f..525d93140 100644
--- a/vendor/simplepie/simplepie/src/RegistryAware.php
+++ b/vendor/simplepie/simplepie/src/RegistryAware.php
@@ -1,6 +1,5 @@
registry = $registry;
}
- public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie\Cache', DataCache $cache = null)
+ public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie\Cache', ?DataCache $cache = null)
{
if (isset($enable_cache)) {
$this->enable_cache = (bool) $enable_cache;
@@ -143,7 +142,7 @@ class Sanitize implements RegistryAware
$this->cache_location = (string) $cache_location;
}
- if (! is_string($cache_name_function) && ! is_object($cache_name_function) && ! $cache_name_function instanceof NameFilter) {
+ if (!is_string($cache_name_function) && !is_object($cache_name_function) && !$cache_name_function instanceof NameFilter) {
throw new InvalidArgumentException(sprintf(
'%s(): Argument #3 ($cache_name_function) must be of type %s',
__METHOD__,
@@ -297,7 +296,7 @@ class Sanitize implements RegistryAware
foreach ($domains as $domain) {
$domain = trim($domain, ". \t\n\r\0\x0B");
$segments = array_reverse(explode('.', $domain));
- $node =& $this->https_domains;
+ $node = &$this->https_domains;
foreach ($segments as $segment) {//Build a tree
if ($node === true) {
break;
@@ -305,7 +304,7 @@ class Sanitize implements RegistryAware
if (!isset($node[$segment])) {
$node[$segment] = [];
}
- $node =& $node[$segment];
+ $node = &$node[$segment];
}
$node = true;
}
@@ -316,16 +315,12 @@ class Sanitize implements RegistryAware
*/
protected function is_https_domain($domain)
{
-
- // https://github.com/simplepie/simplepie/issues/852
- $domain = (string) $domain;
-
$domain = trim($domain, '. ');
$segments = array_reverse(explode('.', $domain));
- $node =& $this->https_domains;
+ $node = &$this->https_domains;
foreach ($segments as $segment) {//Explore the tree
if (isset($node[$segment])) {
- $node =& $node[$segment];
+ $node = &$node[$segment];
} else {
break;
}
diff --git a/vendor/simplepie/simplepie/src/SimplePie.php b/vendor/simplepie/simplepie/src/SimplePie.php
index 1dfa39fad..a0f6c17f4 100644
--- a/vendor/simplepie/simplepie/src/SimplePie.php
+++ b/vendor/simplepie/simplepie/src/SimplePie.php
@@ -1,6 +1,5 @@
set_useragent();
@@ -803,7 +801,7 @@ class SimplePie
if ($file instanceof \SimplePie\File) {
$this->feed_url = $file->url;
$this->permanent_url = $this->feed_url;
- $this->file =& $file;
+ $this->file = &$file;
return true;
}
return false;
@@ -1375,7 +1373,7 @@ class SimplePie
}
$this->sanitize->strip_htmltags($tags);
if ($encode !== null) {
- $this->sanitize->encode_instead_of_strip($tags);
+ $this->sanitize->encode_instead_of_strip($encode);
}
}
@@ -1666,7 +1664,7 @@ class SimplePie
// Cache the file if caching is enabled
$this->data['cache_expiration_time'] = $this->cache_duration + time();
- if ($cache && ! $cache->set_data($this->get_cache_filename($this->feed_url), $this->data, $this->cache_duration)) {
+ if ($cache && !$cache->set_data($this->get_cache_filename($this->feed_url), $this->data, $this->cache_duration)) {
trigger_error("$this->cache_location is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
}
return true;
@@ -1716,7 +1714,7 @@ class SimplePie
$cache = new BaseDataCache($cache);
}
- if ($cache !== false && ! $cache instanceof DataCache) {
+ if ($cache !== false && !$cache instanceof DataCache) {
throw new InvalidArgumentException(sprintf(
'%s(): Argument #1 ($cache) must be of type %s|false',
__METHOD__,
@@ -1774,7 +1772,7 @@ class SimplePie
$headers['if-none-match'] = $this->data['headers']['etag'];
}
- $file = $this->registry->create(File::class, [$this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options]);
+ $file = $this->registry->create(File::class, [$this->feed_url, $this->timeout / 10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options]);
$this->status_code = $file->status_code;
if ($file->success) {
@@ -1811,7 +1809,7 @@ class SimplePie
// If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
if (!isset($file)) {
if ($this->file instanceof \SimplePie\File && $this->file->url === $this->feed_url) {
- $file =& $this->file;
+ $file = &$this->file;
} else {
$headers = [
'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
@@ -1833,7 +1831,7 @@ class SimplePie
if (!$locate->is_feed($file)) {
$copyStatusCode = $file->status_code;
- $copyContentType = $file->headers['content-type'];
+ $copyContentType = $file->headers['content-type'] ?? '';
try {
$microformats = false;
if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
@@ -2641,12 +2639,12 @@ class SimplePie
if ($this->registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) {
if (isset($this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key])) {
$this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key];
+ $this->data['links'][$key] = &$this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key];
} else {
- $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key];
}
} elseif (substr($key, 0, 41) === self::IANA_LINK_RELATIONS_REGISTRY) {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ $this->data['links'][substr($key, 41)] = &$this->data['links'][$key];
}
$this->data['links'][$key] = array_unique($this->data['links'][$key]);
}
@@ -3103,7 +3101,7 @@ class SimplePie
$trace = debug_backtrace();
$file = $trace[0]['file'];
$line = $trace[0]['line'];
- trigger_error("Call to undefined method $class::$method() in $file on line $line", E_USER_ERROR);
+ throw new SimplePieException("Call to undefined method $class::$method() in $file on line $line");
}
/**
diff --git a/vendor/simplepie/simplepie/src/Source.php b/vendor/simplepie/simplepie/src/Source.php
index c7ed11600..5a8f86de9 100644
--- a/vendor/simplepie/simplepie/src/Source.php
+++ b/vendor/simplepie/simplepie/src/Source.php
@@ -1,6 +1,5 @@
registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) {
if (isset($this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key])) {
$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
+ $this->data['links'][$key] = &$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
} else {
- $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key];
}
} elseif (substr($key, 0, 41) === \SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY) {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ $this->data['links'][substr($key, 41)] = &$this->data['links'][$key];
}
$this->data['links'][$key] = array_unique($this->data['links'][$key]);
}
diff --git a/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
index 5062e683f..59a0d83ee 100644
--- a/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
+++ b/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
@@ -1,6 +1,5 @@
default_resource_type}:{$template_name}" :
$template_name;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
index db68f9bfd..8a801b4d2 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
@@ -44,15 +44,15 @@ abstract class Smarty_CacheResource
/**
* Read the cached template and process header
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param boolean $update flag if called because cache update
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached|null $cached cached object
+ * @param boolean $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
abstract public function process(
Smarty_Internal_Template $_template,
- Smarty_Template_Cached $cached = null,
+ ?Smarty_Template_Cached $cached = null,
$update = false
);
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
index 68ad11289..af2274815 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
@@ -124,15 +124,15 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
/**
* Read the cached template and process the header
*
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- * @param Smarty_Template_Cached $cached cached object
- * @param boolean $update flag if called because cache update
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached|null $cached cached object
+ * @param boolean $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
public function process(
Smarty_Internal_Template $_smarty_tpl,
- Smarty_Template_Cached $cached = null,
+ ?Smarty_Template_Cached $cached = null,
$update = false
) {
if (!$cached) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
index 4b1c0f6d8..92c699ebc 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
@@ -88,15 +88,15 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
/**
* Read the cached template and process the header
*
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- * @param Smarty_Template_Cached $cached cached object
- * @param boolean $update flag if called because cache update
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached|null $cached cached object
+ * @param boolean $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
public function process(
Smarty_Internal_Template $_smarty_tpl,
- Smarty_Template_Cached $cached = null,
+ ?Smarty_Template_Cached $cached = null,
$update = false
) {
if (!$cached) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
index c77ae9e17..9d64c5a3e 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -88,15 +88,15 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
/**
* Read the cached template and process its header
*
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached|null $cached cached object
+ * @param bool $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
public function process(
Smarty_Internal_Template $_smarty_tpl,
- Smarty_Template_Cached $cached = null,
+ ?Smarty_Template_Cached $cached = null,
$update = false
) {
$_smarty_tpl->cached->valid = false;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
index 1b64185b8..c7ce61595 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
@@ -190,7 +190,7 @@ abstract class Smarty_Internal_Data
*
* @return mixed variable value or or array of variables
*/
- public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
+ public function getTemplateVars($varName = null, ?Smarty_Internal_Data $_ptr = null, $searchParents = true)
{
return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents);
}
@@ -200,7 +200,7 @@ abstract class Smarty_Internal_Data
*
* @param \Smarty_Internal_Data|null $data
*/
- public function _mergeVars(Smarty_Internal_Data $data = null)
+ public function _mergeVars(?Smarty_Internal_Data $data = null)
{
if (isset($data)) {
if (!empty($this->tpl_vars)) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
index c684c0870..59027203b 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
@@ -24,14 +24,14 @@ class Smarty_Internal_Method_CreateData
* @api Smarty::createData()
* @link https://www.smarty.net/docs/en/api.create.data.tpl
*
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty $parent next higher level of Smarty
- * variables
- * @param string $name optional data block name
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty|null $parent next higher level of Smarty
+ * variables
+ * @param string $name optional data block name
*
* @return \Smarty_Data data object
*/
- public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null)
+ public function createData(Smarty_Internal_TemplateBase $obj, ?Smarty_Internal_Data $parent = null, $name = null)
{
/* @var Smarty $smarty */
$smarty = $obj->_getSmartyObj();
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
index 0470785b1..bac17f5bf 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
@@ -24,17 +24,17 @@ class Smarty_Internal_Method_GetTemplateVars
* @api Smarty::getTemplateVars()
* @link https://www.smarty.net/docs/en/api.get.template.vars.tpl
*
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName variable name or null
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents include parent templates?
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $varName variable name or null
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty|null $_ptr optional pointer to data object
+ * @param bool $searchParents include parent templates?
*
* @return mixed variable value or or array of variables
*/
public function getTemplateVars(
Smarty_Internal_Data $data,
$varName = null,
- Smarty_Internal_Data $_ptr = null,
+ ?Smarty_Internal_Data $_ptr = null,
$searchParents = true
) {
if (isset($varName)) {
@@ -87,7 +87,7 @@ class Smarty_Internal_Method_GetTemplateVars
public function _getVariable(
Smarty_Internal_Data $data,
$varName,
- Smarty_Internal_Data $_ptr = null,
+ ?Smarty_Internal_Data $_ptr = null,
$searchParents = true,
$errorEnable = true
) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
index 3b552a589..ba306444e 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
@@ -22,11 +22,11 @@ class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Internal_Template|null $_template template object
*
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
$source->uid = $source->filepath = sha1($source->name);
$source->timestamp = $source->exists = true;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
index 80946932e..2b2253246 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
@@ -28,11 +28,11 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Internal_Template|null $_template template object
*
* @throws SmartyException
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
$uid = '';
$sources = array();
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
index ae2060673..fd0befd53 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
@@ -21,11 +21,11 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Internal_Template|null $_template template object
*
* @throws \SmartyException
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
$source->filepath = $this->buildFilepath($source, $_template);
if ($source->filepath !== false) {
@@ -93,12 +93,12 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
* build template filepath by traversing the template_dir array
*
* @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Internal_Template|null $_template template object
*
* @return string fully qualified filepath
* @throws SmartyException
*/
- protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ protected function buildFilepath(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
$file = $source->name;
// absolute file ?
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
index 5f0203498..632e58f42 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
@@ -23,11 +23,11 @@ class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Internal_Template|null $_template template object
*
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
if (strpos($source->resource, '://') !== false) {
$source->filepath = $source->resource;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
index 3fecbb7ef..7b69faa9a 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
@@ -22,11 +22,11 @@ class Smarty_Internal_Resource_String extends Smarty_Resource
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Internal_Template|null $_template template object
*
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
$source->uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir);
$source->timestamp = $source->exists = true;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
index d0ca751e2..37a881092 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
@@ -17,11 +17,11 @@ class Smarty_Internal_Runtime_CodeFrame
/**
* Create code frame for compiled and cached templates
*
- * @param Smarty_Internal_Template $_template
- * @param string $content optional template content
- * @param string $functions compiled template function and block code
- * @param bool $cache flag for cache file
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param Smarty_Internal_Template $_template
+ * @param string $content optional template content
+ * @param string $functions compiled template function and block code
+ * @param bool $cache flag for cache file
+ * @param \Smarty_Internal_TemplateCompilerBase|null $compiler
*
* @return string
*/
@@ -30,7 +30,7 @@ class Smarty_Internal_Runtime_CodeFrame
$content = '',
$functions = '',
$cache = false,
- Smarty_Internal_TemplateCompilerBase $compiler = null
+ ?Smarty_Internal_TemplateCompilerBase $compiler = null
) {
// build property code
$properties[ 'version' ] = Smarty::SMARTY_VERSION;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
index 8f7f02d59..52faf5a4e 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
@@ -168,7 +168,7 @@ class Smarty_Internal_Runtime_Inheritance
public function process(
Smarty_Internal_Template $tpl,
Smarty_Internal_Block $block,
- Smarty_Internal_Block $parent = null
+ ?Smarty_Internal_Block $parent = null
) {
if ($block->hide && !isset($block->child)) {
return;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
index 72d1d52e0..93731a5d1 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
@@ -149,7 +149,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
public function __construct(
$template_resource,
Smarty $smarty,
- Smarty_Internal_Data $_parent = null,
+ ?Smarty_Internal_Data $_parent = null,
$_cache_id = null,
$_compile_id = null,
$_caching = null,
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
index 03797f7f8..254e1bf2e 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -386,7 +386,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
public function compileTemplate(
Smarty_Internal_Template $template,
$nocache = null,
- Smarty_Internal_TemplateCompilerBase $parent_compiler = null
+ ?Smarty_Internal_TemplateCompilerBase $parent_compiler = null
) {
// get code frame of compiled template
$_compiled_code = $template->smarty->ext->_codeFrame->create(
@@ -407,9 +407,9 @@ abstract class Smarty_Internal_TemplateCompilerBase
/**
* Compile template source and run optional post filter
*
- * @param \Smarty_Internal_Template $template
- * @param null|bool $nocache flag if template must be compiled in nocache mode
- * @param \Smarty_Internal_TemplateCompilerBase $parent_compiler
+ * @param \Smarty_Internal_Template $template
+ * @param null|bool $nocache flag if template must be compiled in nocache mode
+ * @param \Smarty_Internal_TemplateCompilerBase|null $parent_compiler
*
* @return string
* @throws \Exception
@@ -417,7 +417,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
public function compileTemplateSource(
Smarty_Internal_Template $template,
$nocache = null,
- Smarty_Internal_TemplateCompilerBase $parent_compiler = null
+ ?Smarty_Internal_TemplateCompilerBase $parent_compiler = null
) {
try {
// save template object in compiler class
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
index 3c43a9f46..fe7751172 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
@@ -165,16 +165,16 @@ abstract class Smarty_Resource
* wrapper for backward compatibility to versions < 3.1.22
* Either [$_template] or [$smarty, $template_resource] must be specified
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
+ * @param Smarty_Internal_Template|null $_template template object
+ * @param Smarty|null $smarty smarty object
+ * @param string $template_resource resource identifier
*
* @return \Smarty_Template_Source Source Object
* @throws \SmartyException
*/
public static function source(
- Smarty_Internal_Template $_template = null,
- Smarty $smarty = null,
+ ?Smarty_Internal_Template $_template = null,
+ ?Smarty $smarty = null,
$template_resource = null
) {
return Smarty_Template_Source::load($_template, $smarty, $template_resource);
@@ -193,10 +193,10 @@ abstract class Smarty_Resource
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template|null $_template template object
*/
- abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
+ abstract public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null);
/**
* populate Source Object with timestamp and exists from Resource
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
index 191fa7c90..a73f559c3 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
@@ -42,10 +42,10 @@ abstract class Smarty_Resource_Custom extends Smarty_Resource
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template|null $_template template object
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ public function populate(Smarty_Template_Source $source, ?Smarty_Internal_Template $_template = null)
{
$source->filepath = $source->type . ':' . $this->generateSafeName($source->name);
$source->uid = sha1($source->type . ':' . $source->name);
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
index 850ae32e7..66297304d 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
@@ -63,16 +63,16 @@ class Smarty_Template_Config extends Smarty_Template_Source
* initialize Source Object for given resource
* Either [$_template] or [$smarty, $template_resource] must be specified
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
+ * @param Smarty_Internal_Template|null $_template template object
+ * @param Smarty|null $smarty smarty object
+ * @param string $template_resource resource identifier
*
* @return Smarty_Template_Config Source Object
* @throws SmartyException
*/
public static function load(
- Smarty_Internal_Template $_template = null,
- Smarty $smarty = null,
+ ?Smarty_Internal_Template $_template = null,
+ ?Smarty $smarty = null,
$template_resource = null
) {
static $_incompatible_resources = array('extends' => true, 'php' => true);
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
index 16b47f23c..06053a691 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
@@ -148,16 +148,16 @@ class Smarty_Template_Source
* initialize Source Object for given resource
* Either [$_template] or [$smarty, $template_resource] must be specified
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
+ * @param Smarty_Internal_Template|null $_template template object
+ * @param Smarty|null $smarty smarty object
+ * @param string $template_resource resource identifier
*
* @return Smarty_Template_Source Source Object
* @throws SmartyException
*/
public static function load(
- Smarty_Internal_Template $_template = null,
- Smarty $smarty = null,
+ ?Smarty_Internal_Template $_template = null,
+ ?Smarty $smarty = null,
$template_resource = null
) {
if ($_template) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
index 0a0a32351..755749c28 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
@@ -21,7 +21,7 @@ class SmartyCompilerException extends SmartyException
int $code = 0,
?string $filename = null,
?int $line = null,
- Throwable $previous = null
+ ?Throwable $previous = null
) {
parent::__construct($message, $code, $previous);
diff --git a/vendor/smarty/smarty/run-tests-for-all-php-versions.sh b/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
index 23541b519..850ab3f9a 100755
--- a/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
+++ b/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
@@ -14,4 +14,5 @@ $COMPOSE_CMD run --rm php74 ./run-tests.sh $@ && \
$COMPOSE_CMD run --rm php80 ./run-tests.sh $@ && \
$COMPOSE_CMD run --rm php81 ./run-tests.sh $@ && \
$COMPOSE_CMD run --rm php82 ./run-tests.sh $@ && \
-$COMPOSE_CMD run --rm php83 ./run-tests.sh $@
+$COMPOSE_CMD run --rm php83 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php84 ./run-tests.sh $@
diff --git a/vendor/spomky-labs/otphp/composer.json b/vendor/spomky-labs/otphp/composer.json
index 33901f793..bff1e48f3 100644
--- a/vendor/spomky-labs/otphp/composer.json
+++ b/vendor/spomky-labs/otphp/composer.json
@@ -16,13 +16,15 @@
}
],
"require": {
- "php": "^8.1",
+ "php": ">=8.1",
"ext-mbstring": "*",
- "paragonie/constant_time_encoding": "^2.0"
+ "paragonie/constant_time_encoding": "^2.0 || ^3.0",
+ "psr/clock": "^1.0",
+ "symfony/deprecation-contracts": "^3.2"
},
"require-dev": {
"ekino/phpstan-banned-code": "^1.0",
- "infection/infection": "^0.26|^0.27|^0.28",
+ "infection/infection": "^0.26|^0.27|^0.28|^0.29",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-deprecation-rules": "^1.0",
@@ -30,7 +32,7 @@
"phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^9.5.26|^10.0|^11.0",
"qossmic/deptrac-shim": "^1.0",
- "rector/rector": "1.0",
+ "rector/rector": "^1.0",
"symfony/phpunit-bridge": "^6.1|^7.0",
"symplify/easy-coding-standard": "^12.0"
},
diff --git a/vendor/spomky-labs/otphp/src/Factory.php b/vendor/spomky-labs/otphp/src/Factory.php
index f58e8385c..4bf41a84a 100644
--- a/vendor/spomky-labs/otphp/src/Factory.php
+++ b/vendor/spomky-labs/otphp/src/Factory.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace OTPHP;
use InvalidArgumentException;
+use Psr\Clock\ClockInterface;
use Throwable;
use function assert;
use function count;
@@ -16,7 +17,7 @@ use function count;
*/
final class Factory implements FactoryInterface
{
- public static function loadFromProvisioningUri(string $uri): OTPInterface
+ public static function loadFromProvisioningUri(string $uri, ?ClockInterface $clock = null): OTPInterface
{
try {
$parsed_url = Url::fromString($uri);
@@ -24,8 +25,16 @@ final class Factory implements FactoryInterface
} catch (Throwable $throwable) {
throw new InvalidArgumentException('Not a valid OTP provisioning URI', $throwable->getCode(), $throwable);
}
+ if ($clock === null) {
+ trigger_deprecation(
+ 'spomky-labs/otphp',
+ '11.3.0',
+ 'The parameter "$clock" will become mandatory in 12.0.0. Please set a valid PSR Clock implementation instead of "null".'
+ );
+ $clock = new InternalClock();
+ }
- $otp = self::createOTP($parsed_url);
+ $otp = self::createOTP($parsed_url, $clock);
self::populateOTP($otp, $parsed_url);
@@ -62,11 +71,11 @@ final class Factory implements FactoryInterface
$otp->setIssuer($result[0]);
}
- private static function createOTP(Url $parsed_url): OTPInterface
+ private static function createOTP(Url $parsed_url, ClockInterface $clock): OTPInterface
{
switch ($parsed_url->getHost()) {
case 'totp':
- $totp = TOTP::createFromSecret($parsed_url->getSecret());
+ $totp = TOTP::createFromSecret($parsed_url->getSecret(), $clock);
$totp->setLabel(self::getLabel($parsed_url->getPath()));
return $totp;
diff --git a/vendor/spomky-labs/otphp/src/HOTP.php b/vendor/spomky-labs/otphp/src/HOTP.php
index 1588d48aa..835de35f3 100644
--- a/vendor/spomky-labs/otphp/src/HOTP.php
+++ b/vendor/spomky-labs/otphp/src/HOTP.php
@@ -46,6 +46,9 @@ final class HOTP extends OTP implements HOTPInterface
return self::createFromSecret(self::generateSecret());
}
+ /**
+ * @return 0|positive-int
+ */
public function getCounter(): int
{
$value = $this->getParameter('counter');
@@ -63,6 +66,8 @@ final class HOTP extends OTP implements HOTPInterface
/**
* If the counter is not provided, the OTP is verified at the actual counter.
+ *
+ * @param null|0|positive-int $counter
*/
public function verify(string $otp, null|int $counter = null, null|int $window = null): bool
{
@@ -97,9 +102,6 @@ final class HOTP extends OTP implements HOTPInterface
]];
}
- /**
- * @param positive-int $counter
- */
private function updateCounter(int $counter): void
{
$this->setCounter($counter);
diff --git a/vendor/spomky-labs/otphp/src/HOTPInterface.php b/vendor/spomky-labs/otphp/src/HOTPInterface.php
index 449e9383b..915569a03 100644
--- a/vendor/spomky-labs/otphp/src/HOTPInterface.php
+++ b/vendor/spomky-labs/otphp/src/HOTPInterface.php
@@ -10,8 +10,6 @@ interface HOTPInterface extends OTPInterface
/**
* The initial counter (a positive integer).
- *
- * @return 0|positive-int
*/
public function getCounter(): int;
@@ -34,8 +32,5 @@ interface HOTPInterface extends OTPInterface
int $digits = 6
): self;
- /**
- * @param 0|positive-int $counter
- */
public function setCounter(int $counter): void;
}
diff --git a/vendor/spomky-labs/otphp/src/InternalClock.php b/vendor/spomky-labs/otphp/src/InternalClock.php
new file mode 100644
index 000000000..8be469318
--- /dev/null
+++ b/vendor/spomky-labs/otphp/src/InternalClock.php
@@ -0,0 +1,19 @@
+generateOTP($input);
@@ -134,9 +137,6 @@ abstract class OTP implements OTPInterface
return $decoded;
}
- /**
- * @param 0|positive-int $int
- */
private function intToByteString(int $int): string
{
$result = [];
diff --git a/vendor/spomky-labs/otphp/src/OTPInterface.php b/vendor/spomky-labs/otphp/src/OTPInterface.php
index f14eef9f4..39ce4acd0 100644
--- a/vendor/spomky-labs/otphp/src/OTPInterface.php
+++ b/vendor/spomky-labs/otphp/src/OTPInterface.php
@@ -27,9 +27,6 @@ interface OTPInterface
*/
public function setSecret(string $secret): void;
- /**
- * @param positive-int $digits
- */
public function setDigits(int $digits): void;
/**
@@ -38,6 +35,8 @@ interface OTPInterface
public function setDigest(string $digest): void;
/**
+ * Generate the OTP at the specified input.
+ *
* @param 0|positive-int $input
*
* @return non-empty-string Return the OTP at the specified timestamp
diff --git a/vendor/spomky-labs/otphp/src/TOTP.php b/vendor/spomky-labs/otphp/src/TOTP.php
index 8a1cfeba1..035e04f95 100644
--- a/vendor/spomky-labs/otphp/src/TOTP.php
+++ b/vendor/spomky-labs/otphp/src/TOTP.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace OTPHP;
use InvalidArgumentException;
+use Psr\Clock\ClockInterface;
use function assert;
use function is_int;
@@ -13,16 +14,34 @@ use function is_int;
*/
final class TOTP extends OTP implements TOTPInterface
{
+ private readonly ClockInterface $clock;
+
+ public function __construct(string $secret, ?ClockInterface $clock = null)
+ {
+ parent::__construct($secret);
+ if ($clock === null) {
+ trigger_deprecation(
+ 'spomky-labs/otphp',
+ '11.3.0',
+ 'The parameter "$clock" will become mandatory in 12.0.0. Please set a valid PSR Clock implementation instead of "null".'
+ );
+ $clock = new InternalClock();
+ }
+
+ $this->clock = $clock;
+ }
+
public static function create(
null|string $secret = null,
int $period = self::DEFAULT_PERIOD,
string $digest = self::DEFAULT_DIGEST,
int $digits = self::DEFAULT_DIGITS,
- int $epoch = self::DEFAULT_EPOCH
+ int $epoch = self::DEFAULT_EPOCH,
+ ?ClockInterface $clock = null
): self {
$totp = $secret !== null
- ? self::createFromSecret($secret)
- : self::generate()
+ ? self::createFromSecret($secret, $clock)
+ : self::generate($clock)
;
$totp->setPeriod($period);
$totp->setDigest($digest);
@@ -32,9 +51,9 @@ final class TOTP extends OTP implements TOTPInterface
return $totp;
}
- public static function createFromSecret(string $secret): self
+ public static function createFromSecret(string $secret, ?ClockInterface $clock = null): self
{
- $totp = new self($secret);
+ $totp = new self($secret, $clock);
$totp->setPeriod(self::DEFAULT_PERIOD);
$totp->setDigest(self::DEFAULT_DIGEST);
$totp->setDigits(self::DEFAULT_DIGITS);
@@ -43,9 +62,9 @@ final class TOTP extends OTP implements TOTPInterface
return $totp;
}
- public static function generate(): self
+ public static function generate(?ClockInterface $clock = null): self
{
- return self::createFromSecret(self::generateSecret());
+ return self::createFromSecret(self::generateSecret(), $clock);
}
public function getPeriod(): int
@@ -68,9 +87,14 @@ final class TOTP extends OTP implements TOTPInterface
{
$period = $this->getPeriod();
- return $period - (time() % $this->getPeriod());
+ return $period - ($this->clock->now()->getTimestamp() % $this->getPeriod());
}
+ /**
+ * The OTP at the specified input.
+ *
+ * @param 0|positive-int $input
+ */
public function at(int $input): string
{
return $this->generateOTP($this->timecode($input));
@@ -78,16 +102,24 @@ final class TOTP extends OTP implements TOTPInterface
public function now(): string
{
- return $this->at(time());
+ $timestamp = $this->clock->now()
+ ->getTimestamp();
+ assert($timestamp >= 0, 'The timestamp must return a positive integer.');
+
+ return $this->at($timestamp);
}
/**
* If no timestamp is provided, the OTP is verified at the actual timestamp. When used, the leeway parameter will
* allow time drift. The passed value is in seconds.
+ *
+ * @param 0|positive-int $timestamp
+ * @param null|0|positive-int $leeway
*/
public function verify(string $otp, null|int $timestamp = null, null|int $leeway = null): bool
{
- $timestamp ??= time();
+ $timestamp ??= $this->clock->now()
+ ->getTimestamp();
$timestamp >= 0 || throw new InvalidArgumentException('Timestamp must be at least 0.');
if ($leeway === null) {
@@ -98,8 +130,12 @@ final class TOTP extends OTP implements TOTPInterface
$leeway < $this->getPeriod() || throw new InvalidArgumentException(
'The leeway must be lower than the TOTP period'
);
+ $timestampMinusLeeway = $timestamp - $leeway;
+ $timestampMinusLeeway >= 0 || throw new InvalidArgumentException(
+ 'The timestamp must be greater than or equal to the leeway.'
+ );
- return $this->compareOTP($this->at($timestamp - $leeway), $otp)
+ return $this->compareOTP($this->at($timestampMinusLeeway), $otp)
|| $this->compareOTP($this->at($timestamp), $otp)
|| $this->compareOTP($this->at($timestamp + $leeway), $otp);
}
diff --git a/vendor/spomky-labs/otphp/src/TOTPInterface.php b/vendor/spomky-labs/otphp/src/TOTPInterface.php
index 47ef16ac0..a79fedcce 100644
--- a/vendor/spomky-labs/otphp/src/TOTPInterface.php
+++ b/vendor/spomky-labs/otphp/src/TOTPInterface.php
@@ -29,14 +29,8 @@ interface TOTPInterface extends OTPInterface
int $digits = self::DEFAULT_DIGITS
): self;
- /**
- * @param positive-int $period
- */
public function setPeriod(int $period): void;
- /**
- * @param 0|positive-int $epoch
- */
public function setEpoch(int $epoch): void;
/**
@@ -48,18 +42,10 @@ interface TOTPInterface extends OTPInterface
/**
* Get the period of time for OTP generation (a non-null positive integer, in second).
- *
- * @return positive-int
*/
public function getPeriod(): int;
- /**
- * @return 0|positive-int
- */
public function expiresIn(): int;
- /**
- * @return 0|positive-int
- */
public function getEpoch(): int;
}
diff --git a/vendor/spomky-labs/otphp/src/Url.php b/vendor/spomky-labs/otphp/src/Url.php
index a97ca6821..e88cd6d29 100644
--- a/vendor/spomky-labs/otphp/src/Url.php
+++ b/vendor/spomky-labs/otphp/src/Url.php
@@ -80,7 +80,6 @@ final class Url
array_key_exists($key, $parsed_url) || throw new InvalidArgumentException(
'Not a valid OTP provisioning URI'
);
- is_string($parsed_url[$key]) || throw new InvalidArgumentException('Not a valid OTP provisioning URI');
}
$scheme = $parsed_url['scheme'] ?? null;
$host = $parsed_url['host'] ?? null;
diff --git a/vendor/symfony/polyfill-php81/LICENSE b/vendor/symfony/polyfill-php81/LICENSE
deleted file mode 100644
index 99c6bdf35..000000000
--- a/vendor/symfony/polyfill-php81/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2021-present Fabien Potencier
-
-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.
diff --git a/vendor/symfony/polyfill-php81/Php81.php b/vendor/symfony/polyfill-php81/Php81.php
deleted file mode 100644
index f0507b765..000000000
--- a/vendor/symfony/polyfill-php81/Php81.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php81;
-
-/**
- * @author Nicolas Grekas
- *
- * @internal
- */
-final class Php81
-{
- public static function array_is_list(array $array): bool
- {
- if ([] === $array || $array === array_values($array)) {
- return true;
- }
-
- $nextKey = -1;
-
- foreach ($array as $k => $v) {
- if ($k !== ++$nextKey) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/vendor/symfony/polyfill-php81/README.md b/vendor/symfony/polyfill-php81/README.md
deleted file mode 100644
index c07ef7820..000000000
--- a/vendor/symfony/polyfill-php81/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Symfony Polyfill / Php81
-========================
-
-This component provides features added to PHP 8.1 core:
-
-- [`array_is_list`](https://php.net/array_is_list)
-- [`enum_exists`](https://php.net/enum-exists)
-- [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant
-- [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types)
-- [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php
deleted file mode 100644
index 5ff93fcaf..000000000
--- a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) {
- /**
- * @property string $data
- */
- class CURLStringFile extends CURLFile
- {
- private $data;
-
- public function __construct(string $data, string $postname, string $mime = 'application/octet-stream')
- {
- $this->data = $data;
- parent::__construct('data://application/octet-stream;base64,'.base64_encode($data), $mime, $postname);
- }
-
- public function __set(string $name, $value): void
- {
- if ('data' !== $name) {
- $this->$name = $value;
-
- return;
- }
-
- if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) {
- throw new TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string');
- }
-
- $this->name = 'data://application/octet-stream;base64,'.base64_encode($value);
- }
-
- public function __isset(string $name): bool
- {
- return isset($this->$name);
- }
-
- public function &__get(string $name)
- {
- return $this->$name;
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php
deleted file mode 100644
index cb7720a8d..000000000
--- a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-if (\PHP_VERSION_ID < 80100) {
- #[Attribute(Attribute::TARGET_METHOD)]
- final class ReturnTypeWillChange
- {
- public function __construct()
- {
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php81/bootstrap.php b/vendor/symfony/polyfill-php81/bootstrap.php
deleted file mode 100644
index 9f872e02f..000000000
--- a/vendor/symfony/polyfill-php81/bootstrap.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php81 as p;
-
-if (\PHP_VERSION_ID >= 80100) {
- return;
-}
-
-if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) {
- define('MYSQLI_REFRESH_REPLICA', 64);
-}
-
-if (!function_exists('array_is_list')) {
- function array_is_list(array $array): bool { return p\Php81::array_is_list($array); }
-}
-
-if (!function_exists('enum_exists')) {
- function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; }
-}
diff --git a/vendor/symfony/polyfill-php81/composer.json b/vendor/symfony/polyfill-php81/composer.json
deleted file mode 100644
index 28b6408ea..000000000
--- a/vendor/symfony/polyfill-php81/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "symfony/polyfill-php81",
- "type": "library",
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
- "keywords": ["polyfill", "shim", "compatibility", "portable"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=7.2"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Php81\\": "" },
- "files": [ "bootstrap.php" ],
- "classmap": [ "Resources/stubs" ]
- },
- "minimum-stability": "dev",
- "extra": {
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/symfony/var-exporter/CHANGELOG.md b/vendor/symfony/var-exporter/CHANGELOG.md
new file mode 100644
index 000000000..fdca002cb
--- /dev/null
+++ b/vendor/symfony/var-exporter/CHANGELOG.md
@@ -0,0 +1,25 @@
+CHANGELOG
+=========
+
+6.4
+---
+
+ * Deprecate per-property lazy-initializers
+
+6.2
+---
+
+ * Add support for lazy ghost objects and virtual proxies
+ * Add `Hydrator::hydrate()`
+ * Preserve PHP references also when using `Hydrator::hydrate()` or `Instantiator::instantiate()`
+ * Add support for hydrating from native (array) casts
+
+5.1.0
+-----
+
+ * added argument `array &$foundClasses` to `VarExporter::export()` to ease with preloading exported values
+
+4.2.0
+-----
+
+ * added the component
diff --git a/vendor/symfony/var-exporter/Exception/ClassNotFoundException.php b/vendor/symfony/var-exporter/Exception/ClassNotFoundException.php
new file mode 100644
index 000000000..379a76517
--- /dev/null
+++ b/vendor/symfony/var-exporter/Exception/ClassNotFoundException.php
@@ -0,0 +1,20 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+class ClassNotFoundException extends \Exception implements ExceptionInterface
+{
+ public function __construct(string $class, ?\Throwable $previous = null)
+ {
+ parent::__construct(sprintf('Class "%s" not found.', $class), 0, $previous);
+ }
+}
diff --git a/vendor/symfony/var-exporter/Exception/ExceptionInterface.php b/vendor/symfony/var-exporter/Exception/ExceptionInterface.php
new file mode 100644
index 000000000..adfaed47c
--- /dev/null
+++ b/vendor/symfony/var-exporter/Exception/ExceptionInterface.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+interface ExceptionInterface extends \Throwable
+{
+}
diff --git a/vendor/symfony/var-exporter/Exception/LogicException.php b/vendor/symfony/var-exporter/Exception/LogicException.php
new file mode 100644
index 000000000..619d0559a
--- /dev/null
+++ b/vendor/symfony/var-exporter/Exception/LogicException.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+class LogicException extends \LogicException implements ExceptionInterface
+{
+}
diff --git a/vendor/symfony/var-exporter/Exception/NotInstantiableTypeException.php b/vendor/symfony/var-exporter/Exception/NotInstantiableTypeException.php
new file mode 100644
index 000000000..b9ba225d8
--- /dev/null
+++ b/vendor/symfony/var-exporter/Exception/NotInstantiableTypeException.php
@@ -0,0 +1,20 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+class NotInstantiableTypeException extends \Exception implements ExceptionInterface
+{
+ public function __construct(string $type, ?\Throwable $previous = null)
+ {
+ parent::__construct(sprintf('Type "%s" is not instantiable.', $type), 0, $previous);
+ }
+}
diff --git a/vendor/symfony/var-exporter/Hydrator.php b/vendor/symfony/var-exporter/Hydrator.php
new file mode 100644
index 000000000..5f456fb3c
--- /dev/null
+++ b/vendor/symfony/var-exporter/Hydrator.php
@@ -0,0 +1,78 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\VarExporter\Internal\Hydrator as InternalHydrator;
+
+/**
+ * Utility class to hydrate the properties of an object.
+ *
+ * @author Nicolas Grekas
+ */
+final class Hydrator
+{
+ /**
+ * Sets the properties of an object, including private and protected ones.
+ *
+ * For example:
+ *
+ * // Sets the public or protected $object->propertyName property
+ * Hydrator::hydrate($object, ['propertyName' => $propertyValue]);
+ *
+ * // Sets a private property defined on its parent Bar class:
+ * Hydrator::hydrate($object, ["\0Bar\0privateBarProperty" => $propertyValue]);
+ *
+ * // Alternative way to set the private $object->privateBarProperty property
+ * Hydrator::hydrate($object, [], [
+ * Bar::class => ['privateBarProperty' => $propertyValue],
+ * ]);
+ *
+ * Instances of ArrayObject, ArrayIterator and SplObjectStorage can be hydrated
+ * by using the special "\0" property name to define their internal value:
+ *
+ * // Hydrates an SplObjectStorage where $info1 is attached to $obj1, etc.
+ * Hydrator::hydrate($object, ["\0" => [$obj1, $info1, $obj2, $info2...]]);
+ *
+ * // Hydrates an ArrayObject populated with $inputArray
+ * Hydrator::hydrate($object, ["\0" => [$inputArray]]);
+ *
+ * @template T of object
+ *
+ * @param T $instance The object to hydrate
+ * @param array $properties The properties to set on the instance
+ * @param array> $scopedProperties The properties to set on the instance,
+ * keyed by their declaring class
+ *
+ * @return T
+ */
+ public static function hydrate(object $instance, array $properties = [], array $scopedProperties = []): object
+ {
+ if ($properties) {
+ $class = $instance::class;
+ $propertyScopes = InternalHydrator::$propertyScopes[$class] ??= InternalHydrator::getPropertyScopes($class);
+
+ foreach ($properties as $name => &$value) {
+ [$scope, $name, $readonlyScope] = $propertyScopes[$name] ?? [$class, $name, $class];
+ $scopedProperties[$readonlyScope ?? $scope][$name] = &$value;
+ }
+ unset($value);
+ }
+
+ foreach ($scopedProperties as $scope => $properties) {
+ if ($properties) {
+ (InternalHydrator::$simpleHydrators[$scope] ??= InternalHydrator::getSimpleHydrator($scope))($properties, $instance);
+ }
+ }
+
+ return $instance;
+ }
+}
diff --git a/vendor/symfony/var-exporter/Instantiator.php b/vendor/symfony/var-exporter/Instantiator.php
new file mode 100644
index 000000000..10200c00b
--- /dev/null
+++ b/vendor/symfony/var-exporter/Instantiator.php
@@ -0,0 +1,59 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\VarExporter\Exception\ExceptionInterface;
+use Symfony\Component\VarExporter\Exception\NotInstantiableTypeException;
+use Symfony\Component\VarExporter\Internal\Registry;
+
+/**
+ * A utility class to create objects without calling their constructor.
+ *
+ * @author Nicolas Grekas
+ */
+final class Instantiator
+{
+ /**
+ * Creates an object and sets its properties without calling its constructor nor any other methods.
+ *
+ * @see Hydrator::hydrate() for examples
+ *
+ * @template T of object
+ *
+ * @param class-string $class The class of the instance to create
+ * @param array $properties The properties to set on the instance
+ * @param array> $scopedProperties The properties to set on the instance,
+ * keyed by their declaring class
+ *
+ * @return T
+ *
+ * @throws ExceptionInterface When the instance cannot be created
+ */
+ public static function instantiate(string $class, array $properties = [], array $scopedProperties = []): object
+ {
+ $reflector = Registry::$reflectors[$class] ??= Registry::getClassReflector($class);
+
+ if (Registry::$cloneable[$class]) {
+ $instance = clone Registry::$prototypes[$class];
+ } elseif (Registry::$instantiableWithoutConstructor[$class]) {
+ $instance = $reflector->newInstanceWithoutConstructor();
+ } elseif (null === Registry::$prototypes[$class]) {
+ throw new NotInstantiableTypeException($class);
+ } elseif ($reflector->implementsInterface('Serializable') && !method_exists($class, '__unserialize')) {
+ $instance = unserialize('C:'.\strlen($class).':"'.$class.'":0:{}');
+ } else {
+ $instance = unserialize('O:'.\strlen($class).':"'.$class.'":0:{}');
+ }
+
+ return $properties || $scopedProperties ? Hydrator::hydrate($instance, $properties, $scopedProperties) : $instance;
+ }
+}
diff --git a/vendor/symfony/var-exporter/Internal/Exporter.php b/vendor/symfony/var-exporter/Internal/Exporter.php
new file mode 100644
index 000000000..ec711e1ed
--- /dev/null
+++ b/vendor/symfony/var-exporter/Internal/Exporter.php
@@ -0,0 +1,419 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Internal;
+
+use Symfony\Component\VarExporter\Exception\NotInstantiableTypeException;
+
+/**
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+class Values
+{
+ public $values;
+
+ public function __construct(array $values)
+ {
+ $this->values = $values;
+ }
+}
diff --git a/vendor/symfony/var-exporter/LICENSE b/vendor/symfony/var-exporter/LICENSE
new file mode 100644
index 000000000..7536caeae
--- /dev/null
+++ b/vendor/symfony/var-exporter/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-present Fabien Potencier
+
+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.
diff --git a/vendor/symfony/var-exporter/LazyGhostTrait.php b/vendor/symfony/var-exporter/LazyGhostTrait.php
new file mode 100644
index 000000000..5191b59e7
--- /dev/null
+++ b/vendor/symfony/var-exporter/LazyGhostTrait.php
@@ -0,0 +1,403 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\Serializer\Attribute\Ignore;
+use Symfony\Component\VarExporter\Internal\Hydrator;
+use Symfony\Component\VarExporter\Internal\LazyObjectRegistry as Registry;
+use Symfony\Component\VarExporter\Internal\LazyObjectState;
+use Symfony\Component\VarExporter\Internal\LazyObjectTrait;
+
+trait LazyGhostTrait
+{
+ use LazyObjectTrait;
+
+ /**
+ * Creates a lazy-loading ghost instance.
+ *
+ * Skipped properties should be indexed by their array-cast identifier, see
+ * https://php.net/manual/language.types.array#language.types.array.casting
+ *
+ * @param (\Closure(static):void $initializer The closure should initialize the object it receives as argument
+ * @param array|null $skippedProperties An array indexed by the properties to skip, a.k.a. the ones
+ * that the initializer doesn't initialize, if any
+ * @param static|null $instance
+ */
+ public static function createLazyGhost(\Closure|array $initializer, ?array $skippedProperties = null, ?object $instance = null): static
+ {
+ if (\is_array($initializer)) {
+ trigger_deprecation('symfony/var-exporter', '6.4', 'Per-property lazy-initializers are deprecated and won\'t be supported anymore in 7.0, use an object initializer instead.');
+ }
+
+ $onlyProperties = null === $skippedProperties && \is_array($initializer) ? $initializer : null;
+
+ if (self::class !== $class = $instance ? $instance::class : static::class) {
+ $skippedProperties["\0".self::class."\0lazyObjectState"] = true;
+ } elseif (\defined($class.'::LAZY_OBJECT_PROPERTY_SCOPES')) {
+ Hydrator::$propertyScopes[$class] ??= $class::LAZY_OBJECT_PROPERTY_SCOPES;
+ }
+
+ $instance ??= (Registry::$classReflectors[$class] ??= new \ReflectionClass($class))->newInstanceWithoutConstructor();
+ Registry::$defaultProperties[$class] ??= (array) $instance;
+ $instance->lazyObjectState = new LazyObjectState($initializer, $skippedProperties ??= []);
+
+ foreach (Registry::$classResetters[$class] ??= Registry::getClassResetters($class) as $reset) {
+ $reset($instance, $skippedProperties, $onlyProperties);
+ }
+
+ return $instance;
+ }
+
+ /**
+ * Returns whether the object is initialized.
+ *
+ * @param $partial Whether partially initialized objects should be considered as initialized
+ */
+ #[Ignore]
+ public function isLazyObjectInitialized(bool $partial = false): bool
+ {
+ if (!$state = $this->lazyObjectState ?? null) {
+ return true;
+ }
+
+ if (!\is_array($state->initializer)) {
+ return LazyObjectState::STATUS_INITIALIZED_FULL === $state->status;
+ }
+
+ $class = $this::class;
+ $properties = (array) $this;
+
+ if ($partial) {
+ return (bool) array_intersect_key($state->initializer, $properties);
+ }
+
+ $propertyScopes = Hydrator::$propertyScopes[$class] ??= Hydrator::getPropertyScopes($class);
+ foreach ($state->initializer as $key => $initializer) {
+ if (!\array_key_exists($key, $properties) && isset($propertyScopes[$key])) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Forces initialization of a lazy object and returns it.
+ */
+ public function initializeLazyObject(): static
+ {
+ if (!$state = $this->lazyObjectState ?? null) {
+ return $this;
+ }
+
+ if (!\is_array($state->initializer)) {
+ if (LazyObjectState::STATUS_UNINITIALIZED_FULL === $state->status) {
+ $state->initialize($this, '', null);
+ }
+
+ return $this;
+ }
+
+ $values = isset($state->initializer["\0"]) ? null : [];
+
+ $class = $this::class;
+ $properties = (array) $this;
+ $propertyScopes = Hydrator::$propertyScopes[$class] ??= Hydrator::getPropertyScopes($class);
+ foreach ($state->initializer as $key => $initializer) {
+ if (\array_key_exists($key, $properties) || ![$scope, $name, $readonlyScope] = $propertyScopes[$key] ?? null) {
+ continue;
+ }
+ $scope = $readonlyScope ?? ('*' !== $scope ? $scope : $class);
+
+ if (null === $values) {
+ if (!\is_array($values = ($state->initializer["\0"])($this, Registry::$defaultProperties[$class]))) {
+ throw new \TypeError(sprintf('The lazy-initializer defined for instance of "%s" must return an array, got "%s".', $class, get_debug_type($values)));
+ }
+
+ if (\array_key_exists($key, $properties = (array) $this)) {
+ continue;
+ }
+ }
+
+ if (\array_key_exists($key, $values)) {
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+ $accessor['set']($this, $name, $properties[$key] = $values[$key]);
+ } else {
+ $state->initialize($this, $name, $scope);
+ $properties = (array) $this;
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * @return bool Returns false when the object cannot be reset, ie when it's not a lazy object
+ */
+ public function resetLazyObject(): bool
+ {
+ if (!$state = $this->lazyObjectState ?? null) {
+ return false;
+ }
+
+ if (LazyObjectState::STATUS_UNINITIALIZED_FULL !== $state->status) {
+ $state->reset($this);
+ }
+
+ return true;
+ }
+
+ public function &__get($name): mixed
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name);
+ $state = $this->lazyObjectState ?? null;
+
+ if ($state && (null === $scope || isset($propertyScopes["\0$scope\0$name"]))) {
+ if (LazyObjectState::STATUS_INITIALIZED_FULL === $state->status) {
+ // Work around php/php-src#12695
+ $property = null === $scope ? $name : "\0$scope\0$name";
+ $property = $propertyScopes[$property][3]
+ ?? Hydrator::$propertyScopes[$this::class][$property][3] = new \ReflectionProperty($scope ?? $class, $name);
+ } else {
+ $property = null;
+ }
+
+ if ($property?->isInitialized($this) ?? LazyObjectState::STATUS_UNINITIALIZED_PARTIAL !== $state->initialize($this, $name, $readonlyScope ?? $scope)) {
+ goto get_in_scope;
+ }
+ }
+ }
+
+ if ($parent = (Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['get']) {
+ if (2 === $parent) {
+ return parent::__get($name);
+ }
+ $value = parent::__get($name);
+
+ return $value;
+ }
+
+ if (null === $class) {
+ $frame = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+ trigger_error(sprintf('Undefined property: %s::$%s in %s on line %s', $this::class, $name, $frame['file'], $frame['line']), \E_USER_NOTICE);
+ }
+
+ get_in_scope:
+
+ try {
+ if (null === $scope) {
+ if (null === $readonlyScope) {
+ return $this->$name;
+ }
+ $value = $this->$name;
+
+ return $value;
+ }
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+
+ return $accessor['get']($this, $name, null !== $readonlyScope);
+ } catch (\Error $e) {
+ if (\Error::class !== $e::class || !str_starts_with($e->getMessage(), 'Cannot access uninitialized non-nullable property')) {
+ throw $e;
+ }
+
+ try {
+ if (null === $scope) {
+ $this->$name = [];
+
+ return $this->$name;
+ }
+
+ $accessor['set']($this, $name, []);
+
+ return $accessor['get']($this, $name, null !== $readonlyScope);
+ } catch (\Error) {
+ if (preg_match('/^Cannot access uninitialized non-nullable property ([^ ]++) by reference$/', $e->getMessage(), $matches)) {
+ throw new \Error('Typed property '.$matches[1].' must not be accessed before initialization', $e->getCode(), $e->getPrevious());
+ }
+
+ throw $e;
+ }
+ }
+ }
+
+ public function __set($name, $value): void
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name, $readonlyScope);
+ $state = $this->lazyObjectState ?? null;
+
+ if ($state && ($readonlyScope === $scope || isset($propertyScopes["\0$scope\0$name"]))
+ && LazyObjectState::STATUS_INITIALIZED_FULL !== $state->status
+ ) {
+ if (LazyObjectState::STATUS_UNINITIALIZED_FULL === $state->status) {
+ $state->initialize($this, $name, $readonlyScope ?? $scope);
+ }
+ goto set_in_scope;
+ }
+ }
+
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['set']) {
+ parent::__set($name, $value);
+
+ return;
+ }
+
+ set_in_scope:
+
+ if (null === $scope) {
+ $this->$name = $value;
+ } else {
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+ $accessor['set']($this, $name, $value);
+ }
+ }
+
+ public function __isset($name): bool
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name);
+ $state = $this->lazyObjectState ?? null;
+
+ if ($state && (null === $scope || isset($propertyScopes["\0$scope\0$name"]))
+ && LazyObjectState::STATUS_INITIALIZED_FULL !== $state->status
+ && LazyObjectState::STATUS_UNINITIALIZED_PARTIAL !== $state->initialize($this, $name, $readonlyScope ?? $scope)
+ ) {
+ goto isset_in_scope;
+ }
+ }
+
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['isset']) {
+ return parent::__isset($name);
+ }
+
+ isset_in_scope:
+
+ if (null === $scope) {
+ return isset($this->$name);
+ }
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+
+ return $accessor['isset']($this, $name);
+ }
+
+ public function __unset($name): void
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name, $readonlyScope);
+ $state = $this->lazyObjectState ?? null;
+
+ if ($state && ($readonlyScope === $scope || isset($propertyScopes["\0$scope\0$name"]))
+ && LazyObjectState::STATUS_INITIALIZED_FULL !== $state->status
+ ) {
+ if (LazyObjectState::STATUS_UNINITIALIZED_FULL === $state->status) {
+ $state->initialize($this, $name, $readonlyScope ?? $scope);
+ }
+ goto unset_in_scope;
+ }
+ }
+
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['unset']) {
+ parent::__unset($name);
+
+ return;
+ }
+
+ unset_in_scope:
+
+ if (null === $scope) {
+ unset($this->$name);
+ } else {
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+ $accessor['unset']($this, $name);
+ }
+ }
+
+ public function __clone(): void
+ {
+ if ($state = $this->lazyObjectState ?? null) {
+ $this->lazyObjectState = clone $state;
+ }
+
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['clone']) {
+ parent::__clone();
+ }
+ }
+
+ public function __serialize(): array
+ {
+ $class = self::class;
+
+ if ((Registry::$parentMethods[$class] ??= Registry::getParentMethods($class))['serialize']) {
+ $properties = parent::__serialize();
+ } else {
+ $this->initializeLazyObject();
+ $properties = (array) $this;
+ }
+ unset($properties["\0$class\0lazyObjectState"]);
+
+ if (Registry::$parentMethods[$class]['serialize'] || !Registry::$parentMethods[$class]['sleep']) {
+ return $properties;
+ }
+
+ $scope = get_parent_class($class);
+ $data = [];
+
+ foreach (parent::__sleep() as $name) {
+ $value = $properties[$k = $name] ?? $properties[$k = "\0*\0$name"] ?? $properties[$k = "\0$class\0$name"] ?? $properties[$k = "\0$scope\0$name"] ?? $k = null;
+
+ if (null === $k) {
+ trigger_error(sprintf('serialize(): "%s" returned as member variable from __sleep() but does not exist', $name), \E_USER_NOTICE);
+ } else {
+ $data[$k] = $value;
+ }
+ }
+
+ return $data;
+ }
+
+ public function __destruct()
+ {
+ $state = $this->lazyObjectState ?? null;
+
+ if ($state && \in_array($state->status, [LazyObjectState::STATUS_UNINITIALIZED_FULL, LazyObjectState::STATUS_UNINITIALIZED_PARTIAL], true)) {
+ return;
+ }
+
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['destruct']) {
+ parent::__destruct();
+ }
+ }
+
+ #[Ignore]
+ private function setLazyObjectAsInitialized(bool $initialized): void
+ {
+ $state = $this->lazyObjectState ?? null;
+
+ if ($state && !\is_array($state->initializer)) {
+ $state->status = $initialized ? LazyObjectState::STATUS_INITIALIZED_FULL : LazyObjectState::STATUS_UNINITIALIZED_FULL;
+ }
+ }
+}
diff --git a/vendor/symfony/var-exporter/LazyObjectInterface.php b/vendor/symfony/var-exporter/LazyObjectInterface.php
new file mode 100644
index 000000000..367088459
--- /dev/null
+++ b/vendor/symfony/var-exporter/LazyObjectInterface.php
@@ -0,0 +1,32 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+interface LazyObjectInterface
+{
+ /**
+ * Returns whether the object is initialized.
+ *
+ * @param $partial Whether partially initialized objects should be considered as initialized
+ */
+ public function isLazyObjectInitialized(bool $partial = false): bool;
+
+ /**
+ * Forces initialization of a lazy object and returns it.
+ */
+ public function initializeLazyObject(): object;
+
+ /**
+ * @return bool Returns false when the object cannot be reset, ie when it's not a lazy object
+ */
+ public function resetLazyObject(): bool;
+}
diff --git a/vendor/symfony/var-exporter/LazyProxyTrait.php b/vendor/symfony/var-exporter/LazyProxyTrait.php
new file mode 100644
index 000000000..203367052
--- /dev/null
+++ b/vendor/symfony/var-exporter/LazyProxyTrait.php
@@ -0,0 +1,349 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\Serializer\Attribute\Ignore;
+use Symfony\Component\VarExporter\Hydrator as PublicHydrator;
+use Symfony\Component\VarExporter\Internal\Hydrator;
+use Symfony\Component\VarExporter\Internal\LazyObjectRegistry as Registry;
+use Symfony\Component\VarExporter\Internal\LazyObjectState;
+use Symfony\Component\VarExporter\Internal\LazyObjectTrait;
+
+trait LazyProxyTrait
+{
+ use LazyObjectTrait;
+
+ /**
+ * Creates a lazy-loading virtual proxy.
+ *
+ * @param \Closure():object $initializer Returns the proxied object
+ * @param static|null $instance
+ */
+ public static function createLazyProxy(\Closure $initializer, ?object $instance = null): static
+ {
+ if (self::class !== $class = $instance ? $instance::class : static::class) {
+ $skippedProperties = ["\0".self::class."\0lazyObjectState" => true];
+ } elseif (\defined($class.'::LAZY_OBJECT_PROPERTY_SCOPES')) {
+ Hydrator::$propertyScopes[$class] ??= $class::LAZY_OBJECT_PROPERTY_SCOPES;
+ }
+
+ $instance ??= (Registry::$classReflectors[$class] ??= new \ReflectionClass($class))->newInstanceWithoutConstructor();
+ $instance->lazyObjectState = new LazyObjectState($initializer);
+
+ foreach (Registry::$classResetters[$class] ??= Registry::getClassResetters($class) as $reset) {
+ $reset($instance, $skippedProperties ??= []);
+ }
+
+ return $instance;
+ }
+
+ /**
+ * Returns whether the object is initialized.
+ *
+ * @param $partial Whether partially initialized objects should be considered as initialized
+ */
+ #[Ignore]
+ public function isLazyObjectInitialized(bool $partial = false): bool
+ {
+ return !isset($this->lazyObjectState) || isset($this->lazyObjectState->realInstance) || Registry::$noInitializerState === $this->lazyObjectState->initializer;
+ }
+
+ /**
+ * Forces initialization of a lazy object and returns it.
+ */
+ public function initializeLazyObject(): parent
+ {
+ if ($state = $this->lazyObjectState ?? null) {
+ return $state->realInstance ??= ($state->initializer)();
+ }
+
+ return $this;
+ }
+
+ /**
+ * @return bool Returns false when the object cannot be reset, ie when it's not a lazy object
+ */
+ public function resetLazyObject(): bool
+ {
+ if (!isset($this->lazyObjectState) || Registry::$noInitializerState === $this->lazyObjectState->initializer) {
+ return false;
+ }
+
+ unset($this->lazyObjectState->realInstance);
+
+ return true;
+ }
+
+ public function &__get($name): mixed
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+ $instance = $this;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name);
+
+ if (null === $scope || isset($propertyScopes["\0$scope\0$name"])) {
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ }
+ $parent = 2;
+ goto get_in_scope;
+ }
+ }
+ $parent = (Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['get'];
+
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ } else {
+ if (2 === $parent) {
+ return parent::__get($name);
+ }
+ $value = parent::__get($name);
+
+ return $value;
+ }
+
+ if (!$parent && null === $class && !\array_key_exists($name, (array) $instance)) {
+ $frame = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+ trigger_error(sprintf('Undefined property: %s::$%s in %s on line %s', $instance::class, $name, $frame['file'], $frame['line']), \E_USER_NOTICE);
+ }
+
+ get_in_scope:
+
+ try {
+ if (null === $scope) {
+ if (null === $readonlyScope && 1 !== $parent) {
+ return $instance->$name;
+ }
+ $value = $instance->$name;
+
+ return $value;
+ }
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+
+ return $accessor['get']($instance, $name, null !== $readonlyScope || 1 === $parent);
+ } catch (\Error $e) {
+ if (\Error::class !== $e::class || !str_starts_with($e->getMessage(), 'Cannot access uninitialized non-nullable property')) {
+ throw $e;
+ }
+
+ try {
+ if (null === $scope) {
+ $instance->$name = [];
+
+ return $instance->$name;
+ }
+
+ $accessor['set']($instance, $name, []);
+
+ return $accessor['get']($instance, $name, null !== $readonlyScope || 1 === $parent);
+ } catch (\Error) {
+ throw $e;
+ }
+ }
+ }
+
+ public function __set($name, $value): void
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+ $instance = $this;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name, $readonlyScope);
+
+ if ($readonlyScope === $scope || isset($propertyScopes["\0$scope\0$name"])) {
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ }
+ goto set_in_scope;
+ }
+ }
+
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ } elseif ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['set']) {
+ parent::__set($name, $value);
+
+ return;
+ }
+
+ set_in_scope:
+
+ if (null === $scope) {
+ $instance->$name = $value;
+ } else {
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+ $accessor['set']($instance, $name, $value);
+ }
+ }
+
+ public function __isset($name): bool
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+ $instance = $this;
+
+ if ([$class] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name);
+
+ if (null === $scope || isset($propertyScopes["\0$scope\0$name"])) {
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ }
+ goto isset_in_scope;
+ }
+ }
+
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ } elseif ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['isset']) {
+ return parent::__isset($name);
+ }
+
+ isset_in_scope:
+
+ if (null === $scope) {
+ return isset($instance->$name);
+ }
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+
+ return $accessor['isset']($instance, $name);
+ }
+
+ public function __unset($name): void
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$this::class] ??= Hydrator::getPropertyScopes($this::class);
+ $scope = null;
+ $instance = $this;
+
+ if ([$class, , $readonlyScope] = $propertyScopes[$name] ?? null) {
+ $scope = Registry::getScope($propertyScopes, $class, $name, $readonlyScope);
+
+ if ($readonlyScope === $scope || isset($propertyScopes["\0$scope\0$name"])) {
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ }
+ goto unset_in_scope;
+ }
+ }
+
+ if ($state = $this->lazyObjectState ?? null) {
+ $instance = $state->realInstance ??= ($state->initializer)();
+ } elseif ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['unset']) {
+ parent::__unset($name);
+
+ return;
+ }
+
+ unset_in_scope:
+
+ if (null === $scope) {
+ unset($instance->$name);
+ } else {
+ $accessor = Registry::$classAccessors[$scope] ??= Registry::getClassAccessors($scope);
+ $accessor['unset']($instance, $name);
+ }
+ }
+
+ public function __clone(): void
+ {
+ if (!isset($this->lazyObjectState)) {
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['clone']) {
+ parent::__clone();
+ }
+
+ return;
+ }
+
+ $this->lazyObjectState = clone $this->lazyObjectState;
+
+ if (isset($this->lazyObjectState->realInstance)) {
+ $this->lazyObjectState->realInstance = clone $this->lazyObjectState->realInstance;
+ }
+ }
+
+ public function __serialize(): array
+ {
+ $class = self::class;
+ $state = $this->lazyObjectState ?? null;
+
+ if (!$state && (Registry::$parentMethods[$class] ??= Registry::getParentMethods($class))['serialize']) {
+ $properties = parent::__serialize();
+ } else {
+ $properties = (array) $this;
+
+ if ($state) {
+ unset($properties["\0$class\0lazyObjectState"]);
+ $properties["\0$class\0lazyObjectReal"] = $state->realInstance ??= ($state->initializer)();
+ }
+ }
+
+ if ($state || Registry::$parentMethods[$class]['serialize'] || !Registry::$parentMethods[$class]['sleep']) {
+ return $properties;
+ }
+
+ $scope = get_parent_class($class);
+ $data = [];
+
+ foreach (parent::__sleep() as $name) {
+ $value = $properties[$k = $name] ?? $properties[$k = "\0*\0$name"] ?? $properties[$k = "\0$class\0$name"] ?? $properties[$k = "\0$scope\0$name"] ?? $k = null;
+
+ if (null === $k) {
+ trigger_error(sprintf('serialize(): "%s" returned as member variable from __sleep() but does not exist', $name), \E_USER_NOTICE);
+ } else {
+ $data[$k] = $value;
+ }
+ }
+
+ return $data;
+ }
+
+ public function __unserialize(array $data): void
+ {
+ $class = self::class;
+
+ if ($instance = $data["\0$class\0lazyObjectReal"] ?? null) {
+ unset($data["\0$class\0lazyObjectReal"]);
+
+ foreach (Registry::$classResetters[$class] ??= Registry::getClassResetters($class) as $reset) {
+ $reset($this, $data);
+ }
+
+ if ($data) {
+ PublicHydrator::hydrate($this, $data);
+ }
+ $this->lazyObjectState = new LazyObjectState(Registry::$noInitializerState ??= static fn () => throw new \LogicException('Lazy proxy has no initializer.'));
+ $this->lazyObjectState->realInstance = $instance;
+ } elseif ((Registry::$parentMethods[$class] ??= Registry::getParentMethods($class))['unserialize']) {
+ parent::__unserialize($data);
+ } else {
+ PublicHydrator::hydrate($this, $data);
+
+ if (Registry::$parentMethods[$class]['wakeup']) {
+ parent::__wakeup();
+ }
+ }
+ }
+
+ public function __destruct()
+ {
+ if (isset($this->lazyObjectState)) {
+ return;
+ }
+
+ if ((Registry::$parentMethods[self::class] ??= Registry::getParentMethods(self::class))['destruct']) {
+ parent::__destruct();
+ }
+ }
+}
diff --git a/vendor/symfony/var-exporter/ProxyHelper.php b/vendor/symfony/var-exporter/ProxyHelper.php
new file mode 100644
index 000000000..d5a8d7418
--- /dev/null
+++ b/vendor/symfony/var-exporter/ProxyHelper.php
@@ -0,0 +1,413 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\VarExporter\Exception\LogicException;
+use Symfony\Component\VarExporter\Internal\Hydrator;
+use Symfony\Component\VarExporter\Internal\LazyObjectRegistry;
+
+/**
+ * @author Nicolas Grekas
+ */
+final class ProxyHelper
+{
+ /**
+ * Helps generate lazy-loading ghost objects.
+ *
+ * @throws LogicException When the class is incompatible with ghost objects
+ */
+ public static function generateLazyGhost(\ReflectionClass $class): string
+ {
+ if (\PHP_VERSION_ID >= 80200 && \PHP_VERSION_ID < 80300 && $class->isReadOnly()) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost with PHP < 8.3: class "%s" is readonly.', $class->name));
+ }
+ if ($class->isFinal()) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost: class "%s" is final.', $class->name));
+ }
+ if ($class->isInterface() || $class->isAbstract()) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost: "%s" is not a concrete class.', $class->name));
+ }
+ if (\stdClass::class !== $class->name && $class->isInternal()) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost: class "%s" is internal.', $class->name));
+ }
+ if ($class->hasMethod('__get') && 'mixed' !== (self::exportType($class->getMethod('__get')) ?? 'mixed')) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost: return type of method "%s::__get()" should be "mixed".', $class->name));
+ }
+
+ static $traitMethods;
+ $traitMethods ??= (new \ReflectionClass(LazyGhostTrait::class))->getMethods();
+
+ foreach ($traitMethods as $method) {
+ if ($class->hasMethod($method->name) && $class->getMethod($method->name)->isFinal()) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost: method "%s::%s()" is final.', $class->name, $method->name));
+ }
+ }
+
+ $parent = $class;
+ while ($parent = $parent->getParentClass()) {
+ if (\stdClass::class !== $parent->name && $parent->isInternal()) {
+ throw new LogicException(sprintf('Cannot generate lazy ghost: class "%s" extends "%s" which is internal.', $class->name, $parent->name));
+ }
+ }
+ $propertyScopes = self::exportPropertyScopes($class->name);
+
+ return <<name} implements \Symfony\Component\VarExporter\LazyObjectInterface
+ {
+ use \Symfony\Component\VarExporter\LazyGhostTrait;
+
+ private const LAZY_OBJECT_PROPERTY_SCOPES = {$propertyScopes};
+ }
+
+ // Help opcache.preload discover always-needed symbols
+ class_exists(\Symfony\Component\VarExporter\Internal\Hydrator::class);
+ class_exists(\Symfony\Component\VarExporter\Internal\LazyObjectRegistry::class);
+ class_exists(\Symfony\Component\VarExporter\Internal\LazyObjectState::class);
+
+ EOPHP;
+ }
+
+ /**
+ * Helps generate lazy-loading virtual proxies.
+ *
+ * @param \ReflectionClass[] $interfaces
+ *
+ * @throws LogicException When the class is incompatible with virtual proxies
+ */
+ public static function generateLazyProxy(?\ReflectionClass $class, array $interfaces = []): string
+ {
+ if (!class_exists($class?->name ?? \stdClass::class, false)) {
+ throw new LogicException(sprintf('Cannot generate lazy proxy: "%s" is not a class.', $class->name));
+ }
+ if ($class?->isFinal()) {
+ throw new LogicException(sprintf('Cannot generate lazy proxy: class "%s" is final.', $class->name));
+ }
+ if (\PHP_VERSION_ID >= 80200 && \PHP_VERSION_ID < 80300 && $class?->isReadOnly()) {
+ throw new LogicException(sprintf('Cannot generate lazy proxy with PHP < 8.3: class "%s" is readonly.', $class->name));
+ }
+
+ $methodReflectors = [$class?->getMethods(\ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED) ?? []];
+ foreach ($interfaces as $interface) {
+ if (!$interface->isInterface()) {
+ throw new LogicException(sprintf('Cannot generate lazy proxy: "%s" is not an interface.', $interface->name));
+ }
+ $methodReflectors[] = $interface->getMethods();
+ }
+ $methodReflectors = array_merge(...$methodReflectors);
+
+ $extendsInternalClass = false;
+ if ($parent = $class) {
+ do {
+ $extendsInternalClass = \stdClass::class !== $parent->name && $parent->isInternal();
+ } while (!$extendsInternalClass && $parent = $parent->getParentClass());
+ }
+ $methodsHaveToBeProxied = $extendsInternalClass;
+ $methods = [];
+
+ foreach ($methodReflectors as $method) {
+ if ('__get' !== strtolower($method->name) || 'mixed' === ($type = self::exportType($method) ?? 'mixed')) {
+ continue;
+ }
+ $methodsHaveToBeProxied = true;
+ $trait = new \ReflectionMethod(LazyProxyTrait::class, '__get');
+ $body = \array_slice(file($trait->getFileName()), $trait->getStartLine() - 1, $trait->getEndLine() - $trait->getStartLine());
+ $body[0] = str_replace('): mixed', '): '.$type, $body[0]);
+ $methods['__get'] = strtr(implode('', $body).' }', [
+ 'Hydrator' => '\\'.Hydrator::class,
+ 'Registry' => '\\'.LazyObjectRegistry::class,
+ ]);
+ break;
+ }
+
+ foreach ($methodReflectors as $method) {
+ if (($method->isStatic() && !$method->isAbstract()) || isset($methods[$lcName = strtolower($method->name)])) {
+ continue;
+ }
+ if ($method->isFinal()) {
+ if ($extendsInternalClass || $methodsHaveToBeProxied || method_exists(LazyProxyTrait::class, $method->name)) {
+ throw new LogicException(sprintf('Cannot generate lazy proxy: method "%s::%s()" is final.', $class->name, $method->name));
+ }
+ continue;
+ }
+ if (method_exists(LazyProxyTrait::class, $method->name) || ($method->isProtected() && !$method->isAbstract())) {
+ continue;
+ }
+
+ $signature = self::exportSignature($method, true, $args);
+ $parentCall = $method->isAbstract() ? "throw new \BadMethodCallException('Cannot forward abstract method \"{$method->class}::{$method->name}()\".')" : "parent::{$method->name}({$args})";
+
+ if ($method->isStatic()) {
+ $body = " $parentCall;";
+ } elseif (str_ends_with($signature, '): never') || str_ends_with($signature, '): void')) {
+ $body = <<lazyObjectState)) {
+ (\$this->lazyObjectState->realInstance ??= (\$this->lazyObjectState->initializer)())->{$method->name}({$args});
+ } else {
+ {$parentCall};
+ }
+ EOPHP;
+ } else {
+ if (!$methodsHaveToBeProxied && !$method->isAbstract()) {
+ // Skip proxying methods that might return $this
+ foreach (preg_split('/[()|&]++/', self::exportType($method) ?? 'static') as $type) {
+ if (\in_array($type = ltrim($type, '?'), ['static', 'object'], true)) {
+ continue 2;
+ }
+ foreach ([$class, ...$interfaces] as $r) {
+ if ($r && is_a($r->name, $type, true)) {
+ continue 3;
+ }
+ }
+ }
+ }
+
+ $body = <<lazyObjectState)) {
+ return (\$this->lazyObjectState->realInstance ??= (\$this->lazyObjectState->initializer)())->{$method->name}({$args});
+ }
+
+ return {$parentCall};
+ EOPHP;
+ }
+ $methods[$lcName] = " {$signature}\n {\n{$body}\n }";
+ }
+
+ $types = $interfaces = array_unique(array_column($interfaces, 'name'));
+ $interfaces[] = LazyObjectInterface::class;
+ $interfaces = implode(', \\', $interfaces);
+ $parent = $class ? ' extends \\'.$class->name : '';
+ array_unshift($types, $class ? 'parent' : '');
+ $type = ltrim(implode('&\\', $types), '&');
+
+ if (!$class) {
+ $trait = new \ReflectionMethod(LazyProxyTrait::class, 'initializeLazyObject');
+ $body = \array_slice(file($trait->getFileName()), $trait->getStartLine() - 1, $trait->getEndLine() - $trait->getStartLine());
+ $body[0] = str_replace('): parent', '): '.$type, $body[0]);
+ $methods = ['initializeLazyObject' => implode('', $body).' }'] + $methods;
+ }
+ $body = $methods ? "\n".implode("\n\n", $methods)."\n" : '';
+ $propertyScopes = $class ? self::exportPropertyScopes($class->name) : '[]';
+
+ if (
+ $class?->hasMethod('__unserialize')
+ && !$class->getMethod('__unserialize')->getParameters()[0]->getType()
+ ) {
+ // fix contravariance type problem when $class declares a `__unserialize()` method without typehint.
+ $lazyProxyTraitStatement = <<__doUnserialize(\$data);
+ }
+
+ EOPHP;
+ } else {
+ $lazyProxyTraitStatement = <<class : $function->getNamespaceName().'\\';
+ $namespace = substr($namespace, 0, strrpos($namespace, '\\') ?: 0);
+ foreach ($function->getParameters() as $param) {
+ $parameters[] = ($param->getAttributes(\SensitiveParameter::class) ? '#[\SensitiveParameter] ' : '')
+ .($withParameterTypes && $param->hasType() ? self::exportType($param).' ' : '')
+ .($param->isPassedByReference() ? '&' : '')
+ .($param->isVariadic() ? '...' : '').'$'.$param->name
+ .($param->isOptional() && !$param->isVariadic() ? ' = '.self::exportDefault($param, $namespace) : '');
+ if ($param->isPassedByReference()) {
+ $byRefIndex = 1 + $param->getPosition();
+ }
+ $args .= ($param->isVariadic() ? '...$' : '$').$param->name.', ';
+ }
+
+ if (!$param || !$byRefIndex) {
+ $args = '...\func_get_args()';
+ } elseif ($param->isVariadic()) {
+ $args = substr($args, 0, -2);
+ } else {
+ $args = explode(', ', $args, 1 + $byRefIndex);
+ $args[$byRefIndex] = sprintf('...\array_slice(\func_get_args(), %d)', $byRefIndex);
+ $args = implode(', ', $args);
+ }
+
+ $signature = 'function '.($function->returnsReference() ? '&' : '')
+ .($function->isClosure() ? '' : $function->name).'('.implode(', ', $parameters).')';
+
+ if ($function instanceof \ReflectionMethod) {
+ $signature = ($function->isPublic() ? 'public ' : ($function->isProtected() ? 'protected ' : 'private '))
+ .($function->isStatic() ? 'static ' : '').$signature;
+ }
+ if ($function->hasReturnType()) {
+ $signature .= ': '.self::exportType($function);
+ }
+
+ static $getPrototype;
+ $getPrototype ??= (new \ReflectionMethod(\ReflectionMethod::class, 'getPrototype'))->invoke(...);
+
+ while ($function) {
+ if ($function->hasTentativeReturnType()) {
+ return '#[\ReturnTypeWillChange] '.$signature;
+ }
+
+ try {
+ $function = $function instanceof \ReflectionMethod && $function->isAbstract() ? false : $getPrototype($function);
+ } catch (\ReflectionException) {
+ break;
+ }
+ }
+
+ return $signature;
+ }
+
+ public static function exportType(\ReflectionFunctionAbstract|\ReflectionProperty|\ReflectionParameter $owner, bool $noBuiltin = false, ?\ReflectionType $type = null): ?string
+ {
+ if (!$type ??= $owner instanceof \ReflectionFunctionAbstract ? $owner->getReturnType() : $owner->getType()) {
+ return null;
+ }
+ $class = null;
+ $types = [];
+ if ($type instanceof \ReflectionUnionType) {
+ $reflectionTypes = $type->getTypes();
+ $glue = '|';
+ } elseif ($type instanceof \ReflectionIntersectionType) {
+ $reflectionTypes = $type->getTypes();
+ $glue = '&';
+ } else {
+ $reflectionTypes = [$type];
+ $glue = null;
+ }
+
+ foreach ($reflectionTypes as $type) {
+ if ($type instanceof \ReflectionIntersectionType) {
+ if ('' !== $name = '('.self::exportType($owner, $noBuiltin, $type).')') {
+ $types[] = $name;
+ }
+ continue;
+ }
+ $name = $type->getName();
+
+ if ($noBuiltin && $type->isBuiltin()) {
+ continue;
+ }
+ if (\in_array($name, ['parent', 'self'], true) && $class ??= $owner->getDeclaringClass()) {
+ $name = 'parent' === $name ? ($class->getParentClass() ?: null)?->name ?? 'parent' : $class->name;
+ }
+
+ $types[] = ($noBuiltin || $type->isBuiltin() || 'static' === $name ? '' : '\\').$name;
+ }
+
+ if (!$types) {
+ return '';
+ }
+ if (null === $glue) {
+ return (!$noBuiltin && $type->allowsNull() && !\in_array($name, ['mixed', 'null'], true) ? '?' : '').$types[0];
+ }
+ sort($types);
+
+ return implode($glue, $types);
+ }
+
+ private static function exportPropertyScopes(string $parent): string
+ {
+ $propertyScopes = Hydrator::$propertyScopes[$parent] ??= Hydrator::getPropertyScopes($parent);
+ uksort($propertyScopes, 'strnatcmp');
+ foreach ($propertyScopes as $k => $v) {
+ unset($propertyScopes[$k][3]);
+ }
+ $propertyScopes = VarExporter::export($propertyScopes);
+ $propertyScopes = str_replace(VarExporter::export($parent), 'parent::class', $propertyScopes);
+ $propertyScopes = preg_replace("/(?|(,)\n( ) |\n |,\n (\]))/", '$1$2', $propertyScopes);
+ $propertyScopes = str_replace("\n", "\n ", $propertyScopes);
+
+ return $propertyScopes;
+ }
+
+ private static function exportDefault(\ReflectionParameter $param, $namespace): string
+ {
+ $default = rtrim(substr(explode('$'.$param->name.' = ', (string) $param, 2)[1] ?? '', 0, -2));
+
+ if (\in_array($default, ['', 'NULL'], true)) {
+ return 'null';
+ }
+ if (str_ends_with($default, "...'") && preg_match("/^'(?:[^'\\\\]*+(?:\\\\.)*+)*+'$/", $default)) {
+ return VarExporter::export($param->getDefaultValue());
+ }
+
+ $regexp = "/(\"(?:[^\"\\\\]*+(?:\\\\.)*+)*+\"|'(?:[^'\\\\]*+(?:\\\\.)*+)*+')/";
+ $parts = preg_split($regexp, $default, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
+
+ $regexp = '/([\[\( ]|^)([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z0-9_\x7f-\xff]++)*+)(\(?)(?!: )/';
+ $callback = (false !== strpbrk($default, "\\:('") && $class = $param->getDeclaringClass())
+ ? fn ($m) => $m[1].match ($m[2]) {
+ 'new', 'false', 'true', 'null' => $m[2],
+ 'NULL' => 'null',
+ 'self' => '\\'.$class->name,
+ 'namespace\\parent',
+ 'parent' => ($parent = $class->getParentClass()) ? '\\'.$parent->name : 'parent',
+ default => self::exportSymbol($m[2], '(' !== $m[3], $namespace),
+ }.$m[3]
+ : fn ($m) => $m[1].match ($m[2]) {
+ 'new', 'false', 'true', 'null', 'self', 'parent' => $m[2],
+ 'NULL' => 'null',
+ default => self::exportSymbol($m[2], '(' !== $m[3], $namespace),
+ }.$m[3];
+
+ return implode('', array_map(fn ($part) => match ($part[0]) {
+ '"' => $part, // for internal classes only
+ "'" => false !== strpbrk($part, "\\\0\r\n") ? '"'.substr(str_replace(['$', "\0", "\r", "\n"], ['\$', '\0', '\r', '\n'], $part), 1, -1).'"' : $part,
+ default => preg_replace_callback($regexp, $callback, $part),
+ }, $parts));
+ }
+
+ private static function exportSymbol(string $symbol, bool $mightBeRootConst, string $namespace): string
+ {
+ if (!$mightBeRootConst
+ || false === ($ns = strrpos($symbol, '\\'))
+ || substr($symbol, 0, $ns) !== $namespace
+ || \defined($symbol)
+ || !\defined(substr($symbol, $ns + 1))
+ ) {
+ return '\\'.$symbol;
+ }
+
+ return '\\'.substr($symbol, $ns + 1);
+ }
+}
diff --git a/vendor/symfony/var-exporter/README.md b/vendor/symfony/var-exporter/README.md
new file mode 100644
index 000000000..719527052
--- /dev/null
+++ b/vendor/symfony/var-exporter/README.md
@@ -0,0 +1,137 @@
+VarExporter Component
+=====================
+
+The VarExporter component provides various tools to deal with the internal state
+of objects:
+
+- `VarExporter::export()` allows exporting any serializable PHP data structure to
+ plain PHP code. While doing so, it preserves all the semantics associated with
+ the serialization mechanism of PHP (`__wakeup`, `__sleep`, `Serializable`,
+ `__serialize`, `__unserialize`);
+- `Instantiator::instantiate()` creates an object and sets its properties without
+ calling its constructor nor any other methods;
+- `Hydrator::hydrate()` can set the properties of an existing object;
+- `Lazy*Trait` can make a class behave as a lazy-loading ghost or virtual proxy.
+
+VarExporter::export()
+---------------------
+
+The reason to use `VarExporter::export()` *vs* `serialize()` or
+[igbinary](https://github.com/igbinary/igbinary) is performance: thanks to
+OPcache, the resulting code is significantly faster and more memory efficient
+than using `unserialize()` or `igbinary_unserialize()`.
+
+Unlike `var_export()`, this works on any serializable PHP value.
+
+It also provides a few improvements over `var_export()`/`serialize()`:
+
+ * the output is PSR-2 compatible;
+ * the output can be re-indented without messing up with `\r` or `\n` in the data;
+ * missing classes throw a `ClassNotFoundException` instead of being unserialized
+ to `PHP_Incomplete_Class` objects;
+ * references involving `SplObjectStorage`, `ArrayObject` or `ArrayIterator`
+ instances are preserved;
+ * `Reflection*`, `IteratorIterator` and `RecursiveIteratorIterator` classes
+ throw an exception when being serialized (their unserialized version is broken
+ anyway, see https://bugs.php.net/76737).
+
+Instantiator and Hydrator
+-------------------------
+
+`Instantiator::instantiate($class)` creates an object of the given class without
+calling its constructor nor any other methods.
+
+`Hydrator::hydrate()` sets the properties of an existing object, including
+private and protected ones. For example:
+
+```php
+// Sets the public or protected $object->propertyName property
+Hydrator::hydrate($object, ['propertyName' => $propertyValue]);
+
+// Sets a private property defined on its parent Bar class:
+Hydrator::hydrate($object, ["\0Bar\0privateBarProperty" => $propertyValue]);
+
+// Alternative way to set the private $object->privateBarProperty property
+Hydrator::hydrate($object, [], [
+ Bar::class => ['privateBarProperty' => $propertyValue],
+]);
+```
+
+`Lazy*Trait`
+------------
+
+The component provides two lazy-loading patterns: ghost objects and virtual
+proxies (see https://martinfowler.com/eaaCatalog/lazyLoad.html for reference).
+
+Ghost objects work only with concrete and non-internal classes. In the generic
+case, they are not compatible with using factories in their initializer.
+
+Virtual proxies work with concrete, abstract or internal classes. They provide an
+API that looks like the actual objects and forward calls to them. They can cause
+identity problems because proxies might not be seen as equivalents to the actual
+objects they proxy.
+
+Because of this identity problem, ghost objects should be preferred when
+possible. Exceptions thrown by the `ProxyHelper` class can help decide when it
+can be used or not.
+
+Ghost objects and virtual proxies both provide implementations for the
+`LazyObjectInterface` which allows resetting them to their initial state or to
+forcibly initialize them when needed. Note that resetting a ghost object skips
+its read-only properties. You should use a virtual proxy to reset read-only
+properties.
+
+### `LazyGhostTrait`
+
+By using `LazyGhostTrait` either directly in your classes or by using
+`ProxyHelper::generateLazyGhost()`, you can make their instances lazy-loadable.
+This works by creating these instances empty and by computing their state only
+when accessing a property.
+
+```php
+class FooLazyGhost extends Foo
+{
+ use LazyGhostTrait;
+}
+
+$foo = FooLazyGhost::createLazyGhost(initializer: function (Foo $instance): void {
+ // [...] Use whatever heavy logic you need here
+ // to compute the $dependencies of the $instance
+ $instance->__construct(...$dependencies);
+ // [...] Call setters, etc. if needed
+});
+
+// $foo is now a lazy-loading ghost object. The initializer will
+// be called only when and if a *property* is accessed.
+```
+
+### `LazyProxyTrait`
+
+Alternatively, `LazyProxyTrait` can be used to create virtual proxies:
+
+```php
+$proxyCode = ProxyHelper::generateLazyProxy(new ReflectionClass(Foo::class));
+// $proxyCode contains the reference to LazyProxyTrait
+// and should be dumped into a file in production envs
+eval('class FooLazyProxy'.$proxyCode);
+
+$foo = FooLazyProxy::createLazyProxy(initializer: function (): Foo {
+ // [...] Use whatever heavy logic you need here
+ // to compute the $dependencies of the $instance
+ $instance = new Foo(...$dependencies);
+ // [...] Call setters, etc. if needed
+
+ return $instance;
+});
+// $foo is now a lazy-loading virtual proxy object. The initializer will
+// be called only when and if a *method* is called.
+```
+
+Resources
+---------
+
+ * [Documentation](https://symfony.com/doc/current/components/var_exporter.html)
+ * [Contributing](https://symfony.com/doc/current/contributing/index.html)
+ * [Report issues](https://github.com/symfony/symfony/issues) and
+ [send Pull Requests](https://github.com/symfony/symfony/pulls)
+ in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/var-exporter/VarExporter.php b/vendor/symfony/var-exporter/VarExporter.php
new file mode 100644
index 000000000..22e9b5152
--- /dev/null
+++ b/vendor/symfony/var-exporter/VarExporter.php
@@ -0,0 +1,114 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\VarExporter\Exception\ExceptionInterface;
+use Symfony\Component\VarExporter\Internal\Exporter;
+use Symfony\Component\VarExporter\Internal\Hydrator;
+use Symfony\Component\VarExporter\Internal\Registry;
+use Symfony\Component\VarExporter\Internal\Values;
+
+/**
+ * Exports serializable PHP values to PHP code.
+ *
+ * VarExporter allows serializing PHP data structures to plain PHP code (like var_export())
+ * while preserving all the semantics associated with serialize() (unlike var_export()).
+ *
+ * By leveraging OPcache, the generated PHP code is faster than doing the same with unserialize().
+ *
+ * @author Nicolas Grekas
+ */
+final class VarExporter
+{
+ /**
+ * Exports a serializable PHP value to PHP code.
+ *
+ * @param bool &$isStaticValue Set to true after execution if the provided value is static, false otherwise
+ * @param array &$foundClasses Classes found in the value are added to this list as both keys and values
+ *
+ * @throws ExceptionInterface When the provided value cannot be serialized
+ */
+ public static function export(mixed $value, ?bool &$isStaticValue = null, array &$foundClasses = []): string
+ {
+ $isStaticValue = true;
+
+ if (!\is_object($value) && !(\is_array($value) && $value) && !\is_resource($value) || $value instanceof \UnitEnum) {
+ return Exporter::export($value);
+ }
+
+ $objectsPool = new \SplObjectStorage();
+ $refsPool = [];
+ $objectsCount = 0;
+
+ try {
+ $value = Exporter::prepare([$value], $objectsPool, $refsPool, $objectsCount, $isStaticValue)[0];
+ } finally {
+ $references = [];
+ foreach ($refsPool as $i => $v) {
+ if ($v[0]->count) {
+ $references[1 + $i] = $v[2];
+ }
+ $v[0] = $v[1];
+ }
+ }
+
+ if ($isStaticValue) {
+ return Exporter::export($value);
+ }
+
+ $classes = [];
+ $values = [];
+ $states = [];
+ foreach ($objectsPool as $i => $v) {
+ [, $class, $values[], $wakeup] = $objectsPool[$v];
+ $foundClasses[$class] = $classes[] = $class;
+
+ if (0 < $wakeup) {
+ $states[$wakeup] = $i;
+ } elseif (0 > $wakeup) {
+ $states[-$wakeup] = [$i, array_pop($values)];
+ $values[] = [];
+ }
+ }
+ ksort($states);
+
+ $wakeups = [null];
+ foreach ($states as $v) {
+ if (\is_array($v)) {
+ $wakeups[-$v[0]] = $v[1];
+ } else {
+ $wakeups[] = $v;
+ }
+ }
+
+ if (null === $wakeups[0]) {
+ unset($wakeups[0]);
+ }
+
+ $properties = [];
+ foreach ($values as $i => $vars) {
+ foreach ($vars as $class => $values) {
+ foreach ($values as $name => $v) {
+ $properties[$class][$name][$i] = $v;
+ }
+ }
+ }
+
+ if ($classes || $references) {
+ $value = new Hydrator(new Registry($classes), $references ? new Values($references) : null, $properties, $value, $wakeups);
+ } else {
+ $isStaticValue = true;
+ }
+
+ return Exporter::export($value);
+ }
+}
diff --git a/vendor/symfony/var-exporter/composer.json b/vendor/symfony/var-exporter/composer.json
new file mode 100644
index 000000000..e7b0fb039
--- /dev/null
+++ b/vendor/symfony/var-exporter/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "symfony/var-exporter",
+ "type": "library",
+ "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+ "keywords": ["export", "serialize", "instantiate", "hydrate", "construct", "clone", "lazy-loading", "proxy"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "require-dev": {
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Component\\VarExporter\\": "" },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "minimum-stability": "dev"
+}
diff --git a/vendor/voku/portable-ascii/.deepsource.toml b/vendor/voku/portable-ascii/.deepsource.toml
new file mode 100644
index 000000000..3f8f43cef
--- /dev/null
+++ b/vendor/voku/portable-ascii/.deepsource.toml
@@ -0,0 +1,4 @@
+version = 1
+
+[[analyzers]]
+name = "php"
\ No newline at end of file
diff --git a/vendor/voku/portable-ascii/CHANGELOG.md b/vendor/voku/portable-ascii/CHANGELOG.md
index 12fc393a7..52f4912e7 100644
--- a/vendor/voku/portable-ascii/CHANGELOG.md
+++ b/vendor/voku/portable-ascii/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+### 2.0.3 (2024-11-21)
+
+- use modern phpdocs e.g. list or conditional-return annotations
+
+### 2.0.2 (2024-11-21)
+
+- small fix for PHP 8.4 (thanks to @gilbertoalbino)
+
### 2.0.1 (2022-03-08)
- "To people of Russia": There is a war in Ukraine right now. The forces of the Russian Federation are attacking civilians.
diff --git a/vendor/voku/portable-ascii/composer.json b/vendor/voku/portable-ascii/composer.json
index 99dee4f80..b3a22fa8c 100644
--- a/vendor/voku/portable-ascii/composer.json
+++ b/vendor/voku/portable-ascii/composer.json
@@ -12,7 +12,7 @@
"authors": [
{
"name": "Lars Moelleken",
- "homepage": "http://www.moelleken.org/"
+ "homepage": "https://www.moelleken.org/"
}
],
"require": {
diff --git a/vendor/voku/portable-ascii/src/voku/helper/ASCII.php b/vendor/voku/portable-ascii/src/voku/helper/ASCII.php
index 7d8b66de7..406407e19 100644
--- a/vendor/voku/portable-ascii/src/voku/helper/ASCII.php
+++ b/vendor/voku/portable-ascii/src/voku/helper/ASCII.php
@@ -214,9 +214,9 @@ final class ASCII
/**
* Get all languages from the constants "ASCII::.*LANGUAGE_CODE".
*
- * @return string[]
- *
- * @phpstan-return array
+ * @return array
+ *
An associative array where the key is the language code in lowercase
+ * and the value is the corresponding language string.
*/
public static function getAllLanguages(): array
{
@@ -246,15 +246,13 @@ final class ASCII
* var_dump($array['ru']['б']); // 'b'
*
*
- * @psalm-suppress InvalidNullableReturnType - we use the prepare* methods here, so we don't get NULL here
- *
* @param bool $replace_extra_symbols [optional]
Add some more replacements e.g. "£" with " pound ".
Single char replacement is better for the
- * performance, but some languages need to replace more then one char
- * at the same time. | NULL === auto-setting, depended on the
+ * @param bool $replace_single_chars_only [optional]
Single char replacement is better for the
+ * performance, but some languages need to replace more than one char
+ * at the same time. If FALSE === auto-setting, depended on the
* language
*
* @psalm-pure
@@ -798,18 +763,17 @@ final class ASCII
bool $remove_unsupported_chars = true,
bool $replace_extra_symbols = false,
bool $use_transliterate = false,
- bool $replace_single_chars_only = null
+ bool $replace_single_chars_only = false
): string {
if ($str === '') {
return '';
}
- /** @phpstan-var ASCII::*_LANGUAGE_CODE - hack for phpstan */
+ /** @phpstan-var ASCII::*_LANGUAGE_CODE $language - hack for phpstan */
$language = self::get_language($language);
static $EXTRA_SYMBOLS_CACHE = null;
- /** @var array> */
static $REPLACE_HELPER_CACHE = [];
$cacheKey = $language . '-' . $replace_extra_symbols;
@@ -977,7 +941,6 @@ final class ASCII
}
}
- /** @psalm-suppress PossiblyNullOperand - we use the prepare* methods here, so we don't get NULL here */
if (!isset(self::$ASCII_MAPS[$language])) {
$use_transliterate = true;
}
@@ -1001,10 +964,10 @@ final class ASCII
* ASCII::to_filename('שדגשדג.png', true)); // 'shdgshdg.png'
*
*
- * @param string $str
+ * @param string $str
The string input.
* @param bool $use_transliterate
ASCII::to_transliterate() is used by default - unsafe characters are
* simply replaced with hyphen otherwise.
*
* @psalm-pure
*
@@ -1040,27 +1003,27 @@ final class ASCII
}
/**
- * Converts the string into an URL slug. This includes replacing non-ASCII
- * characters with their closest ASCII equivalents, removing remaining
- * non-ASCII and non-alphanumeric characters, and replacing whitespace with
- * $separator. The separator defaults to a single dash, and the string
- * is also converted to lowercase. The language of the source string can
- * also be supplied for language-specific transliteration.
- *
- * @param string $str
+ * Converts a string into a URL-friendly slug.
+ *
+ * - This includes replacing non-ASCII characters with their closest ASCII equivalents, removing remaining
+ * non-ASCII and non-alphanumeric characters, and replacing whitespace with $separator.
+ * - The separator defaults to a single dash, and the string is also converted to lowercase.
+ * - The language of the source string can also be supplied for language-specific transliteration.
+ *
+ * @param string $str
The string input.
* @param string $separator [optional]
The string used to replace whitespace.
* @param string $language [optional]
Language of the source string.
* (default is 'en') | ASCII::*_LANGUAGE_CODE
* @param array $replacements [optional]
A map of replaceable strings.
- * @param bool $replace_extra_symbols [optional]
Add some more replacements e.g. "£" with "
+ * @param bool $replace_extra_symbols [optional]
Add some more replacements e.g. "£" with "
* pound ".
* @param bool $use_str_to_lower [optional]
Use "string to lower" for the input.
- * @param bool $use_transliterate [optional]
Use ASCII::to_transliterate() for unknown
+ * @param bool $use_transliterate [optional]
Use ASCII::to_transliterate() for unknown
* chars.
* @psalm-pure
*
* @return string
- *
A string that has been converted to an URL slug.
+ *
The URL-friendly slug.
*
* @phpstan-param ASCII::*_LANGUAGE_CODE $language
*/
@@ -1135,21 +1098,16 @@ final class ASCII
*
* @return string
*
A String that contains only ASCII characters.
- *
- * @noinspection ParameterDefaultValueIsNotNullInspection
*/
public static function to_transliterate(
string $str,
$unknown = '?',
bool $strict = false
): string {
- /** @var array|null */
static $UTF8_TO_TRANSLIT = null;
- /** null|\Transliterator */
static $TRANSLITERATOR = null;
- /** @var bool|null */
static $SUPPORT_INTL = null;
if ($str === '') {
@@ -1168,7 +1126,7 @@ final class ASCII
$str = self::clean($str);
- // check again, if we only have ASCII, now ...
+ // check again if we only have ASCII, now ...
if (
$str_tmp !== $str
&&
@@ -1184,7 +1142,6 @@ final class ASCII
) {
if (!isset($TRANSLITERATOR)) {
// INFO: see "*-Latin" rules via "transliterator_list_ids()"
- /** @var \Transliterator */
$TRANSLITERATOR = \transliterator_create('NFKC; [:Nonspacing Mark:] Remove; NFKC; Any-Latin; Latin-ASCII;');
}
@@ -1192,8 +1149,7 @@ final class ASCII
$str_tmp = \transliterator_transliterate($TRANSLITERATOR, $str);
if ($str_tmp !== false) {
-
- // check again, if we only have ASCII, now ...
+ // check again if we only have ASCII, now ...
if (
$str_tmp !== $str
&&
@@ -1285,7 +1241,6 @@ final class ASCII
$new_char = $ord & 255;
if (isset($UTF8_TO_TRANSLIT[$bank][$new_char])) {
-
// keep for debugging
/*
echo "file: " . sprintf('x%02x', $bank) . "\n";
@@ -1299,8 +1254,7 @@ final class ASCII
$new_char = $UTF8_TO_TRANSLIT[$bank][$new_char];
- /** @noinspection MissingOrEmptyGroupStatementInspection */
- /** @noinspection PhpStatementHasEmptyBodyInspection */
+ /* @noinspection PhpStatementHasEmptyBodyInspection */
if ($unknown === null && $new_char === '') {
// nothing
} elseif (
@@ -1313,7 +1267,6 @@ final class ASCII
$c = $new_char;
}
} else {
-
// keep for debugging missing chars
/*
echo "file: " . sprintf('x%02x', $bank) . "\n";
@@ -1352,7 +1305,7 @@ final class ASCII
* @param array $map
Internal-Map of code points to ASCII characters.
*
* @return string
- *
Mapped borken string.
+ *
Mapped broken string.
*
* @phpstan-param array $map
*/
@@ -1385,12 +1338,6 @@ final class ASCII
* DE_DE -> de
* de-de -> de
*
- * @noinspection ReturnTypeCanBeDeclaredInspection
- *
- * @param string $language
- *
- * @psalm-pure
- *
* @return string
*/
private static function get_language(string $language)
@@ -1417,39 +1364,22 @@ final class ASCII
/**
* Get data from "/data/*.php".
*
- * @noinspection ReturnTypeCanBeDeclaredInspection
- *
- * @param string $file
- *
- * @psalm-pure
- *
- * @return array
+ * @return array
*/
private static function getData(string $file)
{
- /** @noinspection PhpIncludeInspection */
- /** @noinspection UsingInclusionReturnValueInspection */
- /** @psalm-suppress UnresolvableInclude */
return include __DIR__ . '/data/' . $file . '.php';
}
/**
* Get data from "/data/*.php".
*
- * @param string $file
- *
- * @psalm-pure
- *
- * @return array
+ * @return array
*/
private static function getDataIfExists(string $file): array
{
$file = __DIR__ . '/data/' . $file . '.php';
- /** @psalm-suppress ImpureFunctionCall */
if (\is_file($file)) {
- /** @noinspection PhpIncludeInspection */
- /** @noinspection UsingInclusionReturnValueInspection */
- /** @psalm-suppress UnresolvableInclude */
return include $file;
}
@@ -1457,8 +1387,6 @@ final class ASCII
}
/**
- * @psalm-pure
- *
* @return void
*/
private static function prepareAsciiAndExtrasMaps()
@@ -1467,7 +1395,6 @@ final class ASCII
self::prepareAsciiMaps();
self::prepareAsciiExtras();
- /** @psalm-suppress PossiblyNullArgument - we use the prepare* methods here, so we don't get NULL here */
self::$ASCII_MAPS_AND_EXTRAS = \array_merge_recursive(
self::$ASCII_MAPS ?? [],
self::$ASCII_EXTRAS ?? []
@@ -1476,8 +1403,6 @@ final class ASCII
}
/**
- * @psalm-pure
- *
* @return void
*/
private static function prepareAsciiMaps()
@@ -1488,8 +1413,6 @@ final class ASCII
}
/**
- * @psalm-pure
- *
* @return void
*/
private static function prepareAsciiExtras()
--
cgit v1.2.3
From 65c8de34101cedc33fc8e6282ff11e8e57eeed1b Mon Sep 17 00:00:00 2001
From: Mario Vavti
Date: Thu, 20 Feb 2025 11:35:33 +0100
Subject: update to smarty v5
---
Zotlabs/Render/SmartyInterface.php | 8 +-
composer.json | 2 +-
composer.lock | 190 +-
vendor/composer/autoload_classmap.php | 333 +-
vendor/composer/autoload_files.php | 1 +
vendor/composer/autoload_psr4.php | 3 +-
vendor/composer/autoload_static.php | 343 +--
vendor/composer/installed.json | 31 +-
vendor/composer/installed.php | 12 +-
vendor/smarty/smarty/CHANGELOG.md | 150 +-
vendor/smarty/smarty/CONTRIBUTING.md | 119 +
vendor/smarty/smarty/Makefile | 19 +
vendor/smarty/smarty/README.md | 2 +-
vendor/smarty/smarty/SECURITY.md | 6 +-
vendor/smarty/smarty/TODO.txt | 32 +
vendor/smarty/smarty/composer.json | 14 +-
vendor/smarty/smarty/demo/index.php | 8 +-
.../smarty/demo/plugins/cacheresource.apc.php | 85 -
.../smarty/demo/plugins/cacheresource.memcache.php | 99 -
.../smarty/demo/plugins/cacheresource.mysql.php | 183 --
.../smarty/demo/plugins/cacheresource.pdo.php | 346 ---
.../smarty/demo/plugins/cacheresource.pdo_gzip.php | 42 -
.../smarty/demo/plugins/resource.extendsall.php | 62 -
.../smarty/smarty/demo/plugins/resource.mysql.php | 101 -
.../smarty/smarty/demo/plugins/resource.mysqls.php | 77 -
vendor/smarty/smarty/demo/templates/index.tpl | 2 -
vendor/smarty/smarty/docs/api/basics.md | 93 +
vendor/smarty/smarty/docs/api/caching/basics.md | 184 ++
.../docs/api/caching/custom-storage-layers.md | 36 +
.../api/caching/multiple-caches-per-template.md | 137 +
vendor/smarty/smarty/docs/api/configuring.md | 225 ++
.../smarty/smarty/docs/api/extending/block-tags.md | 59 +
.../smarty/smarty/docs/api/extending/extensions.md | 101 +
.../smarty/docs/api/extending/introduction.md | 10 +
.../smarty/smarty/docs/api/extending/modifiers.md | 27 +
vendor/smarty/smarty/docs/api/extending/tags.md | 84 +
.../smarty/docs/api/filters/output-filters.md | 35 +
.../smarty/smarty/docs/api/filters/postfilters.md | 33 +
.../smarty/smarty/docs/api/filters/prefilters.md | 26 +
vendor/smarty/smarty/docs/api/inheritance.md | 130 +
vendor/smarty/smarty/docs/api/rendering.md | 86 +
vendor/smarty/smarty/docs/api/resources.md | 322 ++
vendor/smarty/smarty/docs/api/security.md | 119 +
.../smarty/smarty/docs/api/variables/assigning.md | 139 +
.../smarty/docs/api/variables/config-files.md | 88 +
vendor/smarty/smarty/docs/api/variables/objects.md | 106 +
.../docs/api/variables/static-class-methods.md | 39 +
vendor/smarty/smarty/docs/api/variables/streams.md | 16 +
vendor/smarty/smarty/docs/appendixes/tips.md | 3 +-
.../docs/designers/chapter-debugging-console.md | 3 +-
.../docs/designers/language-basic-syntax/index.md | 8 +-
.../language-basic-syntax/language-escaping.md | 9 +-
.../language-basic-syntax/language-math.md | 28 -
.../language-syntax-attributes.md | 2 +-
.../language-syntax-comments.md | 2 +-
.../language-syntax-functions.md | 40 -
.../language-syntax-operators.md | 88 +
.../language-basic-syntax/language-syntax-tags.md | 39 +
.../language-syntax-variables.md | 3 -
.../docs/designers/language-builtin-functions.md | 0
.../designers/language-builtin-functions/index.md | 2 +-
.../language-function-assign.md | 7 +-
.../language-function-block.md | 4 +-
.../language-function-capture.md | 6 -
.../language-function-config-load.md | 1 -
.../language-function-extends.md | 6 +-
.../language-function-foreach.md | 4 +-
.../language-function-if.md | 32 +-
.../language-function-include.md | 8 +-
.../language-function-insert.md | 86 -
.../language-function-ldelim.md | 2 +-
.../language-function-literal.md | 2 +-
.../language-function-nocache.md | 2 +-
.../language-function-section.md | 18 +-
.../language-function-while.md | 27 +-
.../designers/language-custom-functions/index.md | 2 +-
.../language-function-eval.md | 2 +-
.../language-function-fetch.md | 2 +-
.../language-function-html-image.md | 4 +-
.../language-function-mailto.md | 4 +-
.../language-function-textformat.md | 2 +-
.../docs/designers/language-modifiers/index.md | 138 +-
.../language-modifiers/language-modifier-count.md | 21 +
.../language-modifier-debug-print-var.md | 26 +
.../language-modifiers/language-modifier-escape.md | 4 +-
.../language-modifier-from-charset.md | 2 +-
.../language-modifier-is_array.md | 9 +
.../language-modifiers/language-modifier-isset.md | 11 +
.../language-modifiers/language-modifier-join.md | 26 +
.../language-modifier-json-encode.md | 27 +
.../language-modifier-noprint.md | 9 +
.../language-modifier-number-format.md | 32 +
.../language-modifiers/language-modifier-raw.md | 8 +
.../language-modifiers/language-modifier-round.md | 35 +
.../language-modifiers/language-modifier-split.md | 32 +
.../language-modifier-str-repeat.md | 14 +
.../language-modifiers/language-modifier-strlen.md | 9 +
.../language-modifiers/language-modifier-substr.md | 25 +
.../language-modifier-to-charset.md | 2 +-
.../language-modifiers/language-modifier-upper.md | 2 +-
.../docs/designers/language-variables/index.md | 4 +-
.../language-assigned-variables.md | 4 +-
.../language-variables-smarty.md | 7 +-
vendor/smarty/smarty/docs/features.md | 37 +-
vendor/smarty/smarty/docs/getting-started.md | 58 +-
vendor/smarty/smarty/docs/img/smarty.svg | 22 +
vendor/smarty/smarty/docs/index.md | 35 +-
vendor/smarty/smarty/docs/philosophy.md | 8 +-
.../smarty/docs/programmers/advanced-features.md | 14 -
.../advanced-features/advanced-features-objects.md | 99 -
.../advanced-features-outputfilters.md | 43 -
.../advanced-features-postfilters.md | 40 -
.../advanced-features-prefilters.md | 36 -
.../advanced-features-security.md | 144 -
.../advanced-features-static-classes.md | 27 -
.../advanced-features/advanced-features-streams.md | 15 -
.../advanced-features-template-inheritance.md | 128 -
.../advanced-features-template-settings.md | 32 -
.../smarty/docs/programmers/api-functions.md | 64 -
.../programmers/api-functions/add-extension.md | 0
.../api-functions/api-add-config-dir.md | 49 -
.../api-functions/api-add-template-dir.md | 49 -
.../programmers/api-functions/api-append-by-ref.md | 46 -
.../docs/programmers/api-functions/api-append.md | 3 +-
.../programmers/api-functions/api-assign-by-ref.md | 42 -
.../docs/programmers/api-functions/api-assign.md | 3 +-
.../api-functions/api-compile-all-config.md | 2 +-
.../api-functions/api-compile-all-templates.md | 2 +-
.../programmers/api-functions/api-create-data.md | 2 +-
.../api-functions/api-create-template.md | 2 +-
.../docs/programmers/api-functions/api-display.md | 4 +-
.../docs/programmers/api-functions/api-fetch.md | 2 +-
.../programmers/api-functions/api-get-cache-dir.md | 23 -
.../api-functions/api-get-compile-dir.md | 23 -
.../docs/programmers/api-functions/api-get-tags.md | 40 -
.../api-functions/api-get-template-dir.md | 40 -
.../programmers/api-functions/api-is-cached.md | 4 +-
.../programmers/api-functions/api-load-filter.md | 5 +-
.../api-functions/api-mute-expected-errors.md | 2 +-
.../api-functions/api-register-cacheresource.md | 2 +-
.../api-functions/api-register-class.md | 5 +-
.../api-register-default-plugin-handler.md | 4 +-
.../api-functions/api-register-filter.md | 3 +-
.../api-functions/api-register-plugin.md | 4 +-
.../api-functions/api-register-resource.md | 2 +-
.../programmers/api-functions/api-set-cache-dir.md | 32 -
.../api-functions/api-set-compile-dir.md | 32 -
.../api-functions/api-set-config-dir.md | 47 -
.../api-functions/api-set-template-dir.md | 46 -
.../api-functions/api-template-exists.md | 59 -
.../programmers/api-functions/api-test-install.md | 2 +-
.../smarty/docs/programmers/api-variables.md | 63 -
.../api-variables/variable-allow-php-templates.md | 18 -
.../api-variables/variable-autoload-filters.md | 21 -
.../api-variables/variable-cache-lifetime.md | 8 +-
.../api-variables/variable-cache-modified-check.md | 3 +-
.../programmers/api-variables/variable-caching.md | 10 +-
.../api-variables/variable-compile-check.md | 30 -
.../api-variables/variable-debug-template.md | 3 +-
.../variable-default-config-handler-func.md | 4 +-
.../variable-default-template-handler-func.md | 4 +-
.../variable-direct-access-security.md | 13 -
.../api-variables/variable-error-reporting.md | 2 +-
.../api-variables/variable-left-delimiter.md | 8 -
.../api-variables/variable-plugins-dir.md | 28 -
.../api-variables/variable-right-delimiter.md | 8 -
.../api-variables/variable-template-dir.md | 10 -
.../api-variables/variable-trusted-dir.md | 8 -
.../api-variables/variable-use-include-path.md | 49 -
vendor/smarty/smarty/docs/programmers/caching.md | 24 -
.../docs/programmers/caching/caching-cacheable.md | 176 --
.../docs/programmers/caching/caching-custom.md | 296 --
.../docs/programmers/caching/caching-groups.md | 60 -
.../programmers/caching/caching-multiple-caches.md | 87 -
.../docs/programmers/caching/caching-setting-up.md | 153 -
vendor/smarty/smarty/docs/programmers/charset.md | 44 -
vendor/smarty/smarty/docs/programmers/plugins.md | 44 -
.../programmers/plugins/plugins-block-functions.md | 95 -
.../plugins/plugins-compiler-functions.md | 66 -
.../docs/programmers/plugins/plugins-functions.md | 94 -
.../docs/programmers/plugins/plugins-howto.md | 18 -
.../docs/programmers/plugins/plugins-inserts.md | 48 -
.../docs/programmers/plugins/plugins-modifiers.md | 86 -
.../plugins/plugins-naming-conventions.md | 51 -
.../programmers/plugins/plugins-outputfilters.md | 48 -
.../plugins/plugins-prefilters-postfilters.md | 89 -
.../docs/programmers/plugins/plugins-resources.md | 128 -
.../docs/programmers/plugins/plugins-writing.md | 36 -
vendor/smarty/smarty/docs/programmers/resources.md | 19 -
.../docs/programmers/resources/resources-custom.md | 111 -
.../programmers/resources/resources-extends.md | 36 -
.../docs/programmers/resources/resources-file.md | 160 -
.../programmers/resources/resources-streams.md | 27 -
.../docs/programmers/resources/resources-string.md | 73 -
.../programmers/resources/template-resources.md | 130 -
.../smarty/docs/programmers/smarty-constants.md | 26 -
vendor/smarty/smarty/docs/upgrading.md | 129 +-
.../lexer/smarty_internal_configfilelexer.plex | 318 --
.../lexer/smarty_internal_configfileparser.y | 346 ---
.../lexer/smarty_internal_templatelexer.plex | 687 -----
.../smarty/lexer/smarty_internal_templateparser.y | 1272 --------
vendor/smarty/smarty/libs/Autoloader.php | 111 -
vendor/smarty/smarty/libs/Smarty.class.php | 1443 +--------
vendor/smarty/smarty/libs/bootstrap.php | 16 -
vendor/smarty/smarty/libs/debug.tpl | 173 --
vendor/smarty/smarty/libs/functions.php | 51 -
.../smarty/libs/plugins/block.textformat.php | 121 -
.../smarty/libs/plugins/function.counter.php | 62 -
.../smarty/smarty/libs/plugins/function.cycle.php | 92 -
.../smarty/smarty/libs/plugins/function.fetch.php | 204 --
.../libs/plugins/function.html_checkboxes.php | 286 --
.../smarty/libs/plugins/function.html_image.php | 158 -
.../smarty/libs/plugins/function.html_options.php | 230 --
.../smarty/libs/plugins/function.html_radios.php | 266 --
.../libs/plugins/function.html_select_date.php | 395 ---
.../libs/plugins/function.html_select_time.php | 354 ---
.../smarty/libs/plugins/function.html_table.php | 164 -
.../smarty/smarty/libs/plugins/function.mailto.php | 142 -
.../smarty/smarty/libs/plugins/function.math.php | 142 -
.../smarty/libs/plugins/modifier.capitalize.php | 147 -
.../smarty/smarty/libs/plugins/modifier.count.php | 36 -
.../smarty/libs/plugins/modifier.date_format.php | 86 -
.../libs/plugins/modifier.debug_print_var.php | 103 -
.../smarty/smarty/libs/plugins/modifier.escape.php | 189 --
.../smarty/libs/plugins/modifier.explode.php | 25 -
.../smarty/libs/plugins/modifier.implode.php | 15 -
.../smarty/libs/plugins/modifier.mb_wordwrap.php | 71 -
.../smarty/libs/plugins/modifier.number_format.php | 26 -
.../smarty/libs/plugins/modifier.regex_replace.php | 55 -
.../smarty/libs/plugins/modifier.replace.php | 37 -
.../smarty/libs/plugins/modifier.spacify.php | 26 -
.../smarty/libs/plugins/modifier.truncate.php | 62 -
.../smarty/libs/plugins/modifiercompiler.cat.php | 28 -
.../plugins/modifiercompiler.count_characters.php | 32 -
.../plugins/modifiercompiler.count_paragraphs.php | 26 -
.../plugins/modifiercompiler.count_sentences.php | 26 -
.../libs/plugins/modifiercompiler.count_words.php | 31 -
.../libs/plugins/modifiercompiler.default.php | 32 -
.../libs/plugins/modifiercompiler.escape.php | 87 -
.../libs/plugins/modifiercompiler.from_charset.php | 30 -
.../libs/plugins/modifiercompiler.indent.php | 30 -
.../libs/plugins/modifiercompiler.json_encode.php | 11 -
.../smarty/libs/plugins/modifiercompiler.lower.php | 29 -
.../smarty/libs/plugins/modifiercompiler.nl2br.php | 23 -
.../libs/plugins/modifiercompiler.noprint.php | 20 -
.../smarty/libs/plugins/modifiercompiler.round.php | 23 -
.../libs/plugins/modifiercompiler.str_repeat.php | 23 -
.../plugins/modifiercompiler.string_format.php | 24 -
.../smarty/libs/plugins/modifiercompiler.strip.php | 30 -
.../libs/plugins/modifiercompiler.strip_tags.php | 28 -
.../libs/plugins/modifiercompiler.strlen.php | 23 -
.../libs/plugins/modifiercompiler.substr.php | 12 -
.../libs/plugins/modifiercompiler.to_charset.php | 30 -
.../libs/plugins/modifiercompiler.unescape.php | 52 -
.../smarty/libs/plugins/modifiercompiler.upper.php | 28 -
.../libs/plugins/modifiercompiler.wordwrap.php | 39 -
.../libs/plugins/outputfilter.trimwhitespace.php | 89 -
.../libs/plugins/shared.escape_special_chars.php | 26 -
.../libs/plugins/shared.literal_compiler_param.php | 35 -
.../smarty/libs/plugins/shared.make_timestamp.php | 49 -
.../smarty/libs/plugins/shared.mb_str_replace.php | 87 -
.../smarty/libs/plugins/shared.mb_unicode.php | 51 -
.../plugins/variablefilter.htmlspecialchars.php | 19 -
.../libs/sysplugins/smarty_cacheresource.php | 219 --
.../sysplugins/smarty_cacheresource_custom.php | 297 --
.../smarty_cacheresource_keyvaluestore.php | 538 ----
.../smarty/smarty/libs/sysplugins/smarty_data.php | 68 -
.../libs/sysplugins/smarty_internal_block.php | 90 -
.../smarty_internal_cacheresource_file.php | 235 --
.../sysplugins/smarty_internal_compile_append.php | 52 -
.../sysplugins/smarty_internal_compile_assign.php | 96 -
.../sysplugins/smarty_internal_compile_block.php | 189 --
.../smarty_internal_compile_block_child.php | 24 -
.../smarty_internal_compile_block_parent.php | 31 -
.../sysplugins/smarty_internal_compile_break.php | 117 -
.../sysplugins/smarty_internal_compile_call.php | 89 -
.../sysplugins/smarty_internal_compile_capture.php | 105 -
.../sysplugins/smarty_internal_compile_child.php | 79 -
.../smarty_internal_compile_config_load.php | 96 -
.../smarty_internal_compile_continue.php | 25 -
.../sysplugins/smarty_internal_compile_debug.php | 40 -
.../sysplugins/smarty_internal_compile_eval.php | 70 -
.../sysplugins/smarty_internal_compile_extends.php | 96 -
.../sysplugins/smarty_internal_compile_for.php | 164 -
.../sysplugins/smarty_internal_compile_foreach.php | 343 ---
.../smarty_internal_compile_function.php | 236 --
.../libs/sysplugins/smarty_internal_compile_if.php | 207 --
.../sysplugins/smarty_internal_compile_include.php | 347 ---
.../sysplugins/smarty_internal_compile_insert.php | 157 -
.../sysplugins/smarty_internal_compile_ldelim.php | 37 -
.../smarty_internal_compile_make_nocache.php | 62 -
.../sysplugins/smarty_internal_compile_nocache.php | 73 -
.../sysplugins/smarty_internal_compile_parent.php | 31 -
...marty_internal_compile_private_block_plugin.php | 124 -
...rty_internal_compile_private_foreachsection.php | 228 --
...ty_internal_compile_private_function_plugin.php | 78 -
.../smarty_internal_compile_private_modifier.php | 163 -
...ernal_compile_private_object_block_function.php | 42 -
...ty_internal_compile_private_object_function.php | 85 -
...y_internal_compile_private_print_expression.php | 161 -
...y_internal_compile_private_registered_block.php | 72 -
...nternal_compile_private_registered_function.php | 91 -
...y_internal_compile_private_special_variable.php | 130 -
.../sysplugins/smarty_internal_compile_rdelim.php | 34 -
.../sysplugins/smarty_internal_compile_section.php | 462 ---
.../smarty_internal_compile_setfilter.php | 68 -
.../smarty_internal_compile_shared_inheritance.php | 49 -
.../sysplugins/smarty_internal_compile_while.php | 100 -
.../sysplugins/smarty_internal_compilebase.php | 203 --
.../smarty_internal_config_file_compiler.php | 211 --
.../sysplugins/smarty_internal_configfilelexer.php | 739 -----
.../smarty_internal_configfileparser.php | 1046 -------
.../libs/sysplugins/smarty_internal_data.php | 272 --
.../libs/sysplugins/smarty_internal_debug.php | 428 ---
.../sysplugins/smarty_internal_errorhandler.php | 114 -
.../smarty_internal_extension_handler.php | 197 --
.../smarty_internal_method_addautoloadfilters.php | 53 -
.../smarty_internal_method_adddefaultmodifiers.php | 42 -
.../sysplugins/smarty_internal_method_append.php | 74 -
.../smarty_internal_method_appendbyref.php | 49 -
.../smarty_internal_method_assignbyref.php | 36 -
.../smarty_internal_method_assignglobal.php | 44 -
.../smarty_internal_method_clearallassign.php | 36 -
.../smarty_internal_method_clearallcache.php | 41 -
.../smarty_internal_method_clearassign.php | 43 -
.../smarty_internal_method_clearcache.php | 50 -
...marty_internal_method_clearcompiledtemplate.php | 131 -
.../smarty_internal_method_clearconfig.php | 41 -
.../smarty_internal_method_compileallconfig.php | 36 -
.../smarty_internal_method_compilealltemplates.php | 130 -
.../smarty_internal_method_configload.php | 182 --
.../smarty_internal_method_createdata.php | 44 -
.../smarty_internal_method_getautoloadfilters.php | 37 -
.../smarty_internal_method_getconfigvariable.php | 34 -
.../smarty_internal_method_getconfigvars.php | 58 -
.../smarty_internal_method_getdebugtemplate.php | 35 -
.../smarty_internal_method_getdefaultmodifiers.php | 35 -
.../smarty_internal_method_getglobal.php | 47 -
.../smarty_internal_method_getregisteredobject.php | 44 -
.../smarty_internal_method_getstreamvariable.php | 50 -
.../sysplugins/smarty_internal_method_gettags.php | 63 -
.../smarty_internal_method_gettemplatevars.php | 119 -
.../sysplugins/smarty_internal_method_literals.php | 100 -
.../smarty_internal_method_loadfilter.php | 77 -
.../smarty_internal_method_loadplugin.php | 111 -
.../smarty_internal_method_mustcompile.php | 50 -
...marty_internal_method_registercacheresource.php | 42 -
.../smarty_internal_method_registerclass.php | 46 -
...nternal_method_registerdefaultconfighandler.php | 42 -
...nternal_method_registerdefaultpluginhandler.php | 43 -
...ernal_method_registerdefaulttemplatehandler.php | 88 -
.../smarty_internal_method_registerfilter.php | 87 -
.../smarty_internal_method_registerobject.php | 84 -
.../smarty_internal_method_registerplugin.php | 58 -
.../smarty_internal_method_registerresource.php | 39 -
.../smarty_internal_method_setautoloadfilters.php | 72 -
.../smarty_internal_method_setdebugtemplate.php | 41 -
.../smarty_internal_method_setdefaultmodifiers.php | 38 -
.../smarty_internal_method_unloadfilter.php | 43 -
...rty_internal_method_unregistercacheresource.php | 40 -
.../smarty_internal_method_unregisterfilter.php | 43 -
.../smarty_internal_method_unregisterobject.php | 40 -
.../smarty_internal_method_unregisterplugin.php | 41 -
.../smarty_internal_method_unregisterresource.php | 40 -
.../sysplugins/smarty_internal_nocache_insert.php | 51 -
.../libs/sysplugins/smarty_internal_parsetree.php | 50 -
.../sysplugins/smarty_internal_parsetree_code.php | 42 -
.../sysplugins/smarty_internal_parsetree_dq.php | 95 -
.../smarty_internal_parsetree_dqcontent.php | 42 -
.../sysplugins/smarty_internal_parsetree_tag.php | 67 -
.../smarty_internal_parsetree_template.php | 169 --
.../sysplugins/smarty_internal_parsetree_text.php | 57 -
.../sysplugins/smarty_internal_resource_eval.php | 94 -
.../smarty_internal_resource_extends.php | 126 -
.../sysplugins/smarty_internal_resource_file.php | 180 --
.../sysplugins/smarty_internal_resource_php.php | 116 -
.../sysplugins/smarty_internal_resource_stream.php | 78 -
.../sysplugins/smarty_internal_resource_string.php | 108 -
.../smarty_internal_runtime_cachemodify.php | 68 -
.../smarty_internal_runtime_cacheresourcefile.php | 139 -
.../sysplugins/smarty_internal_runtime_capture.php | 174 --
.../smarty_internal_runtime_codeframe.php | 103 -
.../smarty_internal_runtime_filterhandler.php | 69 -
.../sysplugins/smarty_internal_runtime_foreach.php | 162 -
.../smarty_internal_runtime_getincludepath.php | 181 --
.../smarty_internal_runtime_inheritance.php | 251 --
.../smarty_internal_runtime_make_nocache.php | 54 -
.../smarty_internal_runtime_tplfunction.php | 177 --
.../smarty_internal_runtime_updatecache.php | 183 --
.../smarty_internal_runtime_updatescope.php | 115 -
.../smarty_internal_runtime_writefile.php | 91 -
.../smarty_internal_smartytemplatecompiler.php | 184 --
.../libs/sysplugins/smarty_internal_template.php | 741 -----
.../sysplugins/smarty_internal_templatebase.php | 401 ---
.../smarty_internal_templatecompilerbase.php | 1774 -----------
.../sysplugins/smarty_internal_templatelexer.php | 1095 -------
.../sysplugins/smarty_internal_templateparser.php | 2929 ------------------
.../sysplugins/smarty_internal_testinstall.php | 605 ----
.../libs/sysplugins/smarty_internal_undefined.php | 67 -
.../smarty/libs/sysplugins/smarty_resource.php | 260 --
.../libs/sysplugins/smarty_resource_custom.php | 104 -
.../libs/sysplugins/smarty_resource_recompiled.php | 94 -
.../libs/sysplugins/smarty_resource_uncompiled.php | 49 -
.../smarty/libs/sysplugins/smarty_security.php | 680 -----
.../libs/sysplugins/smarty_template_cached.php | 257 --
.../libs/sysplugins/smarty_template_compiled.php | 257 --
.../libs/sysplugins/smarty_template_config.php | 100 -
.../sysplugins/smarty_template_resource_base.php | 152 -
.../libs/sysplugins/smarty_template_source.php | 213 --
.../libs/sysplugins/smarty_undefined_variable.php | 33 -
.../smarty/libs/sysplugins/smarty_variable.php | 48 -
.../libs/sysplugins/smartycompilerexception.php | 73 -
.../smarty/libs/sysplugins/smartyexception.php | 19 -
vendor/smarty/smarty/mkdocs.yml | 64 +-
.../smarty/run-tests-for-all-php-versions.sh | 5 +-
vendor/smarty/smarty/src/BlockHandler/Base.php | 19 +
.../src/BlockHandler/BlockHandlerInterface.php | 10 +
.../smarty/src/BlockHandler/BlockPluginWrapper.php | 19 +
.../smarty/smarty/src/BlockHandler/TextFormat.php | 110 +
vendor/smarty/smarty/src/Cacheresource/Base.php | 156 +
vendor/smarty/smarty/src/Cacheresource/Custom.php | 303 ++
vendor/smarty/smarty/src/Cacheresource/File.php | 338 +++
.../smarty/src/Cacheresource/KeyValueStore.php | 541 ++++
vendor/smarty/smarty/src/Compile/Base.php | 233 ++
vendor/smarty/smarty/src/Compile/BlockCompiler.php | 228 ++
.../smarty/src/Compile/CompilerInterface.php | 26 +
.../src/Compile/DefaultHandlerBlockCompiler.php | 29 +
.../Compile/DefaultHandlerFunctionCallCompiler.php | 47 +
.../smarty/src/Compile/FunctionCallCompiler.php | 79 +
.../src/Compile/Modifier/BCPluginWrapper.php | 19 +
vendor/smarty/smarty/src/Compile/Modifier/Base.php | 49 +
.../src/Compile/Modifier/CatModifierCompiler.php | 25 +
.../Modifier/CountCharactersModifierCompiler.php | 21 +
.../Modifier/CountParagraphsModifierCompiler.php | 19 +
.../Modifier/CountSentencesModifierCompiler.php | 19 +
.../Modifier/CountWordsModifierCompiler.php | 20 +
.../Compile/Modifier/DefaultModifierCompiler.php | 26 +
.../src/Compile/Modifier/EmptyModifierCompiler.php | 19 +
.../Compile/Modifier/EscapeModifierCompiler.php | 66 +
.../Modifier/FromCharsetModifierCompiler.php | 21 +
.../Compile/Modifier/IndentModifierCompiler.php | 24 +
.../Compile/Modifier/IsArrayModifierCompiler.php | 19 +
.../src/Compile/Modifier/IssetModifierCompiler.php | 25 +
.../Modifier/JsonEncodeModifierCompiler.php | 14 +
.../src/Compile/Modifier/LowerModifierCompiler.php | 19 +
.../Compile/Modifier/ModifierCompilerInterface.php | 17 +
.../src/Compile/Modifier/Nl2brModifierCompiler.php | 17 +
.../Compile/Modifier/NoPrintModifierCompiler.php | 18 +
.../src/Compile/Modifier/RawModifierCompiler.php | 21 +
.../src/Compile/Modifier/RoundModifierCompiler.php | 18 +
.../Compile/Modifier/StrRepeatModifierCompiler.php | 17 +
.../Modifier/StringFormatModifierCompiler.php | 18 +
.../src/Compile/Modifier/StripModifierCompiler.php | 24 +
.../Compile/Modifier/StripTagsModifierCompiler.php | 22 +
.../Compile/Modifier/StrlenModifierCompiler.php | 18 +
.../Compile/Modifier/SubstrModifierCompiler.php | 15 +
.../Compile/Modifier/ToCharsetModifierCompiler.php | 21 +
.../Compile/Modifier/UnescapeModifierCompiler.php | 34 +
.../src/Compile/Modifier/UpperModifierCompiler.php | 18 +
.../Compile/Modifier/WordWrapModifierCompiler.php | 27 +
.../smarty/smarty/src/Compile/ModifierCompiler.php | 95 +
.../src/Compile/ObjectMethodBlockCompiler.php | 44 +
.../src/Compile/ObjectMethodCallCompiler.php | 76 +
.../smarty/src/Compile/PrintExpressionCompiler.php | 96 +
.../smarty/src/Compile/SpecialVariableCompiler.php | 134 +
vendor/smarty/smarty/src/Compile/Tag/Append.php | 58 +
vendor/smarty/smarty/src/Compile/Tag/Assign.php | 95 +
.../smarty/src/Compile/Tag/BCPluginWrapper.php | 31 +
vendor/smarty/smarty/src/Compile/Tag/Block.php | 92 +
.../smarty/smarty/src/Compile/Tag/BlockClose.php | 110 +
vendor/smarty/smarty/src/Compile/Tag/BreakTag.php | 123 +
vendor/smarty/smarty/src/Compile/Tag/Call.php | 81 +
vendor/smarty/smarty/src/Compile/Tag/Capture.php | 72 +
.../smarty/smarty/src/Compile/Tag/CaptureClose.php | 43 +
.../smarty/smarty/src/Compile/Tag/ConfigLoad.php | 77 +
.../smarty/smarty/src/Compile/Tag/ContinueTag.php | 27 +
vendor/smarty/smarty/src/Compile/Tag/Debug.php | 45 +
vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php | 86 +
vendor/smarty/smarty/src/Compile/Tag/ElseTag.php | 29 +
vendor/smarty/smarty/src/Compile/Tag/EvalTag.php | 74 +
.../smarty/smarty/src/Compile/Tag/ExtendsTag.php | 87 +
vendor/smarty/smarty/src/Compile/Tag/ForClose.php | 51 +
vendor/smarty/smarty/src/Compile/Tag/ForElse.php | 30 +
vendor/smarty/smarty/src/Compile/Tag/ForTag.php | 101 +
.../smarty/smarty/src/Compile/Tag/ForeachClose.php | 55 +
.../smarty/smarty/src/Compile/Tag/ForeachElse.php | 35 +
.../smarty/src/Compile/Tag/ForeachSection.php | 206 ++
.../smarty/smarty/src/Compile/Tag/ForeachTag.php | 286 ++
.../smarty/src/Compile/Tag/FunctionClose.php | 164 +
.../smarty/smarty/src/Compile/Tag/FunctionTag.php | 73 +
vendor/smarty/smarty/src/Compile/Tag/IfClose.php | 48 +
vendor/smarty/smarty/src/Compile/Tag/IfTag.php | 70 +
.../smarty/smarty/src/Compile/Tag/IncludeTag.php | 189 ++
.../smarty/smarty/src/Compile/Tag/Inheritance.php | 54 +
vendor/smarty/smarty/src/Compile/Tag/Ldelim.php | 41 +
vendor/smarty/smarty/src/Compile/Tag/Nocache.php | 36 +
.../smarty/smarty/src/Compile/Tag/NocacheClose.php | 37 +
vendor/smarty/smarty/src/Compile/Tag/Rdelim.php | 36 +
vendor/smarty/smarty/src/Compile/Tag/Section.php | 399 +++
.../smarty/smarty/src/Compile/Tag/SectionClose.php | 48 +
.../smarty/smarty/src/Compile/Tag/SectionElse.php | 29 +
vendor/smarty/smarty/src/Compile/Tag/Setfilter.php | 40 +
.../smarty/src/Compile/Tag/SetfilterClose.php | 43 +
.../smarty/smarty/src/Compile/Tag/WhileClose.php | 45 +
vendor/smarty/smarty/src/Compile/Tag/WhileTag.php | 72 +
vendor/smarty/smarty/src/Compiler/BaseCompiler.php | 23 +
vendor/smarty/smarty/src/Compiler/CodeFrame.php | 126 +
vendor/smarty/smarty/src/Compiler/Configfile.php | 173 ++
vendor/smarty/smarty/src/Compiler/Template.php | 1512 ++++++++++
vendor/smarty/smarty/src/CompilerException.php | 73 +
vendor/smarty/smarty/src/Data.php | 521 ++++
vendor/smarty/smarty/src/Debug.php | 370 +++
vendor/smarty/smarty/src/ErrorHandler.php | 97 +
vendor/smarty/smarty/src/Exception.php | 16 +
.../smarty/src/Extension/BCPluginsAdapter.php | 229 ++
vendor/smarty/smarty/src/Extension/Base.php | 41 +
.../smarty/src/Extension/CallbackWrapper.php | 35 +
.../smarty/smarty/src/Extension/CoreExtension.php | 49 +
.../smarty/src/Extension/DefaultExtension.php | 757 +++++
.../smarty/src/Extension/ExtensionInterface.php | 83 +
.../smarty/smarty/src/Filter/FilterInterface.php | 9 +
.../smarty/src/Filter/FilterPluginWrapper.php | 15 +
.../smarty/src/Filter/Output/TrimWhitespace.php | 91 +
.../smarty/src/FunctionHandler/BCPluginWrapper.php | 21 +
vendor/smarty/smarty/src/FunctionHandler/Base.php | 21 +
vendor/smarty/smarty/src/FunctionHandler/Count.php | 36 +
.../smarty/smarty/src/FunctionHandler/Counter.php | 61 +
vendor/smarty/smarty/src/FunctionHandler/Cycle.php | 90 +
vendor/smarty/smarty/src/FunctionHandler/Fetch.php | 203 ++
.../FunctionHandler/FunctionHandlerInterface.php | 10 +
.../smarty/smarty/src/FunctionHandler/HtmlBase.php | 107 +
.../smarty/src/FunctionHandler/HtmlCheckboxes.php | 189 ++
.../smarty/src/FunctionHandler/HtmlImage.php | 149 +
.../smarty/src/FunctionHandler/HtmlOptions.php | 223 ++
.../smarty/src/FunctionHandler/HtmlRadios.php | 174 ++
.../smarty/src/FunctionHandler/HtmlSelectDate.php | 381 +++
.../smarty/src/FunctionHandler/HtmlSelectTime.php | 334 +++
.../smarty/src/FunctionHandler/HtmlTable.php | 161 +
.../smarty/smarty/src/FunctionHandler/Mailto.php | 141 +
vendor/smarty/smarty/src/FunctionHandler/Math.php | 140 +
vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php | 707 +++++
.../smarty/smarty/src/Lexer/ConfigfileLexer.plex | 321 ++
vendor/smarty/smarty/src/Lexer/TemplateLexer.php | 1083 +++++++
vendor/smarty/smarty/src/Lexer/TemplateLexer.plex | 677 +++++
vendor/smarty/smarty/src/ParseTree/Base.php | 45 +
vendor/smarty/smarty/src/ParseTree/Code.php | 45 +
vendor/smarty/smarty/src/ParseTree/Dq.php | 97 +
vendor/smarty/smarty/src/ParseTree/DqContent.php | 44 +
vendor/smarty/smarty/src/ParseTree/Tag.php | 70 +
vendor/smarty/smarty/src/ParseTree/Template.php | 172 ++
vendor/smarty/smarty/src/ParseTree/Text.php | 59 +
.../smarty/smarty/src/Parser/ConfigfileParser.php | 972 ++++++
vendor/smarty/smarty/src/Parser/ConfigfileParser.y | 352 +++
vendor/smarty/smarty/src/Parser/TemplateParser.php | 3171 ++++++++++++++++++++
vendor/smarty/smarty/src/Parser/TemplateParser.y | 1390 +++++++++
vendor/smarty/smarty/src/Resource/BasePlugin.php | 145 +
vendor/smarty/smarty/src/Resource/CustomPlugin.php | 105 +
.../smarty/smarty/src/Resource/ExtendsPlugin.php | 116 +
vendor/smarty/smarty/src/Resource/FilePlugin.php | 183 ++
.../smarty/src/Resource/RecompiledPlugin.php | 50 +
vendor/smarty/smarty/src/Resource/StreamPlugin.php | 71 +
vendor/smarty/smarty/src/Resource/StringEval.php | 85 +
vendor/smarty/smarty/src/Resource/StringPlugin.php | 94 +
vendor/smarty/smarty/src/Runtime/Block.php | 92 +
.../smarty/smarty/src/Runtime/CaptureRuntime.php | 163 +
.../src/Runtime/DefaultPluginHandlerRuntime.php | 73 +
.../smarty/smarty/src/Runtime/ForeachRuntime.php | 160 +
.../smarty/src/Runtime/InheritanceRuntime.php | 243 ++
.../smarty/src/Runtime/TplFunctionRuntime.php | 144 +
vendor/smarty/smarty/src/Security.php | 560 ++++
vendor/smarty/smarty/src/Smarty.php | 2239 ++++++++++++++
vendor/smarty/smarty/src/Template.php | 732 +++++
vendor/smarty/smarty/src/Template/Cached.php | 428 +++
vendor/smarty/smarty/src/Template/Compiled.php | 305 ++
vendor/smarty/smarty/src/Template/Config.php | 36 +
.../smarty/src/Template/GeneratedPhpFile.php | 159 +
vendor/smarty/smarty/src/Template/Source.php | 285 ++
vendor/smarty/smarty/src/TemplateBase.php | 425 +++
vendor/smarty/smarty/src/TestInstall.php | 211 ++
vendor/smarty/smarty/src/UndefinedVariable.php | 19 +
vendor/smarty/smarty/src/Variable.php | 118 +
vendor/smarty/smarty/src/debug.tpl | 174 ++
vendor/smarty/smarty/src/functions.php | 253 ++
583 files changed, 33910 insertions(+), 39881 deletions(-)
create mode 100644 vendor/smarty/smarty/CONTRIBUTING.md
create mode 100644 vendor/smarty/smarty/Makefile
create mode 100644 vendor/smarty/smarty/TODO.txt
delete mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/resource.extendsall.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/resource.mysql.php
delete mode 100644 vendor/smarty/smarty/demo/plugins/resource.mysqls.php
create mode 100644 vendor/smarty/smarty/docs/api/basics.md
create mode 100644 vendor/smarty/smarty/docs/api/caching/basics.md
create mode 100644 vendor/smarty/smarty/docs/api/caching/custom-storage-layers.md
create mode 100644 vendor/smarty/smarty/docs/api/caching/multiple-caches-per-template.md
create mode 100644 vendor/smarty/smarty/docs/api/configuring.md
create mode 100644 vendor/smarty/smarty/docs/api/extending/block-tags.md
create mode 100644 vendor/smarty/smarty/docs/api/extending/extensions.md
create mode 100644 vendor/smarty/smarty/docs/api/extending/introduction.md
create mode 100644 vendor/smarty/smarty/docs/api/extending/modifiers.md
create mode 100644 vendor/smarty/smarty/docs/api/extending/tags.md
create mode 100644 vendor/smarty/smarty/docs/api/filters/output-filters.md
create mode 100644 vendor/smarty/smarty/docs/api/filters/postfilters.md
create mode 100644 vendor/smarty/smarty/docs/api/filters/prefilters.md
create mode 100644 vendor/smarty/smarty/docs/api/inheritance.md
create mode 100644 vendor/smarty/smarty/docs/api/rendering.md
create mode 100644 vendor/smarty/smarty/docs/api/resources.md
create mode 100644 vendor/smarty/smarty/docs/api/security.md
create mode 100644 vendor/smarty/smarty/docs/api/variables/assigning.md
create mode 100644 vendor/smarty/smarty/docs/api/variables/config-files.md
create mode 100644 vendor/smarty/smarty/docs/api/variables/objects.md
create mode 100644 vendor/smarty/smarty/docs/api/variables/static-class-methods.md
create mode 100644 vendor/smarty/smarty/docs/api/variables/streams.md
delete mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md
delete mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
create mode 100644 vendor/smarty/smarty/docs/img/smarty.svg
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions.md
create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/caching.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/charset.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources/resources-file.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources/resources-string.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/resources/template-resources.md
delete mode 100644 vendor/smarty/smarty/docs/programmers/smarty-constants.md
delete mode 100644 vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex
delete mode 100644 vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y
delete mode 100644 vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex
delete mode 100644 vendor/smarty/smarty/lexer/smarty_internal_templateparser.y
delete mode 100644 vendor/smarty/smarty/libs/Autoloader.php
delete mode 100644 vendor/smarty/smarty/libs/bootstrap.php
delete mode 100644 vendor/smarty/smarty/libs/debug.tpl
delete mode 100644 vendor/smarty/smarty/libs/functions.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/block.textformat.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.counter.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.cycle.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.fetch.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_image.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_options.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_radios.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_select_date.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_select_time.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.html_table.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.mailto.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/function.math.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.count.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.date_format.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.escape.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.explode.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.implode.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.mb_wordwrap.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.number_format.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.replace.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.spacify.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifier.truncate.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.json_encode.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.nl2br.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.round.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.str_repeat.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.strlen.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.substr.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
delete mode 100644 vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_data.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_security.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
delete mode 100644 vendor/smarty/smarty/libs/sysplugins/smartyexception.php
create mode 100644 vendor/smarty/smarty/src/BlockHandler/Base.php
create mode 100644 vendor/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php
create mode 100644 vendor/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php
create mode 100644 vendor/smarty/smarty/src/BlockHandler/TextFormat.php
create mode 100644 vendor/smarty/smarty/src/Cacheresource/Base.php
create mode 100644 vendor/smarty/smarty/src/Cacheresource/Custom.php
create mode 100644 vendor/smarty/smarty/src/Cacheresource/File.php
create mode 100644 vendor/smarty/smarty/src/Cacheresource/KeyValueStore.php
create mode 100644 vendor/smarty/smarty/src/Compile/Base.php
create mode 100644 vendor/smarty/smarty/src/Compile/BlockCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/CompilerInterface.php
create mode 100644 vendor/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/FunctionCallCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/Base.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/ModifierCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/PrintExpressionCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/SpecialVariableCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Append.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Assign.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Block.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/BlockClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/BreakTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Call.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Capture.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/CaptureClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ConfigLoad.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ContinueTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Debug.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ElseTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/EvalTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ExtendsTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForElse.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachElse.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachSection.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/FunctionClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/FunctionTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/IfClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/IfTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/IncludeTag.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Inheritance.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Ldelim.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Nocache.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/NocacheClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Rdelim.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Section.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/SectionClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/SectionElse.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Setfilter.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/SetfilterClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/WhileClose.php
create mode 100644 vendor/smarty/smarty/src/Compile/Tag/WhileTag.php
create mode 100644 vendor/smarty/smarty/src/Compiler/BaseCompiler.php
create mode 100644 vendor/smarty/smarty/src/Compiler/CodeFrame.php
create mode 100644 vendor/smarty/smarty/src/Compiler/Configfile.php
create mode 100644 vendor/smarty/smarty/src/Compiler/Template.php
create mode 100644 vendor/smarty/smarty/src/CompilerException.php
create mode 100644 vendor/smarty/smarty/src/Data.php
create mode 100644 vendor/smarty/smarty/src/Debug.php
create mode 100644 vendor/smarty/smarty/src/ErrorHandler.php
create mode 100644 vendor/smarty/smarty/src/Exception.php
create mode 100644 vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php
create mode 100644 vendor/smarty/smarty/src/Extension/Base.php
create mode 100644 vendor/smarty/smarty/src/Extension/CallbackWrapper.php
create mode 100644 vendor/smarty/smarty/src/Extension/CoreExtension.php
create mode 100644 vendor/smarty/smarty/src/Extension/DefaultExtension.php
create mode 100644 vendor/smarty/smarty/src/Extension/ExtensionInterface.php
create mode 100644 vendor/smarty/smarty/src/Filter/FilterInterface.php
create mode 100644 vendor/smarty/smarty/src/Filter/FilterPluginWrapper.php
create mode 100644 vendor/smarty/smarty/src/Filter/Output/TrimWhitespace.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Base.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Count.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Counter.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Cycle.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Fetch.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlBase.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Mailto.php
create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Math.php
create mode 100644 vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php
create mode 100644 vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex
create mode 100644 vendor/smarty/smarty/src/Lexer/TemplateLexer.php
create mode 100644 vendor/smarty/smarty/src/Lexer/TemplateLexer.plex
create mode 100644 vendor/smarty/smarty/src/ParseTree/Base.php
create mode 100644 vendor/smarty/smarty/src/ParseTree/Code.php
create mode 100644 vendor/smarty/smarty/src/ParseTree/Dq.php
create mode 100644 vendor/smarty/smarty/src/ParseTree/DqContent.php
create mode 100644 vendor/smarty/smarty/src/ParseTree/Tag.php
create mode 100644 vendor/smarty/smarty/src/ParseTree/Template.php
create mode 100644 vendor/smarty/smarty/src/ParseTree/Text.php
create mode 100644 vendor/smarty/smarty/src/Parser/ConfigfileParser.php
create mode 100644 vendor/smarty/smarty/src/Parser/ConfigfileParser.y
create mode 100644 vendor/smarty/smarty/src/Parser/TemplateParser.php
create mode 100644 vendor/smarty/smarty/src/Parser/TemplateParser.y
create mode 100644 vendor/smarty/smarty/src/Resource/BasePlugin.php
create mode 100644 vendor/smarty/smarty/src/Resource/CustomPlugin.php
create mode 100644 vendor/smarty/smarty/src/Resource/ExtendsPlugin.php
create mode 100644 vendor/smarty/smarty/src/Resource/FilePlugin.php
create mode 100644 vendor/smarty/smarty/src/Resource/RecompiledPlugin.php
create mode 100644 vendor/smarty/smarty/src/Resource/StreamPlugin.php
create mode 100644 vendor/smarty/smarty/src/Resource/StringEval.php
create mode 100644 vendor/smarty/smarty/src/Resource/StringPlugin.php
create mode 100644 vendor/smarty/smarty/src/Runtime/Block.php
create mode 100644 vendor/smarty/smarty/src/Runtime/CaptureRuntime.php
create mode 100644 vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php
create mode 100644 vendor/smarty/smarty/src/Runtime/ForeachRuntime.php
create mode 100644 vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php
create mode 100644 vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php
create mode 100644 vendor/smarty/smarty/src/Security.php
create mode 100644 vendor/smarty/smarty/src/Smarty.php
create mode 100644 vendor/smarty/smarty/src/Template.php
create mode 100644 vendor/smarty/smarty/src/Template/Cached.php
create mode 100644 vendor/smarty/smarty/src/Template/Compiled.php
create mode 100644 vendor/smarty/smarty/src/Template/Config.php
create mode 100644 vendor/smarty/smarty/src/Template/GeneratedPhpFile.php
create mode 100644 vendor/smarty/smarty/src/Template/Source.php
create mode 100644 vendor/smarty/smarty/src/TemplateBase.php
create mode 100644 vendor/smarty/smarty/src/TestInstall.php
create mode 100644 vendor/smarty/smarty/src/UndefinedVariable.php
create mode 100644 vendor/smarty/smarty/src/Variable.php
create mode 100644 vendor/smarty/smarty/src/debug.tpl
create mode 100644 vendor/smarty/smarty/src/functions.php
diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php
index 64c6aa377..a319a4881 100644
--- a/Zotlabs/Render/SmartyInterface.php
+++ b/Zotlabs/Render/SmartyInterface.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Render;
-use Smarty;
+use Smarty\Smarty;
use App;
class SmartyInterface extends Smarty {
@@ -26,13 +26,13 @@ class SmartyInterface extends Smarty {
$this->setTemplateDir($template_dirs);
$basecompiledir = App::$config['system']['smarty3_folder'];
-
+
$this->setCompileDir($basecompiledir.'/compiled/');
$this->setConfigDir($basecompiledir.'/config/');
$this->setCacheDir($basecompiledir.'/cache/');
- $this->left_delimiter = App::get_template_ldelim('smarty3');
- $this->right_delimiter = App::get_template_rdelim('smarty3');
+ $this->setLeftDelimiter(App::get_template_ldelim('smarty3'));
+ $this->setRightDelimiter(App::get_template_rdelim('smarty3'));
// Don't report errors so verbosely
$this->error_reporting = E_ALL & ~E_WARNING & ~E_NOTICE;
diff --git a/composer.json b/composer.json
index cb28c922e..8584718e4 100644
--- a/composer.json
+++ b/composer.json
@@ -43,7 +43,7 @@
"pear/text_languagedetect": "^1.0",
"commerceguys/intl": "~1.1.0",
"lukasreschke/id3parser": "^0.0.3",
- "smarty/smarty": "^4.1",
+ "smarty/smarty": "^5.4",
"ramsey/uuid": "^4.1",
"twbs/bootstrap": "^5.3",
"blueimp/jquery-file-upload": "^10.3",
diff --git a/composer.lock b/composer.lock
index b546c42f8..9635827df 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "41329118e671ab9a825d2041086cd875",
+ "content-hash": "6840b88be8904950e7f965555d75cf36",
"packages": [
{
"name": "blueimp/jquery-file-upload",
@@ -1963,35 +1963,39 @@
},
{
"name": "smarty/smarty",
- "version": "v4.5.5",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
- "reference": "c4851c12e34ff80073ddeb7d98b059d57dea9de2"
+ "reference": "c6bff5795081ca5e60aabda59fb87daa511acd1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c4851c12e34ff80073ddeb7d98b059d57dea9de2",
- "reference": "c4851c12e34ff80073ddeb7d98b059d57dea9de2",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c6bff5795081ca5e60aabda59fb87daa511acd1e",
+ "reference": "c6bff5795081ca5e60aabda59fb87daa511acd1e",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.27"
},
"require-dev": {
"phpunit/phpunit": "^8.5 || ^7.5",
- "smarty/smarty-lexer": "^3.1"
+ "smarty/smarty-lexer": "^4.0.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0.x-dev"
+ "dev-master": "5.0.x-dev"
}
},
"autoload": {
- "classmap": [
- "libs/"
- ]
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Smarty\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2023,9 +2027,9 @@
"support": {
"forum": "https://github.com/smarty-php/smarty/discussions",
"issues": "https://github.com/smarty-php/smarty/issues",
- "source": "https://github.com/smarty-php/smarty/tree/v4.5.5"
+ "source": "https://github.com/smarty-php/smarty/tree/v5.4.3"
},
- "time": "2024-11-21T22:06:22+00:00"
+ "time": "2024-12-23T00:38:44+00:00"
},
{
"name": "spomky-labs/otphp",
@@ -2218,6 +2222,86 @@
],
"time": "2024-09-25T14:20:29+00:00"
},
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
{
"name": "twbs/bootstrap",
"version": "v5.3.3",
@@ -5042,86 +5126,6 @@
],
"time": "2024-09-09T11:45:10+00:00"
},
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
- "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "provide": {
- "ext-mbstring": "*"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2024-09-09T11:45:10+00:00"
- },
{
"name": "symfony/service-contracts",
"version": "v3.5.1",
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 18ca2563b..b89ef67d8 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -2893,173 +2893,168 @@ return array(
'SimplePie_Source' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Source.php',
'SimplePie_XML_Declaration_Parser' => $vendorDir . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php',
'SimplePie_gzdecode' => $vendorDir . '/simplepie/simplepie/library/SimplePie/gzdecode.php',
- 'Smarty' => $vendorDir . '/smarty/smarty/libs/Smarty.class.php',
- 'SmartyCompilerException' => $vendorDir . '/smarty/smarty/libs/sysplugins/smartycompilerexception.php',
- 'SmartyException' => $vendorDir . '/smarty/smarty/libs/sysplugins/smartyexception.php',
- 'Smarty_Autoloader' => $vendorDir . '/smarty/smarty/libs/Autoloader.php',
- 'Smarty_CacheResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_cacheresource.php',
- 'Smarty_CacheResource_Custom' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php',
- 'Smarty_CacheResource_KeyValueStore' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php',
- 'Smarty_Data' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_data.php',
- 'Smarty_Internal_Block' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_block.php',
- 'Smarty_Internal_CacheResource_File' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php',
- 'Smarty_Internal_CompileBase' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php',
- 'Smarty_Internal_Compile_Append' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php',
- 'Smarty_Internal_Compile_Assign' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php',
- 'Smarty_Internal_Compile_Block' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Block_Child' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php',
- 'Smarty_Internal_Compile_Block_Parent' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php',
- 'Smarty_Internal_Compile_Blockclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Break' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php',
- 'Smarty_Internal_Compile_Call' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php',
- 'Smarty_Internal_Compile_Capture' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_CaptureClose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_Child' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php',
- 'Smarty_Internal_Compile_Config_Load' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php',
- 'Smarty_Internal_Compile_Continue' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php',
- 'Smarty_Internal_Compile_Debug' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php',
- 'Smarty_Internal_Compile_Else' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Elseif' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Eval' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php',
- 'Smarty_Internal_Compile_Extends' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php',
- 'Smarty_Internal_Compile_For' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Forclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Foreach' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachelse' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Forelse' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_Functionclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_If' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Ifclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Include' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php',
- 'Smarty_Internal_Compile_Insert' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php',
- 'Smarty_Internal_Compile_Ldelim' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php',
- 'Smarty_Internal_Compile_Make_Nocache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php',
- 'Smarty_Internal_Compile_Nocache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Nocacheclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Parent' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php',
- 'Smarty_Internal_Compile_Private_Block_Plugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php',
- 'Smarty_Internal_Compile_Private_ForeachSection' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php',
- 'Smarty_Internal_Compile_Private_Function_Plugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php',
- 'Smarty_Internal_Compile_Private_Modifier' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php',
- 'Smarty_Internal_Compile_Private_Object_Block_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php',
- 'Smarty_Internal_Compile_Private_Object_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php',
- 'Smarty_Internal_Compile_Private_Print_Expression' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php',
- 'Smarty_Internal_Compile_Private_Registered_Block' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php',
- 'Smarty_Internal_Compile_Private_Registered_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php',
- 'Smarty_Internal_Compile_Private_Special_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php',
- 'Smarty_Internal_Compile_Rdelim' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php',
- 'Smarty_Internal_Compile_Section' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionelse' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Setfilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Setfilterclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Shared_Inheritance' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php',
- 'Smarty_Internal_Compile_While' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Compile_Whileclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Config_File_Compiler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php',
- 'Smarty_Internal_Configfilelexer' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php',
- 'Smarty_Internal_Configfileparser' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'Smarty_Internal_Data' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_data.php',
- 'Smarty_Internal_Debug' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_debug.php',
- 'Smarty_Internal_ErrorHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php',
- 'Smarty_Internal_Extension_Handler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php',
- 'Smarty_Internal_Method_AddAutoloadFilters' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php',
- 'Smarty_Internal_Method_AddDefaultModifiers' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php',
- 'Smarty_Internal_Method_Append' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php',
- 'Smarty_Internal_Method_AppendByRef' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php',
- 'Smarty_Internal_Method_AssignByRef' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php',
- 'Smarty_Internal_Method_AssignGlobal' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php',
- 'Smarty_Internal_Method_ClearAllAssign' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php',
- 'Smarty_Internal_Method_ClearAllCache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php',
- 'Smarty_Internal_Method_ClearAssign' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php',
- 'Smarty_Internal_Method_ClearCache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php',
- 'Smarty_Internal_Method_ClearCompiledTemplate' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php',
- 'Smarty_Internal_Method_ClearConfig' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php',
- 'Smarty_Internal_Method_CompileAllConfig' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php',
- 'Smarty_Internal_Method_CompileAllTemplates' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php',
- 'Smarty_Internal_Method_ConfigLoad' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php',
- 'Smarty_Internal_Method_CreateData' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php',
- 'Smarty_Internal_Method_GetAutoloadFilters' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php',
- 'Smarty_Internal_Method_GetConfigVariable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php',
- 'Smarty_Internal_Method_GetConfigVars' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php',
- 'Smarty_Internal_Method_GetDebugTemplate' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php',
- 'Smarty_Internal_Method_GetDefaultModifiers' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php',
- 'Smarty_Internal_Method_GetGlobal' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php',
- 'Smarty_Internal_Method_GetRegisteredObject' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php',
- 'Smarty_Internal_Method_GetStreamVariable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php',
- 'Smarty_Internal_Method_GetTags' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php',
- 'Smarty_Internal_Method_GetTemplateVars' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php',
- 'Smarty_Internal_Method_Literals' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php',
- 'Smarty_Internal_Method_LoadFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php',
- 'Smarty_Internal_Method_LoadPlugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php',
- 'Smarty_Internal_Method_MustCompile' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php',
- 'Smarty_Internal_Method_RegisterCacheResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php',
- 'Smarty_Internal_Method_RegisterClass' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php',
- 'Smarty_Internal_Method_RegisterDefaultConfigHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php',
- 'Smarty_Internal_Method_RegisterDefaultPluginHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php',
- 'Smarty_Internal_Method_RegisterDefaultTemplateHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php',
- 'Smarty_Internal_Method_RegisterFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php',
- 'Smarty_Internal_Method_RegisterObject' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php',
- 'Smarty_Internal_Method_RegisterPlugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php',
- 'Smarty_Internal_Method_RegisterResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php',
- 'Smarty_Internal_Method_SetAutoloadFilters' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php',
- 'Smarty_Internal_Method_SetDebugTemplate' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php',
- 'Smarty_Internal_Method_SetDefaultModifiers' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php',
- 'Smarty_Internal_Method_UnloadFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php',
- 'Smarty_Internal_Method_UnregisterCacheResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php',
- 'Smarty_Internal_Method_UnregisterFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php',
- 'Smarty_Internal_Method_UnregisterObject' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php',
- 'Smarty_Internal_Method_UnregisterPlugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php',
- 'Smarty_Internal_Method_UnregisterResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php',
- 'Smarty_Internal_Nocache_Insert' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php',
- 'Smarty_Internal_ParseTree' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php',
- 'Smarty_Internal_ParseTree_Code' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php',
- 'Smarty_Internal_ParseTree_Dq' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php',
- 'Smarty_Internal_ParseTree_DqContent' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php',
- 'Smarty_Internal_ParseTree_Tag' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php',
- 'Smarty_Internal_ParseTree_Template' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php',
- 'Smarty_Internal_ParseTree_Text' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php',
- 'Smarty_Internal_Resource_Eval' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php',
- 'Smarty_Internal_Resource_Extends' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php',
- 'Smarty_Internal_Resource_File' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php',
- 'Smarty_Internal_Resource_Php' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php',
- 'Smarty_Internal_Resource_Stream' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php',
- 'Smarty_Internal_Resource_String' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php',
- 'Smarty_Internal_Runtime_CacheModify' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php',
- 'Smarty_Internal_Runtime_CacheResourceFile' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php',
- 'Smarty_Internal_Runtime_Capture' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php',
- 'Smarty_Internal_Runtime_CodeFrame' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php',
- 'Smarty_Internal_Runtime_FilterHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php',
- 'Smarty_Internal_Runtime_Foreach' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php',
- 'Smarty_Internal_Runtime_GetIncludePath' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php',
- 'Smarty_Internal_Runtime_Inheritance' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php',
- 'Smarty_Internal_Runtime_Make_Nocache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php',
- 'Smarty_Internal_Runtime_TplFunction' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php',
- 'Smarty_Internal_Runtime_UpdateCache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php',
- 'Smarty_Internal_Runtime_UpdateScope' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php',
- 'Smarty_Internal_Runtime_WriteFile' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php',
- 'Smarty_Internal_SmartyTemplateCompiler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php',
- 'Smarty_Internal_Template' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_template.php',
- 'Smarty_Internal_TemplateBase' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php',
- 'Smarty_Internal_TemplateCompilerBase' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php',
- 'Smarty_Internal_Templatelexer' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php',
- 'Smarty_Internal_Templateparser' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
- 'Smarty_Internal_TestInstall' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php',
- 'Smarty_Internal_Undefined' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php',
- 'Smarty_Resource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource.php',
- 'Smarty_Resource_Custom' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource_custom.php',
- 'Smarty_Resource_Recompiled' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php',
- 'Smarty_Resource_Uncompiled' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php',
- 'Smarty_Security' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_security.php',
- 'Smarty_Template_Cached' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_cached.php',
- 'Smarty_Template_Compiled' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_compiled.php',
- 'Smarty_Template_Config' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_config.php',
- 'Smarty_Template_Resource_Base' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php',
- 'Smarty_Template_Source' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
- 'Smarty_Undefined_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
- 'Smarty_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
+ 'Smarty\\BlockHandler\\Base' => $vendorDir . '/smarty/smarty/src/BlockHandler/Base.php',
+ 'Smarty\\BlockHandler\\BlockHandlerInterface' => $vendorDir . '/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php',
+ 'Smarty\\BlockHandler\\BlockPluginWrapper' => $vendorDir . '/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php',
+ 'Smarty\\BlockHandler\\TextFormat' => $vendorDir . '/smarty/smarty/src/BlockHandler/TextFormat.php',
+ 'Smarty\\Cacheresource\\Base' => $vendorDir . '/smarty/smarty/src/Cacheresource/Base.php',
+ 'Smarty\\Cacheresource\\Custom' => $vendorDir . '/smarty/smarty/src/Cacheresource/Custom.php',
+ 'Smarty\\Cacheresource\\File' => $vendorDir . '/smarty/smarty/src/Cacheresource/File.php',
+ 'Smarty\\Cacheresource\\KeyValueStore' => $vendorDir . '/smarty/smarty/src/Cacheresource/KeyValueStore.php',
+ 'Smarty\\Compile\\Base' => $vendorDir . '/smarty/smarty/src/Compile/Base.php',
+ 'Smarty\\Compile\\BlockCompiler' => $vendorDir . '/smarty/smarty/src/Compile/BlockCompiler.php',
+ 'Smarty\\Compile\\CompilerInterface' => $vendorDir . '/smarty/smarty/src/Compile/CompilerInterface.php',
+ 'Smarty\\Compile\\DefaultHandlerBlockCompiler' => $vendorDir . '/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php',
+ 'Smarty\\Compile\\DefaultHandlerFunctionCallCompiler' => $vendorDir . '/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php',
+ 'Smarty\\Compile\\FunctionCallCompiler' => $vendorDir . '/smarty/smarty/src/Compile/FunctionCallCompiler.php',
+ 'Smarty\\Compile\\ModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/ModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\BCPluginWrapper' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Modifier\\Base' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/Base.php',
+ 'Smarty\\Compile\\Modifier\\CatModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountCharactersModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountParagraphsModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountSentencesModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountWordsModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\DefaultModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EmptyModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EscapeModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\FromCharsetModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IndentModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IsArrayModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IssetModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\JsonEncodeModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\LowerModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ModifierCompilerInterface' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php',
+ 'Smarty\\Compile\\Modifier\\Nl2brModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\NoPrintModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RawModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RoundModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrRepeatModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StringFormatModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripTagsModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrlenModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\SubstrModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ToCharsetModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UnescapeModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UpperModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\WordWrapModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodBlockCompiler' => $vendorDir . '/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodCallCompiler' => $vendorDir . '/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php',
+ 'Smarty\\Compile\\PrintExpressionCompiler' => $vendorDir . '/smarty/smarty/src/Compile/PrintExpressionCompiler.php',
+ 'Smarty\\Compile\\SpecialVariableCompiler' => $vendorDir . '/smarty/smarty/src/Compile/SpecialVariableCompiler.php',
+ 'Smarty\\Compile\\Tag\\Append' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Append.php',
+ 'Smarty\\Compile\\Tag\\Assign' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Assign.php',
+ 'Smarty\\Compile\\Tag\\BCPluginWrapper' => $vendorDir . '/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Tag\\Block' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Block.php',
+ 'Smarty\\Compile\\Tag\\BlockClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/BlockClose.php',
+ 'Smarty\\Compile\\Tag\\BreakTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/BreakTag.php',
+ 'Smarty\\Compile\\Tag\\Call' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Call.php',
+ 'Smarty\\Compile\\Tag\\Capture' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Capture.php',
+ 'Smarty\\Compile\\Tag\\CaptureClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/CaptureClose.php',
+ 'Smarty\\Compile\\Tag\\ConfigLoad' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ConfigLoad.php',
+ 'Smarty\\Compile\\Tag\\ContinueTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ContinueTag.php',
+ 'Smarty\\Compile\\Tag\\Debug' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Debug.php',
+ 'Smarty\\Compile\\Tag\\ElseIfTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ElseIfTag.php',
+ 'Smarty\\Compile\\Tag\\ElseTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ElseTag.php',
+ 'Smarty\\Compile\\Tag\\EvalTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/EvalTag.php',
+ 'Smarty\\Compile\\Tag\\ExtendsTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ExtendsTag.php',
+ 'Smarty\\Compile\\Tag\\ForClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForClose.php',
+ 'Smarty\\Compile\\Tag\\ForElse' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForElse.php',
+ 'Smarty\\Compile\\Tag\\ForTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForTag.php',
+ 'Smarty\\Compile\\Tag\\ForeachClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachClose.php',
+ 'Smarty\\Compile\\Tag\\ForeachElse' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachElse.php',
+ 'Smarty\\Compile\\Tag\\ForeachSection' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachSection.php',
+ 'Smarty\\Compile\\Tag\\ForeachTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachTag.php',
+ 'Smarty\\Compile\\Tag\\FunctionClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/FunctionClose.php',
+ 'Smarty\\Compile\\Tag\\FunctionTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/FunctionTag.php',
+ 'Smarty\\Compile\\Tag\\IfClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/IfClose.php',
+ 'Smarty\\Compile\\Tag\\IfTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/IfTag.php',
+ 'Smarty\\Compile\\Tag\\IncludeTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/IncludeTag.php',
+ 'Smarty\\Compile\\Tag\\Inheritance' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Inheritance.php',
+ 'Smarty\\Compile\\Tag\\Ldelim' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Ldelim.php',
+ 'Smarty\\Compile\\Tag\\Nocache' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Nocache.php',
+ 'Smarty\\Compile\\Tag\\NocacheClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/NocacheClose.php',
+ 'Smarty\\Compile\\Tag\\Rdelim' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Rdelim.php',
+ 'Smarty\\Compile\\Tag\\Section' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Section.php',
+ 'Smarty\\Compile\\Tag\\SectionClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/SectionClose.php',
+ 'Smarty\\Compile\\Tag\\SectionElse' => $vendorDir . '/smarty/smarty/src/Compile/Tag/SectionElse.php',
+ 'Smarty\\Compile\\Tag\\Setfilter' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Setfilter.php',
+ 'Smarty\\Compile\\Tag\\SetfilterClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/SetfilterClose.php',
+ 'Smarty\\Compile\\Tag\\WhileClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/WhileClose.php',
+ 'Smarty\\Compile\\Tag\\WhileTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/WhileTag.php',
+ 'Smarty\\CompilerException' => $vendorDir . '/smarty/smarty/src/CompilerException.php',
+ 'Smarty\\Compiler\\BaseCompiler' => $vendorDir . '/smarty/smarty/src/Compiler/BaseCompiler.php',
+ 'Smarty\\Compiler\\CodeFrame' => $vendorDir . '/smarty/smarty/src/Compiler/CodeFrame.php',
+ 'Smarty\\Compiler\\Configfile' => $vendorDir . '/smarty/smarty/src/Compiler/Configfile.php',
+ 'Smarty\\Compiler\\Template' => $vendorDir . '/smarty/smarty/src/Compiler/Template.php',
+ 'Smarty\\Data' => $vendorDir . '/smarty/smarty/src/Data.php',
+ 'Smarty\\Debug' => $vendorDir . '/smarty/smarty/src/Debug.php',
+ 'Smarty\\ErrorHandler' => $vendorDir . '/smarty/smarty/src/ErrorHandler.php',
+ 'Smarty\\Exception' => $vendorDir . '/smarty/smarty/src/Exception.php',
+ 'Smarty\\Extension\\BCPluginsAdapter' => $vendorDir . '/smarty/smarty/src/Extension/BCPluginsAdapter.php',
+ 'Smarty\\Extension\\Base' => $vendorDir . '/smarty/smarty/src/Extension/Base.php',
+ 'Smarty\\Extension\\CallbackWrapper' => $vendorDir . '/smarty/smarty/src/Extension/CallbackWrapper.php',
+ 'Smarty\\Extension\\CoreExtension' => $vendorDir . '/smarty/smarty/src/Extension/CoreExtension.php',
+ 'Smarty\\Extension\\DefaultExtension' => $vendorDir . '/smarty/smarty/src/Extension/DefaultExtension.php',
+ 'Smarty\\Extension\\ExtensionInterface' => $vendorDir . '/smarty/smarty/src/Extension/ExtensionInterface.php',
+ 'Smarty\\Filter\\FilterInterface' => $vendorDir . '/smarty/smarty/src/Filter/FilterInterface.php',
+ 'Smarty\\Filter\\FilterPluginWrapper' => $vendorDir . '/smarty/smarty/src/Filter/FilterPluginWrapper.php',
+ 'Smarty\\Filter\\Output\\TrimWhitespace' => $vendorDir . '/smarty/smarty/src/Filter/Output/TrimWhitespace.php',
+ 'Smarty\\FunctionHandler\\BCPluginWrapper' => $vendorDir . '/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php',
+ 'Smarty\\FunctionHandler\\Base' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Base.php',
+ 'Smarty\\FunctionHandler\\Count' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Count.php',
+ 'Smarty\\FunctionHandler\\Counter' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Counter.php',
+ 'Smarty\\FunctionHandler\\Cycle' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Cycle.php',
+ 'Smarty\\FunctionHandler\\Fetch' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Fetch.php',
+ 'Smarty\\FunctionHandler\\FunctionHandlerInterface' => $vendorDir . '/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php',
+ 'Smarty\\FunctionHandler\\HtmlBase' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlBase.php',
+ 'Smarty\\FunctionHandler\\HtmlCheckboxes' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php',
+ 'Smarty\\FunctionHandler\\HtmlImage' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlImage.php',
+ 'Smarty\\FunctionHandler\\HtmlOptions' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlOptions.php',
+ 'Smarty\\FunctionHandler\\HtmlRadios' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlRadios.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectDate' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectTime' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php',
+ 'Smarty\\FunctionHandler\\HtmlTable' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlTable.php',
+ 'Smarty\\FunctionHandler\\Mailto' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Mailto.php',
+ 'Smarty\\FunctionHandler\\Math' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Math.php',
+ 'Smarty\\Lexer\\ConfigfileLexer' => $vendorDir . '/smarty/smarty/src/Lexer/ConfigfileLexer.php',
+ 'Smarty\\Lexer\\TemplateLexer' => $vendorDir . '/smarty/smarty/src/Lexer/TemplateLexer.php',
+ 'Smarty\\ParseTree\\Base' => $vendorDir . '/smarty/smarty/src/ParseTree/Base.php',
+ 'Smarty\\ParseTree\\Code' => $vendorDir . '/smarty/smarty/src/ParseTree/Code.php',
+ 'Smarty\\ParseTree\\Dq' => $vendorDir . '/smarty/smarty/src/ParseTree/Dq.php',
+ 'Smarty\\ParseTree\\DqContent' => $vendorDir . '/smarty/smarty/src/ParseTree/DqContent.php',
+ 'Smarty\\ParseTree\\Tag' => $vendorDir . '/smarty/smarty/src/ParseTree/Tag.php',
+ 'Smarty\\ParseTree\\Template' => $vendorDir . '/smarty/smarty/src/ParseTree/Template.php',
+ 'Smarty\\ParseTree\\Text' => $vendorDir . '/smarty/smarty/src/ParseTree/Text.php',
+ 'Smarty\\Parser\\ConfigfileParser' => $vendorDir . '/smarty/smarty/src/Parser/ConfigfileParser.php',
+ 'Smarty\\Parser\\TemplateParser' => $vendorDir . '/smarty/smarty/src/Parser/TemplateParser.php',
+ 'Smarty\\Resource\\BasePlugin' => $vendorDir . '/smarty/smarty/src/Resource/BasePlugin.php',
+ 'Smarty\\Resource\\CustomPlugin' => $vendorDir . '/smarty/smarty/src/Resource/CustomPlugin.php',
+ 'Smarty\\Resource\\ExtendsPlugin' => $vendorDir . '/smarty/smarty/src/Resource/ExtendsPlugin.php',
+ 'Smarty\\Resource\\FilePlugin' => $vendorDir . '/smarty/smarty/src/Resource/FilePlugin.php',
+ 'Smarty\\Resource\\RecompiledPlugin' => $vendorDir . '/smarty/smarty/src/Resource/RecompiledPlugin.php',
+ 'Smarty\\Resource\\StreamPlugin' => $vendorDir . '/smarty/smarty/src/Resource/StreamPlugin.php',
+ 'Smarty\\Resource\\StringEval' => $vendorDir . '/smarty/smarty/src/Resource/StringEval.php',
+ 'Smarty\\Resource\\StringPlugin' => $vendorDir . '/smarty/smarty/src/Resource/StringPlugin.php',
+ 'Smarty\\Runtime\\Block' => $vendorDir . '/smarty/smarty/src/Runtime/Block.php',
+ 'Smarty\\Runtime\\CaptureRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/CaptureRuntime.php',
+ 'Smarty\\Runtime\\DefaultPluginHandlerRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php',
+ 'Smarty\\Runtime\\ForeachRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/ForeachRuntime.php',
+ 'Smarty\\Runtime\\InheritanceRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/InheritanceRuntime.php',
+ 'Smarty\\Runtime\\TplFunctionRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/TplFunctionRuntime.php',
+ 'Smarty\\Security' => $vendorDir . '/smarty/smarty/src/Security.php',
+ 'Smarty\\Smarty' => $vendorDir . '/smarty/smarty/src/Smarty.php',
+ 'Smarty\\Template' => $vendorDir . '/smarty/smarty/src/Template.php',
+ 'Smarty\\TemplateBase' => $vendorDir . '/smarty/smarty/src/TemplateBase.php',
+ 'Smarty\\Template\\Cached' => $vendorDir . '/smarty/smarty/src/Template/Cached.php',
+ 'Smarty\\Template\\Compiled' => $vendorDir . '/smarty/smarty/src/Template/Compiled.php',
+ 'Smarty\\Template\\Config' => $vendorDir . '/smarty/smarty/src/Template/Config.php',
+ 'Smarty\\Template\\GeneratedPhpFile' => $vendorDir . '/smarty/smarty/src/Template/GeneratedPhpFile.php',
+ 'Smarty\\Template\\Source' => $vendorDir . '/smarty/smarty/src/Template/Source.php',
+ 'Smarty\\TestInstall' => $vendorDir . '/smarty/smarty/src/TestInstall.php',
+ 'Smarty\\UndefinedVariable' => $vendorDir . '/smarty/smarty/src/UndefinedVariable.php',
+ 'Smarty\\Variable' => $vendorDir . '/smarty/smarty/src/Variable.php',
'StephenHill\\BCMathService' => $vendorDir . '/stephenhill/base58/src/BCMathService.php',
'StephenHill\\Base58' => $vendorDir . '/stephenhill/base58/src/Base58.php',
'StephenHill\\Benchmarks\\Base16Event' => $vendorDir . '/stephenhill/base58/benchmarks/Base16Event.php',
@@ -3379,8 +3374,6 @@ return array(
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php',
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
- 'TPC_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'TP_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'Text_LanguageDetect' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect.php',
'Text_LanguageDetect_Exception' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
@@ -3547,12 +3540,14 @@ return array(
'Zotlabs\\Module\\Branchtopic' => $baseDir . '/Zotlabs/Module/Branchtopic.php',
'Zotlabs\\Module\\Cal' => $baseDir . '/Zotlabs/Module/Cal.php',
'Zotlabs\\Module\\Cdav' => $baseDir . '/Zotlabs/Module/Cdav.php',
+ 'Zotlabs\\Module\\Ceditor' => $baseDir . '/Zotlabs/Module/Ceditor.php',
'Zotlabs\\Module\\Changeaddr' => $baseDir . '/Zotlabs/Module/Changeaddr.php',
'Zotlabs\\Module\\Channel' => $baseDir . '/Zotlabs/Module/Channel.php',
'Zotlabs\\Module\\Channel_calendar' => $baseDir . '/Zotlabs/Module/Channel_calendar.php',
'Zotlabs\\Module\\Chanview' => $baseDir . '/Zotlabs/Module/Chanview.php',
'Zotlabs\\Module\\Chat' => $baseDir . '/Zotlabs/Module/Chat.php',
'Zotlabs\\Module\\Chatsvc' => $baseDir . '/Zotlabs/Module/Chatsvc.php',
+ 'Zotlabs\\Module\\Cleditor' => $baseDir . '/Zotlabs/Module/Cleditor.php',
'Zotlabs\\Module\\Cloud' => $baseDir . '/Zotlabs/Module/Cloud.php',
'Zotlabs\\Module\\Cloud_tiles' => $baseDir . '/Zotlabs/Module/Cloud_tiles.php',
'Zotlabs\\Module\\Common' => $baseDir . '/Zotlabs/Module/Common.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 154dd5310..c7f8e28a3 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -25,4 +25,5 @@ return array(
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
+ 'c15d4a1253e33e055d05e547c61dcb71' => $vendorDir . '/smarty/smarty/src/functions.php',
);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index b5007a29b..cd61bc182 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -6,7 +6,7 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
- 'voku\\' => array($vendorDir . '/voku/stop-words/src/voku', $vendorDir . '/voku/portable-ascii/src/voku'),
+ 'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku', $vendorDir . '/voku/stop-words/src/voku'),
'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
'phpmock\\phpunit\\' => array($vendorDir . '/php-mock/php-mock-phpunit/classes'),
'phpmock\\integration\\' => array($vendorDir . '/php-mock/php-mock-integration/classes'),
@@ -24,6 +24,7 @@ return array(
'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'),
'StephenHill\\Benchmarks\\' => array($vendorDir . '/stephenhill/base58/benchmarks'),
'StephenHill\\' => array($vendorDir . '/stephenhill/base58/src'),
+ 'Smarty\\' => array($vendorDir . '/smarty/smarty/src'),
'SimplePie\\' => array($vendorDir . '/simplepie/simplepie/src'),
'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'),
'Sabre\\Xml\\' => array($vendorDir . '/sabre/xml/lib'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index abbb82f65..407f54117 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -26,6 +26,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php',
'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
+ 'c15d4a1253e33e055d05e547c61dcb71' => __DIR__ . '/..' . '/smarty/smarty/src/functions.php',
);
public static $prefixLengthsPsr4 = array (
@@ -61,6 +62,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Symfony\\Component\\Config\\' => 25,
'StephenHill\\Benchmarks\\' => 23,
'StephenHill\\' => 12,
+ 'Smarty\\' => 7,
'SimplePie\\' => 10,
'ScssPhp\\ScssPhp\\' => 16,
'Sabre\\Xml\\' => 10,
@@ -125,8 +127,8 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
public static $prefixDirsPsr4 = array (
'voku\\' =>
array (
- 0 => __DIR__ . '/..' . '/voku/stop-words/src/voku',
- 1 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
+ 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
+ 1 => __DIR__ . '/..' . '/voku/stop-words/src/voku',
),
'phpseclib\\' =>
array (
@@ -197,6 +199,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/..' . '/stephenhill/base58/src',
),
+ 'Smarty\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/smarty/smarty/src',
+ ),
'SimplePie\\' =>
array (
0 => __DIR__ . '/..' . '/simplepie/simplepie/src',
@@ -3244,173 +3250,168 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'SimplePie_Source' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Source.php',
'SimplePie_XML_Declaration_Parser' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php',
'SimplePie_gzdecode' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/gzdecode.php',
- 'Smarty' => __DIR__ . '/..' . '/smarty/smarty/libs/Smarty.class.php',
- 'SmartyCompilerException' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smartycompilerexception.php',
- 'SmartyException' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smartyexception.php',
- 'Smarty_Autoloader' => __DIR__ . '/..' . '/smarty/smarty/libs/Autoloader.php',
- 'Smarty_CacheResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_cacheresource.php',
- 'Smarty_CacheResource_Custom' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php',
- 'Smarty_CacheResource_KeyValueStore' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php',
- 'Smarty_Data' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_data.php',
- 'Smarty_Internal_Block' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_block.php',
- 'Smarty_Internal_CacheResource_File' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php',
- 'Smarty_Internal_CompileBase' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php',
- 'Smarty_Internal_Compile_Append' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php',
- 'Smarty_Internal_Compile_Assign' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php',
- 'Smarty_Internal_Compile_Block' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Block_Child' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php',
- 'Smarty_Internal_Compile_Block_Parent' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php',
- 'Smarty_Internal_Compile_Blockclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Break' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php',
- 'Smarty_Internal_Compile_Call' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php',
- 'Smarty_Internal_Compile_Capture' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_CaptureClose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_Child' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php',
- 'Smarty_Internal_Compile_Config_Load' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php',
- 'Smarty_Internal_Compile_Continue' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php',
- 'Smarty_Internal_Compile_Debug' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php',
- 'Smarty_Internal_Compile_Else' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Elseif' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Eval' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php',
- 'Smarty_Internal_Compile_Extends' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php',
- 'Smarty_Internal_Compile_For' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Forclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Foreach' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachelse' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Forelse' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_Functionclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_If' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Ifclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Include' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php',
- 'Smarty_Internal_Compile_Insert' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php',
- 'Smarty_Internal_Compile_Ldelim' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php',
- 'Smarty_Internal_Compile_Make_Nocache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php',
- 'Smarty_Internal_Compile_Nocache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Nocacheclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Parent' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php',
- 'Smarty_Internal_Compile_Private_Block_Plugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php',
- 'Smarty_Internal_Compile_Private_ForeachSection' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php',
- 'Smarty_Internal_Compile_Private_Function_Plugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php',
- 'Smarty_Internal_Compile_Private_Modifier' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php',
- 'Smarty_Internal_Compile_Private_Object_Block_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php',
- 'Smarty_Internal_Compile_Private_Object_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php',
- 'Smarty_Internal_Compile_Private_Print_Expression' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php',
- 'Smarty_Internal_Compile_Private_Registered_Block' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php',
- 'Smarty_Internal_Compile_Private_Registered_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php',
- 'Smarty_Internal_Compile_Private_Special_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php',
- 'Smarty_Internal_Compile_Rdelim' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php',
- 'Smarty_Internal_Compile_Section' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionelse' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Setfilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Setfilterclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Shared_Inheritance' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php',
- 'Smarty_Internal_Compile_While' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Compile_Whileclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Config_File_Compiler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php',
- 'Smarty_Internal_Configfilelexer' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php',
- 'Smarty_Internal_Configfileparser' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'Smarty_Internal_Data' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_data.php',
- 'Smarty_Internal_Debug' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_debug.php',
- 'Smarty_Internal_ErrorHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php',
- 'Smarty_Internal_Extension_Handler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php',
- 'Smarty_Internal_Method_AddAutoloadFilters' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php',
- 'Smarty_Internal_Method_AddDefaultModifiers' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php',
- 'Smarty_Internal_Method_Append' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php',
- 'Smarty_Internal_Method_AppendByRef' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php',
- 'Smarty_Internal_Method_AssignByRef' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php',
- 'Smarty_Internal_Method_AssignGlobal' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php',
- 'Smarty_Internal_Method_ClearAllAssign' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php',
- 'Smarty_Internal_Method_ClearAllCache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php',
- 'Smarty_Internal_Method_ClearAssign' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php',
- 'Smarty_Internal_Method_ClearCache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php',
- 'Smarty_Internal_Method_ClearCompiledTemplate' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php',
- 'Smarty_Internal_Method_ClearConfig' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php',
- 'Smarty_Internal_Method_CompileAllConfig' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php',
- 'Smarty_Internal_Method_CompileAllTemplates' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php',
- 'Smarty_Internal_Method_ConfigLoad' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php',
- 'Smarty_Internal_Method_CreateData' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php',
- 'Smarty_Internal_Method_GetAutoloadFilters' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php',
- 'Smarty_Internal_Method_GetConfigVariable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php',
- 'Smarty_Internal_Method_GetConfigVars' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php',
- 'Smarty_Internal_Method_GetDebugTemplate' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php',
- 'Smarty_Internal_Method_GetDefaultModifiers' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php',
- 'Smarty_Internal_Method_GetGlobal' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php',
- 'Smarty_Internal_Method_GetRegisteredObject' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php',
- 'Smarty_Internal_Method_GetStreamVariable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php',
- 'Smarty_Internal_Method_GetTags' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php',
- 'Smarty_Internal_Method_GetTemplateVars' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php',
- 'Smarty_Internal_Method_Literals' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php',
- 'Smarty_Internal_Method_LoadFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php',
- 'Smarty_Internal_Method_LoadPlugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php',
- 'Smarty_Internal_Method_MustCompile' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php',
- 'Smarty_Internal_Method_RegisterCacheResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php',
- 'Smarty_Internal_Method_RegisterClass' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php',
- 'Smarty_Internal_Method_RegisterDefaultConfigHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php',
- 'Smarty_Internal_Method_RegisterDefaultPluginHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php',
- 'Smarty_Internal_Method_RegisterDefaultTemplateHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php',
- 'Smarty_Internal_Method_RegisterFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php',
- 'Smarty_Internal_Method_RegisterObject' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php',
- 'Smarty_Internal_Method_RegisterPlugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php',
- 'Smarty_Internal_Method_RegisterResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php',
- 'Smarty_Internal_Method_SetAutoloadFilters' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php',
- 'Smarty_Internal_Method_SetDebugTemplate' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php',
- 'Smarty_Internal_Method_SetDefaultModifiers' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php',
- 'Smarty_Internal_Method_UnloadFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php',
- 'Smarty_Internal_Method_UnregisterCacheResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php',
- 'Smarty_Internal_Method_UnregisterFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php',
- 'Smarty_Internal_Method_UnregisterObject' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php',
- 'Smarty_Internal_Method_UnregisterPlugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php',
- 'Smarty_Internal_Method_UnregisterResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php',
- 'Smarty_Internal_Nocache_Insert' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php',
- 'Smarty_Internal_ParseTree' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php',
- 'Smarty_Internal_ParseTree_Code' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php',
- 'Smarty_Internal_ParseTree_Dq' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php',
- 'Smarty_Internal_ParseTree_DqContent' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php',
- 'Smarty_Internal_ParseTree_Tag' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php',
- 'Smarty_Internal_ParseTree_Template' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php',
- 'Smarty_Internal_ParseTree_Text' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php',
- 'Smarty_Internal_Resource_Eval' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php',
- 'Smarty_Internal_Resource_Extends' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php',
- 'Smarty_Internal_Resource_File' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php',
- 'Smarty_Internal_Resource_Php' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php',
- 'Smarty_Internal_Resource_Stream' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php',
- 'Smarty_Internal_Resource_String' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php',
- 'Smarty_Internal_Runtime_CacheModify' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php',
- 'Smarty_Internal_Runtime_CacheResourceFile' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php',
- 'Smarty_Internal_Runtime_Capture' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php',
- 'Smarty_Internal_Runtime_CodeFrame' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php',
- 'Smarty_Internal_Runtime_FilterHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php',
- 'Smarty_Internal_Runtime_Foreach' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php',
- 'Smarty_Internal_Runtime_GetIncludePath' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php',
- 'Smarty_Internal_Runtime_Inheritance' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php',
- 'Smarty_Internal_Runtime_Make_Nocache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php',
- 'Smarty_Internal_Runtime_TplFunction' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php',
- 'Smarty_Internal_Runtime_UpdateCache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php',
- 'Smarty_Internal_Runtime_UpdateScope' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php',
- 'Smarty_Internal_Runtime_WriteFile' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php',
- 'Smarty_Internal_SmartyTemplateCompiler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php',
- 'Smarty_Internal_Template' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_template.php',
- 'Smarty_Internal_TemplateBase' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php',
- 'Smarty_Internal_TemplateCompilerBase' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php',
- 'Smarty_Internal_Templatelexer' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php',
- 'Smarty_Internal_Templateparser' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
- 'Smarty_Internal_TestInstall' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php',
- 'Smarty_Internal_Undefined' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php',
- 'Smarty_Resource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource.php',
- 'Smarty_Resource_Custom' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource_custom.php',
- 'Smarty_Resource_Recompiled' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php',
- 'Smarty_Resource_Uncompiled' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php',
- 'Smarty_Security' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_security.php',
- 'Smarty_Template_Cached' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_cached.php',
- 'Smarty_Template_Compiled' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_compiled.php',
- 'Smarty_Template_Config' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_config.php',
- 'Smarty_Template_Resource_Base' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php',
- 'Smarty_Template_Source' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
- 'Smarty_Undefined_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
- 'Smarty_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
+ 'Smarty\\BlockHandler\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/Base.php',
+ 'Smarty\\BlockHandler\\BlockHandlerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php',
+ 'Smarty\\BlockHandler\\BlockPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php',
+ 'Smarty\\BlockHandler\\TextFormat' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/TextFormat.php',
+ 'Smarty\\Cacheresource\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/Base.php',
+ 'Smarty\\Cacheresource\\Custom' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/Custom.php',
+ 'Smarty\\Cacheresource\\File' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/File.php',
+ 'Smarty\\Cacheresource\\KeyValueStore' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/KeyValueStore.php',
+ 'Smarty\\Compile\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Base.php',
+ 'Smarty\\Compile\\BlockCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/BlockCompiler.php',
+ 'Smarty\\Compile\\CompilerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/CompilerInterface.php',
+ 'Smarty\\Compile\\DefaultHandlerBlockCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php',
+ 'Smarty\\Compile\\DefaultHandlerFunctionCallCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php',
+ 'Smarty\\Compile\\FunctionCallCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/FunctionCallCompiler.php',
+ 'Smarty\\Compile\\ModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/ModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\BCPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Modifier\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/Base.php',
+ 'Smarty\\Compile\\Modifier\\CatModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountCharactersModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountParagraphsModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountSentencesModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountWordsModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\DefaultModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EmptyModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EscapeModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\FromCharsetModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IndentModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IsArrayModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IssetModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\JsonEncodeModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\LowerModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ModifierCompilerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php',
+ 'Smarty\\Compile\\Modifier\\Nl2brModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\NoPrintModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RawModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RoundModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrRepeatModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StringFormatModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripTagsModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrlenModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\SubstrModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ToCharsetModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UnescapeModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UpperModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\WordWrapModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodBlockCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodCallCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php',
+ 'Smarty\\Compile\\PrintExpressionCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/PrintExpressionCompiler.php',
+ 'Smarty\\Compile\\SpecialVariableCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/SpecialVariableCompiler.php',
+ 'Smarty\\Compile\\Tag\\Append' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Append.php',
+ 'Smarty\\Compile\\Tag\\Assign' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Assign.php',
+ 'Smarty\\Compile\\Tag\\BCPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Tag\\Block' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Block.php',
+ 'Smarty\\Compile\\Tag\\BlockClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/BlockClose.php',
+ 'Smarty\\Compile\\Tag\\BreakTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/BreakTag.php',
+ 'Smarty\\Compile\\Tag\\Call' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Call.php',
+ 'Smarty\\Compile\\Tag\\Capture' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Capture.php',
+ 'Smarty\\Compile\\Tag\\CaptureClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/CaptureClose.php',
+ 'Smarty\\Compile\\Tag\\ConfigLoad' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ConfigLoad.php',
+ 'Smarty\\Compile\\Tag\\ContinueTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ContinueTag.php',
+ 'Smarty\\Compile\\Tag\\Debug' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Debug.php',
+ 'Smarty\\Compile\\Tag\\ElseIfTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ElseIfTag.php',
+ 'Smarty\\Compile\\Tag\\ElseTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ElseTag.php',
+ 'Smarty\\Compile\\Tag\\EvalTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/EvalTag.php',
+ 'Smarty\\Compile\\Tag\\ExtendsTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ExtendsTag.php',
+ 'Smarty\\Compile\\Tag\\ForClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForClose.php',
+ 'Smarty\\Compile\\Tag\\ForElse' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForElse.php',
+ 'Smarty\\Compile\\Tag\\ForTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForTag.php',
+ 'Smarty\\Compile\\Tag\\ForeachClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachClose.php',
+ 'Smarty\\Compile\\Tag\\ForeachElse' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachElse.php',
+ 'Smarty\\Compile\\Tag\\ForeachSection' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachSection.php',
+ 'Smarty\\Compile\\Tag\\ForeachTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachTag.php',
+ 'Smarty\\Compile\\Tag\\FunctionClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/FunctionClose.php',
+ 'Smarty\\Compile\\Tag\\FunctionTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/FunctionTag.php',
+ 'Smarty\\Compile\\Tag\\IfClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/IfClose.php',
+ 'Smarty\\Compile\\Tag\\IfTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/IfTag.php',
+ 'Smarty\\Compile\\Tag\\IncludeTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/IncludeTag.php',
+ 'Smarty\\Compile\\Tag\\Inheritance' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Inheritance.php',
+ 'Smarty\\Compile\\Tag\\Ldelim' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Ldelim.php',
+ 'Smarty\\Compile\\Tag\\Nocache' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Nocache.php',
+ 'Smarty\\Compile\\Tag\\NocacheClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/NocacheClose.php',
+ 'Smarty\\Compile\\Tag\\Rdelim' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Rdelim.php',
+ 'Smarty\\Compile\\Tag\\Section' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Section.php',
+ 'Smarty\\Compile\\Tag\\SectionClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/SectionClose.php',
+ 'Smarty\\Compile\\Tag\\SectionElse' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/SectionElse.php',
+ 'Smarty\\Compile\\Tag\\Setfilter' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Setfilter.php',
+ 'Smarty\\Compile\\Tag\\SetfilterClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/SetfilterClose.php',
+ 'Smarty\\Compile\\Tag\\WhileClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/WhileClose.php',
+ 'Smarty\\Compile\\Tag\\WhileTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/WhileTag.php',
+ 'Smarty\\CompilerException' => __DIR__ . '/..' . '/smarty/smarty/src/CompilerException.php',
+ 'Smarty\\Compiler\\BaseCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/BaseCompiler.php',
+ 'Smarty\\Compiler\\CodeFrame' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/CodeFrame.php',
+ 'Smarty\\Compiler\\Configfile' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/Configfile.php',
+ 'Smarty\\Compiler\\Template' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/Template.php',
+ 'Smarty\\Data' => __DIR__ . '/..' . '/smarty/smarty/src/Data.php',
+ 'Smarty\\Debug' => __DIR__ . '/..' . '/smarty/smarty/src/Debug.php',
+ 'Smarty\\ErrorHandler' => __DIR__ . '/..' . '/smarty/smarty/src/ErrorHandler.php',
+ 'Smarty\\Exception' => __DIR__ . '/..' . '/smarty/smarty/src/Exception.php',
+ 'Smarty\\Extension\\BCPluginsAdapter' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/BCPluginsAdapter.php',
+ 'Smarty\\Extension\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/Base.php',
+ 'Smarty\\Extension\\CallbackWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/CallbackWrapper.php',
+ 'Smarty\\Extension\\CoreExtension' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/CoreExtension.php',
+ 'Smarty\\Extension\\DefaultExtension' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/DefaultExtension.php',
+ 'Smarty\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/ExtensionInterface.php',
+ 'Smarty\\Filter\\FilterInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Filter/FilterInterface.php',
+ 'Smarty\\Filter\\FilterPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Filter/FilterPluginWrapper.php',
+ 'Smarty\\Filter\\Output\\TrimWhitespace' => __DIR__ . '/..' . '/smarty/smarty/src/Filter/Output/TrimWhitespace.php',
+ 'Smarty\\FunctionHandler\\BCPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php',
+ 'Smarty\\FunctionHandler\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Base.php',
+ 'Smarty\\FunctionHandler\\Count' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Count.php',
+ 'Smarty\\FunctionHandler\\Counter' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Counter.php',
+ 'Smarty\\FunctionHandler\\Cycle' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Cycle.php',
+ 'Smarty\\FunctionHandler\\Fetch' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Fetch.php',
+ 'Smarty\\FunctionHandler\\FunctionHandlerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php',
+ 'Smarty\\FunctionHandler\\HtmlBase' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlBase.php',
+ 'Smarty\\FunctionHandler\\HtmlCheckboxes' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php',
+ 'Smarty\\FunctionHandler\\HtmlImage' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlImage.php',
+ 'Smarty\\FunctionHandler\\HtmlOptions' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlOptions.php',
+ 'Smarty\\FunctionHandler\\HtmlRadios' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlRadios.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectDate' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectTime' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php',
+ 'Smarty\\FunctionHandler\\HtmlTable' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlTable.php',
+ 'Smarty\\FunctionHandler\\Mailto' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Mailto.php',
+ 'Smarty\\FunctionHandler\\Math' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Math.php',
+ 'Smarty\\Lexer\\ConfigfileLexer' => __DIR__ . '/..' . '/smarty/smarty/src/Lexer/ConfigfileLexer.php',
+ 'Smarty\\Lexer\\TemplateLexer' => __DIR__ . '/..' . '/smarty/smarty/src/Lexer/TemplateLexer.php',
+ 'Smarty\\ParseTree\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Base.php',
+ 'Smarty\\ParseTree\\Code' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Code.php',
+ 'Smarty\\ParseTree\\Dq' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Dq.php',
+ 'Smarty\\ParseTree\\DqContent' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/DqContent.php',
+ 'Smarty\\ParseTree\\Tag' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Tag.php',
+ 'Smarty\\ParseTree\\Template' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Template.php',
+ 'Smarty\\ParseTree\\Text' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Text.php',
+ 'Smarty\\Parser\\ConfigfileParser' => __DIR__ . '/..' . '/smarty/smarty/src/Parser/ConfigfileParser.php',
+ 'Smarty\\Parser\\TemplateParser' => __DIR__ . '/..' . '/smarty/smarty/src/Parser/TemplateParser.php',
+ 'Smarty\\Resource\\BasePlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/BasePlugin.php',
+ 'Smarty\\Resource\\CustomPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/CustomPlugin.php',
+ 'Smarty\\Resource\\ExtendsPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/ExtendsPlugin.php',
+ 'Smarty\\Resource\\FilePlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/FilePlugin.php',
+ 'Smarty\\Resource\\RecompiledPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/RecompiledPlugin.php',
+ 'Smarty\\Resource\\StreamPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/StreamPlugin.php',
+ 'Smarty\\Resource\\StringEval' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/StringEval.php',
+ 'Smarty\\Resource\\StringPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/StringPlugin.php',
+ 'Smarty\\Runtime\\Block' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/Block.php',
+ 'Smarty\\Runtime\\CaptureRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/CaptureRuntime.php',
+ 'Smarty\\Runtime\\DefaultPluginHandlerRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php',
+ 'Smarty\\Runtime\\ForeachRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/ForeachRuntime.php',
+ 'Smarty\\Runtime\\InheritanceRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/InheritanceRuntime.php',
+ 'Smarty\\Runtime\\TplFunctionRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/TplFunctionRuntime.php',
+ 'Smarty\\Security' => __DIR__ . '/..' . '/smarty/smarty/src/Security.php',
+ 'Smarty\\Smarty' => __DIR__ . '/..' . '/smarty/smarty/src/Smarty.php',
+ 'Smarty\\Template' => __DIR__ . '/..' . '/smarty/smarty/src/Template.php',
+ 'Smarty\\TemplateBase' => __DIR__ . '/..' . '/smarty/smarty/src/TemplateBase.php',
+ 'Smarty\\Template\\Cached' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Cached.php',
+ 'Smarty\\Template\\Compiled' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Compiled.php',
+ 'Smarty\\Template\\Config' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Config.php',
+ 'Smarty\\Template\\GeneratedPhpFile' => __DIR__ . '/..' . '/smarty/smarty/src/Template/GeneratedPhpFile.php',
+ 'Smarty\\Template\\Source' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Source.php',
+ 'Smarty\\TestInstall' => __DIR__ . '/..' . '/smarty/smarty/src/TestInstall.php',
+ 'Smarty\\UndefinedVariable' => __DIR__ . '/..' . '/smarty/smarty/src/UndefinedVariable.php',
+ 'Smarty\\Variable' => __DIR__ . '/..' . '/smarty/smarty/src/Variable.php',
'StephenHill\\BCMathService' => __DIR__ . '/..' . '/stephenhill/base58/src/BCMathService.php',
'StephenHill\\Base58' => __DIR__ . '/..' . '/stephenhill/base58/src/Base58.php',
'StephenHill\\Benchmarks\\Base16Event' => __DIR__ . '/..' . '/stephenhill/base58/benchmarks/Base16Event.php',
@@ -3730,8 +3731,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php',
'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
- 'TPC_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'TP_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'Text_LanguageDetect' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect.php',
'Text_LanguageDetect_Exception' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
@@ -3898,12 +3897,14 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Branchtopic' => __DIR__ . '/../..' . '/Zotlabs/Module/Branchtopic.php',
'Zotlabs\\Module\\Cal' => __DIR__ . '/../..' . '/Zotlabs/Module/Cal.php',
'Zotlabs\\Module\\Cdav' => __DIR__ . '/../..' . '/Zotlabs/Module/Cdav.php',
+ 'Zotlabs\\Module\\Ceditor' => __DIR__ . '/../..' . '/Zotlabs/Module/Ceditor.php',
'Zotlabs\\Module\\Changeaddr' => __DIR__ . '/../..' . '/Zotlabs/Module/Changeaddr.php',
'Zotlabs\\Module\\Channel' => __DIR__ . '/../..' . '/Zotlabs/Module/Channel.php',
'Zotlabs\\Module\\Channel_calendar' => __DIR__ . '/../..' . '/Zotlabs/Module/Channel_calendar.php',
'Zotlabs\\Module\\Chanview' => __DIR__ . '/../..' . '/Zotlabs/Module/Chanview.php',
'Zotlabs\\Module\\Chat' => __DIR__ . '/../..' . '/Zotlabs/Module/Chat.php',
'Zotlabs\\Module\\Chatsvc' => __DIR__ . '/../..' . '/Zotlabs/Module/Chatsvc.php',
+ 'Zotlabs\\Module\\Cleditor' => __DIR__ . '/../..' . '/Zotlabs/Module/Cleditor.php',
'Zotlabs\\Module\\Cloud' => __DIR__ . '/../..' . '/Zotlabs/Module/Cloud.php',
'Zotlabs\\Module\\Cloud_tiles' => __DIR__ . '/../..' . '/Zotlabs/Module/Cloud_tiles.php',
'Zotlabs\\Module\\Common' => __DIR__ . '/../..' . '/Zotlabs/Module/Common.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 8f1e225ed..387762c15 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -4368,38 +4368,42 @@
},
{
"name": "smarty/smarty",
- "version": "v4.5.5",
- "version_normalized": "4.5.5.0",
+ "version": "v5.4.3",
+ "version_normalized": "5.4.3.0",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
- "reference": "c4851c12e34ff80073ddeb7d98b059d57dea9de2"
+ "reference": "c6bff5795081ca5e60aabda59fb87daa511acd1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c4851c12e34ff80073ddeb7d98b059d57dea9de2",
- "reference": "c4851c12e34ff80073ddeb7d98b059d57dea9de2",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c6bff5795081ca5e60aabda59fb87daa511acd1e",
+ "reference": "c6bff5795081ca5e60aabda59fb87daa511acd1e",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.27"
},
"require-dev": {
"phpunit/phpunit": "^8.5 || ^7.5",
- "smarty/smarty-lexer": "^3.1"
+ "smarty/smarty-lexer": "^4.0.2"
},
- "time": "2024-11-21T22:06:22+00:00",
+ "time": "2024-12-23T00:38:44+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0.x-dev"
+ "dev-master": "5.0.x-dev"
}
},
"installation-source": "dist",
"autoload": {
- "classmap": [
- "libs/"
- ]
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Smarty\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4431,7 +4435,7 @@
"support": {
"forum": "https://github.com/smarty-php/smarty/discussions",
"issues": "https://github.com/smarty-php/smarty/issues",
- "source": "https://github.com/smarty-php/smarty/tree/v4.5.5"
+ "source": "https://github.com/smarty-php/smarty/tree/v5.4.3"
},
"install-path": "../smarty/smarty"
},
@@ -5602,7 +5606,6 @@
"symfony/dependency-injection",
"symfony/filesystem",
"symfony/polyfill-ctype",
- "symfony/polyfill-mbstring",
"symfony/service-contracts",
"symfony/var-exporter",
"theseer/tokenizer"
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 90eaac1c2..f696a726b 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'zotlabs/hubzilla',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '5d55006be835d766d49b57afb1afdde2f0f970a4',
+ 'reference' => 'd9b262348facf0f5591a73a8f2518ea9e837691e',
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -605,9 +605,9 @@
'dev_requirement' => false,
),
'smarty/smarty' => array(
- 'pretty_version' => 'v4.5.5',
- 'version' => '4.5.5.0',
- 'reference' => 'c4851c12e34ff80073ddeb7d98b059d57dea9de2',
+ 'pretty_version' => 'v5.4.3',
+ 'version' => '5.4.3.0',
+ 'reference' => 'c6bff5795081ca5e60aabda59fb87daa511acd1e',
'type' => 'library',
'install_path' => __DIR__ . '/../smarty/smarty',
'aliases' => array(),
@@ -692,7 +692,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
'aliases' => array(),
- 'dev_requirement' => true,
+ 'dev_requirement' => false,
),
'symfony/service-contracts' => array(
'pretty_version' => 'v3.5.1',
@@ -772,7 +772,7 @@
'zotlabs/hubzilla' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '5d55006be835d766d49b57afb1afdde2f0f970a4',
+ 'reference' => 'd9b262348facf0f5591a73a8f2518ea9e837691e',
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
diff --git a/vendor/smarty/smarty/CHANGELOG.md b/vendor/smarty/smarty/CHANGELOG.md
index 2c134c13b..1483be86e 100644
--- a/vendor/smarty/smarty/CHANGELOG.md
+++ b/vendor/smarty/smarty/CHANGELOG.md
@@ -6,47 +6,155 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
-## [4.5.5] - 2024-11-21
+## [5.4.3] - 2024-12-23
+- Fix PHP backtraces by qualifying/replacing `call_user_func_array` calls [#1074](https://github.com/smarty-php/smarty/issues/1074)
-- Support the deprecations introduced in PHP 8.4 and added tests for PHP 8.4 [#1084](https://github.com/smarty-php/smarty/pull/1084)
+## [5.4.2] - 2024-11-20
-## [4.5.4] - 2024-08-14
-- Fixed that using `count()` would trigger a deprecation notice. [#813](https://github.com/smarty-php/smarty/issues/813)
+- Support the deprecations introduced in PHP 8.4 and added tests for PHP 8.4 [#1043](https://github.com/smarty-php/smarty/pull/1043)
-## [4.5.3] - 2024-05-28
+## [5.4.1] - 2024-08-29
+
+
+- Enable (and fix) unit tests for Windows [#1046](https://github.com/smarty-php/smarty/pull/1046)
+- Fix the use of "extends:" to define the inheritance tree on Windows [#1018](https://github.com/smarty-php/smarty/issues/1018)
+
+## [5.4.0] - 2024-08-14
+- Fixing forced OpCache invalidation on every template include, which is resulting in fast raising wasted OpCache memory [#1007](https://github.com/smarty-php/smarty/issues/1007)
+- Improvement of auto-escaping [#1030](https://github.com/smarty-php/smarty/pull/1030)
+
+
+## [5.3.1] - 2024-06-16
+- Fixed error when using section with nocache [#1034](https://github.com/smarty-php/smarty/issues/1034)
+
+
+## [5.3.0] - 2024-05-30
+- Fix warning when calling hasVariable for an undefined variable [#977](https://github.com/smarty-php/smarty/issues/977)
+- Added `$smarty->prependTemplateDir()` method [#1022](https://github.com/smarty-php/smarty/issues/1022)
+
+
+## [5.2.0] - 2024-05-28
- Fixed a code injection vulnerability in extends-tag. This addresses CVE-2024-35226.
+- Added `$smarty->setCacheModifiedCheck()` setter for cache_modified_check
+- Added a PSR-4 loading script to allow Smarty to be used without Composer [#1017](https://github.com/smarty-php/smarty/pull/1017)
+
+## [5.1.0] - 2024-04-22
+- Prevent deprecation notices during compilation in PHP8.3 [#996](https://github.com/smarty-php/smarty/issues/996)
+- Fix that getTemplateVars would return an array of objects instead of the assigned variables values [#994](https://github.com/smarty-php/smarty/issues/994)
+- Fix Smarty::assign() not returning $this when called with an array as first parameter [#972](https://github.com/smarty-php/smarty/pull/972)
+- Documented support for `{if $element is in $array}` syntax [#937](https://github.com/smarty-php/smarty/issues/937)
+- Added support for `{if $element is not in $array}` syntax [#937](https://github.com/smarty-php/smarty/issues/937)
+- Using stream variables in templates now throws a deprecation notice [#933](https://github.com/smarty-php/smarty/pull/933)
+- Internal compiler classes always return a string (the internal has_code flag has been removed for simplicity) [#918](https://github.com/smarty-php/smarty/pull/918)
+- Fix invalid classnames in Runtime code for foreach [#1000](https://github.com/smarty-php/smarty/issues/1000)
-## [4.5.2] - 2024-04-06
-- Fixed argument must be passed by reference error introduced in v4.5.1 [#964](https://github.com/smarty-php/smarty/issues/964)
+## [5.0.2] - 2024-03-28
+- Fix Smarty::assign() not returning $this when called with an array as first parameter [#972](https://github.com/smarty-php/smarty/pull/972)
-## [4.5.1] - 2024-03-18
-- Using unregistered static class methods in expressions now also triggers a deprecation notice because we will drop support for this in the next major release [#813](https://github.com/smarty-php/smarty/issues/813)
+## [5.0.1] - 2024-03-27
+- Fix error in Smarty\Smarty::compileAllTemplates() by including missing FilesystemIterator class [#966](https://github.com/smarty-php/smarty/issues/966)
-## [4.5.0] - 2024-03-18
-- (this release accidentally didn't contain any changes, fixed in 4.5.1)
+## [5.0.0] - 2024-03-25
+- Fixed that scoped variables would overwrite parent scope [#952](https://github.com/smarty-php/smarty/issues/952)
+- Removed publicly accessible `$tpl->_var_stack` variable
-## [4.4.1] - 2024-02-26
-- Fixed internal release-tooling
+### Fixed
+- Too many shorthand attributes error when using a modifier as a function with more than 3 parameters in an expression [#949](https://github.com/smarty-php/smarty/issues/949)
+
+### Removed
+- Dropped support for undocumented `{time()}` added in v5.0.0 since we already have the documented `{$smarty.now}`
-## [4.4.0] - 2024-02-26
-- Using the `|implode`, `|json_encode` and `|substr` modifiers does not generate a deprecation warning anymore as they will continue to be supported in v5 [#939](https://github.com/smarty-php/smarty/issues/939)
+## [5.0.0-rc3] - 2024-02-26
### Added
- PHP8.3 support [#925](https://github.com/smarty-php/smarty/issues/925)
+- Backlink to GitHub in docs
+- Explain how to do escaping and set-up auto-escaping in docs [#865](https://github.com/smarty-php/smarty/issues/865)
+- Link to variable scope page in the documentation for the assign tag [#878](https://github.com/smarty-php/smarty/issues/878)
+- Add support for implode, substr and json_encode as modifiers/functions in templates [#939](https://github.com/smarty-php/smarty/issues/939)
+- Add template path to CompilerException to enable rich debug features [#935](https://github.com/smarty-php/smarty/issues/935)
### Fixed
-- Incorrect compilation of expressions when escape_html=true [#930](https://github.com/smarty-php/smarty/pull/930)
+- The {debug} tag was broken in v5 [#922](https://github.com/smarty-php/smarty/issues/922)
+- Documentation on `{if $x is even by $y}` syntax
+- Fix incorrect compilation of expressions when escape_html=true [#930](https://github.com/smarty-php/smarty/pull/930)
-## [4.3.4] - 2023-09-14
+## [5.0.0-rc2] - 2023-11-11
-## [4.3.3] - 2023-09-14
+### Fixed
+- Registered output filters wouldn't run [#899](https://github.com/smarty-php/smarty/issues/899)
+- Use of negative numbers in {math} equations [#895](https://github.com/smarty-php/smarty/issues/895)
+- Do not auto-html-escape custom function results [#906](https://github.com/smarty-php/smarty/issues/906)
+- Fix case-sensitive tag names [#907](https://github.com/smarty-php/smarty/issues/907)
+
+### Removed
+- Removed `$smarty->registered_filters` array
+
+## [5.0.0-rc1] - 2023-08-08
+
+### Added
+- Added support for PHP8.2
+- Added a new way to extend Smarty functionality using `Smarty::addExtension()` or `Smarty::setExtensions()`. Please see the docs for more information.
+- Custom tags can accept positional parameters, so you can write a block compiler that support this: `{trans "Jack" "dull boy"}All work and no play makes %s a %s.{/trans}` [#164](https://github.com/smarty-php/smarty/issues/164)
+- Full support for ternary operator: `{$test ? $a : $b}` and `{$var ?: $value_if_falsy}` [#881](https://github.com/smarty-php/smarty/issues/881)
+- Full support for null coalescing operator: `{$var ?? $value_if_null}` [#882](https://github.com/smarty-php/smarty/issues/882)
+
+### Changed
+- All Smarty code is now in the \Smarty namespace. For simple use-cases, you only need to add
+ `use \Smarty\Smarty;` to your script and everything will work. If you extend Smarty or use
+ Smarty plug-ins, please review your code to see if they assume specific class or method names.
+ E.g.: `Smarty_Internal_Template` is now `\Smarty\Template\`, `SmartyException` is now `\Smarty\Exception`.
+- Template variable scope bubbling has been simplified and made more consistent.
+ The global scope now equals the Smarty scope in order to avoid global state side effects. Please read
+ the documentation for more details.
+- Lexers and Parsers PHP files are reliably generated from sources (.y and .plex) using the make file
+- Smarty now always runs in multibyte mode, using `symfony/polyfill-mbstring` if required. Please use the
+ multibyte extension for optimal performance.
+- Smarty no longer calls `mb_internal_encoding()` and doesn't check for deprecated `mbstring.func_overload` ini directive [#480](https://github.com/smarty-php/smarty/issues/480)
+- Generated `
+{/block}
+```
+
+mypage.tpl (grandchild)
+
+```smarty
+{extends file='myproject.tpl'}
+{block name=title}My Page Title{/block}
+{block name=head}
+
+
+{/block}
+{block name=body}My HTML Page Body goes here{/block}
+```
+
+
+To render the above, you would use:
+
+```php
+display('mypage.tpl');
+```
+
+The resulting output is:
+
+```html
+
+
+ My Page Title
+
+
+
+
+ My HTML Page Body goes here
+
+
+```
+
+> **Note**
+>
+> When [compile-check](./configuring.md#disabling-compile-check) is enabled, all files
+> in the inheritance tree
+> are checked for modifications upon each invocation. You may want to
+> disable compile-check on production servers for this reason.
+
+> **Note**
+>
+> If you have a subtemplate which is included with
+> [`{include}`](../designers/language-builtin-functions/language-function-include.md) and it contains
+> [`{block}`](../designers/language-builtin-functions/language-function-block.md) areas it works only if the
+> [`{include}`](../designers/language-builtin-functions/language-function-include.md) itself is called from within
+> a surrounding [`{block}`](../designers/language-builtin-functions/language-function-block.md). In the final
+> parent template you may need a dummy
+> [`{block}`](../designers/language-builtin-functions/language-function-block.md) for it.
+
+
+## Using append and prepend
+The content of [`{block}`](../designers/language-builtin-functions/language-function-block.md) tags from child
+and parent templates can be merged by the `append` or `prepend`
+[`{block}`](../designers/language-builtin-functions/language-function-block.md) tag option flags and
+`{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
+
+## Extends resource type
+Instead of using [`{extends}`](../designers/language-builtin-functions/language-function-extends.md) tags in the
+template files you can define the inheritance tree in your PHP script by
+using the [`extends:` resource](resources.md#the-extends-resource) type.
+
+The code below will return same result as the example above.
+
+```php
+display('extends:layout.tpl|myproject.tpl|mypage.tpl');
+```
diff --git a/vendor/smarty/smarty/docs/api/rendering.md b/vendor/smarty/smarty/docs/api/rendering.md
new file mode 100644
index 000000000..a66b61269
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/rendering.md
@@ -0,0 +1,86 @@
+# Rendering templates
+
+## Fetching or rendering templates directly
+As explained in [basics](basics.md), you can use `$smarty->fetch()` or `$smarty->display()`
+to render a template directly.
+
+```php
+display('homepage.tpl');
+
+// or
+
+$output = $smarty->fetch('homepage.tpl');
+```
+
+When you use `display()`, Smarty renders the template to the standard output stream.
+`fetch()` returns the output instead of echoing it.
+
+The example above uses simple filenames to load the template. Smarty also supports
+[loading templates from resources](resources.md).
+
+## Creating a template object
+You can also create a template object which later can be prepared first,
+and rendered later. This can be useful, for example if you plan to re-use several
+templates.
+
+```php
+createTemplate('index.tpl');
+
+// assign a variable (available only to this template)
+$tpl->assign('title', 'My Homepage!');
+
+// display the template
+$tpl->display();
+```
+
+More on assigning variables in [using data in templates](variables/assigning.md).
+
+
+## Testing if a template exists
+You can use `templateExists()` to check whether a template exists before you attempt to use it.
+
+It accepts either a path to the template on the filesystem or a
+resource string specifying the template.
+
+This example uses `$_GET['page']` to
+[`{include}`](../designers/language-builtin-functions/language-function-include.md) a content template. If the
+template does not exist then an error page is displayed instead. First,
+the `page_container.tpl`
+
+```smarty
+
+
+ {$title|escape}
+
+
+ {* include middle content page *}
+ {include file=$content_template}
+
+
+```
+
+And the php script:
+
+```php
+templateExists($mid_template)){
+ $mid_template = 'page_not_found.tpl';
+}
+$smarty->assign('content_template', $mid_template);
+
+$smarty->display('page_container.tpl');
+```
diff --git a/vendor/smarty/smarty/docs/api/resources.md b/vendor/smarty/smarty/docs/api/resources.md
new file mode 100644
index 000000000..5ca52b12d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/resources.md
@@ -0,0 +1,322 @@
+# Template resources
+
+## The filesystem resource
+
+So far in our examples, we have used simple filenames or paths when loading a template.
+
+For example, to load a template file called `homepage.tpl`, from the filesystem, you could write:
+```php
+display('homepage.tpl');
+```
+
+The filesystem is the default resource. Templates, however, may come
+from a variety of sources. When you render a template, or
+when you include a template from within another template, you supply a
+resource type, followed by `:` and the appropriate path and template name.
+
+If a resource is not explicitly given, the default resource type is assumed.
+The resource type for the filesystem is `file`, which means that the previous example
+can be rewritten as follows:
+```php
+display('file:homepage.tpl');
+```
+
+The file resource pulls templates source files from the directories
+specified using `Smarty::setTemplateDir()` (see [Configuring Smarty](configuring.md)).
+
+`setTemplateDir` accepts a single path, but can also ben called with an array of paths.
+In that case, the list of directories is traversed in the order they appear in the array. The
+first template found is the one to process.
+
+### Templates from a specific directory
+
+Smarty 3.1 introduced the bracket-syntax for specifying an element from
+`Smarty::setTemplateDir()`. This allows websites
+employing multiple sets of templates better control over which template
+to access.
+
+The bracket-syntax can be used as follows:
+```php
+setTemplateDir([
+ './templates', // element: 0, index: 0
+ './templates_2', // element: 1, index: 1
+ '10' => 'templates_10', // element: 2, index: '10'
+ 'foo' => 'templates_foo', // element: 3, index: 'foo'
+]);
+
+/*
+ assume the template structure
+ ./templates/foo.tpl
+ ./templates_2/foo.tpl
+ ./templates_2/bar.tpl
+ ./templates_10/foo.tpl
+ ./templates_10/bar.tpl
+ ./templates_foo/foo.tpl
+*/
+
+// regular access
+$smarty->display('file:foo.tpl');
+// will load ./templates/foo.tpl
+
+// using numeric index
+$smarty->display('file:[1]foo.tpl');
+// will load ./templates_2/foo.tpl
+
+// using numeric string index
+$smarty->display('file:[10]foo.tpl');
+// will load ./templates_10/foo.tpl
+
+// using string index
+$smarty->display('file:[foo]foo.tpl');
+// will load ./templates_foo/foo.tpl
+
+// using "unknown" numeric index (using element number)
+$smarty->display('file:[2]foo.tpl');
+// will load ./templates_10/foo.tpl
+```
+
+And, from within a Smarty template:
+
+```smarty
+{include file="file:foo.tpl"}
+{* will load ./templates/foo.tpl *}
+
+{include file="file:[1]foo.tpl"}
+{* will load ./templates_2/foo.tpl *}
+
+{include file="file:[foo]foo.tpl"}
+{* will load ./templates_foo/foo.tpl *}
+```
+
+### Using absolute paths
+
+Templates outside the specified template directories
+require the `file:` template resource type, followed by the absolute
+path to the template (with leading slash).
+
+```php
+display('file:/export/templates/index.tpl');
+$smarty->display('file:/path/to/my/templates/menu.tpl');
+````
+
+And from within a Smarty template:
+```smarty
+{include file='file:/usr/local/share/templates/navigation.tpl'}
+```
+
+> **Note**
+>
+> With [`Security`](security.md) enabled, access to
+> templates outside of the specified templates directories is
+> not allowed unless you whitelist those directories.
+
+### Windows file paths
+If you are running on Windows, file paths usually include a drive
+letter (such as `C:`) at the beginning of the pathname. Be sure to use `file:` in
+the path to avoid namespace conflicts and get the desired results.
+```php
+display('file:C:/export/templates/index.tpl');
+$smarty->display('file:F:/path/to/my/templates/menu.tpl');
+```
+
+And from within Smarty template:
+```smarty
+{include file='file:D:/usr/local/share/templates/navigation.tpl'}
+```
+
+### Handling missing templates
+If the file resource cannot find the requested template, it will check if there is
+a default template handler to call. By default, there is none, and Smarty will return an error,
+but you can register a default template handler calling `Smarty::registerDefaultTemplateHandler`
+with any [callable](https://www.php.net/manual/en/language.types.callable.php).
+
+```php
+registerDefaultTemplateHandler([$this, 'handleMissingTemplate']);
+
+// ...
+
+public function handleMissingTemplate($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (/* ... */) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (/* ... */) {
+ // return a template directly
+ $content = "the template source";
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+}
+
+```
+
+## The string and eval resources
+
+Smarty can render templates from a string by using the `string:` or
+`eval:` resource.
+
+- The `string:` resource behaves much the same as a template file. The
+ template source is compiled from a string and stores the compiled
+ template code for later reuse. Each unique template string will
+ create a new compiled template file. If your template strings are
+ accessed frequently, this is a good choice. If you have frequently
+ changing template strings (or strings with low reuse value), the
+ `eval:` resource may be a better choice, as it doesn\'t save
+ compiled templates to disk.
+
+- The `eval:` resource evaluates the template source every time a page
+ is rendered. This is a good choice for strings with low reuse value.
+ If the same string is accessed frequently, the `string:` resource
+ may be a better choice.
+
+> **Note**
+>
+> With a `string:` resource type, each unique string generates a
+> compiled file. Smarty cannot detect a string that has changed, and
+> therefore will generate a new compiled file for each unique string. It
+> is important to choose the correct resource so that you do not fill
+> your disk space with wasted compiled strings.
+
+```php
+assign('foo', 'value');
+$template_string = 'display {$foo} here';
+$smarty->display('string:' . $template_string); // compiles for later reuse
+$smarty->display('eval:' . $template_string); // compiles every time
+```
+From within a Smarty template:
+```smarty
+{include file="string:$template_string"} {* compiles for later reuse *}
+{include file="eval:$template_string"} {* compiles every time *}
+```
+
+Both `string:` and `eval:` resources may be encoded with
+[`urlencode()`](https://www.php.net/urlencode) or
+[`base64_encode()`](https://www.php.net/urlencode). This is not necessary
+for the usual use of `string:` and `eval:`, but is required when using
+either of them in conjunction with the [`extends resource`](#the-extends-resource).
+
+```php
+ assign('foo','value');
+ $template_string_urlencode = urlencode('display {$foo} here');
+ $template_string_base64 = base64_encode('display {$foo} here');
+ $smarty->display('eval:urlencode:' . $template_string_urlencode); // will decode string using urldecode()
+ $smarty->display('eval:base64:' . $template_string_base64); // will decode string using base64_decode()
+```
+
+From within a Smarty template:
+```smarty
+ {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
+ {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
+```
+
+## The extends resource
+
+The `extends:` resource is used to define child/parent relationships. For details see section of
+[Template inheritance](inheritance.md).
+
+> **Note**
+>
+> Using the extends resource is usually not necessary. If you have a choice, it is normally more flexible and
+> intuitive to handle inheritance chains from within the templates using the [{extends} tag](inheritance.md).
+
+When `string:` and `eval:` templates are used, make sure they are properly url or base64 encoded.
+
+The templates within an inheritance chain are not compiled separately. Only a single compiled template will be generated.
+(If an `eval:` resource is found within an inheritance chain, its "don't save a compile file" property is superseded by
+the `extends:` resource.)
+
+Example:
+```php
+display('extends:parent.tpl|child.tpl|grandchild.tpl');
+
+// inheritance from multiple template sources
+$smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
+```
+
+## The stream resource
+
+Smarty allow you to use [PHP streams](https://www.php.net/manual/en/function.stream-wrapper-register.php)
+as a template resource. Smarty will first look for a registered template resource. If nothing is
+found, it will check if a PHP stream is available. If a stream is available, Smarty will use it
+to fetch the template.
+
+For example,
+```php
+display('myresource:bar.tpl');
+```
+
+Or, from within a template:
+```smarty
+ {include file="myresource:bar.tpl"}
+```
+
+## Adding your own resource type
+You can create a class that extends `Smarty\Resource\CustomPlugin` to add your own resource type,
+for example to load template from a database.
+
+For example:
+```php
+registerResource('helloworld', new HelloWorldResource());
+```
+
+If a Resource's templates should not be run through the Smarty
+compiler, the Custom Resource may extend `\Smarty\Resource\UncompiledPlugin`.
+The Resource Handler must then implement the function
+`renderUncompiled(\Smarty\Template $_template)`. `$_template` is
+a reference to the current template and contains all assigned variables
+which the implementor can access via
+`$_template->getSmarty()->getTemplateVars()`. These Resources simply echo
+their rendered content to the output stream. The rendered output will be
+output-cached if the Smarty instance was configured accordingly. See
+`src/Resource/PhpPlugin.php` for an example.
+
+If the Resource's compiled templates should not be cached on disk, the
+Custom Resource may extend `\Smarty\Resource\RecompiledPlugin`. These Resources
+are compiled every time they are accessed. This may be an expensive
+overhead. See `src/Resource/StringEval.php` for an
+example.
+
+## Changing the default resource type
+The default resource type is `file`. If you want to change it, use `Smarty::setDefaultResourceType`.
+
+The following example will change the default resource type to `mysql`:
+```php
+setDefaultResourceType('mysql');
+```
diff --git a/vendor/smarty/smarty/docs/api/security.md b/vendor/smarty/smarty/docs/api/security.md
new file mode 100644
index 000000000..07120afdb
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/security.md
@@ -0,0 +1,119 @@
+# Security
+
+Security is good for situations when you have untrusted parties editing
+the templates, and you want to reduce the risk of system
+security compromises through the template language.
+
+The settings of the security policy are defined by overriding public properties of an
+instance of the \Smarty\Security class. These are the possible settings:
+
+- `$secure_dir` is an array of template directories that are
+ considered secure. A directory configured using `$smarty->setTemplateDir()` is
+ considered secure implicitly. The default is an empty array.
+- `$trusted_uri` is an array of regular expressions matching URIs that
+ are considered trusted. This security directive is used by
+ [`{fetch}`](../designers/language-custom-functions/language-function-fetch.md) and
+ [`{html_image}`](../designers/language-custom-functions/language-function-html-image.md). URIs passed to
+ these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
+ simple regular expressions (without having to deal with edge cases
+ like authentication-tokens).
+
+ The expression `'#https?://.*smarty.net$#i'` would allow accessing
+ the following URIs:
+
+ - `http://smarty.net/foo`
+ - `http://smarty.net/foo`
+ - `http://www.smarty.net/foo`
+ - `http://smarty.net/foo`
+ - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
+
+ but deny access to these URIs:
+
+ - `http://smarty.com/foo` (not matching top-level domain \"com\")
+ - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
+ - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
+ domain \"smarty.net\")
+
+- `$static_classes` is an array of classes that are considered
+ trusted. The default is an empty array which allows access to all
+ static classes. To disable access to all static classes set
+ $static_classes = null.
+
+- `$streams` is an array of streams that are considered trusted and
+ can be used from within template. To disable access to all streams
+ set $streams = null. An empty array ( $streams = [] ) will
+ allow all streams. The default is array('file').
+
+- `$allowed_modifiers` is an array of (registered / autoloaded)
+ modifiers that should be accessible to the template. If this array
+ is non-empty, only the herein listed modifiers may be used. This is
+ a whitelist.
+
+- `$disabled_modifiers` is an array of (registered / autoloaded)
+ modifiers that may not be accessible to the template.
+
+- `$allowed_tags` is a boolean flag which controls if constants can
+ function-, block and filter plugins that should be accessible to the
+ template. If this array is non-empty, only the herein listed
+ modifiers may be used. This is a whitelist.
+
+- `$disabled_tags` is an array of (registered / autoloaded) function-,
+ block and filter plugins that may not be accessible to the template.
+
+- `$allow_constants` is a boolean flag which controls if constants can
+ be accessed by the template. The default is "true".
+
+- `$allow_super_globals` is a boolean flag which controls if the PHP
+ super globals can be accessed by the template. The default is
+ "true".
+
+If security is enabled, no private methods, functions or properties of
+static classes or assigned objects can be accessed (beginning with
+'_') by the template.
+
+To customize the security policy settings you can extend the
+\Smarty\Security class or create an instance of it.
+
+```php
+enableSecurity('My_Security_Policy');
+```
+
+```php
+allow_constants = false;
+
+$smarty->enableSecurity($my_security_policy);
+```
+
+```php
+enableSecurity();
+```
+
+> **Note**
+>
+> Most security policy settings are only checked when the template gets
+> compiled. For that reason you should delete all cached and compiled
+> template files when you change your security settings.
diff --git a/vendor/smarty/smarty/docs/api/variables/assigning.md b/vendor/smarty/smarty/docs/api/variables/assigning.md
new file mode 100644
index 000000000..40a02c13b
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/assigning.md
@@ -0,0 +1,139 @@
+# Assigning variables
+
+Templates start to become really useful once you know how to use variables.
+
+## Basic assigning
+Let's revisit the example from the [basics section](../basics.md). The following script assigns a value to
+the 'companyName' variable and renders the template:
+
+```php
+assign('companyName', 'AC & ME Corp.');
+
+$smarty->display('footer.tpl');
+```
+
+footer.tpl:
+```smarty
+Copyright {$companyName|escape}
+```
+
+Smarty will apply the [escape modifier](../../designers/language-modifiers/language-modifier-escape.md)
+to the value assigned to the variable
+`companyName` and replace `{$companyName|escape}` with the result.
+
+```html
+Copyright AC & ME Corp.
+```
+
+Using `$smarty->assign()` is the most common way of assigning data to templates, but there are several other methods.
+
+## Appending data to an existing variable
+Using `append()`, you can add data to an existing variable, usually an array.
+
+If you append to a string value, it is converted to an array value and
+then appended to. You can explicitly pass name/value pairs, or
+associative arrays containing the name/value pairs. If you pass the
+optional third parameter of TRUE, the value will be merged with the
+current array instead of appended.
+
+Examples:
+
+```php
+append('foo', 'Fred');
+// After this line, foo will now be seen as an array in the template
+$smarty->append('foo', 'Albert');
+
+$array = [1 => 'one', 2 => 'two'];
+$smarty->append('X', $array);
+$array2 = [3 => 'three', 4 => 'four'];
+// The following line will add a second element to the X array
+$smarty->append('X', $array2);
+
+// passing an associative array
+$smarty->append(['city' => 'Lincoln', 'state' => 'Nebraska']);
+```
+
+## Assigning to template objects
+When you use a template objects, as explained in [rendering a template](../rendering.md#creating-a-template-object),
+you can assign data to the template objects directly instead of assigning it to Smarty. This way, you can use different
+sets of data for different templates.
+
+For example:
+```php
+createTemplate('blue.tpl');
+$tplBlue->assign('name', 'The one');
+$tplBlue->display();
+
+$tplRed = $smarty->createTemplate('red.tpl');
+$tplRed->assign('name', 'Neo');
+$tplRed->display();
+```
+
+## Using data objects
+For more complex use cases, Smarty supports the concept of data objects.
+Data objects are containers to hold data. Data objects can be attached to templates when creating them.
+This allows for fine-grained re-use of data.
+
+For example:
+```php
+createData();
+
+// assign variable to the data object
+$data->assign('name', 'Neo');
+
+// create template object which will use variables from the data object
+$tpl = $smarty->createTemplate('index.tpl', $data);
+
+// display the template
+$tpl->display();
+```
+
+## Clearing assigned data
+When re-using templates, you may need to clear data assigned in a previous run. Use `clearAllAssign()` to
+clear the values of all assigned variables on data objects, template objects or the Smarty object.
+
+Examples:
+```php
+assign('Name', 'Fred');
+// ...
+$smarty->clearAllAssign();
+
+// using a data object
+$data = $smarty->createData();
+$data->assign('name', 'Neo');
+// ...
+$data->clearAllAssign();
+
+// using a template
+$tplBlue = $smarty->createTemplate('blue.tpl');
+$tplBlue->assign('name', 'The one');
+// ...
+$tplBlue->clearAllAssign();
+```
+
+Note that there it's only useful to clear assigned data if you:
+
+1. repeatedly re-use templates, and
+2. the variables used may change on each repetition
+
+If your script simply runs once and then ends, or you always assign the same variables, clearing assigned data
+is of no use.
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/api/variables/config-files.md b/vendor/smarty/smarty/docs/api/variables/config-files.md
new file mode 100644
index 000000000..107353bb7
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/config-files.md
@@ -0,0 +1,88 @@
+# Loading data from config files
+
+Instead of [assigning data to templates from PHP](assigning.md), you can also
+use a config file.
+
+## Example config file
+Config files are best suited to manage template settings
+from one file. One example is a multi-language application.
+Instead of writing multiple templates to support different languages,
+you can write a single template file and load your language dependent strings
+from config files.
+
+Example `lang.en.ini`:
+```ini
+# global variables
+pageTitle = "Main Menu"
+
+[Customer]
+pageTitle = "Customer Info"
+
+[Login]
+pageTitle = "Login"
+focus = "username"
+Intro = """This is a value that spans more
+ than one line. you must enclose
+ it in triple quotes."""
+
+```
+
+Values of [config file variables](../../designers/language-variables/language-config-variables.md) can be in
+quotes, but not necessary. You can use either single or double quotes.
+If you have a value that spans more than one line, enclose the entire
+value with triple quotes \("""\). You can put comments into config
+files by any syntax that is not a valid config file syntax. We recommend
+using a `#` (hash) at the beginning of the line.
+
+The example config file above has two sections. Section names are
+enclosed in \[brackets\]. Section names can be arbitrary strings not
+containing `[` or `]` symbols. The variable at the top is a global
+variable. Global variables are always
+loaded from the config file. If a particular section is loaded, then the
+global variables and the variables from that section are also loaded. If
+a variable exists both as a global and in a section, the section
+variable is used.
+
+## Loading a config file
+
+Config files are loaded into templates with the built-in template
+function [`{config_load}`](../../designers/language-builtin-functions/language-function-config-load.md) or by calling
+`configLoad()` from PHP:
+
+```php
+configLoad('lang.en.ini');
+```
+
+Load a specific section with:
+
+```php
+configLoad('lang.en.ini', 'Customer');
+```
+
+Note that the global section will always be loaded.
+
+## Retrieving config variables in PHP
+
+
+## Loading from a resource
+Config files (or resources) are loaded by the same resource facilities
+as templates. That means that a config file can also be loaded from a db. See [resources](../resources.md)
+for more information.
+
+## Config overwrite
+If you name two variables the same within a section,
+the last one will be used unless you call:
+```php
+setConfigOverwrite(false);
+```
+When config overwrite is disabled, Smarty will create arrays of config file variables when it encounters
+multiple entries with the same name.
+
+See also [`{config_load}`](../../designers/language-builtin-functions/language-function-config-load.md),
+[`$default_config_handler_func`](../../programmers/api-variables/variable-default-config-handler-func.md),
+[`getConfigVars()`](../../programmers/api-functions/api-get-config-vars.md),
+[`clearConfig()`](../../programmers/api-functions/api-clear-config.md) and
+[`configLoad()`](../../programmers/api-functions/api-config-load.md)
diff --git a/vendor/smarty/smarty/docs/api/variables/objects.md b/vendor/smarty/smarty/docs/api/variables/objects.md
new file mode 100644
index 000000000..9befcb18e
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/objects.md
@@ -0,0 +1,106 @@
+# Objects
+
+Smarty allows access to PHP [objects](https://www.php.net/object) through
+the templates.
+
+> **Note**
+>
+> When you assign/register objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+There are two ways to access them.
+
+## Assign the object
+You can assign objects to a template and access them much like any other assigned variable.
+
+Example:
+```php
+assign('myobj', new My_Object());
+
+$smarty->display('index.tpl');
+```
+
+And here's how to access your object in `index.tpl`:
+
+```smarty
+{$myobj->meth1('foo',$bar)}
+```
+
+
+
+## Register the object
+Registerd objects use a different template syntax. Also, a registered object
+can be restricted to certain methods or
+properties. However, **a registered object cannot be looped over or
+assigned in arrays of objects**, etc.
+
+If security is enabled, no private methods or functions can be accessed
+(beginning with '_'). If a method and property of the same name exist,
+the method will be used.
+
+You can restrict the methods and properties that can be accessed by
+listing them in an array as the third registration parameter.
+
+By default, parameters passed to objects through the templates are
+passed the same way [custom tags](../../designers/language-custom-functions/index.md) get
+them. An associative array is passed as the first parameter, and the
+smarty object as the second. If you want the parameters passed one at a
+time for each argument like traditional object parameter passing, set
+the fourth registration parameter to FALSE.
+
+The optional fifth parameter has only effect with `format` being TRUE
+and contains a list of methods that should be treated as blocks. That
+means these methods have a closing tag in the template
+(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
+have the same synopsis as the parameters for
+[`block tags`](../extending/block-tags.md): They get the four
+parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
+behave like block tags.
+
+```php
+registerObject('foobar', $myobj);
+
+// if we want to restrict access to certain methods or properties, list them
+$smarty->registerObject('foobar', $myobj, array('meth1','meth2','prop1'));
+
+// if you want to use the traditional object parameter format, pass a boolean of false
+$smarty->registerObject('foobar', $myobj, null, false);
+
+$smarty->display('index.tpl');
+```
+
+And here's how to access your objects in `index.tpl`:
+
+```smarty
+{* access our registered object *}
+{foobar->meth1 p1='foo' p2=$bar}
+
+{* you can also assign the output *}
+{foobar->meth1 p1='foo' p2=$bar assign='output'}
+the output was {$output}
+```
diff --git a/vendor/smarty/smarty/docs/api/variables/static-class-methods.md b/vendor/smarty/smarty/docs/api/variables/static-class-methods.md
new file mode 100644
index 000000000..fd3fea4c8
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/static-class-methods.md
@@ -0,0 +1,39 @@
+# Static Classes
+
+You can directly access static classes. The syntax is roughly the same as in
+PHP.
+
+> **Note**
+>
+> Direct access to PHP classes is not recommended. This ties the
+> underlying application code structure directly to the presentation,
+> and also complicates template syntax. It is recommended to register
+> plugins which insulate templates from PHP classes/objects. Use at your
+> own discretion.
+
+## Examples
+
+**class constant BAR**
+```smarty
+{assign var=foo value=myclass::BAR}
+```
+
+**method result**
+```smarty
+{assign var=foo value=myclass::method()}
+```
+
+**method chaining**
+```smarty
+{assign var=foo value=myclass::method1()->method2}
+```
+
+**property bar of class myclass**
+```smarty
+{assign var=foo value=myclass::$bar}
+```
+
+**using Smarty variable bar as class name**
+```smarty
+{assign var=foo value=$bar::method}
+```
diff --git a/vendor/smarty/smarty/docs/api/variables/streams.md b/vendor/smarty/smarty/docs/api/variables/streams.md
new file mode 100644
index 000000000..c872cf8bb
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/streams.md
@@ -0,0 +1,16 @@
+# Streams
+
+You can also use streams to call variables. *{$foo:bar}* will use the
+*foo://bar* stream to get the template variable.
+
+Using a PHP stream for a template variable resource from within a
+template.
+
+```smarty
+{$foo:bar}
+```
+
+NB. Support for using streams to call variables is deprecated since Smarty v5.1 and will be removed
+in a future version.
+
+See also [`Template Resources`](../resources.md)
diff --git a/vendor/smarty/smarty/docs/appendixes/tips.md b/vendor/smarty/smarty/docs/appendixes/tips.md
index 3c6e6b96f..e4e38d4be 100644
--- a/vendor/smarty/smarty/docs/appendixes/tips.md
+++ b/vendor/smarty/smarty/docs/appendixes/tips.md
@@ -209,8 +209,7 @@ fetching the data up front?
You can do this by writing a custom plugin for fetching the content and
assigning it to a template variable.
-`function.load_ticker.php` - drop file in
-[`$plugins directory`](../programmers/api-variables/variable-plugins-dir.md)
+`function.load_ticker.php`
```php
diff --git a/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md b/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
index 6704fce2f..50acd1950 100644
--- a/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
+++ b/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
@@ -10,8 +10,7 @@ of the console.
Set [`$debugging`](../programmers/api-variables/variable-debugging.md) to TRUE in Smarty, and if needed
set [`$debug_tpl`](../programmers/api-variables/variable-debug-template.md) to the template resource
-path to `debug.tpl` (this is in [`SMARTY_DIR`](../programmers/smarty-constants.md) by
-default). When you load the page, a Javascript console window will pop
+path to `debug.tpl`. When you load the page, a Javascript console window will pop
up and give you the names of all the included templates and assigned
variables for the current page.
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
index c0a12a9be..e054d143c 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
@@ -14,7 +14,7 @@ A simple Smarty template could look like this:
All Smarty template tags are enclosed within delimiters. By default
these are `{` and `}`, but they can be
-[changed](../../programmers/api-variables/variable-left-delimiter.md).
+[changed](../../designers/language-basic-syntax/language-escaping.md).
For the examples in this manual, we will assume that you are using the
default delimiters. In Smarty, all content outside of delimiters is
@@ -22,12 +22,12 @@ displayed as static content, or unchanged. When Smarty encounters
template tags, it attempts to interpret them, and displays the
appropriate output in their place.
-The basis components of the Smarty syntax are:
+The basic components of the Smarty syntax are:
- [Comments](language-syntax-comments.md)
- [Variables](language-syntax-variables.md)
-- [Functions](language-syntax-functions.md)
+- [Operators](language-syntax-operators.md)
+- [Tags](language-syntax-tags.md)
- [Attributes](language-syntax-attributes.md)
- [Quotes](language-syntax-quotes.md)
-- [Math](language-math.md)
- [Escaping](language-escaping.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
index 4c75e09e6..9132b8c02 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
@@ -45,8 +45,7 @@ variables.
Smarty's default delimiters { and } cleanly represent presentational
content. However, if another set of delimiters suit your needs better,
you can change them with Smarty's
-[`$left_delimiter`](../../programmers/api-variables/variable-left-delimiter.md) and
-[`$right_delimiter`](../../programmers/api-variables/variable-right-delimiter.md) values.
+`setLeftDelimiter()` and `setRightDelimiter()` methods.
> **Note**
>
@@ -57,8 +56,8 @@ you can change them with Smarty's
```php
left_delimiter = '';
+$smarty->setLeftDelimiter('');
$smarty->assign('foo', 'bar');
$smarty->assign('name', 'Albert');
@@ -69,7 +68,7 @@ Where the template is:
```smarty
Welcome to Smarty
-
@@ -51,7 +51,7 @@ spiders to lift email addresses off of a site.
me@example.com
{mailto address="me@example.com" encode="javascript_charcode"}
-
```
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
index 4089fdb33..cb2a8d708 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
@@ -1,6 +1,6 @@
# {textformat}
-`{textformat}` is a [block function](../../programmers/plugins/plugins-block-functions.md) used to
+`{textformat}` is a block tag used to
format text. It basically cleans up spaces and special characters, and
formats paragraphs by wrapping at a boundary and indenting lines.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/index.md b/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
index c9aeef887..3f52c2e77 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
@@ -1,39 +1,15 @@
# Variable Modifiers
Variable modifiers can be applied to
-[variables](../language-variables/index.md), [custom functions](../language-custom-functions/index.md)
+[variables](../language-variables/index.md), [custom tags](../language-custom-functions/index.md)
or strings. To apply a modifier,
specify the value followed by a `|` (pipe) and the modifier name. A
modifier may accept additional parameters that affect its behavior.
These parameters follow the modifier name and are separated by a `:`
-(colon). Also, *all php-functions can be used as modifiers implicitly*
-(more below) and modifiers can be
-[combined](../language-combining-modifiers.md).
-
-- [capitalize](language-modifier-capitalize.md)
-- [cat](language-modifier-cat.md)
-- [count_characters](language-modifier-count-characters.md)
-- [count_paragraphs](language-modifier-count-paragraphs.md)
-- [count_sentences](language-modifier-count-sentences.md)
-- [count_words](language-modifier-count-words.md)
-- [date_format](language-modifier-date-format.md)
-- [default](language-modifier-default.md)
-- [escape](language-modifier-escape.md)
-- [from_charset](language-modifier-from-charset.md)
-- [indent](language-modifier-indent.md)
-- [lower](language-modifier-lower.md)
-- [nl2br](language-modifier-nl2br.md)
-- [regex_replace](language-modifier-regex-replace.md)
-- [replace](language-modifier-replace.md)
-- [spacify](language-modifier-spacify.md)
-- [string_format](language-modifier-string-format.md)
-- [strip](language-modifier-strip.md)
-- [strip_tags](language-modifier-strip-tags.md)
-- [to_charset](language-modifier-to-charset.md)
-- [truncate](language-modifier-truncate.md)
-- [unescape](language-modifier-unescape.md)
-- [upper](language-modifier-upper.md)
-- [wordwrap](language-modifier-wordwrap.md)
+(colon).
+
+Modifiers can be applied to any type of variables, including arrays
+and objects.
## Examples
@@ -65,58 +41,64 @@ These parameters follow the modifier name and are separated by a `:`
{* php's count *}
{$myArray|@count}
-{* this will uppercase and truncate the whole array *}
+{* this will uppercase the whole array *}
+```
+
+## Combining Modifiers
+
+You can apply any number of modifiers to a variable. They will be
+applied in the order they are combined, from left to right. They must be
+separated with a `|` (pipe) character.
+
+```php
+assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
+```
+
+where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|upper|spacify}
+{$articleTitle|lower|spacify|truncate}
+{$articleTitle|lower|truncate:30|spacify}
+{$articleTitle|lower|spacify|truncate:30:". . ."}
+```
+
+
+The above example will output:
+
+```
+Smokers are Productive, but Death Cuts Efficiency.
+S M O K E R S A R ....snip.... H C U T S E F F I C I E N C Y .
+s m o k e r s a r ....snip.... b u t d e a t h c u t s...
+s m o k e r s a r e p r o d u c t i v e , b u t . . .
+s m o k e r s a r e p. . .
+```
+
+## Using modifiers in expressions
+
+Modifiers can also be used in expressions. For example, you can use the [isset modifier](./language-modifier-isset.md)
+to test if a variable holds a value different from null.
+
+```smarty
+{if $varA|isset}
+ variable A is set
+{/if}
+```
+
+You can also use modifiers in expressions in a PHP-style syntax:
+
+```smarty
+{if isset($varA)}
+ variable A is set
+{/if}
```
-
-- Modifiers can be applied to any type of variables, including arrays
- and objects.
-
- > **Note**
- >
- > The default behavior was changed with Smarty 3. In Smarty 2.x, you
- > had to use an "`@`" symbol to apply a modifier to an array, such
- > as `{$articleTitle|@count}`. With Smarty 3, the "`@`" is no
- > longer necessary, and is ignored.
- >
- > If you want a modifier to apply to each individual item of an
- > array, you will either need to loop the array in the template, or
- > provide for this functionality inside your modifier function.
-
- > **Note**
- >
- > Second, in Smarty 2.x, modifiers were applied to the result of
- > math expressions like `{8+2}`, meaning that
- > `{8+2|count_characters}` would give `2`, as 8+2=10 and 10 is two
- > characters long. With Smarty 3, modifiers are applied to the
- > variables or atomic expressions before executing the calculations,
- > so since 2 is one character long, `{8+2|count_characters}`
- > gives 9. To get the old result use parentheses like
- > `{(8+2)|count_characters}`.
-
-- Modifiers are autoloaded from the
- [`$plugins_dir`](../../programmers/api-variables/variable-plugins-dir.md) or can be registered
- explicitly with the [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md)
- function. The later is useful for sharing a function between php
- scripts and smarty templates.
-
-- All php-functions can be used as modifiers implicitly, as
- demonstrated in the example above. However, using php-functions as
- modifiers has two little pitfalls:
-
- - First - sometimes the order of the function-parameters is not
- the desirable one. Formatting `$foo` with
- `{"%2.f"|sprintf:$foo}` actually works, but asks for the more
- intuitive, like `{$foo|string_format:"%2.f"}` that is provided
- by the Smarty distribution.
-
- - Secondly - if security is enabled, all php-functions that are to
- be used as modifiers have to be declared trusted in the
- `$modifiers` property of the security policy. See the
- [Security](../../programmers/advanced-features/advanced-features-security.md) section for details.
See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md), [combining
modifiers](../language-combining-modifiers.md). and [extending smarty with
-plugins](../../programmers/plugins.md)
+plugins](../../api/extending/introduction.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
new file mode 100644
index 000000000..36436a398
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
@@ -0,0 +1,21 @@
+# count
+
+Returns the number of elements in an array (or Countable object). Will return 0 for null.
+Returns 1 for any other type (such as a string).
+
+If the optional mode parameter is set to 1, count() will recursively count the array.
+This is particularly useful for counting all the elements of a multidimensional array.
+
+## Basic usage
+```smarty
+{if $myVar|count > 3}4 or more{/if}
+{if count($myVar) > 3}4 or more{/if}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|--------------------------------------------------------|
+| 1 | int | No | If set to 1, count() will recursively count the array. |
+
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
new file mode 100644
index 000000000..ce3f86a73
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
@@ -0,0 +1,26 @@
+# debug_print_var
+
+
+
+Returns the value of the given variable in a human-readable format in HTML.
+Used in the [debug console](../chapter-debugging-console.md), but you can also use it in your template
+while developing to see what is going on under the hood.
+
+> **Note**
+>
+> Use for debugging only! Since you may accidentally reveal sensitive information or introduce vulnerabilities such as XSS using this
+method never use it in production.
+
+## Basic usage
+```smarty
+{$myVar|debug_print_var}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|------------------------------------------------------------------------|
+| 1 | int | No | maximum recursion depth if $var is an array or object (defaults to 10) |
+| 2 | int | No | maximum string length if $var is a string (defaults to 40) |
+
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
index 6fd5dd2b4..18c98f1cb 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
@@ -73,6 +73,6 @@ This snippet is useful for emails, but see also
{$EmailAddress|escape:'mail'}
```
-See also [escaping smarty parsing](../language-basic-syntax/language-escaping.md),
+See also [auto-escaping](../../api/configuring.md#enabling-auto-escaping), [escaping smarty parsing](../language-basic-syntax/language-escaping.md),
[`{mailto}`](../language-custom-functions/language-function-mailto.md) and the [obfuscating email
-addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses) page.
+addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses) pages.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
index bf4b4769e..25c4d2d9e 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
@@ -16,5 +16,5 @@ modifier](language-modifier-to-charset.md).
> modifier should only be used in cases where the application cannot
> anticipate that a certain string is required in another encoding.
-See also [Charset Encoding](../../programmers/charset.md), [to_charset
+See also [Configuring Smarty](../../api/configuring.md), [to_charset
modifier](language-modifier-to-charset.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
new file mode 100644
index 000000000..f6cfffcd1
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
@@ -0,0 +1,9 @@
+# is_array
+
+Return true if the variable passed to it is an array.
+
+## Basic usage
+
+```smarty
+{if $myVar|is_array}it's an array{/if}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
new file mode 100644
index 000000000..83e31dfa9
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
@@ -0,0 +1,11 @@
+# isset
+
+Returns true if the variable(s) passed to it are different from null.
+
+If multiple parameters are supplied then isset() will return true only if all of the parameters are
+not null.
+
+## Basic usage
+```smarty
+{if $myVar|isset}all set!{/if}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
new file mode 100644
index 000000000..9a044714d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
@@ -0,0 +1,26 @@
+# join
+
+Returns a string containing all the element of the given array
+with the separator string between each.
+
+## Basic usage
+
+For `$myArray` populated with `['a','b','c']`, the following will return the string `abc`.
+```smarty
+{$myArray|join}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|-------------------------------------------------------------|
+| 1 | string | No | glue used between array elements. Defaults to empty string. |
+
+## Examples
+
+
+For `$myArray` populated with `[1,2,3]`, the following will return the string `1-2-3`.
+```smarty
+{$myArray|join:"-"}
+```
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
new file mode 100644
index 000000000..4e70f0c26
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
@@ -0,0 +1,27 @@
+# json_encode
+
+Transforms a value into a valid JSON string.
+
+## Basic usage
+```smarty
+{$user|json_encode}
+```
+Depending on the value of `$user` this would return a string in JSON-format, e.g. `{"username":"my_username","email":"my_username@smarty.net"}`.
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------------------------------------------------------------------------------------|
+| 1 | int | No | bitmask of flags, directly passed to [PHP's json_encode](https://www.php.net/json_encode) |
+
+
+## Examples
+
+By passing `16` as the second parameter, you can force json_encode to always format the JSON-string as an object.
+Without it, an array `$myArray = ["a","b"]` would be formatted as a javascript array:
+
+```smarty
+{$myArray|json_encode} # renders: ["a","b"]
+{$myArray|json_encode:16} # renders: {"0":"a","1":"b"}
+```
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
new file mode 100644
index 000000000..5dbfaa30d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
@@ -0,0 +1,9 @@
+# noprint
+
+Always returns an empty string. This can be used to call a function or a method on an object that
+returns output, and suppress the output.
+
+## Basic usage
+```smarty
+{$controller->sendEmail()|noprint}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
new file mode 100644
index 000000000..44c3acf44
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
@@ -0,0 +1,32 @@
+# number_format
+
+Allows you to format a number using decimals and a thousands-separator. By default, the number of decimals is 0
+and the number is rounded.
+
+## Basic usage
+```smarty
+{$num = 2000.151}
+{$num|number_format} # renders: 2,000
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|---------------------------------------|
+| 1 | int | No | number of decimals (defaults to 0) |
+| 2 | string | No | decimal separator (defaults to ".") |
+| 3 | string | No | thousands-separator (defaults to ",") |
+
+
+## Examples
+
+```smarty
+{$num = 2000.151}
+{$num|number_format:2} # renders: 2,000.15
+```
+
+```smarty
+{$num = 2000.151}
+{$num|number_format:2:".":""} # renders: 2000.15
+```
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md
new file mode 100644
index 000000000..e9cce97d3
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md
@@ -0,0 +1,8 @@
+# raw
+
+Prevents variable escaping when [auto-escaping](../../api/configuring.md#enabling-auto-escaping) is activated.
+
+## Basic usage
+```smarty
+{$myVar|raw}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
new file mode 100644
index 000000000..c05b899a9
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
@@ -0,0 +1,35 @@
+# round
+
+Rounds a number to the specified precision.
+
+## Basic usage
+```smarty
+{3.14|round} # renders: 3
+```
+
+```smarty
+{3.141592|round:2} # renders: 3.14
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|---------------------------|
+| 1 | int | No | precision (defaults to 0) |
+| 2 | int | No | mode (defaults to 1) |
+
+If 'precision' is negative, the number is rounded to the nearest power of 10. See examples below.
+
+The parameter 'mode' defines how the rounding is done. By default, 2.5 is rounded to 3, whereas 2.45 is rounded to 2.
+You usually don't need to change this. For more details on rounding modes,
+see [PHP's documentation on round](https://www.php.net/manual/en/function.round).
+
+## Examples
+
+By passing `16` as the second parameter, you can force json_encode to always format the JSON-string as an object.
+Without it, an array `$myArray = ["a","b"]` would be formatted as a javascript array:
+
+```smarty
+{$myArray|json_encode} # renders: ["a","b"]
+{$myArray|json_encode:16} # renders: {"0":"a","1":"b"}
+```
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
new file mode 100644
index 000000000..caef884f5
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
@@ -0,0 +1,32 @@
+# split
+
+Splits a string into an array, using the optional second parameter as the separator.
+
+## Basic usage
+
+For `$chars` populated with `'abc'`, the following will produce a html list with 3 elements (a, b and c).
+```smarty
+
+ {foreach $chars|split as $char}
+
{$char|escape}
+ {/foreach}
+
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|
+| 1 | string | No | separator used to split the string on. Defaults to empty string, causing each character in the source string to be separate. |
+
+## Examples
+
+
+For `$ids` populated with `'1,2,3'`, the following will produce a html list with 3 elements (1, 2 and 3).
+```smarty
+
+ {foreach $ids|split:',' as $id}
+
{$id|escape}
+ {/foreach}
+
+```
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
new file mode 100644
index 000000000..1ae1824d6
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
@@ -0,0 +1,14 @@
+# str_repeat
+
+Repeats the given value n times.
+
+## Basic usage
+```smarty
+{"hi"|str_repeat:2} # renders: hihi
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-----------------------|
+| 1 | int | yes | number of repetitions |
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
new file mode 100644
index 000000000..4c1f37ab7
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
@@ -0,0 +1,9 @@
+# strlen
+
+Returns the length (number of characters) in the given string, including spaces.
+
+## Basic usage
+```smarty
+{"Smarty"|strlen} # renders: 6
+{156|strlen} # renders: 3
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
new file mode 100644
index 000000000..a79d8a4d1
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
@@ -0,0 +1,25 @@
+# substr
+
+Returns a part (substring) of the given string starting at a given offset.
+
+## Basic usage
+```smarty
+{"Smarty"|substr:2} # renders: arty
+{"Smarty"|substr:2:3} # renders: art
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-----------------------------------------------------|
+| 1 | int | yes | offset (zero based, can be negative) |
+| 2 | int | no | length of substring returned (unlimited of omitted) |
+
+
+## Examples
+
+When used with a negative offset, the substring starts n characters from the end of the string counting backwards.
+```smarty
+{"Smarty"|substr:-2} # renders: ty
+{"Smarty"|substr:-2:1} # renders: t
+```
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
index c0b003842..aa8cfd53f 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
@@ -16,5 +16,5 @@ modifier](#language.modifier.from_charset).
> modifier should only be used in cases where the application cannot
> anticipate that a certain string is required in another encoding.
-See also [Charset Encoding](../../programmers/charset.md), [from_charset
+See also [Configuring Smarty](../../api/configuring.md), [from_charset
modifier](language-modifier-from-charset.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
index 3173059c9..edce96381 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
@@ -29,5 +29,5 @@ If Strike isn't Settled Quickly it may Last a While.
IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE.
```
-See also [`lower`](lower) and
+See also [`lower`](./language-modifier-lower.md) and
[`capitalize`](language-modifier-capitalize.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/index.md b/vendor/smarty/smarty/docs/designers/language-variables/index.md
index 58ae6eb95..0278c9170 100644
--- a/vendor/smarty/smarty/docs/designers/language-variables/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-variables/index.md
@@ -8,11 +8,11 @@ variable depends on what symbol it is prefixed or enclosed within.
- [{$smarty} reserved variable](language-variables-smarty.md)
Variables in Smarty can be either displayed directly or used as
-arguments for [functions](../language-basic-syntax/language-syntax-functions.md),
+arguments for [tags](../language-basic-syntax/language-syntax-tags.md),
[attributes](../language-basic-syntax/language-syntax-attributes.md) and
[modifiers](../language-modifiers/index.md), inside conditional expressions, etc.
To print a variable, simply enclose it in the
-[delimiters](../../programmers/api-variables/variable-left-delimiter.md) so that it is the only thing
+[delimiters](../../designers/language-basic-syntax/language-escaping.md) so that it is the only thing
contained between them.
```smarty
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
index bd356a2b0..9465a89c5 100644
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
+++ b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
@@ -7,7 +7,7 @@ Variables assigned from PHP are referenced by preceding them with a dollar
```php
assign('firstname', 'Doug');
@@ -110,7 +110,7 @@ zaphod@slartibartfast.example.com
## Objects
-Properties of [objects](../../programmers/advanced-features/advanced-features-objects.md) assigned from PHP
+Properties of [objects](../../api/variables/objects.md) assigned from PHP
can be referenced by specifying the property name after the `->` symbol.
```smarty
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md b/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
index da543fb62..cbeb66874 100644
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
+++ b/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
@@ -66,8 +66,7 @@ difference.
## {$smarty.const}
-You can access PHP constant values directly. See also [smarty
-constants](../../programmers/smarty-constants.md).
+You can access PHP constant values directly.
```php
`, etc.
-- The [`{if}..{elseif}..{else}..{/if}`](#language.function.if)
+- The [`{if}..{elseif}..{else}..{/if}`](designers/language-builtin-functions/language-function-if.md)
constructs are passed to the PHP parser, so the `{if...}` expression
syntax can be as simple or as complex an evaluation as you like.
- Allows unlimited nesting of
- [`sections`](#language.function.section), `if's` etc.
-- Built-in [caching](#caching) support
-- Arbitrary [template](#resources) sources
-- [Template Inheritance](#advanced.features.template.inheritance) for
+ [`sections`](designers/language-builtin-functions/language-function-section.md), `if's` etc.
+- Built-in [caching](api/caching/basics.md) support
+- Arbitrary [template](api/resources.md) sources
+- [Template Inheritance](api/inheritance.md) for
easy management of template content.
-- [Plugin](#plugins) architecture
+- [Plugin](api/extending/introduction.md) architecture
## Separation of presentation from application code
- This means templates can certainly contain logic under the condition
that it is for presentation only. Things such as
- [including](./designers/language-builtin-functions/language-function-include.md) other templates,
- [alternating](./designers/language-custom-functions/language-function-cycle.md) table row colors,
- [upper-casing](./designers/language-modifiers/language-modifier-upper.md) a variable,
- [looping](./designers/language-builtin-functions/language-function-foreach.md) over an array of data and
+ [including](designers/language-builtin-functions/language-function-include.md) other templates,
+ [alternating](designers/language-custom-functions/language-function-cycle.md) table row colors,
+ [upper-casing](designers/language-modifiers/language-modifier-upper.md) a variable,
+ [looping](designers/language-builtin-functions/language-function-foreach.md) over an array of data and
rendering it are examples of presentation logic.
- This does not mean however that Smarty forces a separation of
business and presentation logic. Smarty has no knowledge of which is
@@ -61,7 +60,7 @@ inheritance, instead of including other templates we maintain our
templates as single pages. We can then manipulate blocks of content
within by inheriting them. This makes templates intuitive, efficient and
easy to manage. See
-[Template Inheritance](./programmers/advanced-features/advanced-features-template-inheritance.md)
+[Template Inheritance](api/inheritance.md)
for more info.
## Why not use XML/XSLT syntax?
@@ -135,8 +134,8 @@ that would be needed otherwise? Does the codebase or framework you plan
on using have the features you need for the presentation component?
## Sites using Smarty
-Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple, Tiki
-CMS/Groupware and X-Cart to name a few.
+Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple,
+Tiki Wiki CMS Groupware and X-Cart to name a few.
## Summary
Whether you are using Smarty for a small website or massive enterprise
diff --git a/vendor/smarty/smarty/docs/getting-started.md b/vendor/smarty/smarty/docs/getting-started.md
index adf949726..3628fd203 100644
--- a/vendor/smarty/smarty/docs/getting-started.md
+++ b/vendor/smarty/smarty/docs/getting-started.md
@@ -1,7 +1,7 @@
# Getting started
## Requirements
-Smarty can be run with PHP 7.1 to PHP 8.4.
+Smarty can be run with PHP 7.2 to PHP 8.3.
## Installation
Smarty can be installed with [Composer](https://getcomposer.org/).
@@ -16,32 +16,39 @@ To get the latest, unreleased version, use:
composer require smarty/smarty:dev-master
```
-To get the previous stable version of Smarty, Smarty 3, use:
+To get the previous stable version of Smarty, Smarty 4, use:
```shell
-composer require smarty/smarty:^3
+composer require smarty/smarty:^4
```
Here's how you create an instance of Smarty in your PHP scripts:
```php
setTemplateDir('/some/template/dir');
$smarty->setConfigDir('/some/config/dir');
@@ -70,6 +77,8 @@ You can verify if your system has the correct access rights for
these directories with [`testInstall()`](./programmers/api-functions/api-test-install.md):
```php
+setTemplateDir('/some/template/dir');
$smarty->setConfigDir('/some/config/dir');
@@ -78,12 +87,14 @@ $smarty->setCacheDir('/some/cache/dir');
$smarty->testInstall();
```
+## Basic usage
+
Now, let's create the `index.tpl` file that Smarty will display. This
needs to be located in the [`$template_dir`](./programmers/api-variables/variable-template-dir.md).
```smarty
{* Smarty *}
-Hello {$name}, welcome to Smarty!
+
Hello {$name|escape}, welcome to Smarty!
```
> **Note**
@@ -103,6 +114,7 @@ Now lets edit our php file. We'll create an instance of Smarty,
require 'vendor/autoload.php';
+use Smarty\Smarty;
$smarty = new Smarty();
$smarty->setTemplateDir('/web/www.example.com/guestbook/templates/');
@@ -128,6 +140,20 @@ Now, run your PHP file. You should see *"Hello Ned, welcome to Smarty!"*
You have completed the basic setup for Smarty!
+## Escaping
+You may have noticed that the example template above renders the `$name` variable using
+the [escape modifier](./designers/language-modifiers/language-modifier-escape.md). This
+modifier makes string 'safe' to use in the context of an HTML page.
+
+If you are primarily using Smarty for HTML-pages, it is recommended to enable automatic
+escaping. This way, you don't have to add `|escape` to every variable you use on a web page.
+Smarty will handle it automatically for you!
+
+Enable auto-escaping for HTML as follows:
+```php
+$smarty->setEscapeHtml(true);
+```
+
## Extended Setup
This is a continuation of the [basic installation](#installation), please read that first!
@@ -140,7 +166,9 @@ the same vars, etc., we can do that in one place.
```php
setCompileDir('/web/www.example.com/guestbook/templates_c/');
$this->setConfigDir('/web/www.example.com/guestbook/configs/');
$this->setCacheDir('/web/www.example.com/guestbook/cache/');
+
+ $this->setEscapeHtml(true);
$this->caching = Smarty::CACHING_LIFETIME_CURRENT;
$this->assign('app_name', 'Guest Book');
@@ -158,10 +188,10 @@ class Smarty_GuestBook extends Smarty {
}
```
-Now, we can use `Smarty_GuestBook` instead of `Smarty` in our scripts:
+Now, we can use `My_GuestBook` instead of `Smarty` in our scripts:
```php
assign('name', 'Ned');
$smarty->display('index.tpl');
```
diff --git a/vendor/smarty/smarty/docs/img/smarty.svg b/vendor/smarty/smarty/docs/img/smarty.svg
new file mode 100644
index 000000000..cd8c86639
--- /dev/null
+++ b/vendor/smarty/smarty/docs/img/smarty.svg
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/index.md b/vendor/smarty/smarty/docs/index.md
index cff5e490e..5c788f9ba 100644
--- a/vendor/smarty/smarty/docs/index.md
+++ b/vendor/smarty/smarty/docs/index.md
@@ -1,8 +1,8 @@
-# Smarty 4 Documentation
+# Smarty Documentation
Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
It allows you to write **templates**, using **variables**, **modifiers**, **functions** and **comments**, like this:
-```html
+```smarty
{$title|escape}
@@ -20,31 +20,16 @@ and 480 for $height, the result is:
```
-## Introduction
+## Getting Started
+- [Getting Started](./getting-started.md)
- [Philosophy](./philosophy.md) - or "Why do I need a template engine?"
- [Features](./features.md) - or "Why do I want Smarty?"
-- [Getting Started](./getting-started.md)
-## Smarty for template designers
-- [Basic Syntax](designers/language-basic-syntax/index.md)
-- [Variables](designers/language-variables/index.md)
-- [Variable Modifiers](designers/language-modifiers/index.md)
-- [Combining Modifiers](./designers/language-combining-modifiers.md)
-- [Built-in Functions](designers/language-builtin-functions/index.md)
-- [Custom Functions](designers/language-custom-functions/index.md)
-- [Config Files](./designers/config-files.md)
-- [Debugging Console](./designers/chapter-debugging-console.md)
-
-## Smarty for php developers
-- [Charset Encoding](./programmers/charset.md)
-- [Constants](./programmers/smarty-constants.md)
-- [Smarty Class Variables](./programmers/api-variables.md)
-- [Smarty Class Methods](./programmers/api-functions.md)
-- [Caching](./programmers/caching.md)
-- [Resources](./programmers/resources.md)
-- [Advanced Features](./programmers/advanced-features.md)
-- [Extending Smarty With Plugins](./programmers/plugins.md)
-
-## Other
+## Help
+- [Search or create an issue](https://github.com/smarty-php/smarty/issues)
+- [Upgrading from an older version](upgrading.md)
- [Some random tips & tricks](./appendixes/tips.md)
- [Troubleshooting](./appendixes/troubleshooting.md)
+
+## Source code
+- [Smarty repository at GitHub](https://github.com/smarty-php/smarty)
\ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/philosophy.md b/vendor/smarty/smarty/docs/philosophy.md
index 34555c288..c5edd3980 100644
--- a/vendor/smarty/smarty/docs/philosophy.md
+++ b/vendor/smarty/smarty/docs/philosophy.md
@@ -8,18 +8,18 @@ presentation. This is best described in a situation where the
application programmer and the template designer play different roles,
or in most cases are not the same person.
-For example, let\'s say you are creating a web page that is displaying a
+For example, let's say you are creating a web page that is displaying a
newspaper article.
- The article `$headline`, `$tagline`, `$author` and `$body` are
content elements, they contain no information about how they will be
- presented. They are [passed](#api.assign) into Smarty by the
+ presented. They are [passed](getting-started.md#basic-usage) into Smarty by the
application.
- Then the template designer edits the templates and uses a
- combination of HTML tags and [template tags](#language.basic.syntax)
+ combination of HTML tags and [template tags](designers/language-basic-syntax/language-syntax-tags.md)
to format the presentation of these
- [variables](#language.syntax.variables) with elements such as
+ [variables](designers/language-basic-syntax/language-syntax-variables.md) with elements such as
tables, div\'s, background colors, font sizes, style sheets, svg
etc.
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features.md b/vendor/smarty/smarty/docs/programmers/advanced-features.md
deleted file mode 100644
index 60d4416b5..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Advanced Features {#advanced.features}
-=================
-
-## Table of contents
-
-- [Security](./advanced-features/advanced-features-security.md)
-- [Changing settings by template](./advanced-features/advanced-features-template-settings.md)
-- [Template Inheritance](./advanced-features/advanced-features-template-inheritance.md)
-- [Streams](./advanced-features/advanced-features-streams.md)
-- [Objects](./advanced-features/advanced-features-objects.md)
-- [Static Classes](./advanced-features/advanced-features-static-classes.md)
-- [Prefilters](./advanced-features/advanced-features-prefilters.md)
-- [Postfilters](./advanced-features/advanced-features-postfilters.md)
-- [Output Filters](./advanced-features/advanced-features-outputfilters.md)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
deleted file mode 100644
index b681945e1..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
+++ /dev/null
@@ -1,99 +0,0 @@
-Objects {#advanced.features.objects}
-=======
-
-Smarty allows access to PHP [objects](https://www.php.net/object) through
-the templates.
-
-> **Note**
->
-> When you assign/register objects to templates, be sure that all
-> properties and methods accessed from the template are for presentation
-> purposes only. It is very easy to inject application logic through
-> objects, and this leads to poor designs that are difficult to manage.
-> See the Best Practices section of the Smarty website.
-
-There are two ways to access them.
-
-- One way is to [register objects](#api.register.object) to the
- template, then use access them via syntax similar to [custom
- functions](#language.custom.functions).
-
-- The other way is to [`assign()`](#api.assign) objects to the
- templates and access them much like any other assigned variable.
-
-The first method has a much nicer template syntax. It is also more
-secure, as a registered object can be restricted to certain methods or
-properties. However, **a registered object cannot be looped over or
-assigned in arrays of objects**, etc. The method you choose will be
-determined by your needs, but use the first method whenever possible to
-keep template syntax to a minimum.
-
-If security is enabled, no private methods or functions can be accessed
-(beginning with \'\_\'). If a method and property of the same name exist,
-the method will be used.
-
-You can restrict the methods and properties that can be accessed by
-listing them in an array as the third registration parameter.
-
-By default, parameters passed to objects through the templates are
-passed the same way [custom functions](#language.custom.functions) get
-them. An associative array is passed as the first parameter, and the
-smarty object as the second. If you want the parameters passed one at a
-time for each argument like traditional object parameter passing, set
-the fourth registration parameter to FALSE.
-
-The optional fifth parameter has only effect with `format` being TRUE
-and contains a list of methods that should be treated as blocks. That
-means these methods have a closing tag in the template
-(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
-have the same synopsis as the parameters for
-[`block-function-plugins`](#plugins.block.functions): They get the four
-parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
-behave like block-function-plugins.
-
-
- registerObject('foobar',$myobj);
-
- // if we want to restrict access to certain methods or properties, list them
- $smarty->registerObject('foobar',$myobj,array('meth1','meth2','prop1'));
-
- // if you want to use the traditional object parameter format, pass a boolean of false
- $smarty->registerObject('foobar',$myobj,null,false);
-
- // We can also assign objects. assign_by_ref when possible.
- $smarty->assign_by_ref('myobj', $myobj);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-And here\'s how to access your objects in `index.tpl`:
-
-
- {* access our registered object *}
- {foobar->meth1 p1='foo' p2=$bar}
-
- {* you can also assign the output *}
- {foobar->meth1 p1='foo' p2=$bar assign='output'}
- the output was {$output}
-
- {* access our assigned object *}
- {$myobj->meth1('foo',$bar)}
-
-
-
-See also [`registerObject()`](#api.register.object) and
-[`assign()`](#api.assign).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
deleted file mode 100644
index 393d7da23..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
+++ /dev/null
@@ -1,43 +0,0 @@
-Output Filters {#advanced.features.outputfilters}
-==============
-
-When the template is invoked via [`display()`](#api.display) or
-[`fetch()`](#api.fetch), its output can be sent through one or more
-output filters. This differs from
-[`postfilters`](#advanced.features.postfilters) because postfilters
-operate on compiled templates before they are saved to the disk, whereas
-output filters operate on the template output when it is executed.
-
-Output filters can be either [registered](#api.register.filter) or
-loaded from the [plugins directory](#variable.plugins.dir) by using the
-[`loadFilter()`](#api.load.filter) method or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
-pass the template output as the first argument, and expect the function
-to return the result of the processing.
-
-
- registerFilter("output","protect_email");
- $smarty->display("index.tpl');
-
- // now any occurrence of an email address in the template output will have
- // a simple protection against spambots
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`loadFilter()`](#api.load.filter),
-[`$autoload_filters`](#variable.autoload.filters),
-[postfilters](#advanced.features.postfilters) and
-[`$plugins_dir`](#variable.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
deleted file mode 100644
index d3bad546a..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Postfilters {#advanced.features.postfilters}
-===========
-
-Template postfilters are PHP functions that your templates are ran
-through *after they are compiled*. Postfilters can be either
-[registered](#api.register.filter) or loaded from the [plugins
-directory](#variable.plugins.dir) by using the
-[`loadFilter()`](#api.load.filter) function or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
-pass the compiled template code as the first argument, and expect the
-function to return the result of the processing.
-
-
- \n\"; ?>\n".$tpl_source;
- }
-
- // register the postfilter
- $smarty->registerFilter('post','add_header_comment');
- $smarty->display('index.tpl');
- ?>
-
-
-
-The postfilter above will make the compiled Smarty template `index.tpl`
-look like:
-
-
-
- {* rest of template content... *}
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[prefilters](#advanced.features.prefilters),
-[outputfilters](#advanced.features.outputfilters), and
-[`loadFilter()`](#api.load.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
deleted file mode 100644
index 76229e633..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Prefilters {#advanced.features.prefilters}
-==========
-
-Template prefilters are PHP functions that your templates are ran
-through *before they are compiled*. This is good for preprocessing your
-templates to remove unwanted comments, keeping an eye on what people are
-putting in their templates, etc.
-
-Prefilters can be either [registered](#api.register.filter) or loaded
-from the [plugins directory](#variable.plugins.dir) by using
-[`loadFilter()`](#api.load.filter) function or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable.
-
-Smarty will pass the template source code as the first argument, and
-expect the function to return the resulting template source code.
-
-This will remove all the html comments in the template source.
-
-
- /U",'',$tpl_source);
- }
-
- // register the prefilter
- $smarty->registerFilter('pre','remove_dw_comments');
- $smarty->display('index.tpl');
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[postfilters](#advanced.features.postfilters) and
-[`loadFilter()`](#api.load.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
deleted file mode 100644
index 730915f14..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
+++ /dev/null
@@ -1,144 +0,0 @@
-Security {#advanced.features.security}
-========
-
-Security is good for situations when you have untrusted parties editing
-the templates e.g. via ftp, and you want to reduce the risk of system
-security compromises through the template language.
-
-The settings of the security policy are defined by properties of an
-instance of the Smarty\_Security class. These are the possible settings:
-
-- `$secure_dir` is an array of template directories that are
- considered secure. [`$template_dir`](#variable.template.dir)
- considered secure implicitly. The default is an empty array.
-
-- `$trusted_dir` is an array of all directories that are considered
- trusted. Trusted directories are where you keep php scripts that are
- executed directly from the templates with
- [`{insert}`](#language.function.insert.php). The default is an
- empty array.
-
-- `$trusted_uri` is an array of regular expressions matching URIs that
- are considered trusted. This security directive used by
- [`{fetch}`](#language.function.fetch) and
- [`{html_image}`](#language.function.html.image). URIs passed to
- these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
- simple regular expressions (without having to deal with edge cases
- like authentication-tokens).
-
- The expression `'#https?://.*smarty.net$#i'` would allow accessing
- the following URIs:
-
- - `http://smarty.net/foo`
-
- - `http://smarty.net/foo`
-
- - `http://www.smarty.net/foo`
-
- - `http://smarty.net/foo`
-
- - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
-
- but deny access to these URIs:
-
- - `http://smarty.com/foo` (not matching top-level domain \"com\")
-
- - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
-
- - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
- domain \"smarty.net\")
-
-- `$static_classes` is an array of classes that are considered
- trusted. The default is an empty array which allows access to all
- static classes. To disable access to all static classes set
- \$static\_classes = null.
-
-- `$php_functions` is an array of PHP functions that are considered
- trusted and can be used from within template. To disable access to
- all PHP functions set \$php\_functions = null. An empty array (
- \$php\_functions = array() ) will allow all PHP functions. The
- default is array(\'isset\', \'empty\', \'count\', \'sizeof\',
- \'in\_array\', \'is\_array\',\'time\',\'nl2br\').
-
-- `$php_modifiers` is an array of PHP functions that are considered
- trusted and can be used from within template as modifier. To disable
- access to all PHP modifier set \$php\_modifier = null. An empty
- array ( \$php\_modifier = array() ) will allow all PHP functions.
- The default is array(\'escape\',\'count\').
-
-- `$streams` is an array of streams that are considered trusted and
- can be used from within template. To disable access to all streams
- set \$streams = null. An empty array ( \$streams = array() ) will
- allow all streams. The default is array(\'file\').
-
-- `$allowed_modifiers` is an array of (registered / autoloaded)
- modifiers that should be accessible to the template. If this array
- is non-empty, only the herein listed modifiers may be used. This is
- a whitelist.
-
-- `$disabled_modifiers` is an array of (registered / autoloaded)
- modifiers that may not be accessible to the template.
-
-- `$allowed_tags` is a boolean flag which controls if constants can
- function-, block and filter plugins that should be accessible to the
- template. If this array is non-empty, only the herein listed
- modifiers may be used. This is a whitelist.
-
-- `$disabled_tags` is an array of (registered / autoloaded) function-,
- block and filter plugins that may not be accessible to the template.
-
-- `$allow_constants` is a boolean flag which controls if constants can
- be accessed by the template. The default is \"true\".
-
-- `$allow_super_globals` is a boolean flag which controls if the PHP
- super globals can be accessed by the template. The default is
- \"true\".
-
-If security is enabled, no private methods, functions or properties of
-static classes or assigned objects can be accessed (beginning with
-\'\_\') by the template.
-
-To customize the security policy settings you can extend the
-Smarty\_Security class or create an instance of it.
-
-
- enableSecurity('My_Security_Policy');
- ?>
-
-
- php_functions = null;
- // allow everthing as modifier
- $my_security_policy->php_modifiers = array();
- // enable security
- $smarty->enableSecurity($my_security_policy);
- ?>
-
-
- enableSecurity();
- ?>
-
-> **Note**
->
-> Most security policy settings are only checked when the template gets
-> compiled. For that reason you should delete all cached and compiled
-> template files when you change your security settings.
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
deleted file mode 100644
index 8ef79113c..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Static Classes {#advanced.features.static.classes}
-==============
-
-You can directly access static classes. The syntax is the same as in
-PHP.
-
-> **Note**
->
-> Direct access to PHP classes is not recommended. This ties the
-> underlying application code structure directly to the presentation,
-> and also complicates template syntax. It is recommended to register
-> plugins which insulate templates from PHP classes/objects. Use at your
-> own discretion. See the Best Practices section of the Smarty website.
-
-
- {assign var=foo value=myclass::BAR} <--- class constant BAR
-
- {assign var=foo value=myclass::method()} <--- method result
-
- {assign var=foo value=myclass::method1()->method2} <--- method chaining
-
- {assign var=foo value=myclass::$bar} <--- property bar of class myclass
-
- {assign var=foo value=$bar::method} <--- using Smarty variable bar as class name
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
deleted file mode 100644
index d6f7a0de5..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Streams {#advanced.features.streams}
-=======
-
-You can also use streams to call variables. *{\$foo:bar}* will use the
-*foo://bar* stream to get the template variable.
-
-Using a PHP stream for a template variable resource from within a
-template.
-
-
- {$foo:bar}
-
-
-
-See also [`Template Resources`](#resources)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
deleted file mode 100644
index ce47310ca..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Template Inheritance {#advanced.features.template.inheritance}
-====================
-
-Inheritance brings the concept of Object Oriented Programming to
-templates, allowing you to define one (or more) base templates that can
-be extended by child templates. Extending means that the child template
-can override all or some of the parent named block areas.
-
-- The inheritance tree can be as deep as you want, meaning you can
- extend a file that extends another one that extends another one and
- so on.
-
-- The child templates can not define any content besides what\'s
- inside [`{block}`](#language.function.block) tags they override.
- Anything outside of [`{block}`](#language.function.block) tags will
- be removed.
-
-- The content of [`{block}`](#language.function.block) tags from child
- and parent templates can be merged by the `append` or `prepend`
- [`{block}`](#language.function.block) tag option flags and
- `{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
-
-- Template inheritance is a compile time process which creates a
- single compiled template file. Compared to corresponding solutions
- based on subtemplates included with the
- [`{include}`](#language.function.include) tag it does have much
- better performance when rendering.
-
-- The child template extends its parent defined with the
- [`{extends}`](#language.function.extends) tag, which must be the
- first line in the child template. Instead of using the
- [`{extends}`](#language.function.extends) tags in the template files
- you can define the whole template inheritance tree in the PHP script
- when you are calling [`fetch()`](#api.fetch) or
- [`display()`](#api.display) with the `extends:` template resource
- type. The later provides even more flexibility.
-
-> **Note**
->
-> When `$compile_check` is enabled, all files in the inheritance tree
-> are checked for modifications upon each invocation. You may want to
-> disable `$compile_check` on production servers for this reason.
-
-> **Note**
->
-> If you have a subtemplate which is included with
-> [`{include}`](#language.function.include) and it contains
-> [`{block}`](#language.function.block) areas it works only if the
-> [`{include}`](#language.function.include) itself is called from within
-> a surrounding [`{block}`](#language.function.block). In the final
-> parent template you may need a dummy
-> [`{block}`](#language.function.block) for it.
-
-layout.tpl (parent)
-
-
-
-
- {block name=title}Default Page Title{/block}
- {block name=head}{/block}
-
-
- {block name=body}{/block}
-
-
-
-
-
-myproject.tpl (child)
-
-
- {extends file='layout.tpl'}
- {block name=head}
-
-
- {/block}
-
-
-
-
-mypage.tpl (grandchild)
-
-
- {extends file='myproject.tpl'}
- {block name=title}My Page Title{/block}
- {block name=head}
-
-
- {/block}
- {block name=body}My HTML Page Body goes here{/block}
-
-
-
-To render the above use
-
-
- $smarty->display('mypage.tpl');
-
-The resulting output is
-
-
-
-
- My Page Title
-
-
-
-
- My HTML Page Body goes here
-
-
-
-Instead of using [`{extends}`](#language.function.extends) tags in the
-template files you can define the inheritance tree in your PHP script by
-using the [`extends:` resource](#resources.extends) type.
-
-The code below will return same result as the example above.
-
-
- display('extends:layout.tpl|myproject.tpl|mypage.tpl');
- ?>
-
-
-
-See also [`{block}`](#language.function.block),
-[`{extends}`](#language.function.extends) and [`extends:`
-resource](#resources.extends)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
deleted file mode 100644
index b06430ff0..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
+++ /dev/null
@@ -1,32 +0,0 @@
-Changing settings by template {#advanced.features.template.settings}
-=============================
-
-Normally you configure the Smarty settings by modifying the
-[`Smarty class variables`](#api.variables). Furthermore you can register
-plugins, filters etc. with [`Smarty functions`](#api.functions).
-Modifications done to the Smarty object will be global for all
-templates.
-
-However the Smarty class variables and functions can be accessed or
-called by individual template objects. Modification done to a template
-object will apply only for that template and its included subtemplates.
-
-
- createTemplate('index.tpl);
- $tpl->cache_lifetime = 600;
- //or
- $tpl->setCacheLifetime(600);
- $smarty->display($tpl);
- ?>
-
-
-
-
- createTemplate('index.tpl);
- $tpl->registerPlugin('modifier','mymodifier');
- $smarty->display($tpl);
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions.md b/vendor/smarty/smarty/docs/programmers/api-functions.md
deleted file mode 100644
index 6f120fa9a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions.md
+++ /dev/null
@@ -1,64 +0,0 @@
-Smarty Class Methods {#api.functions}
-====================
-
-## Table of contents
-
-- [addConfigDir()](./api-functions/api-add-config-dir.md) — add a directory to the list of directories where config files are stored
-- [addPluginsDir()](./api-functions/api-add-plugins-dir.md) — add a directory to the list of directories where plugins are stored
-- [addTemplateDir()](./api-functions/api-add-template-dir.md) — add a directory to the list of directories where templates are stored
-- [append()](./api-functions/api-append.md) — append an element to an assigned array
-- [appendByRef()](./api-functions/api-append-by-ref.md) — append values by reference
-- [assign()](./api-functions/api-assign.md) — assign variables/objects to the templates
-- [assignByRef()](./api-functions/api-assign-by-ref.md) — assign values by reference
-- [clearAllAssign()](./api-functions/api-clear-all-assign.md) — clears the values of all assigned variables
-- [clearAllCache()](./api-functions/api-clear-all-cache.md) — clears the entire template cache
-- [clearAssign()](./api-functions/api-clear-assign.md) — clears the value of an assigned variable
-- [clearCache()](./api-functions/api-clear-cache.md) — clears the cache for a specific template
-- [clearCompiledTemplate()](./api-functions/api-clear-compiled-tpl.md) — clears the compiled version of the specified template resource
-- [clearConfig()](./api-functions/api-clear-config.md) — clears assigned config variables
-- [compileAllConfig()](./api-functions/api-compile-all-config.md) — compiles all known config files
-- [compileAllTemplates()](./api-functions/api-compile-all-templates.md) — compiles all known templates
-- [configLoad()](./api-functions/api-config-load.md) — loads config file data and assigns it to the template
-- [createData()](./api-functions/api-create-data.md) — creates a data object
-- [createTemplate()](./api-functions/api-create-template.md) — returns a template object
-- [disableSecurity()](./api-functions/api-disable-security.md) — disables template security
-- [display()](./api-functions/api-display.md) — displays the template
-- [enableSecurity()](./api-functions/api-enable-security.md) — enables template security
-- [fetch()](./api-functions/api-fetch.md) — returns the template output
-- [getCacheDir()](./api-functions/api-get-cache-dir.md) — return the directory where the rendered template's output is stored
-- [getCompileDir()](./api-functions/api-get-compile-dir.md) — returns the directory where compiled templates are stored
-- [getConfigDir()](./api-functions/api-get-config-dir.md) — return the directory where config files are stored
-- [getConfigVars()](./api-functions/api-get-config-vars.md) — returns the given loaded config variable value
-- [getPluginsDir()](./api-functions/api-get-plugins-dir.md) — return the directory where plugins are stored
-- [getRegisteredObject()](./api-functions/api-get-registered-object.md) — returns a reference to a registered object
-- [getTags()](./api-functions/api-get-tags.md) — return tags used by template
-- [getTemplateDir()](./api-functions/api-get-template-dir.md) — return the directory where templates are stored
-- [getTemplateVars()](./api-functions/api-get-template-vars.md) — returns assigned variable value(s)
-- [isCached()](./api-functions/api-is-cached.md) — returns true if there is a valid cache for this template
-- [loadFilter()](./api-functions/api-load-filter.md) — load a filter plugin
-- [muteExpectedErrors()](./api-functions/api-mute-expected-errors.md) — mutes expected warnings and notices deliberately generated by Smarty
-- [registerCacheResource()](./api-functions/api-register-cacheresource.md) — dynamically register CacheResources
-- [registerClass()](./api-functions/api-register-class.md) — register a class for use in the templates
-- [registerDefaultPluginHandler()](./api-functions/api-register-default-plugin-handler.md) — register a function which gets called on undefined tags
-- [registerFilter()](./api-functions/api-register-filter.md) — dynamically register filters
-- [registerPlugin()](./api-functions/api-register-plugin.md) — dynamically register plugins
-- [registerObject()](./api-functions/api-register-object.md) — register an object for use in the templates
-- [registerResource()](./api-functions/api-register-resource.md) — dynamically register resources
-- [setCacheDir()](./api-functions/api-set-cache-dir.md) — set the directory where the rendered template's output is stored
-- [setCompileDir()](./api-functions/api-set-compile-dir.md) — set the directory where compiled templates are stored
-- [setConfigDir()](./api-functions/api-set-config-dir.md) — set the directories where config files are stored
-- [setPluginsDir()](./api-functions/api-set-plugins-dir.md) — set the directories where plugins are stored
-- [setTemplateDir()](./api-functions/api-set-template-dir.md) — set the directories where templates are stored
-- [templateExists()](./api-functions/api-template-exists.md) — checks whether the specified template exists
-- [unregisterCacheResource()](./api-functions/api-unregister-cacheresource.md) — dynamically unregister a CacheResource plugin
-- [unregisterFilter()](./api-functions/api-unregister-filter.md) — dynamically unregister a filter
-- [unregisterPlugin()](./api-functions/api-unregister-plugin.md) — dynamically unregister plugins
-- [unregisterObject()](./api-functions/api-unregister-object.md) — dynamically unregister an object
-- [unregisterResource()](./api-functions/api-unregister-resource.md) — dynamically unregister a resource plugin
-- [testInstall()](./api-functions/api-test-install.md) — checks Smarty installation
-
-> **Note**
->
-> See
-> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
-> section for how to use the functions for individual templates.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md b/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
deleted file mode 100644
index c3a052289..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
+++ /dev/null
@@ -1,49 +0,0 @@
-addConfigDir()
-
-add a directory to the list of directories where config files are stored
-
-Description
-===========
-
-Smarty
-
-addConfigDir
-
-string\|array
-
-config\_dir
-
-string
-
-key
-
-
- addConfigDir('./config_1');
-
- // add directory where config files are stored and specify array-key
- $smarty->addConfigDir('./config_1', 'one');
-
- // add multiple directories where config files are stored and specify array-keys
- $smarty->addTemplateDir(array(
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getConfigDir());
-
- // chaining of method calls
- $smarty->setConfigDir('./config')
- ->addConfigDir('./config_1', 'one')
- ->addConfigDir('./config_2', 'two');
-
- ?>
-
-
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`setConfigDir()`](#api.set.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
deleted file mode 100644
index e0d24564c..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
+++ /dev/null
@@ -1,49 +0,0 @@
-addTemplateDir()
-
-add a directory to the list of directories where templates are stored
-
-Description
-===========
-
-Smarty
-
-addTemplateDir
-
-string\|array
-
-template\_dir
-
-string
-
-key
-
-
- addTemplateDir('./templates_1');
-
- // add directory where templates are stored and specify array-key
- $smarty->addTemplateDir('./templates_1', 'one');
-
- // add multiple directories where templates are stored and specify array-keys
- $smarty->addTemplateDir(array(
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->addTemplateDir('./templates_1', 'one')
- ->addTemplateDir('./templates_2', 'two');
-
- ?>
-
-
-
-See also [`getTemplateDir()`](#api.get.template.dir),
-[`setTemplateDir()`](#api.set.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
deleted file mode 100644
index cd396d9cc..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
+++ /dev/null
@@ -1,46 +0,0 @@
-appendByRef()
-
-append values by reference
-
-Description
-===========
-
-void
-
-appendByRef
-
-string
-
-varname
-
-mixed
-
-var
-
-bool
-
-merge
-
-This is used to [`append()`](#api.append) values to the templates by
-reference.
-
-> **Note**
->
-> With the introduction of PHP5, `appendByRef()` is not necessary for
-> most intents and purposes. `appendByRef()` is useful if you want a PHP
-> array index value to be affected by its reassignment from a template.
-> Assigned object properties behave this way by default.
-
-NOTE.PARAMETER.MERGE
-
-
- appendByRef('Name', $myname);
- $smarty->appendByRef('Address', $address);
- ?>
-
-
-
-See also [`append()`](#api.append), [`assign()`](#api.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
index b94586417..d9acff84a 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
@@ -56,6 +56,5 @@ NOTE.PARAMETER.MERGE
-See also [`appendByRef()`](#api.append.by.ref),
-[`assign()`](#api.assign) and
+See also [`assign()`](#api.assign) and
[`getTemplateVars()`](#api.get.template.vars)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
deleted file mode 100644
index 7c42b4836..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
+++ /dev/null
@@ -1,42 +0,0 @@
-assignByRef()
-
-assign values by reference
-
-Description
-===========
-
-void
-
-assignByRef
-
-string
-
-varname
-
-mixed
-
-var
-
-This is used to [`assign()`](#api.assign) values to the templates by
-reference.
-
-> **Note**
->
-> With the introduction of PHP5, `assignByRef()` is not necessary for
-> most intents and purposes. `assignByRef()` is useful if you want a PHP
-> array index value to be affected by its reassignment from a template.
-> Assigned object properties behave this way by default.
-
-
- assignByRef('Name', $myname);
- $smarty->assignByRef('Address', $address);
- ?>
-
-
-
-See also [`assign()`](#api.assign),
-[`clearAllAssign()`](#api.clear.all.assign), [`append()`](#api.append),
-[`{assign}`](#language.function.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
index c3b9985d4..31f6a1508 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
@@ -78,7 +78,6 @@ To access more complex array assignments see
[`{foreach}`](#language.function.foreach) and
[`{section}`](#language.function.section)
-See also [`assignByRef()`](#api.assign.by.ref),
-[`getTemplateVars()`](#api.get.template.vars),
+See also [`getTemplateVars()`](#api.get.template.vars),
[`clearAssign()`](#api.clear.assign), [`append()`](#api.append) and
[`{assign}`](#language.function.assign)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
index a102fc97e..35497d9ad 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
@@ -50,7 +50,7 @@ parameters:
setCaching(true);
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
index 6da05bd0e..491c28d4d 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
@@ -30,7 +30,7 @@ PARAMETER.COMPILEID
setCaching(true);
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
deleted file mode 100644
index 9e55d8d0b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-getCacheDir()
-
-return the directory where the rendered template\'s output is stored
-
-Description
-===========
-
-string
-
-getCacheDir
-
-
- getCacheDir();
-
- ?>
-
-
-
-See also [`setCacheDir()`](#api.set.cache.dir) and
-[`$cache_dir`](#variable.cache.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
deleted file mode 100644
index 3bfae7306..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-getCompileDir()
-
-returns the directory where compiled templates are stored
-
-Description
-===========
-
-string
-
-getCompileDir
-
-
- getCompileDir();
-
- ?>
-
-
-
-See also [`setCompileDir()`](#api.set.compile.dir) and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
deleted file mode 100644
index 7729b468b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getTags()
-
-return tags used by template
-
-Description
-===========
-
-string
-
-getTags
-
-object
-
-template
-
-This function returns an array of tagname/attribute pairs for all tags
-used by the template. It uses the following parameters:
-
-- `template` is the template object.
-
-> **Note**
->
-> This function is experimental.
-
-
- createTemplate('index.tpl');
-
- // get tags
- $tags = $smarty->getTags($tpl);
-
- print_r($tags);
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
deleted file mode 100644
index 42c75908b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getTemplateDir()
-
-return the directory where templates are stored
-
-Description
-===========
-
-string\|array
-
-getTemplateDir
-
-string
-
-key
-
-
- setTemplateDir(array(
- 'one' => './templates',
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // get all directories where templates are stored
- $template_dir = $smarty->getTemplateDir();
- var_dump($template_dir); // array
-
- // get directory identified by key
- $template_dir = $smarty->getTemplateDir('one');
- var_dump($template_dir); // string
-
- ?>
-
-
-
-See also [`setTemplateDir()`](#api.set.template.dir),
-[`addTemplateDir()`](#api.add.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
index 0c41bf04a..d9d3057fb 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
@@ -22,8 +22,8 @@ string
compile\_id
- This only works if [`$caching`](#variable.caching) is set to one of
- `Smarty::CACHING_LIFETIME_CURRENT` or
- `Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
+ `\Smarty\Smarty::CACHING_LIFETIME_CURRENT` or
+ `\Smarty\Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
section](#caching) for more info.
- You can also pass a `$cache_id` as an optional second parameter in
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
index 19286ee33..e2738b0c8 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
@@ -18,7 +18,7 @@ string
name
The first argument specifies the type of the filter to load and can be
-one of the following: `pre`, `post` or `output`. The second argument
+one of the following: `variable`, `pre`, `post` or `output`. The second argument
specifies the `name` of the filter plugin.
@@ -37,6 +37,5 @@ specifies the `name` of the filter plugin.
-See also [`registerFilter()`](#api.register.filter),
-[`$autoload_filters`](#variable.autoload.filters) and [advanced
+See also [`registerFilter()`](#api.register.filter) and [advanced
features](#advanced.features).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
index 626288ea6..ac84a6435 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
@@ -15,7 +15,7 @@ handler merely inspects `$errno` and `$errfile` to determine if the
given error was produced deliberately and must be ignored, or should be
passed on to the next error handler.
-`Smarty::unmuteExpectedErrors()` removes the current error handler.
+`\Smarty\Smarty::unmuteExpectedErrors()` removes the current error handler.
Please note, that if you\'ve registered any custom error handlers after
the muteExpectedErrors() call, the unmute will not remove Smarty\'s
muting error handler, but the one registered last.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
index 60ae60308..626091496 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
@@ -31,7 +31,7 @@ how to create custom CacheResources.
registerCacheResource('mysql', new Smarty_CacheResource_Mysql());
+ $smarty->registerCacheResource('mysql', new My_CacheResource_Mysql());
?>
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
index ee339cadb..d0156d512 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
@@ -24,6 +24,7 @@ otherwise. If security is enabled, classes registered with
registerClass("Foo", "\my\php\application\Bar");
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
index 03547df71..61ac47612 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
@@ -25,7 +25,7 @@ plugin types.
registerDefaultPluginHandler('my_plugin_handler');
@@ -37,7 +37,7 @@ plugin types.
* @param string $name name of the undefined tag
* @param string $type tag type (e.g. Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,
Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_MODIFIER, Smarty::PLUGIN_MODIFIERCOMPILER)
- * @param Smarty_Internal_Template $template template object
+ * @param \Smarty\Template\ $template template object
* @param string &$callback returned function name
* @param string &$script optional returned script filepath if function is external
* @param bool &$cacheable true by default, set to false if plugin is not cachable (Smarty >= 3.1.8)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
index fd91d2661..4a2aa4b02 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
@@ -38,8 +38,7 @@ filters](#advanced.features.outputfilters) for more information on how
to set up an output filter function.
See also [`unregisterFilter()`](#api.unregister.filter),
-[`loadFilter()`](#api.load.filter),
-[`$autoload_filters`](#variable.autoload.filters), [template pre
+[`loadFilter()`](#api.load.filter), [template pre
filters](#advanced.features.prefilters) [template post
filters](#advanced.features.postfilters) [template output
filters](#advanced.features.outputfilters) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
index 6eb433810..51342b8e1 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
@@ -32,9 +32,9 @@ cache\_attrs
This method registers functions or methods defined in your script as
plugin. It uses the following parameters:
-- `cacheable` and `cache_attrs` can be omitted in most cases. See
+- `cacheable` can be omitted in most cases. See
[controlling cacheability of plugins output](#caching.cacheable) on
- how to use them properly.
+ how to use this properly.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
index ca4005460..774452bff 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
@@ -37,7 +37,7 @@ information on how to setup a function for fetching templates.
registerResource('mysql', new Smarty_Resource_Mysql());
+ $smarty->registerResource('mysql', new My_Resource_Mysql());
?>
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
deleted file mode 100644
index 7f7c4b60d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
+++ /dev/null
@@ -1,32 +0,0 @@
-setCacheDir()
-
-set the directory where the rendered template\'s output is stored
-
-Description
-===========
-
-Smarty
-
-setCacheDir
-
-string
-
-cache\_dir
-
-
- setCacheDir('./cache');
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getCacheDir()`](#api.get.cache.dir) and
-[`$cache_dir`](#variable.cache.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
deleted file mode 100644
index bfeb55a53..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
+++ /dev/null
@@ -1,32 +0,0 @@
-setCompileDir()
-
-set the directory where compiled templates are stored
-
-Description
-===========
-
-Smarty
-
-setCompileDir
-
-string
-
-compile\_dir
-
-
- setCompileDir('./templates_c');
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getCompileDir()`](#api.get.compile.dir) and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
deleted file mode 100644
index 97a6ae977..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
+++ /dev/null
@@ -1,47 +0,0 @@
-setConfigDir()
-
-set the directories where config files are stored
-
-Description
-===========
-
-Smarty
-
-setConfigDir
-
-string\|array
-
-config\_dir
-
-
- setConfigDir('./config');
-
- // view the config dir chain
- var_dump($smarty->getConfigDir());
-
- // set multiple directoríes where config files are stored
- $smarty->setConfigDir(array(
- 'one' => './config',
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // view the config dir chain
- var_dump($smarty->getConfigDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setConfigDir('./config')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`addConfigDir()`](#api.add.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
deleted file mode 100644
index 2de23309b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
+++ /dev/null
@@ -1,46 +0,0 @@
-setTemplateDir()
-
-set the directories where templates are stored
-
-Description
-===========
-
-Smarty
-
-setTemplateDir
-
-string\|array
-
-template\_dir
-
-
- setTemplateDir('./cache');
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // set multiple directoríes where templates are stored
- $smarty->setTemplateDir(array(
- 'one' => './templates',
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getTemplateDir()`](#api.get.template.dir),
-[`addTemplateDir()`](#api.add.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
deleted file mode 100644
index 07f61b12e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
+++ /dev/null
@@ -1,59 +0,0 @@
-templateExists()
-
-checks whether the specified template exists
-
-Description
-===========
-
-bool
-
-templateExists
-
-string
-
-template
-
-It can accept either a path to the template on the filesystem or a
-resource string specifying the template.
-
-This example uses `$_GET['page']` to
-[`{include}`](#language.function.include) a content template. If the
-template does not exist then an error page is displayed instead. First
-the `page_container.tpl`
-
-
-
- {$title}
-
- {include file='page_top.tpl'}
-
- {* include middle content page *}
- {include file=$content_template}
-
- {include file='page_footer.tpl'}
-
-
-
-
-And the php script
-
-
- templateExists($mid_template) ){
- $mid_template = 'page_not_found.tpl';
- }
- $smarty->assign('content_template', $mid_template);
-
- $smarty->display('page_container.tpl');
-
- ?>
-
-
-
-See also [`display()`](#api.display), [`fetch()`](#api.fetch),
-[`{include}`](#language.function.include) and
-[`{insert}`](#language.function.insert)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
index 918bd220a..bba64a19c 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
@@ -14,7 +14,7 @@ installation can be accessed. It does output a corresponding protocol.
testInstall();
?>
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables.md b/vendor/smarty/smarty/docs/programmers/api-variables.md
deleted file mode 100644
index ee9c07611..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Smarty Class Variables {#api.variables}
-======================
-
-These are all of the available Smarty class variables. You can access
-them directly, or use the corresponding setter/getter methods.
-
-- [$allow_php_templates](./api-variables/variable-allow-php-templates.md)
-- [$auto_literal](./api-variables/variable-auto-literal.md)
-- [$autoload_filters](./api-variables/variable-autoload-filters.md)
-- [$cache_dir](./api-variables/variable-cache-dir.md)
-- [$cache_id](./api-variables/variable-cache-id.md)
-- [$cache_lifetime](./api-variables/variable-cache-lifetime.md)
-- [$cache_locking](./api-variables/variable-cache-locking.md)
-- [$cache_modified_check](./api-variables/variable-cache-modified-check.md)
-- [$caching](./api-variables/variable-caching.md)
-- [$caching_type](./api-variables/variable-caching-type.md)
-- [$compile_check](./api-variables/variable-compile-check.md)
-- [$compile_dir](./api-variables/variable-compile-dir.md)
-- [$compile_id](./api-variables/variable-compile-id.md)
-- [$compile_locking](./api-variables/variable-compile-locking.md)
-- [$compiler_class](./api-variables/variable-compiler-class.md)
-- [$config_booleanize](./api-variables/variable-config-booleanize.md)
-- [$config_dir](./api-variables/variable-config-dir.md)
-- [$config_overwrite](./api-variables/variable-config-overwrite.md)
-- [$config_read_hidden](./api-variables/variable-config-read-hidden.md)
-- [$debug_tpl](./api-variables/variable-debug-template.md)
-- [$debugging](./api-variables/variable-debugging.md)
-- [$debugging_ctrl](./api-variables/variable-debugging-ctrl.md)
-- [$default_config_type](./api-variables/variable-default-config-type.md)
-- [$default_modifiers](./api-variables/variable-default-modifiers.md)
-- [$default_resource_type](./api-variables/variable-default-resource-type.md)
-- [$default_config_handler_func](./api-variables/variable-default-config-handler-func.md)
-- [$default_template_handler_func](./api-variables/variable-default-template-handler-func.md)
-- [$direct_access_security](./api-variables/variable-direct-access-security.md)
-- [$error_reporting](./api-variables/variable-error-reporting.md)
-- [$escape_html](./api-variables/variable-escape-html.md)
-- [$force_cache](./api-variables/variable-force-cache.md)
-- [$force_compile](./api-variables/variable-force-compile.md)
-- [$left_delimiter](./api-variables/variable-left-delimiter.md)
-- [$locking_timeout](./api-variables/variable-locking-timeout.md)
-- [$merge_compiled_includes](./api-variables/variable-merge-compiled-includes.md)
-- [$plugins_dir](./api-variables/variable-plugins-dir.md)
-- [$right_delimiter](./api-variables/variable-right-delimiter.md)
-- [$smarty_debug_id](./api-variables/variable-smarty-debug-id.md)
-- [$template_dir](./api-variables/variable-template-dir.md)
-- [$trusted_dir](./api-variables/variable-trusted-dir.md)
-- [$use_include_path](./api-variables/variable-use-include-path.md)
-- [$use_sub_dirs](./api-variables/variable-use-sub-dirs.md)
-
-> **Note**
->
-> All class variables have magic setter/getter methods available.
-> setter/getter methods are camelCaseFormat, unlike the variable itself.
-> So for example, you can set and get the \$smarty-\>template\_dir
-> variable with \$smarty-\>setTemplateDir(\$dir) and \$dir =
-> \$smarty-\>getTemplateDir() respectively.
-
-> **Note**
->
-> See
-> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
-> section for how to change Smarty class variables for individual
-> templates.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
deleted file mode 100644
index e15520e2d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
+++ /dev/null
@@ -1,18 +0,0 @@
-\$allow\_php\_templates {#variable.allow.php.templates}
-=======================
-
-By default the PHP template file resource is disabled. Setting
-`$allow_php_templates` to TRUE will enable PHP template files.
-
-::: {.informalexample}
-
- allow_php_templates = true;
- ?>
-
-
-:::
-
-> **Note**
->
-> The PHP template file resource is an undocumented deprecated feature.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
deleted file mode 100644
index 8a300b065..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
+++ /dev/null
@@ -1,21 +0,0 @@
-\$autoload\_filters {#variable.autoload.filters}
-===================
-
-If there are some filters that you wish to load on every template
-invocation, you can specify them using this variable and Smarty will
-automatically load them for you. The variable is an associative array
-where keys are filter types and values are arrays of the filter names.
-For example:
-
-::: {.informalexample}
-
- autoload_filters = array('pre' => array('trim', 'stamp'),
- 'output' => array('convert'));
- ?>
-
-
-:::
-
-See also [`registerFilter()`](#api.register.filter) and
-[`loadFilter()`](#api.load.filter)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
index c9624b556..481fbee8e 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
@@ -5,8 +5,8 @@ This is the length of time in seconds that a template cache is valid.
Once this time has expired, the cache will be regenerated.
- `$caching` must be turned on (either
- Smarty::CACHING\_LIFETIME\_CURRENT or
- Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
+ \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT or
+ \Smarty\Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
purpose.
- A `$cache_lifetime` value of -1 will force the cache to never
@@ -14,11 +14,11 @@ Once this time has expired, the cache will be regenerated.
- A value of 0 will cause the cache to always regenerate (good for
testing only, to disable caching a more efficient method is to set
- [`$caching`](#variable.caching) = Smarty::CACHING\_OFF).
+ [`$caching`](#variable.caching) = \Smarty\Smarty::CACHING\_OFF).
- If you want to give certain templates their own cache lifetime, you
could do this by setting [`$caching`](#variable.caching) =
- Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
+ \Smarty\Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
unique value just before calling [`display()`](#api.display) or
[`fetch()`](#api.fetch).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
index 05e00bb91..815be2556 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
@@ -4,8 +4,7 @@
If set to TRUE, Smarty will respect the If-Modified-Since header sent
from the client. If the cached file timestamp has not changed since the
last visit, then a `'304: Not Modified'` header will be sent instead of
-the content. This works only on cached content without
-[`{insert}`](#language.function.insert) tags.
+the content.
See also [`$caching`](#variable.caching),
[`$cache_lifetime`](#variable.cache.lifetime), and the [caching
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
index 9377e3b6d..7304e41d6 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
@@ -3,21 +3,21 @@
This tells Smarty whether or not to cache the output of the templates to
the [`$cache_dir`](#variable.cache.dir). By default this is set to the
-constant Smarty::CACHING\_OFF. If your templates consistently generate
+constant \Smarty\Smarty::CACHING\_OFF. If your templates consistently generate
the same content, it is advisable to turn on `$caching`, as this may
result in significant performance gains.
You can also have [multiple](#caching.multiple.caches) caches for the
same template.
-- A constant value of Smarty::CACHING\_LIFETIME\_CURRENT or
- Smarty::CACHING\_LIFETIME\_SAVED enables caching.
+- A constant value of \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT or
+ \Smarty\Smarty ::CACHING\_LIFETIME\_SAVED enables caching.
-- A value of Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
+- A value of \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
the current [`$cache_lifetime`](#variable.cache.lifetime) variable
to determine if the cache has expired.
-- A value of Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
+- A value of \Smarty\Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
[`$cache_lifetime`](#variable.cache.lifetime) value at the time the
cache was generated. This way you can set the
[`$cache_lifetime`](#variable.cache.lifetime) just before
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
deleted file mode 100644
index 075e7f17a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
+++ /dev/null
@@ -1,30 +0,0 @@
-\$compile\_check {#variable.compile.check}
-================
-
-Upon each invocation of the PHP application, Smarty tests to see if the
-current template has changed (different timestamp) since the last time
-it was compiled. If it has changed, it recompiles that template. If the
-template has yet not been compiled at all, it will compile regardless of
-this setting. By default this variable is set to TRUE.
-
-Once an application is put into production (ie the templates won\'t be
-changing), the compile check step is no longer needed. Be sure to set
-`$compile_check` to FALSE for maximum performance. Note that if you
-change this to FALSE and a template file is changed, you will \*not\*
-see the change since the template will not get recompiled.
-
-Note that up to Smarty 4.x, Smarty will check for the existence of
-the source template even if `$compile_check` is disabled.
-
-If [`$caching`](#variable.caching) is enabled and `$compile_check` is
-enabled, then the cache files will get regenerated if an involved
-template file or config file was updated.
-
-As of Smarty 3.1 `$compile_check` can be set to the value
-`Smarty::COMPILECHECK_CACHEMISS`. This enables Smarty to revalidate the
-compiled template, once a cache file is regenerated. So if there was a
-cached template, but it\'s expired, Smarty will run a single
-compile\_check before regenerating the cache.
-
-See [`$force_compile`](#variable.force.compile) and
-[`clearCompiledTemplate()`](#api.clear.compiled.tpl).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
index faec0e171..11a805292 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
@@ -2,8 +2,7 @@
============
This is the name of the template file used for the debugging console. By
-default, it is named `debug.tpl` and is located in the
-[`SMARTY_DIR`](#constant.smarty.dir).
+default, it is named `debug.tpl` and is located in `src/debug.tpl`.
See also [`$debugging`](#variable.debugging) and the [debugging
console](#chapter.debugging.console) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
index 0d6ec5e0d..50eb65bb5 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
@@ -8,11 +8,11 @@ resource.
>
> The default handler is currently only invoked for file resources. It
> is not triggered when the resource itself cannot be found, in which
-> case a SmartyException is thrown.
+> case a \Smarty\Exception is thrown.
default_config_handler_func = 'my_default_config_handler_func';
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
index d8fcbb1ad..96c8190d7 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
@@ -8,11 +8,11 @@ resource.
>
> The default handler is currently only invoked for file resources. It
> is not triggered when the resource itself cannot be found, in which
-> case a SmartyException is thrown.
+> case a \Smarty\Exception is thrown.
default_template_handler_func = 'my_default_template_handler_func';
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
deleted file mode 100644
index f471f5de0..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
+++ /dev/null
@@ -1,13 +0,0 @@
-\$direct\_access\_security {#variable.direct.access.security}
-==========================
-
-Direct access security inhibits direct browser access to compiled or
-cached template files.
-
-Direct access security is enabled by default. To disable it set
-`$direct_access_security` to FALSE.
-
-> **Note**
->
-> This is a compile time option. If you change the setting you must make
-> sure that the templates get recompiled.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
index c0aa9cedb..ee28d47ab 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
@@ -7,7 +7,7 @@ When this value is set to a non-null-value it\'s value is used as php\'s
Smarty 3.1.2 introduced the
[`muteExpectedErrors()`](#api.mute.expected.errors) function. Calling
-`Smarty::muteExpectedErrors();` after setting up custom error handling
+`\Smarty\Smarty::muteExpectedErrors();` after setting up custom error handling
will ensure that warnings and notices (deliberately) produced by Smarty
will not be passed to other custom error handlers. If your error logs
are filling up with warnings regarding `filemtime()` or `unlink()`
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
deleted file mode 100644
index bcc13f0e5..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$left\_delimiter {#variable.left.delimiter}
-=================
-
-This is the left delimiter used by the template language. Default is
-`{`.
-
-See also [`$right_delimiter`](#variable.right.delimiter) and [escaping
-smarty parsing](#language.escaping) .
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
deleted file mode 100644
index 8a7cfcdb2..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
+++ /dev/null
@@ -1,28 +0,0 @@
-\$plugins\_dir {#variable.plugins.dir}
-==============
-
-This is the directory or directories where Smarty will look for the
-plugins that it needs. Default is `plugins/` under the
-[`SMARTY_DIR`](#constant.smarty.dir). If you supply a relative path,
-Smarty will first look under the [`SMARTY_DIR`](#constant.smarty.dir),
-then relative to the current working directory, then relative to the PHP
-include\_path. If `$plugins_dir` is an array of directories, Smarty will
-search for your plugin in each plugin directory **in the order they are
-given**.
-
-> **Note**
->
-> For best performance, do not setup your `$plugins_dir` to have to use
-> the PHP include path. Use an absolute pathname, or a path relative to
-> `SMARTY_DIR` or the current working directory.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$plugins\_dir is no longer accessible
-> directly. Use [`getPluginsDir()`](#api.get.plugins.dir),
-> [`setPluginsDir()`](#api.set.plugins.dir) and
-> [`addPluginsDir()`](#api.add.plugins.dir) instead.
-
-See also [`getPluginsDir()`](#api.get.plugins.dir),
-[`setPluginsDir()`](#api.set.plugins.dir) and
-[`addPluginsDir()`](#api.add.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
deleted file mode 100644
index 14a9b568e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$right\_delimiter {#variable.right.delimiter}
-==================
-
-This is the right delimiter used by the template language. Default is
-`}`.
-
-See also [`$left_delimiter`](#variable.left.delimiter) and [escaping
-smarty parsing](#language.escaping).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
index 1db9c4139..eb91d2c24 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
@@ -15,22 +15,12 @@ found.
> document root.
> **Note**
->
-> If the directories known to `$template_dir` are relative to
-> directories known to the
-> [include\_path](https://www.php.net/ini.core.php#ini.include-path) you
-> need to activate the [`$use_include_path`](#variable.use.include.path)
-> option.
-
-> **Note**
->
> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
> directly. Use [`getTemplateDir()`](#api.get.template.dir),
> [`setTemplateDir()`](#api.set.template.dir) and
> [`addTemplateDir()`](#api.add.template.dir) instead.
See also [`Template Resources`](#resources),
-[`$use_include_path`](#variable.use.include.path),
[`getTemplateDir()`](#api.get.template.dir),
[`setTemplateDir()`](#api.set.template.dir) and
[`addTemplateDir()`](#api.add.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
deleted file mode 100644
index 9720ae8a6..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$trusted\_dir {#variable.trusted.dir}
-==============
-
-`$trusted_dir` is only for use when security is enabled. This is an
-array of all directories that are considered trusted. Trusted
-directories are where you keep php scripts that are executed directly
-from the templates with
-[`{insert}`](#language.function.insert.php).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
index 90f55f073..e69de29bb 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
@@ -1,49 +0,0 @@
-\$use\_include\_path {#variable.use.include.path}
-====================
-
-This tells smarty to respect the
-[include\_path](https://www.php.net/ini.core.php#ini.include-path) within
-the [`File Template Resource`](#resources.file) handler and the plugin
-loader to resolve the directories known to
-[`$template_dir`](#variable.template.dir). The flag also makes the
-plugin loader check the include\_path for
-[`$plugins_dir`](#variable.plugins.dir).
-
-> **Note**
->
-> You should not design your applications to rely on the include\_path,
-> as this may - depending on your implementation - slow down your system
-> (and Smarty) considerably.
-
-If use\_include\_path is enabled, file discovery for
-[`$template_dir`](#variable.template.dir) and
-[`$plugins_dir`](#variable.plugins.dir) work as follows.
-
-- For each element `$directory` in array (\$template\_dir or
- \$plugins\_dir) do
-
-- Test if requested file is in `$directory` relative to the [current
- working directory](https://www.php.net/function.getcwd.php). If file
- found, return it.
-
-- For each `$path` in include\_path do
-
-- Test if requested file is in `$directory` relative to the `$path`
- (possibly relative to the [current working
- directory](https://www.php.net/function.getcwd.php)). If file found,
- return it.
-
-- Try default\_handler or fail.
-
-This means that whenever a directory/file relative to the current
-working directory is encountered, it is preferred over anything
-potentially accessible through the include\_path.
-
-> **Note**
->
-> Smarty does not filter elements of the include\_path. That means a
-> \".:\" within your include path will trigger the current working
-> directory lookup twice.
-
-See also [`Template Resources`](#resources) and
-[`$template_dir`](#variable.template.dir)
diff --git a/vendor/smarty/smarty/docs/programmers/caching.md b/vendor/smarty/smarty/docs/programmers/caching.md
deleted file mode 100644
index 5656b71b5..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Caching
-=======
-
-Caching is used to speed up a call to [`display()`](./api-functions/api-display.md) or
-[`fetch()`](./api-functions/api-fetch.md) by saving its output to a file. If a cached
-version of the call is available, that is displayed instead of
-regenerating the output. Caching can speed things up tremendously,
-especially templates with longer computation times. Since the output of
-[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) is cached, one
-cache file could conceivably be made up of several template files,
-config files, etc.
-
-Since templates are dynamic, it is important to be careful what you are
-caching and for how long. For instance, if you are displaying the front
-page of your website that does not change its content very often, it
-might work well to cache this page for an hour or more. On the other
-hand, if you are displaying a page with a timetable containing new
-information by the minute, it would not make sense to cache this page.
-
-## Table of contents
-- [Setting Up Caching](./caching/caching-setting-up.md)
-- [Multiple Caches Per Page](./caching/caching-multiple-caches.md)
-- [Controlling Cacheability of Output](./caching/caching-groups.md)
-- [Custom Cache Implementation](./caching/caching-custom.md)
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md b/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
deleted file mode 100644
index ee9b60090..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
+++ /dev/null
@@ -1,176 +0,0 @@
-Controlling Cacheability of Output {#caching.cacheable}
-==================================
-
-If caching is enabled normally the whole final output of the page gets
-cached. However Smarty3 offers several options how to exclude sections
-of your output from caching.
-
-> **Note**
->
-> Be sure any variables used within a non-cached section are also
-> assigned from PHP when the page is loaded from the cache.
-
-Cacheability of Template Section {#cacheability.sections}
---------------------------------
-
-A larger section of your template can easily excluded from caching by
-using the [`{nocache}`](#language.function.nocache) and
-[`{/nocache}`](#language.function.nocache) tags.
-
-
-
- Today's date is
- {nocache}
- {$smarty.now|date_format}
- {/nocache}
-
-
-
-The above code will output the current date on a cached page.
-
-Cacheability of Tags {#cacheability.tags}
---------------------
-
-Caching for an individual tag can be disabled by adding the \"nocache\"
-option flag to the tag.
-
-
- Today's date is
- {$smarty.now|date_format nocache}
-
-
-
-Cacheability of Variables {#cacheability.variables}
--------------------------
-
-You can [`assign()`](#api.assign) variables as not cachable. Any tag
-which uses such variable will be automatically executed in nocache mode.
-
-> **Note**
->
-> If a tag is executed in nocache mode you must make sure that all other
-> variables used by that tag are also assigned from PHP when the page is
-> loaded from the cache.
-
-> **Note**
->
-> The nocache status of an assigned variable will effect the compiled
-> template code. If you change the status you must manually delete
-> existing compiled and cached template files to force a recompile.
-
-
- // assign $foo as nocahe variable
- $smarty->assign('foo',time(),true);
-
-
- Dynamic time value is {$foo}
-
-
-
-Cacheability of Plugins {#cacheability.plugins}
------------------------
-
-The cacheability of plugins can be declared when registering them. The
-third parameter to [`registerPlugin()`](#api.register.plugin) is called
-`$cacheable` and defaults to TRUE.
-
-When registering a plugin with `$cacheable=false` the plugin is called
-everytime the page is displayed, even if the page comes from the cache.
-The plugin function behaves a little like an
-[`{insert}`](#plugins.inserts) function.
-
-> **Note**
->
-> The `$cacheable` status will effect the compiled template code. If you
-> change the status you must manually delete existing compiled and
-> cached template files to force a recompile.
-
-In contrast to [`{insert}`](#plugins.inserts) the attributes to the
-plugins are not cached by default. They can be declared to be cached
-with the fourth parameter `$cache_attrs`. `$cache_attrs` is an array of
-attribute-names that should be cached, so the plugin-function get value
-as it was the time the page was written to cache everytime it is fetched
-from the cache.
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- function remaining_seconds($params, $smarty) {
- $remain = $params['endtime'] - time();
- if($remain >= 0){
- return $remain . ' second(s)';
- }else{
- return 'done';
- }
- }
-
- $smarty->registerPlugin('function','remaining', 'remaining_seconds', false, array('endtime'));
-
- if (!$smarty->isCached('index.tpl')) {
- // fetch $obj from db and assign...
- $smarty->assignByRef('obj', $obj);
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-where `index.tpl` is:
-
-
- Time Remaining: {remaining endtime=$obj->endtime}
-
-
-
-The number of seconds till the endtime of `$obj` is reached changes on
-each display of the page, even if the page is cached. Since the endtime
-attribute is cached the object only has to be pulled from the database
-when page is written to the cache but not on subsequent requests of the
-page.
-
-
- index.php:
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- function smarty_block_dynamic($param, $content, $smarty) {
- return $content;
- }
- $smarty->registerPlugin('block','dynamic', 'smarty_block_dynamic', false);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-where `index.tpl` is:
-
-
- Page created: {'0'|date_format:'%D %H:%M:%S'}
-
- {dynamic}
-
- Now is: {'0'|date_format:'%D %H:%M:%S'}
-
- ... do other stuff ...
-
- {/dynamic}
-
-
-
-When reloading the page you will notice that both dates differ. One is
-"dynamic" one is "static". You can do everything between
-`{dynamic}...{/dynamic}` and be sure it will not be cached like the rest
-of the page.
-
-> **Note**
->
-> The above example shall just demonstrate how a dynamic block plugins
-> works. See
-> [`Cacheability of Template Section`](#cacheability.sections) on how to
-> disable caching of a template section by the built-in
-> [`{nocache}`](#language.function.nocache) and
-> [`{/nocache}`](#language.function.nocache) tags.
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md b/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
deleted file mode 100644
index 77d2ce7b3..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
+++ /dev/null
@@ -1,296 +0,0 @@
-Custom Cache Implementation {#caching.custom}
-===========================
-
-As an alternative to using the default file-based caching mechanism, you
-can specify a custom cache implementation that will be used to read,
-write and clear cached files.
-
-> **Note**
->
-> In Smarty2 this used to be a callback function called
-> `$cache_handler_func`. Smarty3 replaced this callback by the
-> `Smarty_CacheResource` module.
-
-With a custom cache implementation you\'re likely trying to achieve at
-least one of the following goals: replace the slow filesystem by a
-faster storage engine, centralize the cache to be accessible to multiple
-servers.
-
-Smarty allows CacheResource implementations to use one of the APIs
-`Smarty_CacheResource_Custom` or `Smarty_CacheResource_KeyValueStore`.
-`Smarty_CacheResource_Custom` is a simple API directing all read, write,
-clear calls to your implementation. This API allows you to store
-wherever and however you deem fit. The
-`Smarty_CacheResource_KeyValueStore` API allows you to turn any \"dumb\"
-KeyValue-Store (like APC, Memcache, ...) into a full-featured
-CacheResource implementation. That is, everything around deep
-cache-groups like \"a\|b\|c\" is being handled for you in way that
-allows clearing the cache-group \"a\" and all nested groups are cleared
-as well - even though KeyValue-Stores don\'t allow this kind of
-hierarchy by nature.
-
-Custom CacheResources may be put in a file `cacheresource.foobarxyz.php`
-within your [`$plugins_dir`](#variable.plugins.dir), or registered on
-runtime with [`registerCacheResource()`](#api.register.cacheresource).
-In either case you need to set [`$caching_type`](#variable.caching.type)
-to invoke your custom CacheResource implementation.
-
-
- caching_type = 'mysql';
-
- /**
- * MySQL CacheResource
- *
- * CacheResource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's output caching.
- *
- * Table definition:
- *
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
- class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
- // PDO instance
- protected $db;
- protected $fetch;
- protected $fetchTimestamp;
- protected $save;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
- $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
- $this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
- VALUES (:id, :name, :cache_id, :compile_id, :content)');
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- * @return void
- */
- protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
- {
- $this->fetch->execute(array('id' => $id));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $content = $row['content'];
- $mtime = strtotime($row['modified']);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- $this->fetchTimestamp->execute(array('id' => $id));
- $mtime = strtotime($this->fetchTimestamp->fetchColumn());
- $this->fetchTimestamp->closeCursor();
- return $mtime;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- * @return boolean success
- */
- protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
- {
- $this->save->execute(array(
- 'id' => $id,
- 'name' => $name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'content' => $content,
- ));
- return !!$this->save->rowCount();
- }
-
- /**
- * Delete content from cache
- *
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @return integer number of deleted caches
- */
- protected function delete($name, $cache_id, $compile_id, $exp_time)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $query = $this->db->query('TRUNCATE TABLE output_cache');
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->db->quote($name);
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->db->quote($compile_id);
- }
- // range test expiration time
- if ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] = '(cache_id = '. $this->db->quote($cache_id)
- . ' OR cache_id LIKE '. $this->db->quote($cache_id .'|%') .')';
- }
- // run delete query
- $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
- return $query->rowCount();
- }
- }
-
-
-
-
- caching_type = 'memcache';
-
- /**
- * Memcache CacheResource
- *
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- *
- * Note that memcache has a limitation of 256 characters per cache-key.
- * To avoid complications all cache-keys are translated to a sha1 hash.
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
- class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
- /**
- * memcache instance
- * @var Memcache
- */
- protected $memcache = null;
-
- public function __construct()
- {
- $this->memcache = new Memcache();
- $this->memcache->addServer( '127.0.0.1', 11211 );
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $_keys = $lookup = array();
- foreach ($keys as $k) {
- $_k = sha1($k);
- $_keys[] = $_k;
- $lookup[$_k] = $k;
- }
- $_res = array();
- $res = $this->memcache->get($_keys);
- foreach ($res as $k => $v) {
- $_res[$lookup[$k]] = $v;
- }
- return $_res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire=null)
- {
- foreach ($keys as $k => $v) {
- $k = sha1($k);
- $this->memcache->set($k, $v, 0, $expire);
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- $k = sha1($k);
- $this->memcache->delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return $this->memcache->flush();
- }
- }
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md b/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
deleted file mode 100644
index 7e248b2f3..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Cache Groups {#caching.groups}
-============
-
-You can do more elaborate grouping by setting up `$cache_id` groups.
-This is accomplished by separating each sub-group with a vertical bar
-`|` in the `$cache_id` value. You can have as many sub-groups as you
-like.
-
-- You can think of cache groups like a directory hierarchy. For
- instance, a cache group of `'a|b|c'` could be thought of as the
- directory structure `'/a/b/c/'`.
-
-- `clearCache(null,'a|b|c')` would be like removing the files
- `'/a/b/c/*'`. `clearCache(null,'a|b')` would be like removing the
- files `'/a/b/*'`.
-
-- If you specify a [`$compile_id`](#variable.compile.id) such as
- `clearCache(null,'a|b','foo')` it is treated as an appended cache
- group `'/a/b/c/foo/'`.
-
-- If you specify a template name such as
- `clearCache('foo.tpl','a|b|c')` then Smarty will attempt to remove
- `'/a/b/c/foo.tpl'`.
-
-- You CANNOT remove a specified template name under multiple cache
- groups such as `'/a/b/*/foo.tpl'`, the cache grouping works
- left-to-right ONLY. You will need to group your templates under a
- single cache group hierarchy to be able to clear them as a group.
-
-Cache grouping should not be confused with your template directory
-hierarchy, the cache grouping has no knowledge of how your templates are
-structured. So for example, if you have a template structure like
-`themes/blue/index.tpl` and you want to be able to clear all the cache
-files for the "blue" theme, you will need to create a cache group
-structure that mimics your template file structure, such as
-`display('themes/blue/index.tpl','themes|blue')`, then clear them with
-`clearCache(null,'themes|blue')`.
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear all caches with 'sports|basketball' as the first two cache_id groups
- $smarty->clearCache(null,'sports|basketball');
-
- // clear all caches with "sports" as the first cache_id group. This would
- // include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..."
- $smarty->clearCache(null,'sports');
-
- // clear the foo.tpl cache file with "sports|basketball" as the cache_id
- $smarty->clearCache('foo.tpl','sports|basketball');
-
-
- $smarty->display('index.tpl','sports|basketball');
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md b/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
deleted file mode 100644
index 40fffc3d7..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
+++ /dev/null
@@ -1,87 +0,0 @@
-Multiple Caches Per Page {#caching.multiple.caches}
-========================
-
-You can have multiple cache files for a single call to
-[`display()`](#api.display) or [`fetch()`](#api.fetch). Let\'s say that
-a call to `display('index.tpl')` may have several different output
-contents depending on some condition, and you want separate caches for
-each one. You can do this by passing a `$cache_id` as the second
-parameter to the function call.
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $my_cache_id = $_GET['article_id'];
-
- $smarty->display('index.tpl', $my_cache_id);
- ?>
-
-
-
-Above, we are passing the variable `$my_cache_id` to
-[`display()`](#api.display) as the `$cache_id`. For each unique value of
-`$my_cache_id`, a separate cache will be generated for `index.tpl`. In
-this example, `article_id` was passed in the URL and is used as the
-`$cache_id`.
-
-> **Note**
->
-> Be very cautious when passing values from a client (web browser) into
-> Smarty or any PHP application. Although the above example of using the
-> article\_id from the URL looks handy, it could have bad consequences.
-> The `$cache_id` is used to create a directory on the file system, so
-> if the user decided to pass an extremely large value for article\_id,
-> or write a script that sends random article\_id\'s at a rapid pace,
-> this could possibly cause problems at the server level. Be sure to
-> sanitize any data passed in before using it. In this instance, maybe
-> you know the article\_id has a length of ten characters and is made up
-> of alpha-numerics only, and must be a valid article\_id in the
-> database. Check for this!
-
-Be sure to pass the same `$cache_id` as the second parameter to
-[`isCached()`](#api.is.cached) and [`clearCache()`](#api.clear.cache).
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $my_cache_id = $_GET['article_id'];
-
- if(!$smarty->isCached('index.tpl',$my_cache_id)) {
- // No cache available, do variable assignments here.
- $contents = get_database_contents();
- $smarty->assign($contents);
- }
-
- $smarty->display('index.tpl',$my_cache_id);
- ?>
-
-
-
-You can clear all caches for a particular `$cache_id` by passing NULL as
-the first parameter to [`clearCache()`](#api.clear.cache).
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear all caches with "sports" as the $cache_id
- $smarty->clearCache(null,'sports');
-
- $smarty->display('index.tpl','sports');
- ?>
-
-
-
-In this manner, you can "group" your caches together by giving them the
-same `$cache_id`.
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md b/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
deleted file mode 100644
index bc9d2ad9e..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Setting Up Caching {#caching.setting.up}
-==================
-
-The first thing to do is enable caching by setting
-[`$caching`](#variable.caching) to one of
-`Smarty::CACHING_LIFETIME_CURRENT` or `Smarty::CACHING_LIFETIME_SAVED`.
-
-
- cacheLifetime() to determine
- // the number of seconds a cache is good for
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-With caching enabled, the function call to `display('index.tpl')` will
-render the template as usual, but also saves a copy of its output to a
-file (a cached copy) in the [`$cache_dir`](#variable.cache.dir). On the
-next call to `display('index.tpl')`, the cached copy will be used
-instead of rendering the template again.
-
-> **Note**
->
-> The files in the [`$cache_dir`](#variable.cache.dir) are named similar
-> to the template name. Although they end in the `.php` extension, they
-> are not intended to be directly executable. Do not edit these files!
-
-Each cached page has a limited lifetime determined by
-[`$cache_lifetime`](#variable.cache.lifetime). The default value is 3600
-seconds, or one hour. After that time expires, the cache is regenerated.
-It is possible to give individual caches their own expiration time by
-setting [`$caching`](#variable.caching) to
-`Smarty::CACHING_LIFETIME_SAVED`. See
-[`$cache_lifetime`](#variable.cache.lifetime) for more details.
-
-
- setCaching(Smarty::CACHING_LIFETIME_SAVED);
-
- // set the cache_lifetime for index.tpl to 5 minutes
- $smarty->setCacheLifetime(300);
- $smarty->display('index.tpl');
-
- // set the cache_lifetime for home.tpl to 1 hour
- $smarty->setCacheLifetime(3600);
- $smarty->display('home.tpl');
-
- // NOTE: the following $cache_lifetime setting will not work when $caching
- // is set to Smarty::CACHING_LIFETIME_SAVED.
- // The cache lifetime for home.tpl has already been set
- // to 1 hour, and will no longer respect the value of $cache_lifetime.
- // The home.tpl cache will still expire after 1 hour.
- $smarty->setCacheLifetime(30); // 30 seconds
- $smarty->display('home.tpl');
- ?>
-
-
-
-If [`$compile_check`](#variable.compile.check) is enabled (default),
-every template file and config file that is involved with the cache file
-is checked for modification. If any of the files have been modified
-since the cache was generated, the cache is immediately regenerated.
-This is a computational overhead, so for optimum performance set
-[`$compile_check`](#variable.compile.check) to FALSE.
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
- $smarty->setCompileCheck(false);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-If [`$force_compile`](#variable.force.compile) is enabled, the cache
-files will always be regenerated. This effectively disables caching,
-however this also seriously degrades performance.
-[`$force_compile`](#variable.force.compile) is meant to be used for
-[debugging](#chapter.debugging.console) purposes. The appropriate way to
-disable caching is to set [`$caching`](#variable.caching) to
-Smarty::CACHING\_OFF.
-
-The [`isCached()`](#api.is.cached) function can be used to test if a
-template has a valid cache or not. If you have a cached template that
-requires something like a database fetch, you can use this to skip that
-process.
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- if(!$smarty->isCached('index.tpl')) {
- // No cache available, do variable assignments here.
- $contents = get_database_contents();
- $smarty->assign($contents);
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-You can keep parts of a page dynamic (disable caching) with the
-[`{nocache}{/nocache}`](#language.function.nocache) block function, the
-[`{insert}`](#language.function.insert) function, or by using the
-`nocache` parameter for most template functions.
-
-Let\'s say the whole page can be cached except for a banner that is
-displayed down the side of the page. By using the
-[`{insert}`](#language.function.insert) function for the banner, you can
-keep this element dynamic within the cached content. See the
-documentation on [`{insert}`](#language.function.insert) for more
-details and examples.
-
-You can clear all the cache files with the
-[`clearAllCache()`](#api.clear.all.cache) function, or individual cache
-files [and groups](#caching.groups) with the
-[`clearCache()`](#api.clear.cache) function.
-
-
- setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear only cache for index.tpl
- $smarty->clearCache('index.tpl');
-
- // clear out all cache files
- $smarty->clearAllCache();
-
- $smarty->display('index.tpl');
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/charset.md b/vendor/smarty/smarty/docs/programmers/charset.md
deleted file mode 100644
index 9dedf4dcd..000000000
--- a/vendor/smarty/smarty/docs/programmers/charset.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Charset Encoding {#charset}
-================
-
-Charset Encoding {#charset.encoding}
-================
-
-There are a variety of encodings for textual data, ISO-8859-1 (Latin1)
-and UTF-8 being the most popular. Unless you change `Smarty::$_CHARSET`,
-Smarty recognizes `UTF-8` as the internal charset if
-[Multibyte String](https://www.php.net/mbstring) is available,
-`ISO-8859-1` if not.
-
-> **Note**
->
-> `ISO-8859-1` has been PHP\'s default internal charset since the
-> beginning. Unicode has been evolving since 1991. Since then it has
-> become the one charset to conquer them all, as it is capable of
-> encoding most of the known characters even across different character
-> systems (latin, cyrillic, japanese, ...). `UTF-8` is unicode\'s most
-> used encoding, as it allows referencing the thousands of character
-> with the smallest size overhead possible.
->
-> Since unicode and UTF-8 are very wide spread nowadays, their use is
-> strongly encouraged.
-
-> **Note**
->
-> Smarty\'s internals and core plugins are truly UTF-8 compatible since
-> Smarty 3.1. To achieve unicode compatibility, the [Multibyte
-> String](https://www.php.net/mbstring) PECL is required. Unless your PHP
-> environment offers this package, Smarty will not be able to offer
-> full-scale UTF-8 compatibility.
-
-
- // use japanese character encoding
- if (function_exists('mb_internal_charset')) {
- mb_internal_charset('EUC-JP');
- }
-
- require_once 'libs/Smarty.class.php';
- Smarty::$_CHARSET = 'EUC-JP';
- $smarty = new Smarty();
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/plugins.md b/vendor/smarty/smarty/docs/programmers/plugins.md
deleted file mode 100644
index 41a7ea0c4..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Extending Smarty With Plugins {#plugins}
-=============================
-
-## Table of contents
-
-- [How Plugins Work](./plugins/plugins-howto.md)
-- [Naming Conventions](./plugins/plugins-naming-conventions.md)
-- [Writing Plugins](./plugins/plugins-writing.md)
-- [Template Functions](./plugins/plugins-functions.md)
-- [Modifiers](./plugins/plugins-modifiers.md)
-- [Block Functions](./plugins/plugins-block-functions.md)
-- [Compiler Functions](./plugins/plugins-compiler-functions.md)
-- [Prefilters/Postfilters](./plugins/plugins-prefilters-postfilters.md)
-- [Output Filters](./plugins/plugins-outputfilters.md)
-- [Resources](./plugins/plugins-resources.md)
-- [Inserts](./plugins/plugins-inserts.md)
-
-Version 2.0 introduced the plugin architecture that is used for almost
-all the customizable functionality of Smarty. This includes:
-
-- functions
-
-- modifiers
-
-- block functions
-
-- compiler functions
-
-- prefilters
-
-- postfilters
-
-- outputfilters
-
-- resources
-
-- inserts
-
-With the exception of resources, backwards compatibility with the old
-way of registering handler functions via register\_\* API is preserved.
-If you did not use the API but instead modified the class variables
-`$custom_funcs`, `$custom_mods`, and other ones directly, then you will
-need to adjust your scripts to either use the API or convert your custom
-functionality into plugins.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
deleted file mode 100644
index 0e11c0782..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
+++ /dev/null
@@ -1,95 +0,0 @@
-Block Functions {#plugins.block.functions}
-===============
-
-void
-
-smarty\_block\_
-
-name
-
-array
-
-\$params
-
-mixed
-
-\$content
-
-object
-
-\$template
-
-boolean
-
-&\$repeat
-
-Block functions are functions of the form: `{func} .. {/func}`. In other
-words, they enclose a template block and operate on the contents of this
-block. Block functions take precedence over [custom
-functions](#language.custom.functions) of the same name, that is, you
-cannot have both custom function `{func}` and block function
-`{func}..{/func}`.
-
-- By default your function implementation is called twice by Smarty:
- once for the opening tag, and once for the closing tag. (See
- `$repeat` below on how to change this.)
-
-- Starting with Smarty 3.1 the returned value of the opening tag call
- is displayed as well.
-
-- Only the opening tag of the block function may have
- [attributes](#language.syntax.attributes). All attributes passed to
- template functions from the template are contained in the `$params`
- variable as an associative array. The opening tag attributes are
- also accessible to your function when processing the closing tag.
-
-- The value of the `$content` variable depends on whether your
- function is called for the opening or closing tag. In case of the
- opening tag, it will be NULL, and in case of the closing tag it will
- be the contents of the template block. Note that the template block
- will have already been processed by Smarty, so all you will receive
- is the template output, not the template source.
-
-- The parameter `$repeat` is passed by reference to the function
- implementation and provides a possibility for it to control how many
- times the block is displayed. By default `$repeat` is TRUE at the
- first call of the block-function (the opening tag) and FALSE on all
- subsequent calls to the block function (the block\'s closing tag).
- Each time the function implementation returns with `$repeat` being
- TRUE, the contents between `{func}...{/func}` are evaluated and the
- function implementation is called again with the new block contents
- in the parameter `$content`.
-
-If you have nested block functions, it\'s possible to find out what the
-parent block function is by accessing `$smarty->_tag_stack` variable.
-Just do a [`var_dump()`](https://www.php.net/var_dump) on it and the
-structure should be apparent.
-
-
-
-
-
-
-See also: [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
deleted file mode 100644
index ef2454e8a..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
+++ /dev/null
@@ -1,66 +0,0 @@
-Compiler Functions {#plugins.compiler.functions}
-==================
-
-Compiler functions are called only during compilation of the template.
-They are useful for injecting PHP code or time-sensitive static content
-into the template. If there is both a compiler function and a [custom
-function](#language.custom.functions) registered under the same name,
-the compiler function has precedence.
-
-mixed
-
-smarty\_compiler\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$smarty
-
-The compiler function is passed two parameters: the params array which
-contains precompiled strings for the attribute values and the Smarty
-object. It\'s supposed to return the code to be injected into the
-compiled template including the surrounding PHP tags.
-
-
- _current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
- }
- ?>
-
-This function can be called from the template as:
-
-
- {* this function gets executed at compile time only *}
- {tplheader}
-
-
-
-The resulting PHP code in the compiled template would be something like
-this:
-
-
-
-
-
-
-See also [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
deleted file mode 100644
index 067b93826..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
+++ /dev/null
@@ -1,94 +0,0 @@
-Template Functions {#plugins.functions}
-==================
-
-void
-
-smarty\_function\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$template
-
-All [attributes](#language.syntax.attributes) passed to template
-functions from the template are contained in the `$params` as an
-associative array.
-
-The output (return value) of the function will be substituted in place
-of the function tag in the template, eg the
-[`{fetch}`](#language.function.fetch) function. Alternatively, the
-function can simply perform some other task without any output, eg the
-[`{assign}`](#language.function.assign) function.
-
-If the function needs to assign some variables to the template or use
-some other Smarty-provided functionality, it can use the supplied
-`$template` object to do so eg `$template->foo()`.
-
-
-
-
-which can be used in the template as:
-
- Question: Will we ever have time travel?
- Answer: {eightball}.
-
-
-
- assign($params['var'], $params['value']);
-
- }
- ?>
-
-
-
-See also: [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
deleted file mode 100644
index 5738c3fcb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
+++ /dev/null
@@ -1,18 +0,0 @@
-How Plugins Work {#plugins.howto}
-================
-
-Plugins are always loaded on demand. Only the specific modifiers,
-functions, resources, etc invoked in the templates scripts will be
-loaded. Moreover, each plugin is loaded only once, even if you have
-several different instances of Smarty running within the same request.
-
-Pre/postfilters and output filters are a bit of a special case. Since
-they are not mentioned in the templates, they must be registered or
-loaded explicitly via API functions before the template is processed.
-The order in which multiple filters of the same type are executed
-depends on the order in which they are registered or loaded.
-
-The [plugins directory](#variable.plugins.dir) can be a string
-containing a path or an array containing multiple paths. To install a
-plugin, simply place it in one of the directories and Smarty will use it
-automatically.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
deleted file mode 100644
index 370a97bd0..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Inserts {#plugins.inserts}
-=======
-
-Insert plugins are used to implement functions that are invoked by
-[`{insert}`](#language.function.insert) tags in the template.
-
-string
-
-smarty\_insert\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$template
-
-The first parameter to the function is an associative array of
-attributes passed to the insert.
-
-The insert function is supposed to return the result which will be
-substituted in place of the `{insert}` tag in the template.
-
-
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
deleted file mode 100644
index a4e99daa3..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
+++ /dev/null
@@ -1,86 +0,0 @@
-Modifiers {#plugins.modifiers}
-=========
-
-[Modifiers](#language.modifiers) are little functions that are applied
-to a variable in the template before it is displayed or used in some
-other context. Modifiers can be chained together.
-
-mixed
-
-smarty\_modifier\_
-
-name
-
-mixed
-
-\$value
-
-\[mixed
-
-\$param1
-
-, \...\]
-
-The first parameter to the modifier plugin is the value on which the
-modifier is to operate. The rest of the parameters are optional,
-depending on what kind of operation is to be performed.
-
-The modifier has to [return](https://www.php.net/return) the result of its
-processing.
-
-This plugin basically aliases one of the built-in PHP functions. It does
-not have any additional parameters.
-
-
-
-
-
- $length) {
- $length -= strlen($etc);
- $fragment = substr($string, 0, $length+1);
- if ($break_words)
- $fragment = substr($fragment, 0, -1);
- else
- $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
- return $fragment.$etc;
- } else
- return $string;
- }
- ?>
-
-
-
-See also [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
deleted file mode 100644
index 15bc26015..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
+++ /dev/null
@@ -1,51 +0,0 @@
-Naming Conventions {#plugins.naming.conventions}
-==================
-
-Plugin files and functions must follow a very specific naming convention
-in order to be located by Smarty.
-
-**plugin files** must be named as follows:
-
-> `
-> type.name.php
-> `
-
-- Where `type` is one of these plugin types:
-
- - function
-
- - modifier
-
- - block
-
- - compiler
-
- - prefilter
-
- - postfilter
-
- - outputfilter
-
- - resource
-
- - insert
-
-- And `name` should be a valid identifier; letters, numbers, and
- underscores only, see [php
- variables](https://www.php.net/language.variables).
-
-- Some examples: `function.html_select_date.php`, `resource.db.php`,
- `modifier.spacify.php`.
-
-**plugin functions** inside the PHP files must be named as follows:
-
-> `smarty_type_name`
-
-- The meanings of `type` and `name` are the same as above.
-
-- An example modifier name `foo` would be
- `function smarty_modifier_foo()`.
-
-Smarty will output appropriate error messages if the plugin file it
-needs is not found, or if the file or the plugin function are named
-improperly.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
deleted file mode 100644
index 4e34ab7eb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Output Filters {#plugins.outputfilters}
-==============
-
-Output filter plugins operate on a template\'s output, after the
-template is loaded and executed, but before the output is displayed.
-
-string
-
-smarty\_outputfilter\_
-
-name
-
-string
-
-\$template\_output
-
-object
-
-\$template
-
-The first parameter to the output filter function is the template output
-that needs to be processed, and the second parameter is the instance of
-Smarty invoking the plugin. The plugin is supposed to do the processing
-and return the results.
-
-
-
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`unregisterFilter()`](#api.unregister.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
deleted file mode 100644
index 39467cbcb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
+++ /dev/null
@@ -1,89 +0,0 @@
-Prefilters/Postfilters {#plugins.prefilters.postfilters}
-======================
-
-Prefilter and postfilter plugins are very similar in concept; where they
-differ is in the execution \-- more precisely the time of their
-execution.
-
-string
-
-smarty\_prefilter\_
-
-name
-
-string
-
-\$source
-
-object
-
-\$template
-
-Prefilters are used to process the source of the template immediately
-before compilation. The first parameter to the prefilter function is the
-template source, possibly modified by some other prefilters. The plugin
-is supposed to return the modified source. Note that this source is not
-saved anywhere, it is only used for compilation.
-
-string
-
-smarty\_postfilter\_
-
-name
-
-string
-
-\$compiled
-
-object
-
-\$template
-
-Postfilters are used to process the compiled output of the template (the
-PHP code) immediately after the compilation is done but before the
-compiled template is saved to the filesystem. The first parameter to the
-postfilter function is the compiled template code, possibly modified by
-other postfilters. The plugin is supposed to return the modified version
-of this code.
-
-
- ]+>!e', 'strtolower("$1")', $source);
- }
- ?>
-
-
-
-
- \ngetTemplateVars()); ?>\n" . $compiled;
- return $compiled;
- }
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter) and
-[`unregisterFilter()`](#api.unregister.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
deleted file mode 100644
index 1b1fdf0ab..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Resources {#plugins.resources}
-=========
-
-Resource plugins are meant as a generic way of providing template
-sources or PHP script components to Smarty. Some examples of resources:
-databases, LDAP, shared memory, sockets, and so on.
-
-Custom Resources may be put in a file `resource.foobarxyz.php` within
-your [`$plugins_dir`](#variable.plugins.dir), or registered on runtime
-with [`registerResource()`](#api.register.resource). In either case you
-will be able to access that resource by prepending its name to the
-template you\'re addressing: `foobarxyz:yourtemplate.tpl`.
-
-If a Resource\'s templates should not be run through the Smarty
-compiler, the Custom Resource may extend `Smarty_Resource_Uncompiled`.
-The Resource Handler must then implement the function
-`renderUncompiled(Smarty_Internal_Template $_template)`. `$_template` is
-a reference to the current template and contains all assigned variables
-which the implementor can access via
-`$_template->smarty->getTemplateVars()`. These Resources simply echo
-their rendered content to the output stream. The rendered output will be
-output-cached if the Smarty instance was configured accordingly. See
-`libs/sysplugins/smarty_internal_resource_php.php` for an example.
-
-If the Resource\'s compiled templates should not be cached on disk, the
-Custom Resource may extend `Smarty_Resource_Recompiled`. These Resources
-are compiled every time they are accessed. This may be an expensive
-overhead. See `libs/sysplugins/smarty_internal_resource_eval.php` for an
-example.
-
-
- CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- *
- * Demo data:
- *
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
-
-See also [`registerResource()`](#api.register.resource),
-[`unregisterResource()`](#api.unregister.resource).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
deleted file mode 100644
index 972911d97..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Writing Plugins {#plugins.writing}
-===============
-
-Plugins can be either loaded by Smarty automatically from the filesystem
-or they can be registered at runtime via one of the register\_\* API
-functions. They can also be unregistered by using unregister\_\* API
-functions.
-
-For the plugins that are registered at runtime, the name of the plugin
-function(s) does not have to follow the naming convention.
-
-If a plugin depends on some functionality provided by another plugin (as
-is the case with some plugins bundled with Smarty), then the proper way
-to load the needed plugin is this:
-
-
- smarty->loadPlugin('smarty_shared_make_timestamp');
- // plugin code
- }
- ?>
-
-
-
-As a general rule, the currently evaluated template\'s
-Smarty\_Internal\_Template object is always passed to the plugins as the
-last parameter with two exceptions:
-
-- modifiers do not get passed the Smarty\_Internal\_Template object at
- all
-
-- blocks get passed `$repeat` after the Smarty\_Internal\_Template
- object to keep backwards compatibility to older versions of Smarty.
diff --git a/vendor/smarty/smarty/docs/programmers/resources.md b/vendor/smarty/smarty/docs/programmers/resources.md
deleted file mode 100644
index 239690061..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Resources
-=========
-
-The templates may come from a variety of sources. When you
-[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) a template, or
-when you include a template from within another template, you supply a
-resource type, followed by the appropriate path and template name. If a
-resource is not explicitly given, the value of
-[`$default_resource_type`](./api-variables/variable-default-resource-type.md) (default:
-\"file\") is assumed.
-
-## Table of contents
-
-- [File Template Resources](./resources/resources-file.md)
-- [String Template Resources](./resources/resources-string.md)
-- [Stream Template Resources](./resources/resources-streams.md)
-- [Extends Template Resources](./resources/resources-extends.md)
-- [Custom Template Resources](./resources/resources-custom.md)
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md b/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
deleted file mode 100644
index d679afcb1..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
+++ /dev/null
@@ -1,111 +0,0 @@
-Custom Template Resources {#resources.custom}
-=========================
-
-You can retrieve templates using whatever possible source you can access
-with PHP: databases, sockets, files, etc. You do this by writing
-resource plugin functions and registering them with Smarty.
-
-See [resource plugins](#plugins.resources) section for more information
-on the functions you are supposed to provide.
-
-> **Note**
->
-> Note that you cannot override the built-in `file:` resource, but you
-> can provide a resource that fetches templates from the file system in
-> some other way by registering under another resource name.
-
-
- CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- *
- * Demo data:
- *
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md b/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
deleted file mode 100644
index d7213d894..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Extends Template Resources {#resources.extends}
-==========================
-
-The `extends:` resource is used to define child/parent relationships for
-template inheritance from the PHP script. For details see section of
-[Template Inheritance](#advanced.features.template.inheritance).
-
-As of Smarty 3.1 the `extends:` resource may use any available [template
-resource](#resources), including `string:` and `eval:`. When [templates
-from strings](#resources.string) are used, make sure they are properly
-(url or base64) encoded. Is an `eval:` resource found within an
-inheritance chain, its \"don\'t save a compile file\" property is
-superseded by the `extends:` resource. The templates within an
-inheritance chain are not compiled separately, though. Only a single
-compiled template will be generated.
-
-> **Note**
->
-> Use this when inheritance is required programmatically. When inheriting
-> within PHP, it is not obvious from the child template what inheritance
-> took place. If you have a choice, it is normally more flexible and
-> intuitive to handle inheritance chains from within the templates.
-
-
- display('extends:parent.tpl|child.tpl|grandchild.tpl');
-
- // inheritance from multiple template sources
- $smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
- ?>
-
-
-
-See also [Template Inheritance](#advanced.features.template.inheritance)
-[`{block}`](#language.function.block) and
-[`{extends}`](#language.function.extends).
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-file.md b/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
deleted file mode 100644
index 9a89af183..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
+++ /dev/null
@@ -1,160 +0,0 @@
-File Template Resources {#resources.file}
-=======================
-
-Smarty ships with a built-in template resource for the filesystem. The
-`file:` is the default resource. The resource key `file:` must only be
-specified, if the
-[`$default_resource_type`](#variable.default.resource.type) has been
-changed.
-
-If the file resource cannot find the requested template, the
-[`$default_template_handler_func`](#variable.default.template.handler.func)
-is invoked.
-
-> **Note**
->
-> As of Smarty 3.1 the file resource no longer walks through the
-> [include\_path](https://www.php.net/ini.core.php#ini.include-path) unless
-> [`$use_include_path` is activated](#variable.use.include.path)
-
-Templates from \$template\_dir {#templates.from.template.dir}
-------------------------------
-
-The file resource pulls templates source files from the directories
-specified in [`$template_dir`](#variable.template.dir). The list of
-directories is traversed in the order they appear in the array. The
-first template found is the one to process.
-
-
- display('index.tpl');
- $smarty->display('file:index.tpl'); // same as above
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file='index.tpl'}
- {include file='file:index.tpl'} {* same as above *}
-
-
-
-Templates from a specific \$template\_dir {#templates.from.specified.template.dir}
------------------------------------------
-
-Smarty 3.1 introduced the bracket-syntax for specifying an element from
-[`$template_dir`](#variable.template.dir). This allows websites
-employing multiple sets of templates better control over which template
-to access.
-
-The bracket-syntax can be used from anywhere you can specify the `file:`
-resource type.
-
-
- setTemplateDir(array(
- './templates', // element: 0, index: 0
- './templates_2', // element: 1, index: 1
- '10' => 'templates_10', // element: 2, index: '10'
- 'foo' => 'templates_foo', // element: 3, index: 'foo'
- ));
-
- /*
- assume the template structure
- ./templates/foo.tpl
- ./templates_2/foo.tpl
- ./templates_2/bar.tpl
- ./templates_10/foo.tpl
- ./templates_10/bar.tpl
- ./templates_foo/foo.tpl
- */
-
- // regular access
- $smarty->display('file:foo.tpl');
- // will load ./templates/foo.tpl
-
- // using numeric index
- $smarty->display('file:[1]foo.tpl');
- // will load ./templates_2/foo.tpl
-
- // using numeric string index
- $smarty->display('file:[10]foo.tpl');
- // will load ./templates_10/foo.tpl
-
- // using string index
- $smarty->display('file:[foo]foo.tpl');
- // will load ./templates_foo/foo.tpl
-
- // using "unknown" numeric index (using element number)
- $smarty->display('file:[2]foo.tpl');
- // will load ./templates_10/foo.tpl
-
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="file:foo.tpl"}
- {* will load ./templates/foo.tpl *}
-
- {include file="file:[1]foo.tpl"}
- {* will load ./templates_2/foo.tpl *}
-
- {include file="file:[foo]foo.tpl"}
- {* will load ./templates_foo/foo.tpl *}
-
-
-
-Templates from any directory {#templates.from.any.dir}
-----------------------------
-
-Templates outside of the [`$template_dir`](#variable.template.dir)
-require the `file:` template resource type, followed by the absolute
-path to the template (with leading slash.)
-
-> **Note**
->
-> With [`Security`](#advanced.features.security) enabled, access to
-> templates outside of the [`$template_dir`](#variable.template.dir) is
-> not allowed unless you list those directories in `$secure_dir`.
-
-
- display('file:/export/templates/index.tpl');
- $smarty->display('file:/path/to/my/templates/menu.tpl');
- ?>
-
-
-
-And from within a Smarty template:
-
-
- {include file='file:/usr/local/share/templates/navigation.tpl'}
-
-
-
-Windows Filepaths {#templates.windows.filepath}
------------------
-
-If you are using a Windows machine, filepaths usually include a drive
-letter (C:) at the beginning of the pathname. Be sure to use `file:` in
-the path to avoid namespace conflicts and get the desired results.
-
-
- display('file:C:/export/templates/index.tpl');
- $smarty->display('file:F:/path/to/my/templates/menu.tpl');
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='file:D:/usr/local/share/templates/navigation.tpl'}
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md b/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
deleted file mode 100644
index e0596f591..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Stream Template Resources {#resources.streams}
-=========================
-
-Streams allow you to use PHP streams as a template resource. The syntax
-is much the same a traditional template resource names.
-
-Smarty will first look for a registered template resource. If nothing is
-found, it will check if a PHP stream is available. If a stream is
-available, Smarty will use it to fetch the template.
-
-> **Note**
->
-> You can further define allowed streams with security enabled.
-
-Using a PHP stream for a template resource from the display() function.
-
-
- $smarty->display('foo:bar.tpl');
-
-
-
-Using a PHP stream for a template resource from within a template.
-
-
- {include file="foo:bar.tpl"}
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-string.md b/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
deleted file mode 100644
index d3f6d4155..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
+++ /dev/null
@@ -1,73 +0,0 @@
-String Template Resources {#resources.string}
-=========================
-
-Smarty can render templates from a string by using the `string:` or
-`eval:` resource.
-
-- The `string:` resource behaves much the same as a template file. The
- template source is compiled from a string and stores the compiled
- template code for later reuse. Each unique template string will
- create a new compiled template file. If your template strings are
- accessed frequently, this is a good choice. If you have frequently
- changing template strings (or strings with low reuse value), the
- `eval:` resource may be a better choice, as it doesn\'t save
- compiled templates to disk.
-
-- The `eval:` resource evaluates the template source every time a page
- is rendered. This is a good choice for strings with low reuse value.
- If the same string is accessed frequently, the `string:` resource
- may be a better choice.
-
-> **Note**
->
-> With a `string:` resource type, each unique string generates a
-> compiled file. Smarty cannot detect a string that has changed, and
-> therefore will generate a new compiled file for each unique string. It
-> is important to choose the correct resource so that you do not fill
-> your disk space with wasted compiled strings.
-
-
- assign('foo','value');
- $template_string = 'display {$foo} here';
- $smarty->display('string:'.$template_string); // compiles for later reuse
- $smarty->display('eval:'.$template_string); // compiles every time
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="string:$template_string"} {* compiles for later reuse *}
- {include file="eval:$template_string"} {* compiles every time *}
-
-
-
-
-Both `string:` and `eval:` resources may be encoded with
-[`urlencode()`](https://www.php.net/urlencode) or
-[`base64_encode()`](https://www.php.net/urlencode). This is not necessary
-for the usual use of `string:` and `eval:`, but is required when using
-either of them in conjunction with
-[`Extends Template Resource`](#resources.extends)
-
-
- assign('foo','value');
- $template_string_urlencode = urlencode('display {$foo} here');
- $template_string_base64 = base64_encode('display {$foo} here');
- $smarty->display('eval:urlencode:'.$template_string_urlencode); // will decode string using urldecode()
- $smarty->display('eval:base64:'.$template_string_base64); // will decode string using base64_decode()
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
- {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/template-resources.md b/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
deleted file mode 100644
index 7bb5d752e..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
+++ /dev/null
@@ -1,130 +0,0 @@
-Resources {#resasdources}
-=========
-
-The templates may come from a variety of sources. When you
-[`display()`](#api.display) or [`fetch()`](#api.fetch) a template, or
-when you include a template from within another template, you supply a
-resource type, followed by the appropriate path and template name. If a
-resource is not explicitly given, the value of
-[`$default_resource_type`](#variable.default.resource.type) is assumed.
-
-Templates from other sources {#templates.from.elsewhere}
-----------------------------
-
-You can retrieve templates using whatever possible source you can access
-with PHP: databases, sockets, files, etc. You do this by writing
-resource plugin functions and registering them with Smarty.
-
-See [resource plugins](#plugins.resources) section for more information
-on the functions you are supposed to provide.
-
-> **Note**
->
-> Note that you cannot override the built-in `file:` resource, but you
-> can provide a resource that fetches templates from the file system in
-> some other way by registering under another resource name.
-
-
- CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- *
- * Demo data:
- *