1 <?php
2
3 namespace Satabank\IPC;
4
5 /**
6 * IPC Library helper functions
7 */
8 class Helper{
9
10 /**
11 * Validate email address
12 * @param string $email
13 * @return boolean
14 */
15 public static function isValidEmail($email){
16 return filter_var($email, FILTER_VALIDATE_EMAIL);
17 }
18
19 /**
20 * Validate URL address
21 * @param string $url
22 * @return boolean
23 */
24 public static function isValidURL($url){
25 return filter_var($url, FILTER_VALIDATE_URL);
26 }
27
28 /**
29 * Validate IP address
30 * @param string $ip
31 * @return boolean
32 */
33 public static function isValidIP($ip){
34 return filter_var($ip, FILTER_VALIDATE_IP);
35 }
36
37 /**
38 * Validate customer names
39 * @param string $name
40 * @return boolean
41 */
42 public static function isValidName($name){
43 return preg_match("/^[a-zA-Z ]*$/", $name);
44 }
45
46 /**
47 * Validate amount.
48 * @param float $amt
49 * @return boolean
50 */
51 public static function isValidAmount($amt){
52 return preg_match('/^(-)?[0-9]+(?:\.[0-9]{0,2})?$/', $amt);
53 }
54
55 /**
56 * Validate if currency is acceptable by API
57 * @param string $currency ISO 4217 code
58 * @return boolean
59 */
60 public static function isValidCurrency($currency){
61 return in_array(strtoupper($currency), explode(';', Defines::AVL_CURRENCIES));
62 }
63
64 /**
65 * Validate quantity
66 * @param int $quantity
67 * @return boolean
68 */
69 public static function isValidCartQuantity($quantity){
70 return is_int($quantity) && $quantity > 0;
71 }
72
73 /**
74 * Validate transaction reference
75 * @param string $trnref
76 * @return boolean
77 */
78 public static function isValidTrnRef($trnref){
79 #TODO
80 return true;
81 }
82
83 /**
84 * Validate Order ID
85 * @param string $trnref
86 * @return boolean
87 */
88 public static function isValidOrderId($trnref){
89 #TODO
90 return true;
91 }
92
93 /**
94 * Validate output format
95 * @param string $outputFormat
96 * @return boolean
97 */
98 public static function isValidOutputFormat($outputFormat){
99 return in_array($outputFormat, array(Defines::COMMUNICATION_FORMAT_XML, Defines::COMMUNICATION_FORMAT_JSON));
100 }
101
102 /**
103 * Escape HTML special chars
104 * @param string $text
105 * @return string type
106 */
107 public static function escape($text){
108 $text = htmlspecialchars_decode($text, ENT_QUOTES);
109 return htmlspecialchars($text, ENT_QUOTES);
110 }
111
112 /**
113 * Unescape HTML special chars
114 * @param string $text
115 * @return string
116 */
117 public static function unescape($text){
118 return htmlspecialchars_decode($text, ENT_QUOTES);
119 }
120
121 /**
122 * Return associative array element by key.
123 * If key not found in array returns $default
124 * If $notEmpty argument is TRUE returns $default even if key is found in array but the element has empty value(0, null, '')
125 *
126 * @param array $array
127 * @param mixed $key
128 * @param string $default
129 * @param bool $notEmpty
130 * @return mixed
131 */
132 public static function getArrayVal($array, $key, $default = '', $notEmpty = false){
133 if(!is_array($array)){
134 return $default;
135 }
136 if($notEmpty){
137 if(array_key_exists($key, $array)){
138 $val = trim($array[$key]);
139 if(!empty($val)){
140 return $val;
141 }
142 }
143 return $default;
144 }else{
145 return array_key_exists($key, $array) ? $array[$key] : $default;
146 }
147 }
148
149 /**
150 * Returns one-dimensional array with all values from multi-dimensional array
151 * Useful when create request signature where only array values matter
152 *
153 * @param array $array
154 * @param array $values
155 * @return array
156 */
157 public static function getValuesFromMultiDemensionalArray($array, $values = array()){
158 if(!is_array($array)){
159 return $values;
160 }
161 foreach($array as $k => $v){
162 if(is_array($v)){
163 $values = self::getValuesFromMultiDemensionalArray($v, $values);
164 }else{
165 $values[] = $v;
166 }
167 }
168 return $values;
169 }
170
171 }
172