public function validateUrl($url, array $options = [], array $context = [])
{
if (!$url) {
if (!empty($options['allowEmpty']) && empty($options['required'])) {
return true;
}
return false;
}
if (!isset($options['autoComplete']) || $options['autoComplete'] !== false) {
$url = $this->_autoCompleteUrl($url);
}
if (!isset($options['strict']) || $options['strict'] !== false) {
$options['strict'] = true;
}
// validation
if (!Validation::url($url, $options['strict']) && env('REMOTE_ADDR') && env('REMOTE_ADDR') !== '127.0.0.1') {
return false;
}
// same domain?
if (!empty($options['sameDomain']) && env('HTTP_HOST')) {
$is = parse_url($url, PHP_URL_HOST);
$expected = env('HTTP_HOST');
if (mb_strtolower($is) !== mb_strtolower($expected)) {
return false;
}
}
if (isset($options['deep']) && $options['deep'] === false) {
return true;
}
return $this->_validUrl($url);
}