2020-11-01 11:31:16 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This file is part of Flarum.
|
|
|
|
*
|
|
|
|
* For detailed copyright and license information, please view the
|
|
|
|
* LICENSE file that was distributed with this source code.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Flarum\Extend;
|
|
|
|
|
|
|
|
use Flarum\Extension\Extension;
|
2020-11-08 21:36:38 -05:00
|
|
|
use Flarum\Foundation\ContainerUtil;
|
2020-11-01 11:31:16 -05:00
|
|
|
use Illuminate\Contracts\Container\Container;
|
|
|
|
|
|
|
|
class Validator implements ExtenderInterface
|
|
|
|
{
|
|
|
|
private $configurationCallbacks = [];
|
|
|
|
private $validator;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $validatorClass: The ::class attribute of the validator you are modifying.
|
|
|
|
* The validator should inherit from \Flarum\Foundation\AbstractValidator.
|
|
|
|
*/
|
|
|
|
public function __construct($validatorClass)
|
|
|
|
{
|
|
|
|
$this->validator = $validatorClass;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Configure the validator. This is often used to adjust validation rules, but can be
|
|
|
|
* used to make other changes to the validator as well.
|
|
|
|
*
|
|
|
|
* @param callable $callable
|
|
|
|
*
|
|
|
|
* The callable can be a closure or invokable class, and should accept:
|
|
|
|
* - \Flarum\Foundation\AbstractValidator $flarumValidator: The Flarum validator wrapper
|
|
|
|
* - \Illuminate\Validation\Validator $validator: The Laravel validator instance
|
|
|
|
*/
|
|
|
|
public function configure($callback)
|
|
|
|
{
|
|
|
|
$this->configurationCallbacks[] = $callback;
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function extend(Container $container, Extension $extension = null)
|
|
|
|
{
|
|
|
|
$container->resolving($this->validator, function ($validator, $container) {
|
|
|
|
foreach ($this->configurationCallbacks as $callback) {
|
2020-11-08 21:36:38 -05:00
|
|
|
$validator->addConfiguration(ContainerUtil::wrapCallback($callback, $container));
|
2020-11-01 11:31:16 -05:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|