Server : LiteSpeed System : Linux server 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : alsaif ( 1057) PHP Version : 7.4.33 Disable Function : show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/alsaif/domains/alsaif.group/private_html/libraries/regularlabs/src/Condition/ |
<?php
/**
* @package Regular Labs Library
* @version 23.9.3039
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2023 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
namespace RegularLabs\Library\Condition;
defined('_JEXEC') or die;
use Joomla\CMS\Uri\Uri as JUri;
use RegularLabs\Library\Condition;
use RegularLabs\Library\RegEx;
use RegularLabs\Library\StringHelper;
/**
* Class Url
*
* @package RegularLabs\Library\Condition
*/
class Url extends Condition
{
public function pass()
{
$regex = $this->params->regex ?? false;
$casesensitive = $this->params->casesensitive ?? false;
if ( ! is_array($this->selection))
{
$this->selection = explode("\n", $this->selection);
}
if (count($this->selection) == 1)
{
$this->selection = explode("\n", $this->selection[0]);
}
$url = JUri::getInstance();
$url = $url->toString();
$urls = [
StringHelper::html_entity_decoder(urldecode($url)),
urldecode($url),
StringHelper::html_entity_decoder($url),
$url,
];
$urls = array_unique($urls);
$pass = false;
foreach ($urls as $url)
{
if ( ! $casesensitive)
{
$url = StringHelper::strtolower($url);
}
foreach ($this->selection as $selection)
{
$selection = trim($selection);
if ($selection == '')
{
continue;
}
if ($regex)
{
$url_part = str_replace(['#', '&'], ['\#', '(&|&)'], $selection);
if (@RegEx::match($url_part, $url, $match, $casesensitive ? 's' : 'si'))
{
$pass = true;
break;
}
continue;
}
if ( ! $casesensitive)
{
$selection = StringHelper::strtolower($selection);
}
if (strpos($url, $selection) !== false)
{
$pass = true;
break;
}
}
if ($pass)
{
break;
}
}
return $this->_($pass);
}
}