$name)) { $ret = $from->$name; } } if (isset($ret) && $type != '') { $ret = V::convert($ret, $type); } return (isset($ret))? $ret : $default; } /** * Convert variable type. */ public static function convert(&$from, $type = 'string') { $type = strtolower($type); // is_scalar($from) - return TRUE if int,float,string,bool, FALSE if array,object,resource, ... $ret = null; switch ($type) { case 'string': if (is_scalar($from)) { $ret = $from; settype($ret, $type); } break; case 'word': if (is_scalar($from)) { $ret = $from; settype($ret, $type); $ret = trim($ret); if (false !== ($pos = strpos($ret, ' '))) { $ret = substr($ret, 0, $pos); } } break; case 'int': case 'integer': if (is_scalar($from)) { $ret = $from; settype($ret, $type); } break; case 'float': case 'double': if (is_scalar($from)) { $ret = str_replace(',','.',$from); settype($ret, $type); } break; case 'object': case 'array': if (is_scalar($from) || is_array($from) || is_object($from)) { $ret = $from; settype($ret, $type); } break; case 'int_array': if (is_scalar($from) || is_array($from) || is_object($from)) { $ret = array(); $arr = $from; settype($arr, $type); foreach ($arr as $v) { $v = V::convert($v,'int'); $ret[] = $v; } } break; case 'uint_array':// uncigned int array if (is_scalar($from) || is_array($from) || is_object($from)) { $ret = array(); $arr = $from; settype($arr, $type); foreach ($arr as $v) { $v = V::convert($v,'int'); if ($v <= 0) continue; $ret[] = $v; } } break; case 'float_array':// uncigned int array if (is_scalar($from) || is_array($from) || is_object($from)) { $ret = array(); $arr = $from; settype($arr, $type); foreach ($arr as $v) { $v = V::convert($v, 'float'); $ret[] = $v; } } break; default: $fun = 'func_type_convert_'.$type; if (function_exists($fun)) { $ret = $fun($from); } break; } return $ret; } /** * Merge the contents of two objects/array. * * array V::extend(mixed $defaults, mixed $params); * @see http://api.jquery.com/jQuery.extend/ * is_scalar($from) - return TRUE if int,float,string,bool, FALSE if array,object,resource, ... */ public static function extend($defaults, $params) { $ret = array(); $d = (is_array($defaults))? $defaults : (array)$defaults; $p = (is_array($params))? $params : (array)$params; foreach ($d as $k => $v) { $ret[$k] = $v; } foreach ($p as $k => $v) { if (array_key_exists($k, $ret) && (is_array($ret[$k]) || is_object($ret[$k])) && (is_array($v) || is_object($v))) { $ret[$k] = V::extend($ret[$k], $v); } else { $ret[$k] = $v; } } return $ret; } public static function json_encode_latin2($o, $force_object = false) { if ($o === '') { return '""'; } else if (!$o) { return 'null'; } else if (is_array($o)) { $arr = ''; if ($force_object) { foreach ($o as $k => $v) { $arr[] = '"'.$k.'":'.V::json_encode_latin2($v, $force_object); } return '{'.implode(',',$arr).'}'; } else { foreach ($o as $k => $v) { if (is_string($k)) $arr[] = '"'.$k.'":'.V::json_encode_latin2($v, $force_object); else $arr[] = V::json_encode_latin2($v); } return '['.implode(',',$arr).']'; } } else if (is_object($o)) { $arr = ''; foreach (get_object_vars($o) as $k => $v) { $arr[] = '"'.$k.'":'.V::json_encode_latin2($v, $force_object); } return '{'.implode(',',$arr).'}'; } else if (is_string($o)) { return '"'.addslashes(str_replace(array("\n","\r"), array('\n',''), $o)).'"'; } else if (is_numeric($o)) { return ''.$o.''; } else if (is_bool($o)) { return ''.(($o)? 'true' : 'false').''; } } public static function copy($o) { $null = null; if (!$o) { return $null; } else if (is_array($o)) { $ret = array(); foreach ($o as $k => $v) { $ret[$k] = $v; } return $ret; } else if (is_object($o)) { $ret = new stdClass(); foreach (get_object_vars($o) as $k => $v) { $ret->$k = $v; } return $ret; } else { $ret = $o; return $ret; } } public static function make_link($prefix = '', $params = array()) { $ret = ''; if ($prefix) { $ret = $prefix; } if (!empty($params)) { $ret_arr = array(); foreach ($params as $k => $v) { $ret_arr[] = $k . "=" . $v; } $ret .= "?" . implode("&", $ret_arr); } return $ret; } public static function strShort($label, $maxLength = 10, $suffix = ' ...') { if (strlen($label) > $maxLength) { $pos = strpos($label, ' - '); if ($pos > $maxLength || $pos < 5) { $label = substr($label, 0, $pos) . $suffix; } else { $label = substr($label, 0, $pos); } } return $label; } public static function strShortUtf8($label, $maxLength = 10, $suffix = ' ...') { if (mb_strlen($label, 'utf-8') > $maxLength) { $pos = mb_strpos($label, ' - ', 0, 'utf-8'); if ($pos > $maxLength || $pos < 5) { $label = mb_substr($label, 0, $maxLength, 'utf-8') . $suffix; } else { $label = mb_substr($label, 0, $pos, 'utf-8'); } } return $label; } }