index cfd7f255b9188527c1d8a0104a44d6a77688a10a..6b2e283a2ac6167972563a6e90d8c5cf24b75d7a 100644 (file)
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+/*! \brief Test functions
+ *
+ * This class provides various test functions. It enables to check
+ * if a given value is:
+ *
+ * - a phone numnber
+ * - a DNS name
+ * - an URL
+ * etc.
+ *
+ * The functions need to be handled with care, because they are not as strict
+ * as one might expect.
+ */
class tests {
+
+ /*! \brief Test if the given string is a phone number */
public static function is_phone_nr($nr)
{
if ($nr == ""){
return (TRUE);
}
- return preg_match ("/^[\/0-9 ()+*-]+$/", $nr);
+ // We require at least one numeric character in the number string.
+ return preg_match ("/^[\/0-9 ()+*-]*[0-9]{1}[\/0-9 ()+*-]*$/", $nr);
}
+ /*! \brief Test if the given string contains characters allowed in a DNS name */
public static function is_dns_name($str)
{
return(preg_match("/^[a-z0-9\.\-_]*$/i",$str));
}
+ /*! \brief Test if the given string is an URL */
public static function is_url($url)
{
if ($url == ""){
}
+ /*! \brief Test if the given string is a DN */
public static function is_dn($dn)
{
if ($dn == ""){
}
+ /*! \brief Test if the given string is an uid */
public static function is_uid($uid)
{
if ($uid == ""){
}
+ /*! \brief Test if the given string is an IP */
public static function is_ip($ip)
{
if(function_exists('filter_var')) {
}
+ /*! \brief Test if the given string is a mac address */
public static function is_mac($mac)
{
return preg_match("/^[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$/i", $mac);
}
- /* Checks if the given ip address dosen't match
+ /*! \brief Checks if the given ip address dosen't match
"is_ip" because there is also a sub net mask given */
public static function is_ip_with_subnetmask($ip)
{
}
- /* Simple is domain check, it checks if the given string looks like "string(...).string" */
+ /*! \brief Simple is domain check
+ *
+ * This checks if the given string looks like "string(...).string"
+ */
public static function is_domain($str)
{
return(preg_match("/^(([a-z0-9\-]{2,63})\.)*[a-z]{2,63}$/i",$str));
}
+ /*! \brief Check if the given argument is an id */
public static function is_id($id)
{
if ($id == ""){
}
+ /*! \brief Check if the given argument is a path */
public static function is_path($path)
{
if ($path == ""){
}
+ /*! \brief Check if the given argument is an email */
public static function is_email($address, $template= FALSE)
{
if ($address == ""){
return (TRUE);
}
if ($template){
- return preg_match ("/^[._a-z0-9%-]+@[_a-z0-9-]+(\.[a-z0-9-]+)(\.[a-z0-9-]+)*$/i",
+ return preg_match ("/^[._a-z0-9{\[\]}%\+-]+@[_a-{}\[\]%z0-9-]+(\.[a-z0-9-]+)(\.[a-z0-9-]+)*$/i",
$address);
} else {
- return preg_match ("/^[._a-z0-9-]+@[_a-z0-9-]+(\.[a-z0-9i-]+)(\.[a-z0-9-]+)*$/i",
+ return preg_match ("/^[._a-z0-9\+-]+@[_a-z0-9-]+(\.[a-z0-9i-]+)(\.[a-z0-9-]+)*$/i",
$address);
}
}
- /* Check if the given department name is valid */
+ /* \brief Check if the given department name is valid */
public static function is_department_name_reserved($name,$base)
{
$reservedName = array("systems","apps","incomming","internal","accounts","fax","addressbook",
}
- /* Check if $ip1 and $ip2 represents a valid IP range
- * returns TRUE in case of a valid range, FALSE in case of an error.
+ /* \brief Check if $ip1 and $ip2 represents a valid IP range
+ * \return TRUE in case of a valid range, FALSE in case of an error.
*/
public static function is_ip_range($ip1,$ip2)
{
if(!tests::is_ip($ip1) || !tests::is_ip($ip2)){
return(FALSE);
}else{
- $ar1 = split("\.",$ip1);
+ $ar1 = explode(".",$ip1);
$var1 = $ar1[0] * (16777216) + $ar1[1] * (65536) + $ar1[2] * (256) + $ar1[3];
- $ar2 = split("\.",$ip2);
+ $ar2 = explode(".",$ip2);
$var2 = $ar2[0] * (16777216) + $ar2[1] * (65536) + $ar2[2] * (256) + $ar2[3];
return($var1 < $var2);
}
}
- /* Check if the specified IP address $address is inside the given network */
+ /* \brief Check if the specified IP address $address is inside the given network */
public static function is_in_network($network, $netmask, $address)
{
- $nw= split('\.', $network);
- $nm= split('\.', $netmask);
- $ad= split('\.', $address);
+ $nw= explode('.', $network);
+ $nm= explode('.', $netmask);
+ $ad= explode('.', $address);
/* Generate inverted netmask */
for ($i= 0; $i<4; $i++){
}
#TODO: use $lang to check date format
- return preg_match("/[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}/", $date);
- }
+ if (!preg_match("/^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/", $date, $matches)) {
+ return false;
+ }
- /* Check if the specified IP address $address is inside the given network */
+ return checkdate($matches[2],$matches[1],$matches[3]);
+ }
+ /*
+ * Compares two dates
+ * @param $dataA as String in german dateformat
+ * @param $dataB as String in german dateformat
+ * @return float or false on error
+ *
+ * * <0 => a<b
+ * 0 => a=b
+ * >0 => a>b
+ */
+ public static function compareDate($dateA, $dateB){
+ /*
+ * TODO:
+ * use $lang to check date format
+ */
+ $tstampA = strtotime($dateA);
+ if($tstampA === false){
+ trigger_error("Given date can not be converted to timestamp(".$dataA.") in function tests::compareDate.");
+ return false;
+ }
+ $tstampB = strtotime($dateB);
+ if($tstampB === false){
+ trigger_error("Given date can not be converted to timestamp(".$dataB.") in function tests::compareDate.");
+ return false;
+ }
+
+ return $tstampA-$tstampB;
+ }
+ /* \brief Check if the specified IP address $address is inside the given network */
public static function is_in_ip_range($from, $to, $address)
{
- $from = split('\.', $from);
- $to = split('\.', $to);
- $ad = split('\.', $address);
+ $from = explode('.', $from);
+ $to = explode('.', $to);
+ $ad = explode('.', $address);
/* Transform to integer */
$from= $from[0] * (16777216) + $from[1] * (65536) + $from[2] * (256) + $from[3];