hesabixWCPlugin/includes/class-ssbhesabix-validation.php

318 lines
15 KiB
PHP
Raw Normal View History

<?php
/*
* @class Ssbhesabix_Validation
* @version 2.0.93
* @since 1.1.5
* @package ssbhesabix
* @subpackage ssbhesabix/includes
* @author Saeed Sattar Beglou <saeed.sb@gmail.com>
* @author HamidReza Gharahzadeh <hamidprime@gmail.com>
* @author Sepehr Najafi <sepehrn249@gmail.com>
*/
class Ssbhesabix_Validation
{
public static function itemCodeValidation($code)
{
$code = preg_replace('/[^0-9]/', '', $code);
$code = self::formatFarsiNumbers($code);
return mb_substr($code, 0, 5);
}
//=============================================================================================
public static function itemNameValidation($name)
{
$name = self::formatFarsiNumbers($name);
return self::remove_emoji($name, 199);
}
//=============================================================================================
public static function formatFarsiNumbers($str) {
$farsiNumbers = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
$englishNumbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
for ($i = 0; $i < 10; $i++)
$str = str_replace($farsiNumbers[$i], $englishNumbers[$i], $str);
return $str;
}
//=============================================================================================
public static function itemBarcodeValidation($barcode)
{
$barcode = self::formatFarsiNumbers($barcode);
return mb_substr($barcode, 0, 999);
}
//=============================================================================================
public static function itemCategoryValidation($category) {return $category;}
//=============================================================================================
public static function itemDescriptionValidation($description) {return mb_substr($description, 0, 199);}
//=============================================================================================
public static function itemMainUnitValidation($mainUnit) {return mb_substr($mainUnit, 0, 29);}
//=============================================================================================
public static function itemSubUnitValidation($subUnit) {return mb_substr($subUnit, 0, 29);}
//=============================================================================================
public static function itemConversionFactorValidation($conversionFactor)
{
if ($conversionFactor < 0) {
return 0;
} else {
return $conversionFactor;
}
}
//=============================================================================================
public static function itemSalesTaxValidation($salesTax)
{
if ($salesTax >= 0 && $salesTax <= 100) {
return $salesTax;
} else {
return 0;
}
}
//=============================================================================================
public static function itemSalesInfoValidation($salesInfo) {return mb_substr($salesInfo, 0, 99);}
//=============================================================================================
public static function itemPurchaseCostValidation($purchaseCost)
{
if ($purchaseCost >= 0) {
return $purchaseCost;
} else {
return 0;
}
}
//=============================================================================================
public static function itemPurchaseInfoValidation($purchaseInfo) {return mb_substr($purchaseInfo, 0, 99);}
//=============================================================================================
public static function itemTagValidation($tag) {return mb_substr($tag, 0, 254);}
//=============================================================================================
public static function contactCodeValidation($code)
{
$code = preg_replace('/[^0-9]/', '', $code);
return mb_substr($code, 0, 5);
}
//=============================================================================================
public static function contactDisplayNameValidation($displayName) {return mb_substr($displayName, 0, 99);}
//=============================================================================================
public static function contactCompanyValidation($company) {return mb_substr($company, 0, 99);}
//=============================================================================================
public static function contactTitleValidation($title) {return mb_substr($title, 0, 49);}
//=============================================================================================
public static function contactFirstNameValidation($firstName) {return mb_substr($firstName, 0, 49);}
//=============================================================================================
public static function contactLastNameValidation($lastName) {return mb_substr($lastName, 0, 49);}
//=============================================================================================
public static function contactAddressValidation($address) {return mb_substr($address, 0, 149);}
//=============================================================================================
public static function contactCountryValidation($country) {return mb_substr($country, 0, 49);}
//=============================================================================================
public static function contactStateValidation($state) {
if ( is_numeric( $state ) ) {
if(is_plugin_active("persian-woocommerce-shipping/woocommerce-shipping.php")) {
$state = PWS()::get_state( $state );
}
}
return mb_substr($state, 0, 49);
}
//=============================================================================================
public static function contactCityValidation($city) {
if ( is_numeric( $city ) ) {
if(is_plugin_active("persian-woocommerce-shipping/woocommerce-shipping.php")) {
$city = PWS()::get_city($city);
}
}
return mb_substr($city, 0, 49);
}
//=============================================================================================
public static function contactPostalCodeValidation($postalCode)
{
$postalCode = preg_replace('/[^0-9]/', '', $postalCode);
$postalCode = self::formatFarsiNumbers($postalCode);
return mb_substr($postalCode, 0, 10);
}
//=============================================================================================
public static function contactPhoneValidation($phone)
{
$phone = preg_replace('/[^0-9]/', '', $phone);
$phone = self::formatFarsiNumbers($phone);
return mb_substr($phone, 0, 14);
}
//=============================================================================================
public static function contactMobileValidation($mobile)
{
$mobile = preg_replace('/[^0-9]/', '', $mobile);
return mb_substr($mobile, 0, 14);
}
//=============================================================================================
public static function contactFaxValidation($fax)
{
$fax = preg_replace('/[^0-9]/', '', $fax);
return mb_substr($fax, 0, 14);
}
//=============================================================================================
public static function contactEmailValidation($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex) {
$isValid = false;
} else {
$domain = substr($email, $atIndex + 1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64) {
// local part length exceeded
$isValid = false;
} else if ($domainLen < 1 || $domainLen > 255) {
// domain part length exceeded
$isValid = false;
} else if ($local[0] == '.' || $local[$localLen - 1] == '.') {
// local part starts or ends with '.'
$isValid = false;
} else if (preg_match('/\\.\\./', $local)) {
// local part has two consecutive dots
$isValid = false;
} else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
// character not valid in domain part
$isValid = false;
} else if (preg_match('/\\.\\./', $domain)) {
// domain part has two consecutive dots
$isValid = false;
} else if
(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
str_replace("\\\\", "", $local))) {
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/',
str_replace("\\\\", "", $local))) {
$isValid = false;
}
}
}
if ($isValid) {
return $email;
} else {
return null;
}
}
//=============================================================================================
public static function contactWebsiteValidation($website) {return mb_substr($website, 0, 119);}
//=============================================================================================
public static function contactNoteValidation($note) {return mb_substr($note, 0, 499);}
//=============================================================================================
public static function contactCategoryValidation($category) {return $category;}
//=============================================================================================
public static function contactTagValidation($tag) {return mb_substr($tag, 0, 254);}
//=============================================================================================
public static function invoiceFinancialYearValidation($financialYear) {return $financialYear;}
//=============================================================================================
public static function invoiceCurrencyRateValidation($currencyRate)
{
if ($currencyRate > 0) {
return $currencyRate;
} else {
return 1;
}
}
//=============================================================================================
public static function invoiceNumberValidation($number) {return mb_substr($number, 0, 49);}
//=============================================================================================
public static function invoiceContactTitleValidation($contactTitle) {return mb_substr($contactTitle, 0, 199);}
//=============================================================================================
public static function invoiceDueDateValidation($dueDate) {return $dueDate;}
//=============================================================================================
public static function invoiceNoteValidation($note) {return mb_substr($note, 0, 499);}
//=============================================================================================
public static function invoiceReferenceValidation($reference) {return mb_substr($reference, 0, 49);}
//=============================================================================================
public static function invoiceTagValidation($tag) {return mb_substr($tag, 0, 254);}
//=============================================================================================
public function invoiceItemsValidation($items) {return $items;}
//=============================================================================================
public static function invoiceItemDescriptionValidation($description) {
return self::remove_emoji($description, 249);
}
//=============================================================================================
public static function invoiceItemQuantityValidation($quantity)
{
if ($quantity > 0) {
return $quantity;
} else {
return 1;
}
}
//=============================================================================================
public static function invoiceItemUnitValidation($unit) {return mb_substr($unit, 0, 29);}
//=============================================================================================
public static function invoiceItemUnitPriceValidation($unitPrice)
{
if ($unitPrice >= 0) {
return $unitPrice;
} else {
return 0;
}
}
//=============================================================================================
public static function invoiceItemAmountValidation($amount)
{
if ($amount >= 0) {
return $amount;
} else {
return 0;
}
}
//=============================================================================================
public static function invoiceItemDiscountValidation($discount)
{
if ($discount >= 0) {
return $discount;
} else {
return 0;
}
}
//=============================================================================================
public static function invoiceItemTaxValidation($tax)
{
if ($tax >= 0) {
return $tax;
} else {
return 0;
}
}
//=============================================================================================
public static function invoiceItemTotalAmountValidation($totalAmount)
{
if ($totalAmount >= 0) {
return $totalAmount;
} else {
return 0;
}
}
//=============================================================================================
public static function remove_emoji($string, $length = 200) : string
{
$regex_alphanumeric = '/[\x{1F100}-\x{1F1FF}]/u';
$clear_string = preg_replace($regex_alphanumeric, '', $string);
$regex_symbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clear_string = preg_replace($regex_symbols, '', $clear_string);
$regex_emoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clear_string = preg_replace($regex_emoticons, '', $clear_string);
$regex_transport = '/[\x{1F680}-\x{1F6FF}]/u';
$clear_string = preg_replace($regex_transport, '', $clear_string);
$regex_supplemental = '/[\x{1F900}-\x{1F9FF}]/u';
$clear_string = preg_replace($regex_supplemental, '', $clear_string);
$regex_misc = '/[\x{2600}-\x{26FF}\x{1F7E9}-\x{1F7EF}]/u';
$clear_string = preg_replace($regex_misc, '', $clear_string);
$regex_dingbats = '/[\x{2700}-\x{27BF}]/u';
$clear_string = preg_replace($regex_dingbats, '', $clear_string);
$truncated_string = mb_substr($clear_string, 0, $length);
return $truncated_string;
}
//=============================================================================================
}