diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 00000000..8abb53c0 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,93 @@ +name: Docker + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +on: + schedule: + - cron: '44 12 * * *' + push: + branches: [ master ] + # Publish semver tags as releases. + tags: [ 'v*.*.*' ] + pull_request: + branches: [ master ] + +env: + # Use docker.io for Docker Hub if empty + REGISTRY: ghcr.io + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Install the cosign tool except on PR + # https://github.com/sigstore/cosign-installer + - name: Install cosign + if: github.event_name != 'pull_request' + uses: sigstore/cosign-installer@1e95c1de343b5b0c23352d6417ee3e48d5bcd422 + with: + cosign-release: 'v1.4.0' + + + # Workaround: https://github.com/docker/build-push-action/issues/461 + - name: Setup Docker buildx + uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into registry ${{ env.REGISTRY }} + if: github.event_name != 'pull_request' + uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + # Sign the resulting Docker image digest except on PRs. + # This will only write to the public Rekor transparency log when the Docker + # repository is public to avoid leaking data. If you would like to publish + # transparency data even for private images, pass --force to cosign below. + # https://github.com/sigstore/cosign + - name: Sign the published Docker image + if: ${{ github.event_name != 'pull_request' }} + env: + COSIGN_EXPERIMENTAL: "true" + # This step uses the identity token to provision an ephemeral certificate + # against the sigstore community Fulcio instance. + run: cosign sign ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }} diff --git a/.gitignore b/.gitignore index 8d3c13a4..7ec11701 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /app/logs/*.log /app/cache/* /app/build/ +/app/bootstrap.php.cache /bin/* /web/bundles/* /web/.htaccess diff --git a/app/bootstrap.php.cache b/app/bootstrap.php.cache deleted file mode 100644 index 2afcd905..00000000 --- a/app/bootstrap.php.cache +++ /dev/null @@ -1,1446 +0,0 @@ -parameters = $parameters; -} -public function all() -{ -return $this->parameters; -} -public function keys() -{ -return array_keys($this->parameters); -} -public function replace(array $parameters = []) -{ -$this->parameters = $parameters; -} -public function add(array $parameters = []) -{ -$this->parameters = array_replace($this->parameters, $parameters); -} -public function get($key, $default = null) -{ -return \array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default; -} -public function set($key, $value) -{ -$this->parameters[$key] = $value; -} -public function has($key) -{ -return \array_key_exists($key, $this->parameters); -} -public function remove($key) -{ -unset($this->parameters[$key]); -} -public function getAlpha($key, $default ='') -{ -return preg_replace('/[^[:alpha:]]/','', $this->get($key, $default)); -} -public function getAlnum($key, $default ='') -{ -return preg_replace('/[^[:alnum:]]/','', $this->get($key, $default)); -} -public function getDigits($key, $default ='') -{ -return str_replace(['-','+'],'', $this->filter($key, $default, \FILTER_SANITIZE_NUMBER_INT)); -} -public function getInt($key, $default = 0) -{ -return (int) $this->get($key, $default); -} -public function getBoolean($key, $default = false) -{ -return $this->filter($key, $default, \FILTER_VALIDATE_BOOLEAN); -} -public function filter($key, $default = null, $filter = \FILTER_DEFAULT, $options = []) -{ -$value = $this->get($key, $default); -if (!\is_array($options) && $options) { -$options = ['flags'=> $options]; -} -if (\is_array($value) && !isset($options['flags'])) { -$options['flags'] = \FILTER_REQUIRE_ARRAY; -} -return filter_var($value, $filter, $options); -} -public function getIterator() -{ -return new \ArrayIterator($this->parameters); -} -public function count() -{ -return \count($this->parameters); -} -} -} -namespace Symfony\Component\HttpFoundation -{ -class HeaderBag implements \IteratorAggregate, \Countable -{ -protected $headers = []; -protected $cacheControl = []; -public function __construct(array $headers = []) -{ -foreach ($headers as $key => $values) { -$this->set($key, $values); -} -} -public function __toString() -{ -if (!$headers = $this->all()) { -return''; -} -ksort($headers); -$max = max(array_map('strlen', array_keys($headers))) + 1; -$content =''; -foreach ($headers as $name => $values) { -$name = implode('-', array_map('ucfirst', explode('-', $name))); -foreach ($values as $value) { -$content .= sprintf("%-{$max}s %s\r\n", $name.':', $value); -} -} -return $content; -} -public function all() -{ -return $this->headers; -} -public function keys() -{ -return array_keys($this->all()); -} -public function replace(array $headers = []) -{ -$this->headers = []; -$this->add($headers); -} -public function add(array $headers) -{ -foreach ($headers as $key => $values) { -$this->set($key, $values); -} -} -public function get($key, $default = null, $first = true) -{ -$key = str_replace('_','-', strtolower($key)); -$headers = $this->all(); -if (!\array_key_exists($key, $headers)) { -if (null === $default) { -return $first ? null : []; -} -return $first ? $default : [$default]; -} -if ($first) { -if (!$headers[$key]) { -return $default; -} -if (null === $headers[$key][0]) { -return null; -} -return (string) $headers[$key][0]; -} -return $headers[$key]; -} -public function set($key, $values, $replace = true) -{ -$key = str_replace('_','-', strtolower($key)); -if (\is_array($values)) { -$values = array_values($values); -if (true === $replace || !isset($this->headers[$key])) { -$this->headers[$key] = $values; -} else { -$this->headers[$key] = array_merge($this->headers[$key], $values); -} -} else { -if (true === $replace || !isset($this->headers[$key])) { -$this->headers[$key] = [$values]; -} else { -$this->headers[$key][] = $values; -} -} -if ('cache-control'=== $key) { -$this->cacheControl = $this->parseCacheControl(implode(', ', $this->headers[$key])); -} -} -public function has($key) -{ -return \array_key_exists(str_replace('_','-', strtolower($key)), $this->all()); -} -public function contains($key, $value) -{ -return \in_array($value, $this->get($key, null, false)); -} -public function remove($key) -{ -$key = str_replace('_','-', strtolower($key)); -unset($this->headers[$key]); -if ('cache-control'=== $key) { -$this->cacheControl = []; -} -} -public function getDate($key, \DateTime $default = null) -{ -if (null === $value = $this->get($key)) { -return $default; -} -if (false === $date = \DateTime::createFromFormat(\DATE_RFC2822, $value)) { -throw new \RuntimeException(sprintf('The "%s" HTTP header is not parseable (%s).', $key, $value)); -} -return $date; -} -public function addCacheControlDirective($key, $value = true) -{ -$this->cacheControl[$key] = $value; -$this->set('Cache-Control', $this->getCacheControlHeader()); -} -public function hasCacheControlDirective($key) -{ -return \array_key_exists($key, $this->cacheControl); -} -public function getCacheControlDirective($key) -{ -return \array_key_exists($key, $this->cacheControl) ? $this->cacheControl[$key] : null; -} -public function removeCacheControlDirective($key) -{ -unset($this->cacheControl[$key]); -$this->set('Cache-Control', $this->getCacheControlHeader()); -} -public function getIterator() -{ -return new \ArrayIterator($this->headers); -} -public function count() -{ -return \count($this->headers); -} -protected function getCacheControlHeader() -{ -$parts = []; -ksort($this->cacheControl); -foreach ($this->cacheControl as $key => $value) { -if (true === $value) { -$parts[] = $key; -} else { -if (preg_match('#[^a-zA-Z0-9._-]#', $value)) { -$value ='"'.$value.'"'; -} -$parts[] = "$key=$value"; -} -} -return implode(', ', $parts); -} -protected function parseCacheControl($header) -{ -$cacheControl = []; -preg_match_all('#([a-zA-Z][a-zA-Z_-]*)\s*(?:=(?:"([^"]*)"|([^ \t",;]*)))?#', $header, $matches, \PREG_SET_ORDER); -foreach ($matches as $match) { -$cacheControl[strtolower($match[1])] = isset($match[3]) ? $match[3] : (isset($match[2]) ? $match[2] : true); -} -return $cacheControl; -} -} -} -namespace Symfony\Component\HttpFoundation -{ -use Symfony\Component\HttpFoundation\File\UploadedFile; -class FileBag extends ParameterBag -{ -private static $fileKeys = ['error','name','size','tmp_name','type']; -public function __construct(array $parameters = []) -{ -$this->replace($parameters); -} -public function replace(array $files = []) -{ -$this->parameters = []; -$this->add($files); -} -public function set($key, $value) -{ -if (!\is_array($value) && !$value instanceof UploadedFile) { -throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.'); -} -parent::set($key, $this->convertFileInformation($value)); -} -public function add(array $files = []) -{ -foreach ($files as $key => $file) { -$this->set($key, $file); -} -} -protected function convertFileInformation($file) -{ -if ($file instanceof UploadedFile) { -return $file; -} -if (\is_array($file)) { -$file = $this->fixPhpFilesArray($file); -$keys = array_keys($file); -sort($keys); -if ($keys == self::$fileKeys) { -if (\UPLOAD_ERR_NO_FILE == $file['error']) { -$file = null; -} else { -$file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']); -} -} else { -$file = array_map([$this,'convertFileInformation'], $file); -if (array_keys($keys) === $keys) { -$file = array_filter($file); -} -} -} -return $file; -} -protected function fixPhpFilesArray($data) -{ -$keys = array_keys($data); -sort($keys); -if (self::$fileKeys != $keys || !isset($data['name']) || !\is_array($data['name'])) { -return $data; -} -$files = $data; -foreach (self::$fileKeys as $k) { -unset($files[$k]); -} -foreach ($data['name'] as $key => $name) { -$files[$key] = $this->fixPhpFilesArray(['error'=> $data['error'][$key],'name'=> $name,'type'=> $data['type'][$key],'tmp_name'=> $data['tmp_name'][$key],'size'=> $data['size'][$key], -]); -} -return $files; -} -} -} -namespace Symfony\Component\HttpFoundation -{ -class ServerBag extends ParameterBag -{ -public function getHeaders() -{ -$headers = []; -$contentHeaders = ['CONTENT_LENGTH'=> true,'CONTENT_MD5'=> true,'CONTENT_TYPE'=> true]; -foreach ($this->parameters as $key => $value) { -if (0 === strpos($key,'HTTP_')) { -$headers[substr($key, 5)] = $value; -} -elseif (isset($contentHeaders[$key])) { -$headers[$key] = $value; -} -} -if (isset($this->parameters['PHP_AUTH_USER'])) { -$headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER']; -$headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] :''; -} else { -$authorizationHeader = null; -if (isset($this->parameters['HTTP_AUTHORIZATION'])) { -$authorizationHeader = $this->parameters['HTTP_AUTHORIZATION']; -} elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) { -$authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION']; -} -if (null !== $authorizationHeader) { -if (0 === stripos($authorizationHeader,'basic ')) { -$exploded = explode(':', base64_decode(substr($authorizationHeader, 6)), 2); -if (2 == \count($exploded)) { -list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded; -} -} elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && (0 === stripos($authorizationHeader,'digest '))) { -$headers['PHP_AUTH_DIGEST'] = $authorizationHeader; -$this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader; -} elseif (0 === stripos($authorizationHeader,'bearer ')) { -$headers['AUTHORIZATION'] = $authorizationHeader; -} -} -} -if (isset($headers['AUTHORIZATION'])) { -return $headers; -} -if (isset($headers['PHP_AUTH_USER'])) { -$headers['AUTHORIZATION'] ='Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']); -} elseif (isset($headers['PHP_AUTH_DIGEST'])) { -$headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST']; -} -return $headers; -} -} -} -namespace Symfony\Component\HttpFoundation -{ -use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException; -use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException; -use Symfony\Component\HttpFoundation\Session\SessionInterface; -class Request -{ -const HEADER_FORWARDED = 0b00001; -const HEADER_X_FORWARDED_FOR = 0b00010; -const HEADER_X_FORWARDED_HOST = 0b00100; -const HEADER_X_FORWARDED_PROTO = 0b01000; -const HEADER_X_FORWARDED_PORT = 0b10000; -const HEADER_X_FORWARDED_ALL = 0b11110; -const HEADER_X_FORWARDED_AWS_ELB = 0b11010; -const HEADER_CLIENT_IP = self::HEADER_X_FORWARDED_FOR; -const HEADER_CLIENT_HOST = self::HEADER_X_FORWARDED_HOST; -const HEADER_CLIENT_PROTO = self::HEADER_X_FORWARDED_PROTO; -const HEADER_CLIENT_PORT = self::HEADER_X_FORWARDED_PORT; -const METHOD_HEAD ='HEAD'; -const METHOD_GET ='GET'; -const METHOD_POST ='POST'; -const METHOD_PUT ='PUT'; -const METHOD_PATCH ='PATCH'; -const METHOD_DELETE ='DELETE'; -const METHOD_PURGE ='PURGE'; -const METHOD_OPTIONS ='OPTIONS'; -const METHOD_TRACE ='TRACE'; -const METHOD_CONNECT ='CONNECT'; -protected static $trustedProxies = []; -protected static $trustedHostPatterns = []; -protected static $trustedHosts = []; -protected static $trustedHeaders = [ -self::HEADER_FORWARDED =>'FORWARDED', -self::HEADER_CLIENT_IP =>'X_FORWARDED_FOR', -self::HEADER_CLIENT_HOST =>'X_FORWARDED_HOST', -self::HEADER_CLIENT_PROTO =>'X_FORWARDED_PROTO', -self::HEADER_CLIENT_PORT =>'X_FORWARDED_PORT', -]; -protected static $httpMethodParameterOverride = false; -public $attributes; -public $request; -public $query; -public $server; -public $files; -public $cookies; -public $headers; -protected $content; -protected $languages; -protected $charsets; -protected $encodings; -protected $acceptableContentTypes; -protected $pathInfo; -protected $requestUri; -protected $baseUrl; -protected $basePath; -protected $method; -protected $format; -protected $session; -protected $locale; -protected $defaultLocale ='en'; -protected static $formats; -protected static $requestFactory; -private $isHostValid = true; -private $isForwardedValid = true; -private static $trustedHeaderSet = -1; -private static $trustedHeaderNames = [ -self::HEADER_FORWARDED =>'FORWARDED', -self::HEADER_CLIENT_IP =>'X_FORWARDED_FOR', -self::HEADER_CLIENT_HOST =>'X_FORWARDED_HOST', -self::HEADER_CLIENT_PROTO =>'X_FORWARDED_PROTO', -self::HEADER_CLIENT_PORT =>'X_FORWARDED_PORT', -]; -private static $forwardedParams = [ -self::HEADER_X_FORWARDED_FOR =>'for', -self::HEADER_X_FORWARDED_HOST =>'host', -self::HEADER_X_FORWARDED_PROTO =>'proto', -self::HEADER_X_FORWARDED_PORT =>'host', -]; -public function __construct(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) -{ -$this->initialize($query, $request, $attributes, $cookies, $files, $server, $content); -} -public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) -{ -$this->request = new ParameterBag($request); -$this->query = new ParameterBag($query); -$this->attributes = new ParameterBag($attributes); -$this->cookies = new ParameterBag($cookies); -$this->files = new FileBag($files); -$this->server = new ServerBag($server); -$this->headers = new HeaderBag($this->server->getHeaders()); -$this->content = $content; -$this->languages = null; -$this->charsets = null; -$this->encodings = null; -$this->acceptableContentTypes = null; -$this->pathInfo = null; -$this->requestUri = null; -$this->baseUrl = null; -$this->basePath = null; -$this->method = null; -$this->format = null; -} -public static function createFromGlobals() -{ -$server = $_SERVER; -if ('cli-server'=== \PHP_SAPI) { -if (\array_key_exists('HTTP_CONTENT_LENGTH', $_SERVER)) { -$server['CONTENT_LENGTH'] = $_SERVER['HTTP_CONTENT_LENGTH']; -} -if (\array_key_exists('HTTP_CONTENT_TYPE', $_SERVER)) { -$server['CONTENT_TYPE'] = $_SERVER['HTTP_CONTENT_TYPE']; -} -} -$request = self::createRequestFromFactory($_GET, $_POST, [], $_COOKIE, $_FILES, $server); -if (0 === strpos($request->headers->get('CONTENT_TYPE'),'application/x-www-form-urlencoded') -&& \in_array(strtoupper($request->server->get('REQUEST_METHOD','GET')), ['PUT','DELETE','PATCH']) -) { -parse_str($request->getContent(), $data); -$request->request = new ParameterBag($data); -} -return $request; -} -public static function create($uri, $method ='GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) -{ -$server = array_replace(['SERVER_NAME'=>'localhost','SERVER_PORT'=> 80,'HTTP_HOST'=>'localhost','HTTP_USER_AGENT'=>'Symfony/3.X','HTTP_ACCEPT'=>'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','HTTP_ACCEPT_LANGUAGE'=>'en-us,en;q=0.5','HTTP_ACCEPT_CHARSET'=>'ISO-8859-1,utf-8;q=0.7,*;q=0.7','REMOTE_ADDR'=>'127.0.0.1','SCRIPT_NAME'=>'','SCRIPT_FILENAME'=>'','SERVER_PROTOCOL'=>'HTTP/1.1','REQUEST_TIME'=> time(), -], $server); -$server['PATH_INFO'] =''; -$server['REQUEST_METHOD'] = strtoupper($method); -$components = parse_url($uri); -if (isset($components['host'])) { -$server['SERVER_NAME'] = $components['host']; -$server['HTTP_HOST'] = $components['host']; -} -if (isset($components['scheme'])) { -if ('https'=== $components['scheme']) { -$server['HTTPS'] ='on'; -$server['SERVER_PORT'] = 443; -} else { -unset($server['HTTPS']); -$server['SERVER_PORT'] = 80; -} -} -if (isset($components['port'])) { -$server['SERVER_PORT'] = $components['port']; -$server['HTTP_HOST'] .=':'.$components['port']; -} -if (isset($components['user'])) { -$server['PHP_AUTH_USER'] = $components['user']; -} -if (isset($components['pass'])) { -$server['PHP_AUTH_PW'] = $components['pass']; -} -if (!isset($components['path'])) { -$components['path'] ='/'; -} -switch (strtoupper($method)) { -case'POST': -case'PUT': -case'DELETE': -if (!isset($server['CONTENT_TYPE'])) { -$server['CONTENT_TYPE'] ='application/x-www-form-urlencoded'; -} -case'PATCH': -$request = $parameters; -$query = []; -break; -default: -$request = []; -$query = $parameters; -break; -} -$queryString =''; -if (isset($components['query'])) { -parse_str(html_entity_decode($components['query']), $qs); -if ($query) { -$query = array_replace($qs, $query); -$queryString = http_build_query($query,'','&'); -} else { -$query = $qs; -$queryString = $components['query']; -} -} elseif ($query) { -$queryString = http_build_query($query,'','&'); -} -$server['REQUEST_URI'] = $components['path'].(''!== $queryString ?'?'.$queryString :''); -$server['QUERY_STRING'] = $queryString; -return self::createRequestFromFactory($query, $request, [], $cookies, $files, $server, $content); -} -public static function setFactory($callable) -{ -self::$requestFactory = $callable; -} -public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) -{ -$dup = clone $this; -if (null !== $query) { -$dup->query = new ParameterBag($query); -} -if (null !== $request) { -$dup->request = new ParameterBag($request); -} -if (null !== $attributes) { -$dup->attributes = new ParameterBag($attributes); -} -if (null !== $cookies) { -$dup->cookies = new ParameterBag($cookies); -} -if (null !== $files) { -$dup->files = new FileBag($files); -} -if (null !== $server) { -$dup->server = new ServerBag($server); -$dup->headers = new HeaderBag($dup->server->getHeaders()); -} -$dup->languages = null; -$dup->charsets = null; -$dup->encodings = null; -$dup->acceptableContentTypes = null; -$dup->pathInfo = null; -$dup->requestUri = null; -$dup->baseUrl = null; -$dup->basePath = null; -$dup->method = null; -$dup->format = null; -if (!$dup->get('_format') && $this->get('_format')) { -$dup->attributes->set('_format', $this->get('_format')); -} -if (!$dup->getRequestFormat(null)) { -$dup->setRequestFormat($this->getRequestFormat(null)); -} -return $dup; -} -public function __clone() -{ -$this->query = clone $this->query; -$this->request = clone $this->request; -$this->attributes = clone $this->attributes; -$this->cookies = clone $this->cookies; -$this->files = clone $this->files; -$this->server = clone $this->server; -$this->headers = clone $this->headers; -} -public function __toString() -{ -try { -$content = $this->getContent(); -} catch (\LogicException $e) { -if (\PHP_VERSION_ID >= 70400) { -throw $e; -} -return trigger_error($e, \E_USER_ERROR); -} -$cookieHeader =''; -$cookies = []; -foreach ($this->cookies as $k => $v) { -$cookies[] = $k.'='.$v; -} -if (!empty($cookies)) { -$cookieHeader ='Cookie: '.implode('; ', $cookies)."\r\n"; -} -return -sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n". -$this->headers. -$cookieHeader."\r\n". -$content; -} -public function overrideGlobals() -{ -$this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(),'','&'))); -$_GET = $this->query->all(); -$_POST = $this->request->all(); -$_SERVER = $this->server->all(); -$_COOKIE = $this->cookies->all(); -foreach ($this->headers->all() as $key => $value) { -$key = strtoupper(str_replace('-','_', $key)); -if (\in_array($key, ['CONTENT_TYPE','CONTENT_LENGTH'])) { -$_SERVER[$key] = implode(', ', $value); -} else { -$_SERVER['HTTP_'.$key] = implode(', ', $value); -} -} -$request = ['g'=> $_GET,'p'=> $_POST,'c'=> $_COOKIE]; -$requestOrder = ini_get('request_order') ?: ini_get('variables_order'); -$requestOrder = preg_replace('#[^cgp]#','', strtolower($requestOrder)) ?:'gp'; -$_REQUEST = []; -foreach (str_split($requestOrder) as $order) { -$_REQUEST = array_merge($_REQUEST, $request[$order]); -} -} -public static function setTrustedProxies(array $proxies) -{ -self::$trustedProxies = $proxies; -if (2 > \func_num_args()) { -@trigger_error(sprintf('The %s() method expects a bit field of Request::HEADER_* as second argument since Symfony 3.3. Defining it will be required in 4.0. ', __METHOD__), \E_USER_DEPRECATED); -return; -} -$trustedHeaderSet = (int) func_get_arg(1); -foreach (self::$trustedHeaderNames as $header => $name) { -self::$trustedHeaders[$header] = $header & $trustedHeaderSet ? $name : null; -} -self::$trustedHeaderSet = $trustedHeaderSet; -} -public static function getTrustedProxies() -{ -return self::$trustedProxies; -} -public static function getTrustedHeaderSet() -{ -return self::$trustedHeaderSet; -} -public static function setTrustedHosts(array $hostPatterns) -{ -self::$trustedHostPatterns = array_map(function ($hostPattern) { -return sprintf('{%s}i', $hostPattern); -}, $hostPatterns); -self::$trustedHosts = []; -} -public static function getTrustedHosts() -{ -return self::$trustedHostPatterns; -} -public static function setTrustedHeaderName($key, $value) -{ -@trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Use the $trustedHeaderSet argument of the Request::setTrustedProxies() method instead.', __METHOD__), \E_USER_DEPRECATED); -if ('forwarded'=== $key) { -$key = self::HEADER_FORWARDED; -} elseif ('client_ip'=== $key) { -$key = self::HEADER_CLIENT_IP; -} elseif ('client_host'=== $key) { -$key = self::HEADER_CLIENT_HOST; -} elseif ('client_proto'=== $key) { -$key = self::HEADER_CLIENT_PROTO; -} elseif ('client_port'=== $key) { -$key = self::HEADER_CLIENT_PORT; -} elseif (!\array_key_exists($key, self::$trustedHeaders)) { -throw new \InvalidArgumentException(sprintf('Unable to set the trusted header name for key "%s".', $key)); -} -self::$trustedHeaders[$key] = $value; -if (null !== $value) { -self::$trustedHeaderNames[$key] = $value; -self::$trustedHeaderSet |= $key; -} else { -self::$trustedHeaderSet &= ~$key; -} -} -public static function getTrustedHeaderName($key) -{ -if (2 > \func_num_args() || func_get_arg(1)) { -@trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Use the Request::getTrustedHeaderSet() method instead.', __METHOD__), \E_USER_DEPRECATED); -} -if (!\array_key_exists($key, self::$trustedHeaders)) { -throw new \InvalidArgumentException(sprintf('Unable to get the trusted header name for key "%s".', $key)); -} -return self::$trustedHeaders[$key]; -} -public static function normalizeQueryString($qs) -{ -if (''== $qs) { -return''; -} -$parts = []; -$order = []; -foreach (explode('&', $qs) as $param) { -if (''=== $param ||'='=== $param[0]) { -continue; -} -$keyValuePair = explode('=', $param, 2); -$parts[] = isset($keyValuePair[1]) ? -rawurlencode(urldecode($keyValuePair[0])).'='.rawurlencode(urldecode($keyValuePair[1])) : -rawurlencode(urldecode($keyValuePair[0])); -$order[] = urldecode($keyValuePair[0]); -} -array_multisort($order, \SORT_ASC, $parts); -return implode('&', $parts); -} -public static function enableHttpMethodParameterOverride() -{ -self::$httpMethodParameterOverride = true; -} -public static function getHttpMethodParameterOverride() -{ -return self::$httpMethodParameterOverride; -} -public function get($key, $default = null) -{ -if ($this !== $result = $this->attributes->get($key, $this)) { -return $result; -} -if ($this !== $result = $this->query->get($key, $this)) { -return $result; -} -if ($this !== $result = $this->request->get($key, $this)) { -return $result; -} -return $default; -} -public function getSession() -{ -return $this->session; -} -public function hasPreviousSession() -{ -return $this->hasSession() && $this->cookies->has($this->session->getName()); -} -public function hasSession() -{ -return null !== $this->session; -} -public function setSession(SessionInterface $session) -{ -$this->session = $session; -} -public function getClientIps() -{ -$ip = $this->server->get('REMOTE_ADDR'); -if (!$this->isFromTrustedProxy()) { -return [$ip]; -} -return $this->getTrustedValues(self::HEADER_CLIENT_IP, $ip) ?: [$ip]; -} -public function getClientIp() -{ -$ipAddresses = $this->getClientIps(); -return $ipAddresses[0]; -} -public function getScriptName() -{ -return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME','')); -} -public function getPathInfo() -{ -if (null === $this->pathInfo) { -$this->pathInfo = $this->preparePathInfo(); -} -return $this->pathInfo; -} -public function getBasePath() -{ -if (null === $this->basePath) { -$this->basePath = $this->prepareBasePath(); -} -return $this->basePath; -} -public function getBaseUrl() -{ -if (null === $this->baseUrl) { -$this->baseUrl = $this->prepareBaseUrl(); -} -return $this->baseUrl; -} -public function getScheme() -{ -return $this->isSecure() ?'https':'http'; -} -public function getPort() -{ -if ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_CLIENT_PORT)) { -$host = $host[0]; -} elseif ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_CLIENT_HOST)) { -$host = $host[0]; -} elseif (!$host = $this->headers->get('HOST')) { -return $this->server->get('SERVER_PORT'); -} -if ('['=== $host[0]) { -$pos = strpos($host,':', strrpos($host,']')); -} else { -$pos = strrpos($host,':'); -} -if (false !== $pos && $port = substr($host, $pos + 1)) { -return (int) $port; -} -return'https'=== $this->getScheme() ? 443 : 80; -} -public function getUser() -{ -return $this->headers->get('PHP_AUTH_USER'); -} -public function getPassword() -{ -return $this->headers->get('PHP_AUTH_PW'); -} -public function getUserInfo() -{ -$userinfo = $this->getUser(); -$pass = $this->getPassword(); -if (''!= $pass) { -$userinfo .= ":$pass"; -} -return $userinfo; -} -public function getHttpHost() -{ -$scheme = $this->getScheme(); -$port = $this->getPort(); -if (('http'== $scheme && 80 == $port) || ('https'== $scheme && 443 == $port)) { -return $this->getHost(); -} -return $this->getHost().':'.$port; -} -public function getRequestUri() -{ -if (null === $this->requestUri) { -$this->requestUri = $this->prepareRequestUri(); -} -return $this->requestUri; -} -public function getSchemeAndHttpHost() -{ -return $this->getScheme().'://'.$this->getHttpHost(); -} -public function getUri() -{ -if (null !== $qs = $this->getQueryString()) { -$qs ='?'.$qs; -} -return $this->getSchemeAndHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs; -} -public function getUriForPath($path) -{ -return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path; -} -public function getRelativeUriForPath($path) -{ -if (!isset($path[0]) ||'/'!== $path[0]) { -return $path; -} -if ($path === $basePath = $this->getPathInfo()) { -return''; -} -$sourceDirs = explode('/', isset($basePath[0]) &&'/'=== $basePath[0] ? substr($basePath, 1) : $basePath); -$targetDirs = explode('/', substr($path, 1)); -array_pop($sourceDirs); -$targetFile = array_pop($targetDirs); -foreach ($sourceDirs as $i => $dir) { -if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) { -unset($sourceDirs[$i], $targetDirs[$i]); -} else { -break; -} -} -$targetDirs[] = $targetFile; -$path = str_repeat('../', \count($sourceDirs)).implode('/', $targetDirs); -return !isset($path[0]) ||'/'=== $path[0] -|| false !== ($colonPos = strpos($path,':')) && ($colonPos < ($slashPos = strpos($path,'/')) || false === $slashPos) -? "./$path" : $path; -} -public function getQueryString() -{ -$qs = static::normalizeQueryString($this->server->get('QUERY_STRING')); -return''=== $qs ? null : $qs; -} -public function isSecure() -{ -if ($this->isFromTrustedProxy() && $proto = $this->getTrustedValues(self::HEADER_CLIENT_PROTO)) { -return \in_array(strtolower($proto[0]), ['https','on','ssl','1'], true); -} -$https = $this->server->get('HTTPS'); -return !empty($https) &&'off'!== strtolower($https); -} -public function getHost() -{ -if ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_CLIENT_HOST)) { -$host = $host[0]; -} elseif (!$host = $this->headers->get('HOST')) { -if (!$host = $this->server->get('SERVER_NAME')) { -$host = $this->server->get('SERVER_ADDR',''); -} -} -$host = strtolower(preg_replace('/:\d+$/','', trim($host))); -if ($host &&''!== preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/','', $host)) { -if (!$this->isHostValid) { -return''; -} -$this->isHostValid = false; -throw new SuspiciousOperationException(sprintf('Invalid Host "%s".', $host)); -} -if (\count(self::$trustedHostPatterns) > 0) { -if (\in_array($host, self::$trustedHosts)) { -return $host; -} -foreach (self::$trustedHostPatterns as $pattern) { -if (preg_match($pattern, $host)) { -self::$trustedHosts[] = $host; -return $host; -} -} -if (!$this->isHostValid) { -return''; -} -$this->isHostValid = false; -throw new SuspiciousOperationException(sprintf('Untrusted Host "%s".', $host)); -} -return $host; -} -public function setMethod($method) -{ -$this->method = null; -$this->server->set('REQUEST_METHOD', $method); -} -public function getMethod() -{ -if (null !== $this->method) { -return $this->method; -} -$this->method = strtoupper($this->server->get('REQUEST_METHOD','GET')); -if ('POST'!== $this->method) { -return $this->method; -} -$method = $this->headers->get('X-HTTP-METHOD-OVERRIDE'); -if (!$method && self::$httpMethodParameterOverride) { -$method = $this->request->get('_method', $this->query->get('_method','POST')); -} -if (!\is_string($method)) { -return $this->method; -} -$method = strtoupper($method); -if (\in_array($method, ['GET','HEAD','POST','PUT','DELETE','CONNECT','OPTIONS','PATCH','PURGE','TRACE'], true)) { -return $this->method = $method; -} -if (!preg_match('/^[A-Z]++$/D', $method)) { -throw new SuspiciousOperationException(sprintf('Invalid method override "%s".', $method)); -} -return $this->method = $method; -} -public function getRealMethod() -{ -return strtoupper($this->server->get('REQUEST_METHOD','GET')); -} -public function getMimeType($format) -{ -if (null === static::$formats) { -static::initializeFormats(); -} -return isset(static::$formats[$format]) ? static::$formats[$format][0] : null; -} -public static function getMimeTypes($format) -{ -if (null === static::$formats) { -static::initializeFormats(); -} -return isset(static::$formats[$format]) ? static::$formats[$format] : []; -} -public function getFormat($mimeType) -{ -$canonicalMimeType = null; -if (false !== $pos = strpos($mimeType,';')) { -$canonicalMimeType = trim(substr($mimeType, 0, $pos)); -} -if (null === static::$formats) { -static::initializeFormats(); -} -foreach (static::$formats as $format => $mimeTypes) { -if (\in_array($mimeType, (array) $mimeTypes)) { -return $format; -} -if (null !== $canonicalMimeType && \in_array($canonicalMimeType, (array) $mimeTypes)) { -return $format; -} -} -return null; -} -public function setFormat($format, $mimeTypes) -{ -if (null === static::$formats) { -static::initializeFormats(); -} -static::$formats[$format] = \is_array($mimeTypes) ? $mimeTypes : [$mimeTypes]; -} -public function getRequestFormat($default ='html') -{ -if (null === $this->format) { -$this->format = $this->attributes->get('_format'); -} -return null === $this->format ? $default : $this->format; -} -public function setRequestFormat($format) -{ -$this->format = $format; -} -public function getContentType() -{ -return $this->getFormat($this->headers->get('CONTENT_TYPE')); -} -public function setDefaultLocale($locale) -{ -$this->defaultLocale = $locale; -if (null === $this->locale) { -$this->setPhpDefaultLocale($locale); -} -} -public function getDefaultLocale() -{ -return $this->defaultLocale; -} -public function setLocale($locale) -{ -$this->setPhpDefaultLocale($this->locale = $locale); -} -public function getLocale() -{ -return null === $this->locale ? $this->defaultLocale : $this->locale; -} -public function isMethod($method) -{ -return $this->getMethod() === strtoupper($method); -} -public function isMethodSafe() -{ -if (!\func_num_args() || func_get_arg(0)) { -@trigger_error('Checking only for cacheable HTTP methods with Symfony\Component\HttpFoundation\Request::isMethodSafe() is deprecated since Symfony 3.2 and will throw an exception in 4.0. Disable checking only for cacheable methods by calling the method with `false` as first argument or use the Request::isMethodCacheable() instead.', \E_USER_DEPRECATED); -return \in_array($this->getMethod(), ['GET','HEAD']); -} -return \in_array($this->getMethod(), ['GET','HEAD','OPTIONS','TRACE']); -} -public function isMethodIdempotent() -{ -return \in_array($this->getMethod(), ['HEAD','GET','PUT','DELETE','TRACE','OPTIONS','PURGE']); -} -public function isMethodCacheable() -{ -return \in_array($this->getMethod(), ['GET','HEAD']); -} -public function getProtocolVersion() -{ -if ($this->isFromTrustedProxy()) { -preg_match('~^(HTTP/)?([1-9]\.[0-9]) ~', $this->headers->get('Via'), $matches); -if ($matches) { -return'HTTP/'.$matches[2]; -} -} -return $this->server->get('SERVER_PROTOCOL'); -} -public function getContent($asResource = false) -{ -$currentContentIsResource = \is_resource($this->content); -if (\PHP_VERSION_ID < 50600 && false === $this->content) { -throw new \LogicException('getContent() can only be called once when using the resource return type and PHP below 5.6.'); -} -if (true === $asResource) { -if ($currentContentIsResource) { -rewind($this->content); -return $this->content; -} -if (\is_string($this->content)) { -$resource = fopen('php://temp','r+'); -fwrite($resource, $this->content); -rewind($resource); -return $resource; -} -$this->content = false; -return fopen('php://input','rb'); -} -if ($currentContentIsResource) { -rewind($this->content); -return stream_get_contents($this->content); -} -if (null === $this->content || false === $this->content) { -$this->content = file_get_contents('php://input'); -} -return $this->content; -} -public function getETags() -{ -return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, \PREG_SPLIT_NO_EMPTY); -} -public function isNoCache() -{ -return $this->headers->hasCacheControlDirective('no-cache') ||'no-cache'== $this->headers->get('Pragma'); -} -public function getPreferredLanguage(array $locales = null) -{ -$preferredLanguages = $this->getLanguages(); -if (empty($locales)) { -return isset($preferredLanguages[0]) ? $preferredLanguages[0] : null; -} -if (!$preferredLanguages) { -return $locales[0]; -} -$extendedPreferredLanguages = []; -foreach ($preferredLanguages as $language) { -$extendedPreferredLanguages[] = $language; -if (false !== $position = strpos($language,'_')) { -$superLanguage = substr($language, 0, $position); -if (!\in_array($superLanguage, $preferredLanguages)) { -$extendedPreferredLanguages[] = $superLanguage; -} -} -} -$preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales)); -return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0]; -} -public function getLanguages() -{ -if (null !== $this->languages) { -return $this->languages; -} -$languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all(); -$this->languages = []; -foreach ($languages as $lang => $acceptHeaderItem) { -if (false !== strpos($lang,'-')) { -$codes = explode('-', $lang); -if ('i'=== $codes[0]) { -if (\count($codes) > 1) { -$lang = $codes[1]; -} -} else { -for ($i = 0, $max = \count($codes); $i < $max; ++$i) { -if (0 === $i) { -$lang = strtolower($codes[0]); -} else { -$lang .='_'.strtoupper($codes[$i]); -} -} -} -} -$this->languages[] = $lang; -} -return $this->languages; -} -public function getCharsets() -{ -if (null !== $this->charsets) { -return $this->charsets; -} -return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all()); -} -public function getEncodings() -{ -if (null !== $this->encodings) { -return $this->encodings; -} -return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all()); -} -public function getAcceptableContentTypes() -{ -if (null !== $this->acceptableContentTypes) { -return $this->acceptableContentTypes; -} -return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all()); -} -public function isXmlHttpRequest() -{ -return'XMLHttpRequest'== $this->headers->get('X-Requested-With'); -} -protected function prepareRequestUri() -{ -$requestUri =''; -if ('1'== $this->server->get('IIS_WasUrlRewritten') &&''!= $this->server->get('UNENCODED_URL')) { -$requestUri = $this->server->get('UNENCODED_URL'); -$this->server->remove('UNENCODED_URL'); -$this->server->remove('IIS_WasUrlRewritten'); -} elseif ($this->server->has('REQUEST_URI')) { -$requestUri = $this->server->get('REQUEST_URI'); -if (''!== $requestUri &&'/'=== $requestUri[0]) { -if (false !== $pos = strpos($requestUri,'#')) { -$requestUri = substr($requestUri, 0, $pos); -} -} else { -$uriComponents = parse_url($requestUri); -if (isset($uriComponents['path'])) { -$requestUri = $uriComponents['path']; -} -if (isset($uriComponents['query'])) { -$requestUri .='?'.$uriComponents['query']; -} -} -} elseif ($this->server->has('ORIG_PATH_INFO')) { -$requestUri = $this->server->get('ORIG_PATH_INFO'); -if (''!= $this->server->get('QUERY_STRING')) { -$requestUri .='?'.$this->server->get('QUERY_STRING'); -} -$this->server->remove('ORIG_PATH_INFO'); -} -$this->server->set('REQUEST_URI', $requestUri); -return $requestUri; -} -protected function prepareBaseUrl() -{ -$filename = basename($this->server->get('SCRIPT_FILENAME')); -if (basename($this->server->get('SCRIPT_NAME')) === $filename) { -$baseUrl = $this->server->get('SCRIPT_NAME'); -} elseif (basename($this->server->get('PHP_SELF')) === $filename) { -$baseUrl = $this->server->get('PHP_SELF'); -} elseif (basename($this->server->get('ORIG_SCRIPT_NAME')) === $filename) { -$baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); -} else { -$path = $this->server->get('PHP_SELF',''); -$file = $this->server->get('SCRIPT_FILENAME',''); -$segs = explode('/', trim($file,'/')); -$segs = array_reverse($segs); -$index = 0; -$last = \count($segs); -$baseUrl =''; -do { -$seg = $segs[$index]; -$baseUrl ='/'.$seg.$baseUrl; -++$index; -} while ($last > $index && (false !== $pos = strpos($path, $baseUrl)) && 0 != $pos); -} -$requestUri = $this->getRequestUri(); -if (''!== $requestUri &&'/'!== $requestUri[0]) { -$requestUri ='/'.$requestUri; -} -if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) { -return $prefix; -} -if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl),'/'.\DIRECTORY_SEPARATOR).'/')) { -return rtrim($prefix,'/'.\DIRECTORY_SEPARATOR); -} -$truncatedRequestUri = $requestUri; -if (false !== $pos = strpos($requestUri,'?')) { -$truncatedRequestUri = substr($requestUri, 0, $pos); -} -$basename = basename($baseUrl); -if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) { -return''; -} -if (\strlen($requestUri) >= \strlen($baseUrl) && (false !== $pos = strpos($requestUri, $baseUrl)) && 0 !== $pos) { -$baseUrl = substr($requestUri, 0, $pos + \strlen($baseUrl)); -} -return rtrim($baseUrl,'/'.\DIRECTORY_SEPARATOR); -} -protected function prepareBasePath() -{ -$baseUrl = $this->getBaseUrl(); -if (empty($baseUrl)) { -return''; -} -$filename = basename($this->server->get('SCRIPT_FILENAME')); -if (basename($baseUrl) === $filename) { -$basePath = \dirname($baseUrl); -} else { -$basePath = $baseUrl; -} -if ('\\'=== \DIRECTORY_SEPARATOR) { -$basePath = str_replace('\\','/', $basePath); -} -return rtrim($basePath,'/'); -} -protected function preparePathInfo() -{ -if (null === ($requestUri = $this->getRequestUri())) { -return'/'; -} -if (false !== $pos = strpos($requestUri,'?')) { -$requestUri = substr($requestUri, 0, $pos); -} -if (''!== $requestUri &&'/'!== $requestUri[0]) { -$requestUri ='/'.$requestUri; -} -if (null === ($baseUrl = $this->getBaseUrl())) { -return $requestUri; -} -$pathInfo = substr($requestUri, \strlen($baseUrl)); -if (false === $pathInfo ||''=== $pathInfo) { -return'/'; -} -return (string) $pathInfo; -} -protected static function initializeFormats() -{ -static::$formats = ['html'=> ['text/html','application/xhtml+xml'],'txt'=> ['text/plain'],'js'=> ['application/javascript','application/x-javascript','text/javascript'],'css'=> ['text/css'],'json'=> ['application/json','application/x-json'],'jsonld'=> ['application/ld+json'],'xml'=> ['text/xml','application/xml','application/x-xml'],'rdf'=> ['application/rdf+xml'],'atom'=> ['application/atom+xml'],'rss'=> ['application/rss+xml'],'form'=> ['application/x-www-form-urlencoded'], -]; -} -private function setPhpDefaultLocale($locale) -{ -try { -if (class_exists('Locale', false)) { -\Locale::setDefault($locale); -} -} catch (\Exception $e) { -} -} -private function getUrlencodedPrefix($string, $prefix) -{ -if (0 !== strpos(rawurldecode($string), $prefix)) { -return false; -} -$len = \strlen($prefix); -if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) { -return $match[0]; -} -return false; -} -private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) -{ -if (self::$requestFactory) { -$request = \call_user_func(self::$requestFactory, $query, $request, $attributes, $cookies, $files, $server, $content); -if (!$request instanceof self) { -throw new \LogicException('The Request factory must return an instance of Symfony\Component\HttpFoundation\Request.'); -} -return $request; -} -return new static($query, $request, $attributes, $cookies, $files, $server, $content); -} -public function isFromTrustedProxy() -{ -return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies); -} -private function getTrustedValues($type, $ip = null) -{ -$clientValues = []; -$forwardedValues = []; -if (self::$trustedHeaders[$type] && $this->headers->has(self::$trustedHeaders[$type])) { -foreach (explode(',', $this->headers->get(self::$trustedHeaders[$type])) as $v) { -$clientValues[] = (self::HEADER_CLIENT_PORT === $type ?'0.0.0.0:':'').trim($v); -} -} -if (self::$trustedHeaders[self::HEADER_FORWARDED] && $this->headers->has(self::$trustedHeaders[self::HEADER_FORWARDED])) { -$forwardedValues = $this->headers->get(self::$trustedHeaders[self::HEADER_FORWARDED]); -$forwardedValues = preg_match_all(sprintf('{(?:%s)="?([a-zA-Z0-9\.:_\-/\[\]]*+)}', self::$forwardedParams[$type]), $forwardedValues, $matches) ? $matches[1] : []; -if (self::HEADER_CLIENT_PORT === $type) { -foreach ($forwardedValues as $k => $v) { -if (']'=== substr($v, -1) || false === $v = strrchr($v,':')) { -$v = $this->isSecure() ?':443':':80'; -} -$forwardedValues[$k] ='0.0.0.0'.$v; -} -} -} -if (null !== $ip) { -$clientValues = $this->normalizeAndFilterClientIps($clientValues, $ip); -$forwardedValues = $this->normalizeAndFilterClientIps($forwardedValues, $ip); -} -if ($forwardedValues === $clientValues || !$clientValues) { -return $forwardedValues; -} -if (!$forwardedValues) { -return $clientValues; -} -if (!$this->isForwardedValid) { -return null !== $ip ? ['0.0.0.0', $ip] : []; -} -$this->isForwardedValid = false; -throw new ConflictingHeadersException(sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::$trustedHeaders[self::HEADER_FORWARDED], self::$trustedHeaders[$type])); -} -private function normalizeAndFilterClientIps(array $clientIps, $ip) -{ -if (!$clientIps) { -return []; -} -$clientIps[] = $ip; -$firstTrustedIp = null; -foreach ($clientIps as $key => $clientIp) { -if (strpos($clientIp,'.')) { -$i = strpos($clientIp,':'); -if ($i) { -$clientIps[$key] = $clientIp = substr($clientIp, 0, $i); -} -} elseif (0 === strpos($clientIp,'[')) { -$i = strpos($clientIp,']', 1); -$clientIps[$key] = $clientIp = substr($clientIp, 1, $i - 1); -} -if (!filter_var($clientIp, \FILTER_VALIDATE_IP)) { -unset($clientIps[$key]); -continue; -} -if (IpUtils::checkIp($clientIp, self::$trustedProxies)) { -unset($clientIps[$key]); -if (null === $firstTrustedIp) { -$firstTrustedIp = $clientIp; -} -} -} -return $clientIps ? array_reverse($clientIps) : [$firstTrustedIp]; -} -} -} -namespace {require __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/ClassLoader/ClassCollectionLoader.php';} diff --git a/composer.json b/composer.json index 05080e52..565c77d7 100644 --- a/composer.json +++ b/composer.json @@ -6,9 +6,13 @@ "config": { "bin-dir": "bin", "platform": { - "php": "7.4" + "php": "7.4.28" }, - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "composer/package-versions-deprecated": true, + "ocramius/package-versions": true + } }, "autoload": { "psr-4": { "": "src/" }, @@ -25,12 +29,14 @@ "doctrine/doctrine-bundle": "^1.6", "doctrine/doctrine-migrations-bundle": "*", "doctrine/orm": "^2.5", + "fig/link-util": "^1.1.0", "guzzlehttp/guzzle": "^7.3", "guzzlehttp/oauth-subscriber": "^0.6", "incenteev/composer-parameter-handler": "^2.0", "jms/di-extra-bundle": "*", "jms/security-extra-bundle": "*", "phpoffice/phpspreadsheet": "^1.4", + "psr/link": "1.0.0", "sensio/distribution-bundle": "^5.0.19", "sensio/framework-extra-bundle": "^5.0.0", "sentry/sentry-symfony": "^4.2", diff --git a/composer.lock b/composer.lock index afec3054..b6d71472 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": "ba7831972512a59c70047af5d5892a74", + "content-hash": "2656878a1fbac42374310a461d3971d0", "packages": [ { "name": "clue/stream-filter", @@ -56,6 +56,10 @@ "stream_filter_append", "stream_filter_register" ], + "support": { + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.5.0" + }, "funding": [ { "url": "https://clue.engineering/support", @@ -70,24 +74,24 @@ }, { "name": "composer/package-versions-deprecated", - "version": "1.8.0", + "version": "1.11.99.4", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "98df7f1b293c0550bd5b1ce6b60b59bdda23aa47" + "reference": "b174585d1fe49ceed21928a945138948cb394600" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/98df7f1b293c0550bd5b1ce6b60b59bdda23aa47", - "reference": "98df7f1b293c0550bd5b1ce6b60b59bdda23aa47", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", + "reference": "b174585d1fe49ceed21928a945138948cb394600", "shasum": "" }, "require": { "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7" + "php": "^7 || ^8" }, "replace": { - "ocramius/package-versions": "1.2 - 1.8.99" + "ocramius/package-versions": "1.11.99" }, "require-dev": { "composer/composer": "^1.9.3 || ^2.0@dev", @@ -121,46 +125,54 @@ } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" + }, "funding": [ { "url": "https://packagist.com", "type": "custom" }, + { + "url": "https://github.com/composer", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2020-04-23T11:49:37+00:00" + "time": "2021-09-13T08:41:34+00:00" }, { "name": "doctrine/annotations", - "version": "v1.8.0", + "version": "1.13.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" + "reference": "5b668aef16090008790395c02c893b1ba13f7e08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08", "shasum": "" }, "require": { "doctrine/lexer": "1.*", - "php": "^7.1" + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^7.5" + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" @@ -193,50 +205,53 @@ } ], "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", "keywords": [ "annotations", "docblock", "parser" ], - "time": "2019-10-01T18:55:10+00:00" + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.2" + }, + "time": "2021-08-05T19:00:23+00:00" }, { "name": "doctrine/cache", - "version": "1.10.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" + "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", + "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", + "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", "shasum": "" }, "require": { - "php": "~7.1" + "php": "~7.1 || ^8.0" }, "conflict": { "doctrine/common": ">2.2,<2.4" }, "require-dev": { "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^6.0", + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^8.0", "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "predis/predis": "~1.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", + "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" }, "suggest": { "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" @@ -281,37 +296,50 @@ "redis", "xcache" ], - "time": "2019-11-29T15:36:20+00:00" + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/1.12.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], + "time": "2021-07-17T14:39:21+00:00" }, { "name": "doctrine/collections", - "version": "1.6.4", + "version": "1.6.8", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7" + "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", - "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", + "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", + "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.1.3 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan-shim": "^0.9.2", - "phpunit/phpunit": "^7.0", - "vimeo/psalm": "^3.2.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", + "vimeo/psalm": "^4.2.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" @@ -351,20 +379,24 @@ "iterators", "php" ], - "time": "2019-11-13T13:07:11+00:00" + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.6.8" + }, + "time": "2021-08-10T18:51:53+00:00" }, { "name": "doctrine/common", - "version": "2.12.0", + "version": "2.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6" + "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", + "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", + "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", "shasum": "" }, "require": { @@ -374,9 +406,9 @@ "doctrine/event-manager": "^1.0", "doctrine/inflector": "^1.0", "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.1", + "doctrine/persistence": "^1.3.3", "doctrine/reflection": "^1.0", - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^1.0", @@ -434,34 +466,57 @@ "doctrine", "php" ], - "time": "2020-01-10T15:49:25+00:00" + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/2.13.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", + "type": "tidelift" + } + ], + "time": "2020-06-05T16:46:05+00:00" }, { "name": "doctrine/dbal", - "version": "v2.10.1", + "version": "2.13.6", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8" + "reference": "67ef6d0327ccbab1202b39e0222977a47ed3ef2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", - "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/67ef6d0327ccbab1202b39e0222977a47ed3ef2f", + "reference": "67ef6d0327ccbab1202b39e0222977a47ed3ef2f", "shasum": "" }, "require": { - "doctrine/cache": "^1.0", + "doctrine/cache": "^1.0|^2.0", + "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.0", "ext-pdo": "*", - "php": "^7.2" + "php": "^7.1 || ^8" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "jetbrains/phpstorm-stubs": "^2019.1", - "phpstan/phpstan": "^0.11.3", - "phpunit/phpunit": "^8.4.1", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" + "doctrine/coding-standard": "9.0.0", + "jetbrains/phpstorm-stubs": "2021.1", + "phpstan/phpstan": "1.2.0", + "phpunit/phpunit": "^7.5.20|^8.5|9.5.10", + "psalm/plugin-phpunit": "0.16.1", + "squizlabs/php_codesniffer": "3.6.1", + "symfony/cache": "^4.4", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", + "vimeo/psalm": "4.13.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -470,12 +525,6 @@ "bin/doctrine-dbal" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" @@ -526,28 +575,89 @@ "sqlserver", "sqlsrv" ], - "time": "2020-01-04T12:56:21+00:00" + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/2.13.6" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2021-11-26T20:11:05+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v0.5.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0|^7.0|^8.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + }, + "time": "2021-03-21T12:59:47+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "1.12.7", + "version": "1.12.13", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "18fb7d271676dcb8e882adb0157ac1445c8fe89c" + "reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/18fb7d271676dcb8e882adb0157ac1445c8fe89c", - "reference": "18fb7d271676dcb8e882adb0157ac1445c8fe89c", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/85460b85edd8f61a16ad311e7ffc5d255d3c937c", + "reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c", "shasum": "" }, "require": { - "doctrine/dbal": "^2.5.12", + "doctrine/dbal": "^2.5.12|^3.0", "doctrine/doctrine-cache-bundle": "~1.2", "doctrine/persistence": "^1.3.3", "jdorn/sql-formatter": "^1.2.16", - "php": "^7.1", + "php": "^7.1 || ^8.0", "symfony/cache": "^3.4.30|^4.3.3", "symfony/config": "^3.4.30|^4.3.3", "symfony/console": "^3.4.30|^4.3.3", @@ -582,7 +692,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.12.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { @@ -620,7 +730,25 @@ "orm", "persistence" ], - "time": "2020-01-10T12:25:22+00:00" + "support": { + "issues": "https://github.com/doctrine/DoctrineBundle/issues", + "source": "https://github.com/doctrine/DoctrineBundle/tree/1.12.13" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle", + "type": "tidelift" + } + ], + "time": "2020-11-14T13:38:44+00:00" }, { "name": "doctrine/doctrine-cache-bundle", @@ -711,42 +839,43 @@ "cache", "caching" ], + "support": { + "issues": "https://github.com/doctrine/DoctrineCacheBundle/issues", + "source": "https://github.com/doctrine/DoctrineCacheBundle/tree/1.4.0" + }, "abandoned": true, "time": "2019-11-29T11:22:01+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "2.1.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "856437e8de96a70233e1f0cc2352fc8dd15a899d" + "reference": "0a9a4ffdb8713d0b7f2bbc04b0bbfa2991b2a238" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/856437e8de96a70233e1f0cc2352fc8dd15a899d", - "reference": "856437e8de96a70233e1f0cc2352fc8dd15a899d", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/0a9a4ffdb8713d0b7f2bbc04b0bbfa2991b2a238", + "reference": "0a9a4ffdb8713d0b7f2bbc04b0bbfa2991b2a238", "shasum": "" }, "require": { "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^2.2", - "php": "^7.1", + "doctrine/migrations": "~3.0", + "php": "^7.2|^8.0", "symfony/framework-bundle": "~3.4|~4.0|~5.0" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-strict-rules": "^0.9", - "phpunit/phpunit": "^6.4|^7.0" + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Bundle\\MigrationsBundle\\": "" @@ -780,24 +909,42 @@ "migrations", "schema" ], - "time": "2019-11-13T12:57:41+00:00" + "support": { + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.0.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2021-03-18T21:01:51+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "629572819973f13486371cb611386eb17851e85c" + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", - "reference": "629572819973f13486371cb611386eb17851e85c", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9@dev" @@ -856,37 +1003,60 @@ "event system", "events" ], - "time": "2019-11-10T09:48:07+00:00" + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2020-05-29T18:28:51+00:00" }, { "name": "doctrine/inflector", - "version": "1.3.1", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "doctrine/coding-standard": "^8.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -915,48 +1085,67 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ "inflection", - "pluralize", - "singularize", - "string" + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/1.4.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } ], - "time": "2019-10-30T19:59:35+00:00" + "time": "2021-04-16T17:34:40+00:00" }, { "name": "doctrine/instantiator", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -970,7 +1159,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -979,24 +1168,42 @@ "constructor", "instantiate" ], - "time": "2019-10-21T16:45:58+00:00" + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -1041,46 +1248,67 @@ "parser", "php" ], - "time": "2019-10-30T14:39:59+00:00" + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2020-05-25T17:44:05+00:00" }, { "name": "doctrine/migrations", - "version": "2.2.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "a3987131febeb0e9acb3c47ab0df0af004588934" + "reference": "69eaf2ca5bc48357b43ddbdc31ccdffc0e2a0882" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/a3987131febeb0e9acb3c47ab0df0af004588934", - "reference": "a3987131febeb0e9acb3c47ab0df0af004588934", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/69eaf2ca5bc48357b43ddbdc31ccdffc0e2a0882", + "reference": "69eaf2ca5bc48357b43ddbdc31ccdffc0e2a0882", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9", + "doctrine/dbal": "^2.10", + "doctrine/event-manager": "^1.0", "ocramius/package-versions": "^1.3", "ocramius/proxy-manager": "^2.0.2", - "php": "^7.1", + "php": "^7.2", + "psr/log": "^1.1.3", "symfony/console": "^3.4||^4.0||^5.0", "symfony/stopwatch": "^3.4||^4.0||^5.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^7.0", "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3||^2.0", + "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "jdorn/sql-formatter": "^1.1", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.10", - "phpstan/phpstan-deprecation-rules": "^0.10", - "phpstan/phpstan-phpunit": "^0.10", - "phpstan/phpstan-strict-rules": "^0.10", - "phpunit/phpunit": "^7.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpstan/phpstan-symfony": "^0.12", + "phpunit/phpunit": "^8.4", "symfony/process": "^3.4||^4.0||^5.0", "symfony/yaml": "^3.4||^4.0||^5.0" }, "suggest": { - "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", "symfony/yaml": "Allows the use of yaml for migration configuration files." }, "bin": [ @@ -1089,7 +1317,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1123,39 +1351,62 @@ "migrations", "php" ], - "time": "2019-12-04T06:09:14+00:00" + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2020-06-21T08:55:42+00:00" }, { "name": "doctrine/orm", - "version": "v2.7.0", + "version": "2.7.5", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62" + "reference": "01187c9260cd085529ddd1273665217cae659640" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/4d763ca4c925f647b248b9fa01b5f47aa3685d62", - "reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62", + "url": "https://api.github.com/repos/doctrine/orm/zipball/01187c9260cd085529ddd1273665217cae659640", + "reference": "01187c9260cd085529ddd1273665217cae659640", "shasum": "" }, "require": { - "doctrine/annotations": "^1.8", + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.11.1", "doctrine/cache": "^1.9.1", "doctrine/collections": "^1.5", - "doctrine/common": "^2.11", + "doctrine/common": "^2.11 || ^3.0", "doctrine/dbal": "^2.9.3", "doctrine/event-manager": "^1.1", + "doctrine/inflector": "^1.0", "doctrine/instantiator": "^1.3", - "doctrine/persistence": "^1.2", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^1.3.3 || ^2.0", "ext-pdo": "*", "php": "^7.1", "symfony/console": "^3.0|^4.0|^5.0" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpunit/phpunit": "^7.5", - "symfony/yaml": "^3.4|^4.0|^5.0" + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.12.18", + "phpunit/phpunit": "^8.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "vimeo/psalm": "^3.11" }, "suggest": { "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" @@ -1206,20 +1457,24 @@ "database", "orm" ], - "time": "2019-11-19T08:38:05+00:00" + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.7.5" + }, + "time": "2020-12-03T08:52:14+00:00" }, { "name": "doctrine/persistence", - "version": "1.3.6", + "version": "1.3.8", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "5dd3ac5eebef2d0b074daa4440bb18f93132dee4" + "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/5dd3ac5eebef2d0b074daa4440bb18f93132dee4", - "reference": "5dd3ac5eebef2d0b074daa4440bb18f93132dee4", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", "shasum": "" }, "require": { @@ -1227,8 +1482,8 @@ "doctrine/cache": "^1.0", "doctrine/collections": "^1.0", "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.1", - "php": "^7.1" + "doctrine/reflection": "^1.2", + "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.10@dev" @@ -1236,7 +1491,8 @@ "require-dev": { "doctrine/coding-standard": "^6.0", "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^3.11" }, "type": "library", "extra": { @@ -1289,41 +1545,59 @@ "orm", "persistence" ], - "time": "2020-01-16T22:06:23+00:00" + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/1.3.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2020-06-20T12:56:16+00:00" }, { "name": "doctrine/reflection", - "version": "v1.1.0", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/reflection.git", - "reference": "bc420ead87fdfe08c03ecc3549db603a45b06d4c" + "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/bc420ead87fdfe08c03ecc3549db603a45b06d4c", - "reference": "bc420ead87fdfe08c03ecc3549db603a45b06d4c", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", + "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", "ext-tokenizer": "*", - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^5.0", + "doctrine/coding-standard": "^6.0 || ^8.2.0", "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0", - "phpstan/phpstan-phpunit": "^0.11.0", - "phpunit/phpunit": "^7.0" + "phpstan/phpstan": "^0.11.0 || ^0.12.20", + "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", + "phpunit/phpunit": "^7.5 || ^9.1.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1367,29 +1641,30 @@ "reflection", "static" ], + "support": { + "issues": "https://github.com/doctrine/reflection/issues", + "source": "https://github.com/doctrine/reflection/tree/1.2.2" + }, "abandoned": "roave/better-reflection", - "time": "2020-01-08T19:53:19+00:00" + "time": "2020-10-27T21:46:55+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.13.0", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75" + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75", - "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", "shasum": "" }, "require": { "php": ">=5.2" }, - "require-dev": { - "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd" - }, "type": "library", "autoload": { "psr-0": { @@ -1418,20 +1693,24 @@ "keywords": [ "html" ], - "time": "2020-06-29T00:56:53+00:00" + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" }, { "name": "fig/link-util", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/link-util.git", - "reference": "47f55860678a9e202206047bc02767556d298106" + "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link-util/zipball/47f55860678a9e202206047bc02767556d298106", - "reference": "47f55860678a9e202206047bc02767556d298106", + "url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", + "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", "shasum": "" }, "require": { @@ -1463,7 +1742,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common utility implementations for HTTP links", @@ -1475,28 +1754,33 @@ "psr-13", "rest" ], - "time": "2019-12-18T15:40:05+00:00" + "support": { + "issues": "https://github.com/php-fig/link-util/issues", + "source": "https://github.com/php-fig/link-util/tree/1.1.2" + }, + "time": "2021-02-03T23:36:04+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.3.0", + "version": "7.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "7008573787b430c1c1f650e3722d9bba59967628" + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", - "reference": "7008573787b430c1c1f650e3722d9bba59967628", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7 || ^2.0", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0" + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { "psr/http-client-implementation": "1.0" @@ -1506,7 +1790,7 @@ "ext-curl": "*", "php-http/client-integration-tests": "^3.0", "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1" + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { "ext-curl": "Required for CURL handler support", @@ -1516,35 +1800,59 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.3-dev" + "dev-master": "7.4-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, { "name": "Márk Sági-Kazár", "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", @@ -1556,6 +1864,10 @@ "rest", "web service" ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -1566,15 +1878,11 @@ "type": "github" }, { - "url": "https://github.com/alexeyshockov", - "type": "github" - }, - { - "url": "https://github.com/gmponos", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" } ], - "time": "2021-03-23T11:33:13+00:00" + "time": "2022-06-20T22:16:13+00:00" }, { "name": "guzzlehttp/oauth-subscriber", @@ -1629,20 +1937,24 @@ "Guzzle", "oauth" ], + "support": { + "issues": "https://github.com/guzzle/oauth-subscriber/issues", + "source": "https://github.com/guzzle/oauth-subscriber/tree/0.6.0" + }, "time": "2021-07-13T12:01:32+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "b94b2807d85443f9719887892882d0329d1e2598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", + "reference": "b94b2807d85443f9719887892882d0329d1e2598", "shasum": "" }, "require": { @@ -1654,46 +1966,79 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", "keywords": [ "promise" ], - "time": "2021-03-07T09:25:29+00:00" + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2022-08-28T14:55:35+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.0.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "1dc8d9cba3897165e16d12bb13d813afb1eb3fe7" + "reference": "69568e4293f4fa993f3b0e51c9723e1e17c41379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1dc8d9cba3897165e16d12bb13d813afb1eb3fe7", - "reference": "1dc8d9cba3897165e16d12bb13d813afb1eb3fe7", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/69568e4293f4fa993f3b0e51c9723e1e17c41379", + "reference": "69568e4293f4fa993f3b0e51c9723e1e17c41379", "shasum": "" }, "require": { @@ -1707,17 +2052,21 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -1730,13 +2079,34 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, { "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" }, { @@ -1756,7 +2126,25 @@ "uri", "url" ], - "time": "2021-06-30T20:03:07+00:00" + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.4.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2022-08-28T14:45:39+00:00" }, { "name": "http-interop/http-factory-guzzle", @@ -1810,30 +2198,34 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/http-interop/http-factory-guzzle/issues", + "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0" + }, "time": "2021-07-21T13:50:14+00:00" }, { "name": "incenteev/composer-parameter-handler", - "version": "v2.1.3", + "version": "v2.1.4", "source": { "type": "git", "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "933c45a34814f27f2345c11c37d46b3ca7303550" + "reference": "084befb11ec21faeadcddefb88b66132775ff59b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550", - "reference": "933c45a34814f27f2345c11c37d46b3ca7303550", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/084befb11ec21faeadcddefb88b66132775ff59b", + "reference": "084befb11ec21faeadcddefb88b66132775ff59b", "shasum": "" }, "require": { "php": ">=5.3.3", - "symfony/yaml": "^2.3 || ^3.0 || ^4.0" + "symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0" }, "require-dev": { "composer/composer": "^1.0@dev", - "symfony/filesystem": "^2.3 || ^3 || ^4", - "symfony/phpunit-bridge": "^4.0" + "symfony/filesystem": "^2.3 || ^3 || ^4 || ^5", + "symfony/phpunit-bridge": "^4.0 || ^5.0" }, "type": "library", "extra": { @@ -1861,7 +2253,11 @@ "keywords": [ "parameters management" ], - "time": "2018-02-13T18:05:56+00:00" + "support": { + "issues": "https://github.com/Incenteev/ParameterHandler/issues", + "source": "https://github.com/Incenteev/ParameterHandler/tree/v2.1.4" + }, + "time": "2020-03-17T21:10:00+00:00" }, { "name": "jdorn/sql-formatter", @@ -1911,28 +2307,36 @@ "highlight", "sql" ], + "support": { + "issues": "https://github.com/jdorn/sql-formatter/issues", + "source": "https://github.com/jdorn/sql-formatter/tree/master" + }, "time": "2014-01-12T16:20:24+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "1.6.0", + "version": "2.0.5", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "1e0104b46f045868f11942aea058cd7186d6c303" + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/1e0104b46f045868f11942aea058cd7186d6c303", - "reference": "1e0104b46f045868f11942aea058cd7186d6c303", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8.0", - "php": "^7.0|^8.0" + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.0|^8.5|^9.2" + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" }, "type": "library", "extra": { @@ -1955,14 +2359,18 @@ "email": "alessandro.lai85@gmail.com" } ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "description": "A library to get pretty versions strings of installed dependencies", "keywords": [ "composer", "package", "release", "versions" ], - "time": "2021-02-04T16:20:16+00:00" + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" }, { "name": "jms/aop-bundle", @@ -2013,6 +2421,10 @@ "annotations", "aop" ], + "support": { + "issues": "https://github.com/schmittjoh/JMSAopBundle/issues", + "source": "https://github.com/schmittjoh/JMSAopBundle/tree/master" + }, "time": "2018-01-16T10:22:28+00:00" }, { @@ -2060,6 +2472,10 @@ "keywords": [ "code generation" ], + "support": { + "issues": "https://github.com/schmittjoh/cg-library/issues", + "source": "https://github.com/schmittjoh/cg-library/tree/master" + }, "time": "2016-04-07T10:21:44+00:00" }, { @@ -2133,6 +2549,10 @@ "annotations", "dependency injection" ], + "support": { + "issues": "https://github.com/schmittjoh/JMSDiExtraBundle/issues", + "source": "https://github.com/schmittjoh/JMSDiExtraBundle/tree/master" + }, "time": "2018-01-12T19:04:30+00:00" }, { @@ -2188,6 +2608,10 @@ "xml", "yaml" ], + "support": { + "issues": "https://github.com/schmittjoh/metadata/issues", + "source": "https://github.com/schmittjoh/metadata/tree/1.x" + }, "time": "2018-10-26T12:40:10+00:00" }, { @@ -2223,6 +2647,10 @@ "Apache2" ], "description": "A library for easily creating recursive-descent parsers.", + "support": { + "issues": "https://github.com/schmittjoh/parser-lib/issues", + "source": "https://github.com/schmittjoh/parser-lib/tree/1.0.0" + }, "time": "2012-11-18T18:08:43+00:00" }, { @@ -2299,6 +2727,10 @@ "secure", "security" ], + "support": { + "issues": "https://github.com/schmittjoh/JMSSecurityExtraBundle/issues", + "source": "https://github.com/schmittjoh/JMSSecurityExtraBundle/tree/master" + }, "time": "2016-08-04T14:40:55+00:00" }, { @@ -2376,56 +2808,50 @@ "compression", "minification" ], + "support": { + "issues": "https://github.com/kriswallsmith/assetic/issues", + "source": "https://github.com/kriswallsmith/assetic/tree/master" + }, "time": "2016-11-11T18:43:20+00:00" }, { "name": "laminas/laminas-code", - "version": "3.4.1", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766" + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1cb8f203389ab1482bf89c0e70a04849bacd7766", - "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^2.6 || ^3.0", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.1" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "replace": { - "zendframework/zend-code": "self.version" + "php": ">=7.4, <8.2" }, "require-dev": { - "doctrine/annotations": "^1.7", + "doctrine/annotations": "^1.13.2", "ext-phar": "*", - "laminas/laminas-coding-standard": "^1.0", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "phpunit/phpunit": "^7.5.16 || ^8.4" + "laminas/laminas-coding-standard": "^2.3.0", + "laminas/laminas-stdlib": "^3.6.1", + "phpunit/phpunit": "^9.5.10", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.13.1" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", "laminas/laminas-stdlib": "Laminas\\Stdlib component" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev", - "dev-develop": "3.5.x-dev", - "dev-dev-4.0": "4.0.x-dev" - } - }, "autoload": { "psr-4": { "Laminas\\Code\\": "src/" - } + }, + "files": [ + "polyfill/ReflectionEnumPolyfill.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2435,119 +2861,24 @@ "homepage": "https://laminas.dev", "keywords": [ "code", - "laminas" - ], - "time": "2019-12-31T16:28:24+00:00" - }, - { - "name": "laminas/laminas-eventmanager", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "ce4dc0bdf3b14b7f9815775af9dfee80a63b4748" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/ce4dc0bdf3b14b7f9815775af9dfee80a63b4748", - "reference": "ce4dc0bdf3b14b7f9815775af9dfee80a63b4748", - "shasum": "" - }, - "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" - }, - "replace": { - "zendframework/zend-eventmanager": "self.version" - }, - "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-stdlib": "^2.7.3 || ^3.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" - }, - "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", - "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://laminas.dev", - "keywords": [ - "event", - "eventmanager", - "events", - "laminas" + "laminas", + "laminasframework" ], - "time": "2019-12-31T16:44:52+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "0fb9675b84a1666ab45182b6c5b29956921e818d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/0fb9675b84a1666ab45182b6c5b29956921e818d", - "reference": "0fb9675b84a1666ab45182b6c5b29956921e818d", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev", - "dev-develop": "1.1.x-dev" - }, - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" ], - "time": "2020-01-07T22:58:31+00:00" + "time": "2021-12-19T18:06:55+00:00" }, { "name": "maennchen/zipstream-php", @@ -2608,6 +2939,10 @@ "stream", "zip" ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/master" + }, "funding": [ { "url": "https://opencollective.com/zipstream", @@ -2618,16 +2953,16 @@ }, { "name": "markbaker/complex", - "version": "2.0.3", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/MarkBaker/PHPComplex.git", - "reference": "6f724d7e04606fd8adaa4e3bb381c3e9db09c946" + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/6f724d7e04606fd8adaa4e3bb381c3e9db09c946", - "reference": "6f724d7e04606fd8adaa4e3bb381c3e9db09c946", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22", "shasum": "" }, "require": { @@ -2643,51 +2978,7 @@ "autoload": { "psr-4": { "Complex\\": "classes/src/" - }, - "files": [ - "classes/src/functions/abs.php", - "classes/src/functions/acos.php", - "classes/src/functions/acosh.php", - "classes/src/functions/acot.php", - "classes/src/functions/acoth.php", - "classes/src/functions/acsc.php", - "classes/src/functions/acsch.php", - "classes/src/functions/argument.php", - "classes/src/functions/asec.php", - "classes/src/functions/asech.php", - "classes/src/functions/asin.php", - "classes/src/functions/asinh.php", - "classes/src/functions/atan.php", - "classes/src/functions/atanh.php", - "classes/src/functions/conjugate.php", - "classes/src/functions/cos.php", - "classes/src/functions/cosh.php", - "classes/src/functions/cot.php", - "classes/src/functions/coth.php", - "classes/src/functions/csc.php", - "classes/src/functions/csch.php", - "classes/src/functions/exp.php", - "classes/src/functions/inverse.php", - "classes/src/functions/ln.php", - "classes/src/functions/log2.php", - "classes/src/functions/log10.php", - "classes/src/functions/negative.php", - "classes/src/functions/pow.php", - "classes/src/functions/rho.php", - "classes/src/functions/sec.php", - "classes/src/functions/sech.php", - "classes/src/functions/sin.php", - "classes/src/functions/sinh.php", - "classes/src/functions/sqrt.php", - "classes/src/functions/tan.php", - "classes/src/functions/tanh.php", - "classes/src/functions/theta.php", - "classes/src/operations/add.php", - "classes/src/operations/subtract.php", - "classes/src/operations/multiply.php", - "classes/src/operations/divideby.php", - "classes/src/operations/divideinto.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2705,20 +2996,24 @@ "complex", "mathematics" ], - "time": "2021-06-02T09:44:11+00:00" + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.1" + }, + "time": "2021-06-29T15:32:53+00:00" }, { "name": "markbaker/matrix", - "version": "2.1.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/MarkBaker/PHPMatrix.git", - "reference": "174395a901b5ba0925f1d790fa91bab531074b61" + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/174395a901b5ba0925f1d790fa91bab531074b61", - "reference": "174395a901b5ba0925f1d790fa91bab531074b61", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/c66aefcafb4f6c269510e9ac46b82619a904c576", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576", "shasum": "" }, "require": { @@ -2738,25 +3033,7 @@ "autoload": { "psr-4": { "Matrix\\": "classes/src/" - }, - "files": [ - "classes/src/Functions/adjoint.php", - "classes/src/Functions/antidiagonal.php", - "classes/src/Functions/cofactors.php", - "classes/src/Functions/determinant.php", - "classes/src/Functions/diagonal.php", - "classes/src/Functions/identity.php", - "classes/src/Functions/inverse.php", - "classes/src/Functions/minors.php", - "classes/src/Functions/trace.php", - "classes/src/Functions/transpose.php", - "classes/src/Operations/add.php", - "classes/src/Operations/directsum.php", - "classes/src/Operations/subtract.php", - "classes/src/Operations/multiply.php", - "classes/src/Operations/divideby.php", - "classes/src/Operations/divideinto.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2775,20 +3052,24 @@ "matrix", "vector" ], - "time": "2021-05-25T15:42:17+00:00" + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.0" + }, + "time": "2021-07-01T19:01:15+00:00" }, { "name": "monolog/monolog", - "version": "1.25.3", + "version": "1.26.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1" + "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1", - "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", "shasum": "" }, "require": { @@ -2802,11 +3083,10 @@ "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", + "phpstan/phpstan": "^0.12.59", "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", "ruflin/elastica": ">=0.90 <3.0", "sentry/sentry": "^0.13", "swiftmailer/swiftmailer": "^5.3|^6.0" @@ -2825,11 +3105,6 @@ "sentry/sentry": "Allow sending log messages to a Sentry server" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -2853,7 +3128,21 @@ "logging", "psr-3" ], - "time": "2019-12-20T14:15:16+00:00" + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2021-05-28T08:32:12+00:00" }, { "name": "myclabs/php-enum", @@ -2899,6 +3188,10 @@ "keywords": [ "enum" ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.3" + }, "funding": [ { "url": "https://github.com/mnapoli", @@ -2913,41 +3206,41 @@ }, { "name": "ocramius/proxy-manager", - "version": "2.6.1", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "dec37bfb3c3594440ee4fa263494189344787d22" + "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/dec37bfb3c3594440ee4fa263494189344787d22", - "reference": "dec37bfb3c3594440ee4fa263494189344787d22", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/21e2b4aa7d7661e7641cc6362fc8635ddcfa8464", + "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464", "shasum": "" }, "require": { - "laminas/laminas-code": "^3.4.1", - "ocramius/package-versions": "^1.5.1", - "php": "7.4.*", - "webimpress/safe-writer": "^2.0" + "composer-runtime-api": "^2.1.0", + "laminas/laminas-code": "^4.3.0", + "php": "~7.4.1 || ~8.0.0", + "webimpress/safe-writer": "^2.2.0" }, "conflict": { "doctrine/annotations": "<1.6.1", "laminas/laminas-stdlib": "<3.2.1", + "thecodingmachine/safe": "<1.3.3", "zendframework/zend-stdlib": "<3.2.1" }, "require-dev": { - "doctrine/coding-standard": "^6.0.0", + "codelicia/xulieta": "^0.1.6", + "doctrine/coding-standard": "^8.2.1", "ext-phar": "*", - "infection/infection": "^0.15.0", - "mikey179/vfsstream": "^1.6.8", - "nikic/php-parser": "^4.3.0", - "phpbench/phpbench": "^0.16.10", - "phpunit/phpunit": "^8.5.1", - "slevomat/coding-standard": "^5.0.4", - "squizlabs/php_codesniffer": "^3.5.3", - "symfony/console": "^4.4.2", - "vimeo/psalm": "3.7.0" + "infection/infection": "^0.21.5", + "nikic/php-parser": "^4.10.5", + "phpbench/phpbench": "^0.17.1 || 1.0.0-alpha2", + "phpunit/phpunit": "^9.5.4", + "slevomat/coding-standard": "^6.3.10", + "squizlabs/php_codesniffer": "^3.6.0", + "vimeo/psalm": "^4.4.1" }, "suggest": { "laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)", @@ -2986,52 +3279,21 @@ "proxy pattern", "service proxies" ], - "time": "2020-01-27T09:25:51+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" + "support": { + "issues": "https://github.com/Ocramius/ProxyManager/issues", + "source": "https://github.com/Ocramius/ProxyManager/tree/2.13.0" }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", + "type": "tidelift" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" + "time": "2021-06-09T10:16:06+00:00" }, { "name": "php-http/client-common", @@ -3102,6 +3364,10 @@ "http", "httplug" ], + "support": { + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.4.0" + }, "time": "2021-07-05T08:19:25+00:00" }, { @@ -3166,6 +3432,10 @@ "message", "psr7" ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.14.1" + }, "time": "2021-09-18T07:57:46+00:00" }, { @@ -3224,6 +3494,10 @@ "client", "http" ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/master" + }, "time": "2020-07-13T15:43:23+00:00" }, { @@ -3294,6 +3568,10 @@ "message", "psr-7" ], + "support": { + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.12.0" + }, "time": "2021-08-29T09:13:12+00:00" }, { @@ -3344,6 +3622,10 @@ "stream", "uri" ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, "time": "2015-12-19T14:08:53+00:00" }, { @@ -3397,20 +3679,24 @@ "keywords": [ "promise" ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.1.0" + }, "time": "2020-07-07T09:29:14+00:00" }, { "name": "phpoffice/phpspreadsheet", - "version": "1.16.0", + "version": "1.20.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "76d4323b85129d0c368149c831a07a3e258b2b50" + "reference": "44436f270bb134b4a94670f3d020a85dfa0a3c02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/76d4323b85129d0c368149c831a07a3e258b2b50", - "reference": "76d4323b85129d0c368149c831a07a3e258b2b50", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/44436f270bb134b4a94670f3d020a85dfa0a3c02", + "reference": "44436f270bb134b4a94670f3d020a85dfa0a3c02", "shasum": "" }, "require": { @@ -3429,22 +3715,25 @@ "ext-zlib": "*", "ezyang/htmlpurifier": "^4.13", "maennchen/zipstream-php": "^2.1", - "markbaker/complex": "^1.5||^2.0", - "markbaker/matrix": "^1.2||^2.0", - "php": "^7.2||^8.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^7.3 || ^8.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "psr/simple-cache": "^1.0" }, "require-dev": { - "dompdf/dompdf": "^0.8.5", - "friendsofphp/php-cs-fixer": "^2.16", + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "dompdf/dompdf": "^1.0", + "friendsofphp/php-cs-fixer": "^3.2", "jpgraph/jpgraph": "^4.0", "mpdf/mpdf": "^8.0", "phpcompatibility/php-compatibility": "^9.3", - "phpunit/phpunit": "^8.5||^9.3", - "squizlabs/php_codesniffer": "^3.5", - "tecnickcom/tcpdf": "^6.3" + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.6", + "tecnickcom/tcpdf": "^6.4" }, "suggest": { "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)", @@ -3494,33 +3783,37 @@ "xls", "xlsx" ], - "time": "2020-12-31T18:03:49+00:00" + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.20.0" + }, + "time": "2021-11-23T15:23:42+00:00" }, { "name": "phpoption/phpoption", - "version": "1.7.2", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0" + "php": "^7.0 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -3535,11 +3828,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -3549,8 +3844,22 @@ "php", "type" ], - "time": "2019-12-15T19:35:24+00:00" - }, + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2021-12-04T23:24:31+00:00" + }, { "name": "psr/cache", "version": "1.0.1", @@ -3595,31 +3904,29 @@ "psr", "psr-6" ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -3632,7 +3939,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -3644,7 +3951,11 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/http-client", @@ -3693,6 +4004,9 @@ "psr", "psr-18" ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, "time": "2020-06-29T06:28:15+00:00" }, { @@ -3745,6 +4059,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, "time": "2019-04-30T12:38:16+00:00" }, { @@ -3795,6 +4112,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { @@ -3844,20 +4164,23 @@ "psr-13", "rest" ], + "support": { + "source": "https://github.com/php-fig/link/tree/master" + }, "time": "2016-10-28T16:06:13+00:00" }, { "name": "psr/log", - "version": "1.1.2", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { @@ -3881,7 +4204,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -3891,7 +4214,10 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" }, { "name": "psr/simple-cache", @@ -3939,6 +4265,9 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { @@ -3979,6 +4308,10 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { @@ -4031,6 +4364,10 @@ "configuration", "distribution" ], + "support": { + "issues": "https://github.com/sensiolabs/SensioDistributionBundle/issues", + "source": "https://github.com/sensiolabs/SensioDistributionBundle/tree/master" + }, "abandoned": true, "time": "2019-06-18T15:43:58+00:00" }, @@ -4105,6 +4442,10 @@ "annotations", "controllers" ], + "support": { + "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v5.4.1" + }, "time": "2019-07-08T08:31:25+00:00" }, { @@ -4153,6 +4494,10 @@ } ], "description": "A security checker for your composer.lock", + "support": { + "issues": "https://github.com/sensiolabs/security-checker/issues", + "source": "https://github.com/sensiolabs/security-checker/tree/master" + }, "abandoned": "https://github.com/fabpot/local-php-security-checker", "time": "2019-11-01T13:20:14+00:00" }, @@ -4197,6 +4542,9 @@ "logging", "sentry" ], + "support": { + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.1.1" + }, "funding": [ { "url": "https://sentry.io/", @@ -4297,6 +4645,10 @@ "logging", "sentry" ], + "support": { + "issues": "https://github.com/getsentry/sentry-php/issues", + "source": "https://github.com/getsentry/sentry-php/tree/3.3.5" + }, "funding": [ { "url": "https://sentry.io/", @@ -4407,6 +4759,10 @@ "sentry", "symfony" ], + "support": { + "issues": "https://github.com/getsentry/sentry-symfony/issues", + "source": "https://github.com/getsentry/sentry-symfony/tree/4.2.5" + }, "funding": [ { "url": "https://sentry.io/", @@ -4471,6 +4827,10 @@ "mail", "mailer" ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v5.4.12" + }, "abandoned": "symfony/mailer", "time": "2018-07-31T09:26:32+00:00" }, @@ -4542,6 +4902,10 @@ "compression", "minification" ], + "support": { + "issues": "https://github.com/symfony/assetic-bundle/issues", + "source": "https://github.com/symfony/assetic-bundle/tree/master" + }, "abandoned": "symfony/webpack-encore-pack", "time": "2017-07-14T07:26:46+00:00" }, @@ -4605,6 +4969,9 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4621,48 +4988,117 @@ ], "time": "2021-08-17T14:20:01+00:00" }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "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": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "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": "2022-01-02T09:53:40+00:00" + }, { "name": "symfony/http-client", - "version": "v5.0.4", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "4240ae267d89db5b694bdb5712e691b1e24cdc26" + "reference": "5e344f1402584a56631c81a24ec9403e3159c790" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/4240ae267d89db5b694bdb5712e691b1e24cdc26", - "reference": "4240ae267d89db5b694bdb5712e691b1e24cdc26", + "url": "https://api.github.com/repos/symfony/http-client/zipball/5e344f1402584a56631c81a24ec9403e3159c790", + "reference": "5e344f1402584a56631c81a24ec9403e3159c790", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/log": "^1.0", - "symfony/http-client-contracts": "^1.1.8|^2", + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-client-contracts": "^2.4", "symfony/polyfill-php73": "^1.11", - "symfony/service-contracts": "^1.0|^2" + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1" + "symfony/http-client-implementation": "2.4" }, "require-dev": { - "guzzlehttp/promises": "^1.3.1", + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpClient\\": "" @@ -4685,26 +5121,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpClient component", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", - "time": "2020-01-31T09:13:47+00:00" + "support": { + "source": "https://github.com/symfony/http-client/tree/v5.4.2" + }, + "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": "2021-12-29T10:10:35+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.0.1", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "378868b61b85c5cac6822d4f84e26999c9f2e881" + "reference": "ec82e57b5b714dbb69300d348bd840b345e24166" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/378868b61b85c5cac6822d4f84e26999c9f2e881", - "reference": "378868b61b85c5cac6822d4f84e26999c9f2e881", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166", + "reference": "ec82e57b5b714dbb69300d348bd840b345e24166", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "suggest": { "symfony/http-client-implementation": "" @@ -4712,7 +5165,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4744,40 +5201,61 @@ "interoperability", "standards" ], - "time": "2019-11-26T23:25:11+00:00" + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.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": "2021-11-03T09:24:47+00:00" }, { "name": "symfony/mime", - "version": "v5.0.4", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59" + "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2a3c7fee1f1a0961fa9cf360d5da553d05095e59", - "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59", + "url": "https://api.github.com/repos/symfony/mime/zipball/1bfd938cf9562822c05c4d00e8f92134d3c8e42d", + "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<4.4" }, "require-dev": { - "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^4.4|^5.0" + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.2|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Mime\\": "" @@ -4800,26 +5278,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A library to manipulate MIME messages", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", "keywords": [ "mime", "mime-type" ], - "time": "2020-01-04T14:08:26+00:00" + "support": { + "source": "https://github.com/symfony/mime/tree/v5.4.2" + }, + "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": "2021-12-28T17:15:56+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd" + "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/dd80460fcfe1fa2050a7103ad818e9d0686ce6fd", - "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e495f5c7e4e672ffef4357d4a4d85f010802f940", + "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940", "shasum": "" }, "require": { @@ -4832,7 +5327,7 @@ }, "require-dev": { "symfony/console": "~3.4 || ~4.0 || ^5.0", - "symfony/phpunit-bridge": "^3.4.19 || ^4.0 || ^5.0", + "symfony/phpunit-bridge": "^4.4 || ^5.0", "symfony/yaml": "~3.4 || ~4.0 || ^5.0" }, "type": "symfony-bundle", @@ -4869,29 +5364,51 @@ "log", "logging" ], - "time": "2019-11-13T13:11:14+00:00" + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.6.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": "2020-10-06T15:12:11+00:00" }, { "name": "symfony/polyfill-apcu", - "version": "v1.13.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116" + "reference": "80f7fb64c5b64ebcba76f40215e63808a2062a18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a8e961c841b9ec52927a87914f8820a1ad8f8116", - "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/80f7fb64c5b64ebcba76f40215e63808a2062a18", + "reference": "80f7fb64c5b64ebcba76f40215e63808a2062a18", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4925,24 +5442,44 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-apcu/tree/v1.23.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": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.13.1", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" @@ -4950,16 +5487,20 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4983,38 +5524,67 @@ "polyfill", "portable" ], - "time": "2019-11-27T13:56:44+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.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": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.13.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b" + "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", - "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4a80a521d6176870b6445cfb469c130f9cae1dda", + "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0|~4.0|~5.0" + "php": ">=7.1" }, "suggest": { - "ext-intl": "For best performance" + "ext-intl": "For best performance and support of other locales than \"en\"" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5041,7 +5611,24 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.23.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": "2021-05-24T10:04:56+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -5111,6 +5698,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5192,6 +5782,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5269,6 +5862,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5287,35 +5883,30 @@ }, { "name": "symfony/polyfill-php56", - "version": "v1.13.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4" + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4", - "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": ">=7.1" }, - "type": "library", + "type": "metapackage", "extra": { "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" + "dev-main": "1.20-dev" }, - "files": [ - "bootstrap.php" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5339,42 +5930,51 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.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": "2020-10-23T14:02:19+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.13.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "af23c7bb26a73b850840823662dda371484926c4" + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4", - "reference": "af23c7bb26a73b850840823662dda371484926c4", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" + "php": ">=7.1" }, - "type": "library", + "type": "metapackage", "extra": { "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "dev-main": "1.20-dev" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5398,7 +5998,24 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.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": "2020-10-23T14:02:19+00:00" }, { "name": "symfony/polyfill-php72", @@ -5457,6 +6074,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5475,25 +6095,29 @@ }, { "name": "symfony/polyfill-php73", - "version": "v1.13.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -5529,7 +6153,24 @@ "portable", "shim" ], - "time": "2019-11-27T16:25:15+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.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": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-php80", @@ -5595,6 +6236,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5611,58 +6255,6 @@ ], "time": "2021-07-28T13:41:28+00:00" }, - { - "name": "symfony/polyfill-util", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "964a67f293b66b95883a5ed918a65354fcd2258f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f", - "reference": "964a67f293b66b95883a5ed918a65354fcd2258f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "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 utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2019-11-27T13:56:44+00:00" - }, { "name": "symfony/polyfill-uuid", "version": "v1.23.0", @@ -5723,6 +6315,9 @@ "portable", "uuid" ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.23.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5802,41 +6397,45 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/master" + }, "time": "2019-03-11T18:22:33+00:00" }, { "name": "symfony/security-acl", - "version": "v3.0.4", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/security-acl.git", - "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43" + "reference": "3090d19879577c2993314c68a2cf6c5723744049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-acl/zipball/dc8f10b3bda34e9ddcad49edc7accf61f31fce43", - "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43", + "url": "https://api.github.com/repos/symfony/security-acl/zipball/3090d19879577c2993314c68a2cf6c5723744049", + "reference": "3090d19879577c2993314c68a2cf6c5723744049", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/security-core": "^2.8|^3.0|^4.0|^5.0" + "php": ">=7.1.3", + "symfony/security-core": "^3.4|^4.4|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.13.1|~3.0.0" }, "require-dev": { - "doctrine/common": "~2.2", - "doctrine/dbal": "~2.2", + "doctrine/common": "^2.2|^3", + "doctrine/dbal": "^2.13.1|^3.1", + "doctrine/persistence": "^1.3.3|^2", "psr/log": "~1.0", - "symfony/phpunit-bridge": "^2.8|^3.0|^4.0|^5.0" - }, - "suggest": { - "doctrine/dbal": "For using the built-in ACL implementation", - "symfony/class-loader": "For using the ACL generateSql script", - "symfony/finder": "For using the ACL generateSql script" + "symfony/finder": "^3.4|^4.4|^5.0", + "symfony/phpunit-bridge": "^5.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -5857,31 +6456,53 @@ "email": "fabien@symfony.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - ACL (Access Control List)", + "homepage": "https://symfony.com", + "support": { + "issues": "https://github.com/symfony/security-acl/issues", + "source": "https://github.com/symfony/security-acl/tree/v3.1.2" + }, + "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" } ], - "description": "Symfony Security Component - ACL (Access Control List)", - "homepage": "https://symfony.com", - "time": "2019-12-12T09:55:57+00:00" + "time": "2021-04-28T18:28:16+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.0.1", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/container": "^1.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -5889,7 +6510,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5921,7 +6546,24 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.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": "2021-11-04T16:48:04+00:00" }, { "name": "symfony/swiftmailer-bundle", @@ -5980,6 +6622,10 @@ ], "description": "Symfony SwiftmailerBundle", "homepage": "http://symfony.com", + "support": { + "issues": "https://github.com/symfony/swiftmailer-bundle/issues", + "source": "https://github.com/symfony/swiftmailer-bundle/tree/2.6" + }, "time": "2017-10-19T01:06:41+00:00" }, { @@ -6134,6 +6780,10 @@ "keywords": [ "framework" ], + "support": { + "issues": "https://github.com/symfony/symfony/issues", + "source": "https://github.com/symfony/symfony/tree/v3.4.49" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6195,36 +6845,39 @@ "i18n", "text" ], + "support": { + "issues": "https://github.com/twigphp/Twig-extensions/issues", + "source": "https://github.com/twigphp/Twig-extensions/tree/v1.0.1" + }, "abandoned": true, "time": "2013-10-18T19:37:15+00:00" }, { "name": "twig/twig", - "version": "v1.42.4", + "version": "v1.44.7", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152" + "reference": "0887422319889e442458e48e2f3d9add1a172ad5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e587180584c3d2d6cb864a0454e777bb6dcb6152", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/0887422319889e442458e48e2f3d9add1a172ad5", + "reference": "0887422319889e442458e48e2f3d9add1a172ad5", "shasum": "" }, "require": { - "php": ">=5.5.0", + "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "^3.4|^4.2", - "symfony/phpunit-bridge": "^4.4@dev|^5.0" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.42-dev" + "dev-master": "1.44-dev" } }, "autoload": { @@ -6248,7 +6901,6 @@ }, { "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", "role": "Contributors" }, { @@ -6262,34 +6914,49 @@ "keywords": [ "templating" ], - "time": "2019-11-11T16:49:32+00:00" + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v1.44.7" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2022-09-28T08:38:36+00:00" }, { "name": "webimpress/safe-writer", - "version": "2.0.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/webimpress/safe-writer.git", - "reference": "d03bea3b98abe1d4c8b24cbebf524361ffaafee4" + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/d03bea3b98abe1d4c8b24cbebf524361ffaafee4", - "reference": "d03bea3b98abe1d4c8b24cbebf524361ffaafee4", + "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^8.4.3", - "webimpress/coding-standard": "dev-develop" + "phpunit/phpunit": "^9.5.4", + "vimeo/psalm": "^4.7", + "webimpress/coding-standard": "^1.2.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev", - "dev-develop": "2.1.x-dev", + "dev-master": "2.2.x-dev", + "dev-develop": "2.3.x-dev", "dev-release-1.0": "1.0.x-dev" } }, @@ -6310,7 +6977,17 @@ "safe writer", "webimpress" ], - "time": "2019-11-27T19:40:53+00:00" + "support": { + "issues": "https://github.com/webimpress/safe-writer/issues", + "source": "https://github.com/webimpress/safe-writer/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], + "time": "2021-04-19T16:34:45+00:00" }, { "name": "zendframework/zend-ldap", @@ -6363,6 +7040,14 @@ "ldap", "zf" ], + "support": { + "chat": "https://zendframework-slack.herokuapp.com", + "docs": "https://docs.zendframework.com/zend-ldap/", + "forum": "https://discourse.zendframework.com/c/questions/components", + "issues": "https://github.com/zendframework/zend-ldap/issues", + "rss": "https://github.com/zendframework/zend-ldap/releases.atom", + "source": "https://github.com/zendframework/zend-ldap" + }, "abandoned": "laminas/laminas-ldap", "time": "2019-10-17T16:26:26+00:00" } @@ -6370,23 +7055,20 @@ "packages-dev": [ { "name": "myclabs/deep-copy", - "version": "1.9.5", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", "shasum": "" }, "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/collections": "^1.0", @@ -6414,7 +7096,17 @@ "object", "object graph" ], - "time": "2020-01-17T21:11:47+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" }, { "name": "phar-io/manifest", @@ -6469,6 +7161,10 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, "time": "2018-07-08T19:23:20+00:00" }, { @@ -6516,32 +7212,33 @@ } ], "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/master" + }, "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~6" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -6568,45 +7265,46 @@ "reflection", "static analysis" ], - "time": "2018-08-07T13:53:10+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6617,38 +7315,45 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.2 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -6667,37 +7372,41 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + }, + "time": "2021-10-02T14:08:47+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.10.2", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -6730,7 +7439,11 @@ "spy", "stub" ], - "time": "2020-01-20T15:57:02+00:00" + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6793,27 +7506,31 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + }, "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.2", + "version": "2.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -6843,7 +7560,17 @@ "filesystem", "iterator" ], - "time": "2018-09-13T20:33:42+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:42:26+00:00" }, { "name": "phpunit/php-text-template", @@ -6884,27 +7611,31 @@ "keywords": [ "template" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.2", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -6933,25 +7664,35 @@ "keywords": [ "timer" ], - "time": "2019-06-07T04:22:29+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:20:02+00:00" }, { "name": "phpunit/php-token-stream", - "version": "3.1.1", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.1" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^7.0" @@ -6982,8 +7723,18 @@ "keywords": [ "tokenizer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "abandoned": true, - "time": "2019-09-17T06:23:10+00:00" + "time": "2021-07-26T12:15:06+00:00" }, { "name": "phpunit/phpunit", @@ -7067,27 +7818,31 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + }, "time": "2020-01-08T08:45:45+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -7112,29 +7867,39 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:15:22+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", + "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", "shasum": "" }, "require": { - "php": "^7.1", + "php": ">=7.1", "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -7152,6 +7917,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -7163,10 +7932,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -7176,24 +7941,34 @@ "compare", "equality" ], - "time": "2018-07-12T15:12:46+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:04:30+00:00" }, { "name": "sebastian/diff", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.0", @@ -7215,13 +7990,13 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", @@ -7232,24 +8007,34 @@ "unidiff", "unified diff" ], - "time": "2019-02-04T06:01:07+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:59:04+00:00" }, { "name": "sebastian/environment", - "version": "4.2.3", + "version": "4.2.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^7.5" @@ -7285,29 +8070,39 @@ "environment", "hhvm" ], - "time": "2019-11-20T08:46:58+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:53:42+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.2", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", + "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", "shasum": "" }, "require": { - "php": "^7.0", + "php": ">=7.0", "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -7352,7 +8147,17 @@ "export", "exporter" ], - "time": "2019-09-14T09:02:43+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T13:51:24+00:00" }, { "name": "sebastian/global-state", @@ -7403,24 +8208,28 @@ "keywords": [ "global state" ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + }, "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", "shasum": "" }, "require": { - "php": "^7.0", + "php": ">=7.0", "sebastian/object-reflector": "^1.1.1", "sebastian/recursion-context": "^3.0" }, @@ -7450,24 +8259,34 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:40:27+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" @@ -7495,24 +8314,34 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:37:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" @@ -7533,14 +8362,14 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" @@ -7548,24 +8377,34 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:34:24+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.1" }, "type": "library", "extra": { @@ -7590,8 +8429,17 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "abandoned": true, - "time": "2018-10-04T04:07:39+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:30:19+00:00" }, { "name": "sebastian/version", @@ -7634,6 +8482,10 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" + }, "time": "2016-10-03T07:35:21+00:00" }, { @@ -7688,28 +8540,32 @@ } ], "description": "This bundle generates code for you", + "support": { + "issues": "https://github.com/sensiolabs/SensioGeneratorBundle/issues", + "source": "https://github.com/sensiolabs/SensioGeneratorBundle/tree/master" + }, "abandoned": "symfony/maker-bundle", "time": "2017-12-07T15:36:41+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v3.4.37", + "version": "v3.4.47", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "ebfd1b428ffc14306e843092763f228bfba168d0" + "reference": "120273ad5d03a8deee08ca9260e2598f288f2bac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ebfd1b428ffc14306e843092763f228bfba168d0", - "reference": "ebfd1b428ffc14306e843092763f228bfba168d0", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/120273ad5d03a8deee08ca9260e2598f288f2bac", + "reference": "120273ad5d03a8deee08ca9260e2598f288f2bac", "shasum": "" }, "require": { "php": ">=5.3.3" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2" }, "suggest": { "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" @@ -7719,9 +8575,6 @@ ], "type": "symfony-bridge", "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - }, "thanks": { "name": "phpunit/phpunit", "url": "https://github.com/sebastianbergmann/phpunit" @@ -7754,27 +8607,44 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com", - "time": "2020-01-14T14:27:59+00:00" + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v3.4.47" + }, + "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": "2020-11-13T16:28:59+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -7794,33 +8664,49 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13T22:48:21+00:00" + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", - "version": "1.6.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "vimeo/psalm": "<3.6.0" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -7842,7 +8728,11 @@ "check", "validate" ], - "time": "2019-11-24T13:36:37+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], @@ -7863,7 +8753,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.4" + "php": "7.4.28" }, - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.3.0" } diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..217022e7 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,5 @@ +files: + - source: /src/Netresearch/TimeTrackerBundle/Resources/translations/activities.de.yml + translation: /src/Netresearch/TimeTrackerBundle/Resources/translations/activities.%two_letters_code%.yml + - source: /src/Netresearch/TimeTrackerBundle/Resources/translations/messages.de.yml + translation: /src/Netresearch/TimeTrackerBundle/Resources/translations/messages.%two_letters_code%.yml diff --git a/src/Netresearch/TimeTrackerBundle/Controller/BaseController.php b/src/Netresearch/TimeTrackerBundle/Controller/BaseController.php index ba4de88f..e80e8634 100644 --- a/src/Netresearch/TimeTrackerBundle/Controller/BaseController.php +++ b/src/Netresearch/TimeTrackerBundle/Controller/BaseController.php @@ -168,9 +168,12 @@ protected function checkLogin(Request $request) ->getRepository('NetresearchTimeTrackerBundle:User') ->findOneById($userId); - // Re-Login by cookie - if (LoginHelper::checkCookieUserName($user->getUsername())) { + // Re-Login with "keep me logged in" cookie + if (LoginHelper::checkCookieUserName($user->getUsername(), $this->container->getParameter('secret'))) { $this->setLoggedIn($request, $user, true); + } else { + LoginHelper::deleteCookie(); + return false; } return true; @@ -252,7 +255,10 @@ protected function setLoggedIn(Request $request, $user, $setCookie = true) // Set login cookies, if wanted if ($setCookie) { - LoginHelper::setCookie($user->getId(), $user->getUsername()); + LoginHelper::setCookie( + $user->getId(), $user->getUsername(), + $this->container->getParameter('secret') + ); } return $this->redirect($this->generateUrl('_start')); diff --git a/src/Netresearch/TimeTrackerBundle/Helper/LoginHelper.php b/src/Netresearch/TimeTrackerBundle/Helper/LoginHelper.php index 642ac8fc..07665756 100644 --- a/src/Netresearch/TimeTrackerBundle/Helper/LoginHelper.php +++ b/src/Netresearch/TimeTrackerBundle/Helper/LoginHelper.php @@ -4,17 +4,30 @@ /** * Helper for permanent timetracker login + * + * The "keep me logged in" cookie's design makes sure that + * + * 1. no attacker can generate such a cookie because the secret + * is known only to the server + * + * 2. the hash cannot be cracked (and the secrect obtained) by pre-computed + * hash tables because we add a long random token to the hashed data */ class LoginHelper { const COOKIE_NAME = 'nr_timetracker'; - public static function setCookie($userId, $userName) + public static function setCookie($userId, $userName, $secret) { - setcookie(self::COOKIE_NAME, - $userId . ':' . md5($userName), - time() + (14*24*60*60)); + $token = bin2hex(random_bytes(32)); + setcookie( + self::COOKIE_NAME, + $userId + . ':' . static::hash($userName, $secret, $token) + . ':' . $token, + time() + (14*24*60*60) + ); } public static function deleteCookie() @@ -32,13 +45,14 @@ private static function getCookieData() return false; } - if (!preg_match('/^([0-9]+):([a-z0-9]{32})$/i', $_COOKIE[self::COOKIE_NAME], $matches)) { + if (!preg_match('/^([0-9]+):([a-z0-9]+):([a-z0-9]+)$/i', $_COOKIE[self::COOKIE_NAME], $matches)) { return false; } return array( - 'userId' => (int) $matches[1], - 'userName' => (string) $matches[2], + 'userId' => (int) $matches[1], + 'hash' => (string) $matches[2], + 'token' => (string) $matches[3], ); } @@ -52,13 +66,19 @@ public static function getCookieUserId() return $cookieData['userId']; } - public static function checkCookieUserName($userName) + public static function checkCookieUserName($expectedUserName, $secret) { $cookieData = self::getCookieData(); if (!is_array($cookieData)) { return false; } - return (bool) (md5($userName) === $cookieData['userName']); + $expectedHash = static::hash($expectedUserName, $secret, $cookieData['token']); + return $expectedHash == $cookieData['hash']; + } + + private static function hash($userName, $secret, $token) + { + return hash('sha256', $userName . $secret . $token); } }