<?php
/**
* Set first leter in a string as UPPERCASE
* @param string $str string to modify
* @return string string with first Uppercase letter
*/
if(!function_exists('strFirstUp')) {
function strFirstUp($str) {
return strtoupper(substr($str, 0, 1)).strtolower(substr($str, 1, strlen($str)));
}
}
/**
* Deprecated - class must be created
*/
if(!function_exists('dateToTimestampWcu')) {
function dateToTimestampWcu($date) {
if(empty($a))
return false;
$a = explode(WCU_DATE_DL, $date);
return mktime(0, 0, 0, $a[1], $a[0], $a[2]);
}
}
/**
* Generate random string name
* @param int $lenFrom min len
* @param int $lenTo max len
* @return string random string with length from $lenFrom to $lenTo
*/
if(!function_exists('getRandName')) {
function getRandName($lenFrom = 6, $lenTo = 9) {
$res = '';
$len = mt_rand($lenFrom, $lenTo);
if($len) {
for($i = 0; $i < $len; $i++) {
$res .= chr(mt_rand(97, 122)); /*rand symbol from a to z*/
}
}
return $res;
}
}
if(!function_exists('importWcu')) {
function importWcu($path) {
if(file_exists($path)) {
require($path);
return true;
}
return false;
}
}
if(!function_exists('setDefaultParams')) {
function setDefaultParams($params, $default) {
foreach($default as $k => $v) {
$params[$k] = isset($params[$k]) ? $params[$k] : $default[$k];
}
return $params;
}
}
if(!function_exists('importClassWcu')) {
function importClassWcu($class, $path = '') {
if(!class_exists($class)) {
if(!$path) {
$classFile = $class;
if(strpos(strtolower($classFile), WCU_CODE) !== false) {
$classFile = preg_replace('/'. WCU_CODE. '/i', '', $classFile);
}
$path = WCU_CLASSES_DIR. $classFile. '.php';
}
return importWcu($path);
} else { //If such class already exist - let's check does this is our plugin class or someone else
/*if(class_exists('ReflectionClass')) { //ReflectionClass supported begining from php5
$reflection = new ReflectionClass($class);
$classFile = $reflection->getFileName();
if(strpos($classFile, WCU_DIR) === false) { //Class is not in our plugin directory
$conflictWith = substr($classFile, strpos($classFile, 'plugins') + strlen('plugins'. DS));
$conflictWith = substr($conflictWith, 0, strpos($conflictWith, DS));
$plugins = get_option('active_plugins');
if(!empty($plugins)) {
for($i = 0; $i < count($plugins); $i++) {
if(strpos($plugins[$i], WCU_PLUG_NAME) !== false) { //Let's remove our plugin from list of active plugins
unset($plugins[$i]);
}
}
update_option( 'active_plugins', $plugins );
}
exit('Sorry, but we have conflict with class name <b style="color: red;">'. $class. '</b> in one of your already installed plugins <b style="color: red;">'. $conflictWith. '</b> located at '. $classFile. '. This means that you can not have both two plugins at one time.');
}
}*/
}
return false;
}
}
/**
* Check if class name exist with prefix or not
* @param strin $class preferred class name
* @return string existing class name
*/
if(!function_exists('toeGetClassNameWcu')) {
function toeGetClassNameWcu($class) {
$className = '';
if(class_exists($class. strFirstUp(WCU_CODE)))
$className = $class. strFirstUp(WCU_CODE);
else if(class_exists(WCU_CLASS_PREFIX. $class))
$className = WCU_CLASS_PREFIX. $class;
else
$className = $class;
return $className;
}
}
/**
* Create object of specified class
* @param string $class class that you want to create
* @param array $params array of arguments for class __construct function
* @return object new object of specified class
*/
if(!function_exists('toeCreateObjWcu')) {
function toeCreateObjWcu($class, $params) {
$className = toeGetClassNameWcu($class);
$obj = NULL;
if(class_exists('ReflectionClass')) {
$reflection = new ReflectionClass($className);
try {
$obj = $reflection->newInstanceArgs($params);
} catch (ReflectionException $e) { // If class have no constructor
$obj = $reflection->newInstanceArgs();
}
} else {
$obj = new $className();
call_user_func_array(array($obj, '__construct'), $params);
}
return $obj;
}
}
/**
* Redirect user to specified location. Be advised that it should redirect even if headers alredy sent.
* @param string $url where page must be redirected
*/
if(!function_exists('redirectWcu')) {
function redirectWcu($url) {
if(headers_sent()) {
echo '<script type="text/javascript"> document.location.href = "'. $url. '"; </script>';
} else {
header('Location: '. $url);
}
exit();
}
}
if(!function_exists('in_array_array')) {
function in_array_array($needle, $haystack) {
if(is_array($needle)) {
foreach($needle as $n) {
if(in_array($n, $haystack))
return true;
}
return false;
} else
return in_array_array($needle, $haystack);
}
}
if(!function_exists('json_encode_utf_normal')) {
function json_encode_utf_normal($value) {
if (is_int($value)) {
return (string)$value;
} elseif (is_string($value)) {
$value = str_replace(array('\\', '/', '"', "\r", "\n", "\b", "\f", "\t"),
array('\\\\', '\/', '\"', '\r', '\n', '\b', '\f', '\t'), $value);
$convmap = array(0x80, 0xFFFF, 0, 0xFFFF);
$result = "";
for ($i = strlen($value) - 1; $i >= 0; $i--) {
$mb_char = substr($value, $i, 1);
$result = $mb_char . $result;
}
return '"' . $result . '"';
} elseif (is_float($value)) {
return str_replace(",", ".", $value);
} elseif (is_null($value)) {
return 'null';
} elseif (is_bool($value)) {
return $value ? 'true' : 'false';
} elseif (is_array($value)) {
$with_keys = false;
$n = count($value);
for ($i = 0, reset($value); $i < $n; $i++, next($value)) {
if (key($value) !== $i) {
$with_keys = true;
break;
}
}
} elseif (is_object($value)) {
$with_keys = true;
} else {
return '';
}
$result = array();
if ($with_keys) {
foreach ($value as $key => $v) {
$result[] = json_encode_utf_normal((string)$key) . ':' . json_encode_utf_normal($v);
}
return '{' . implode(',', $result) . '}';
} else {
foreach ($value as $key => $v) {
$result[] = json_encode_utf_normal($v);
}
return '[' . implode(',', $result) . ']';
}
}
}
/**
* Prepares the params values to store into db
*
* @param array $d $_POST array
* @return array
*/
if(!function_exists('prepareParamsWcu')) {
function prepareParamsWcu(&$d=array(), &$options = array()) {
if (!empty($d['params'])) {
if (isset($d['params']['options'])) {
$options = $d['params']['options'];
//unset($d['params']['options']);
}
if (is_array($d['params'])) {
$params = utilsWcu::jsonEncode($d['params']);
$params = str_replace(array('\n\r', "\n\r", '\n', "\r", '\r', "\r"), '<br />', $params);
$params = str_replace(array('<br /><br />', '<br /><br /><br />'), '<br />', $params);
$d['params'] = $params;
}
} elseif(isset($d['params'])) {
$d['params']['attr']['class'] = '';
$d['params']['attr']['id'] = '';
$params = utilsWcu::jsonEncode($d['params']);
$d['params'] = $params;
}
if(empty($options))
$options = array('value' => array('EMPTY'), 'data' => array());
if(isset($d['code'])) {
if ($d['code'] == '') {
$d['code'] = prepareFieldCodeWcu($d['label']).'_'.rand(0, 9999999);
}
}
return $d;
}
}
if(!function_exists('prepareFieldCodeWcu')) {
function prepareFieldCodeWcu($string) {
$string = preg_replace("/[^a-zA-Z0-9\s]/"," ",$string);
$string = preg_replace("/\s+/", " ", $string);
$string = preg_replace('/ /','',$string);
$code = substr($string, 0, 8);
$code = strtolower($code);
if ($code == '') {
$code = 'field_'.date('dhis');
}
return $code;
}
}
/**
* Recursive implode of array
* @param string $glue imploder
* @param array $array array to implode
* @return string imploded array in string
*/
if(!function_exists('recImplode')) {
function recImplode($glue, $array) {
$res = '';
$i = 0;
$count = count($array);
foreach($array as $el) {
$str = '';
if(is_array($el))
$str = recImplode('', $el);
else
$str = $el;
$res .= $str;
if($i < ($count-1))
$res .= $glue;
$i++;
}
return $res;
}
}
if(!function_exists('toeObjectToArray')) {
function toeObjectToArray($data) {
if ((! is_array($data)) and (! is_object($data))) return $data; //$data;
$result = array();
$data = (array) $data;
foreach ($data as $key => $value) {
if (is_object($value)) $value = (array) $value;
if (is_array($value))
$result[$key] = toeObjectToArray($value);
else
$result[$key] = $value;
}
return $result;
}
}
/**
* Correct apply array_map even if array contains sub-arrays
* @param array $array - input array
* @return array - result array with array_map applied
*/
if(!function_exists('toeMultArrayMap')) {
function toeMultArrayMap($callback, $array) {
if(is_array($array)) {
foreach($array as $k => $v) {
if(is_array($v)) {
$array[ $k ] = toeMultArrayMap($callback, $v);
} else {
$array[ $k ] = call_user_func($callback, $v);
}
}
} else {
$array = call_user_func($callback, $array);
}
return $array;
}
}
/**
* Twig require this function, but it is present not on all servers
*/
if(!function_exists('hash')) {
function hash($method, $data) {
return md5($data);
}
}
if(!function_exists('ctype_alpha')) {
function ctype_alpha($text) {
return (bool) preg_match('/[^\pL]+/', $text);
}
}
if(!function_exists('escHtmlRecursively')) {
function escHtmlRecursively( $options ) {
foreach ( $options as $key => $value ) {
if ( is_array( $value ) ) {
$options[ $key ] = escHtmlRecursively( $value );
} elseif ( is_string( $value ) ) {
$options[ $key ] = esc_html( $value );
}
}
return $options;
}
}
/*****/