Current Directory: /home/astoriaah/www/plugins/system/shlib/shl_packages/api
Viewing File: /home/astoriaah/www/plugins/system/shlib/shl_packages/api/input.php
<?php
/**
* Shlib - programming library
*
* @author Yannick Gaultier
* @copyright (c) Yannick Gaultier 2020
* @package shlib
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @version 0.4.0.716
* @date 2020-12-07
*/
defined('_JEXEC') or die;
/**
* Parse and manage the named parameters of an API request.
*
*/
class ShlApi_Input
{
/**
* @var array Associative array of api request named parameters.
*/
private $parameters = array();
/**
* Stores parameters, based on a list of names and values. There may be less values than names.
* Data can be passed either as:
*
* - two arrays, one for the keys, one for the values
* - one associative array
*
* @param array $names Ordered list of names parameters.
* @param array $values Ordered list of parameters values (optional)
*/
public function __construct($names, $values = null)
{
// input type 1: keys and values are in different arrays
if (!is_null($values))
{
for ($index = 0; $index < count($values); $index++)
{
$this->parameters[$names[$index]] = $values[$index];
}
}
else
{
$this->parameters = $names;
}
}
/**
* Get a named parameter value.
*
* @param string $key Parameter name.
* @param mixed $default Default value if parameter has not been set.
*
* @return mixed
*/
public function get($key, $default = null)
{
if (isset($this->parameters[$key]))
{
return $this->parameters[$key];
}
return $default;
}
/**
* Retrieve all set parameters into an associative array.
*
* @return array
*/
public function getArray()
{
return $this->parameters;
}
/**
* Get a named parameter value as an integer.
*
* @param string $key Parameter name.
* @param mixed $default Default value if parameter has not been set.
*
* @return int
*/
public function getInt($key, $default = 0)
{
$pattern = '/[-+]?[0-9]+/';
preg_match($pattern, (string) $this->get($key, $default), $matches);
$result = isset($matches[0]) ? (int) $matches[0] : 0;
return $result;
}
/**
* Get a named parameter value only allowing alphanumeric characters.
*
* @param string $key Parameter name.
* @param mixed $default Default value if parameter has not been set.
*
* @return string
*/
public function getAlnum($key, $default = '')
{
$value = $this->get($key, $default);
$value = (string) preg_replace(
'/[^A-Z0-9]/iu',
'',
$value
);
return $value;
}
/**
* Get a specific value passed as a query variable, as a safe string:
* A-Za-z0-9-_
*
* @param string $key
* @param mixed $default
*
* @return bool
*/
public function getSafeString($key, $default = null)
{
$value = preg_replace(
'/[^A-Za-z0-9\-_]*/',
'',
$this->get(
$key,
$default
)
);
return $value;
}
/**
* Get a named parameter value as a boolean.
* if unset, or 'false' and '0', evaluates as false. Otherwise true.
*
* @param string $key Parameter name.
* @param mixed $default Default value if parameter has not been set.
*
* @return bool
*/
public function getBool($key, $default = false)
{
$value = $this->get($key, $default);
if (empty($value))
{
return false;
}
switch (strtolower($value))
{
case 'false':
case '0':
$value = false;
break;
default:
$value = true;
break;
}
return $value;
}
}