Index: trunk/core/kernel/globals.php =================================================================== diff -u -N --- trunk/core/kernel/globals.php (revision 8860) +++ trunk/core/kernel/globals.php (revision 0) @@ -1,578 +0,0 @@ - $sValue2) - { - $paArray1[$sKey2] = isset($paArray1[$sKey2]) ? array_merge_recursive2($paArray1[$sKey2], $sValue2) : $sValue2; -// $paArray1[$sKey2] = array_merge_recursive2( getArrayValue($paArray1,$sKey2), $sValue2); - } - return $paArray1; - } - } - - /** - * @return int - * @param $array array - * @param $value mixed - * @desc Prepend a reference to an element to the beginning of an array. Renumbers numeric keys, so $value is always inserted to $array[0] - */ - function array_unshift_ref(&$array, &$value) - { - $return = array_unshift($array,''); - $array[0] =& $value; - return $return; - } - - /** - * Same as print_r, budet designed for viewing in web page - * - * @param Array $data - * @param string $label - */ - function print_pre($data, $label='', $on_screen = false) - { - $is_debug = false; - if (class_exists('kApplication') && !$on_screen) { - $application =& kApplication::Instance(); - $is_debug = $application->isDebugMode(); - } - - if ($is_debug) { - if ($label) $application->Debugger->appendHTML(''.$label.''); - $application->Debugger->dumpVars($data); - } - else - { - if ($label) echo '', $label, '
'; - echo '
', print_r($data, true), '
'; - } - } - - /** - * Returns array value if key exists - * - * @param Array $array searchable array - * @param int $key array key - * @return string - * @access public - */ - // - function getArrayValue(&$array, $key) - { -// global $debugger; -// if (is_object($debugger)) $debugger->ProfilePoint('getArrayValue', 1); - $ret = isset($array[$key]) ? $array[$key] : false; - if ($ret && func_num_args() > 2) { - for ($i = 2; $i < func_num_args(); $i++) { - $cur_key = func_get_arg($i); - $ret = getArrayValue( $ret, $cur_key ); - if ($ret === false) break; - } - } - return $ret; - } - - /** - * Rename key in associative array, maintaining keys order - * - * @param Array $array Associative Array - * @param mixed $old Old key name - * @param mixed $new New key name - * @access public - */ - function array_rename_key(&$array, $old, $new) - { - foreach ($array as $key => $val) - { - $new_array[ $key == $old ? $new : $key] = $val; - } - $array = $new_array; - } - - /** - * Define constant if it was not already defined before - * - * @param string $const_name - * @param string $const_value - * @access public - */ - function safeDefine($const_name, $const_value) - { - if(!defined($const_name)) define($const_name,$const_value); - } - -if( !function_exists('parse_portal_ini') ) -{ - function parse_portal_ini($file, $parse_section = false) - { - if (!file_exists($file)) return false; - - if( file_exists($file) && !is_readable($file) ) die('Could Not Open Ini File'); - - $contents = file($file); - - $retval = Array(); - $section = ''; - $ln = 1; - $resave = false; - foreach($contents as $line) { - if ($ln == 1 && $line != '<'.'?'.'php die() ?'.">\n") { - $resave = true; - } - $ln++; - $line = trim($line); - $line = eregi_replace(';[.]*','',$line); - if(strlen($line) > 0) { - //echo $line . " - "; - if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) { - //echo 'section'; - $section = substr($line,1,(strlen($line)-2)); - if ($parse_section) { - $retval[$section] = array(); - } - continue; - } elseif(eregi('=',$line)) { - //echo 'main element'; - list($key,$val) = explode(' = ',$line); - if (!$parse_section) { - $retval[trim($key)] = str_replace('"', '', $val); - } - else { - $retval[$section][trim($key)] = str_replace('"', '', $val); - } - } //end if - //echo '
'; - } //end if - } //end foreach - if($resave) - { - $fp = fopen($file, 'w'); - reset($contents); - fwrite($fp,'<'.'?'.'php die() ?'.">\n\n"); - foreach($contents as $line) fwrite($fp,"$line"); - fclose($fp); - } - - return $retval; - } -} - - -if( !function_exists('getmicrotime') ) -{ - function getmicrotime() - { - list($usec, $sec) = explode(" ",microtime()); - return ((float)$usec + (float)$sec); - } -} - -if( !function_exists('k4_include_once') ) -{ - function k4_include_once($file) - { - global $debugger; - if ( defined('DEBUG_MODE') && DEBUG_MODE && isset($debugger) && constOn('DBG_PROFILE_INCLUDES') ) - { - - if ( in_array($file, get_required_files()) ) return; - global $debugger; - -/* $debugger->IncludeLevel++; - $before_mem = memory_get_usage(); -*/ - $debugger->ProfileStart('inc_'.crc32($file), $file); - include_once($file); - $debugger->ProfileFinish('inc_'.crc32($file)); - $debugger->profilerAddTotal('includes', 'inc_'.crc32($file)); - -/* $used_mem = memory_get_usage() - $before_mem; - $debugger->IncludeLevel--; - $debugger->IncludesData['file'][] = str_replace(FULL_PATH, '', $file); - $debugger->IncludesData['mem'][] = $used_mem; - $debugger->IncludesData['time'][] = $used_time; - $debugger->IncludesData['level'][] = $debugger->IncludeLevel; -*/ - - } - else - { - include_once($file); - } - } -} - - /** - * Checks if string passed is serialized array - * - * @param string $string - * @return bool - */ - function IsSerialized($string) - { - if( is_array($string) ) return false; - return preg_match('/a:([\d]+):{/', $string); - } - - if (!function_exists('makepassword4')){ - - function makepassword4($length=10) - { - $pass_length=$length; - - $p1=array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'); - $p2=array('a','e','i','o','u'); - $p3=array('1','2','3','4','5','6','7','8','9'); - $p4=array('(','&',')',';','%'); // if you need real strong stuff - - // how much elements in the array - // can be done with a array count but counting once here is faster - - $s1=21;// this is the count of $p1 - $s2=5; // this is the count of $p2 - $s3=9; // this is the count of $p3 - $s4=5; // this is the count of $p4 - - // possible readable combinations - - $c1='121'; // will be like 'bab' - $c2='212'; // will be like 'aba' - $c3='12'; // will be like 'ab' - $c4='3'; // will be just a number '1 to 9' if you dont like number delete the 3 - // $c5='4'; // uncomment to active the strong stuff - - $comb='4'; // the amount of combinations you made above (and did not comment out) - - for ($p=0;$p<$pass_length;) - { - mt_srand((double)microtime()*1000000); - $strpart=mt_rand(1,$comb); - // checking if the stringpart is not the same as the previous one - if($strpart<>$previous) - { - $pass_structure.=${'c'.$strpart}; - - // shortcutting the loop a bit - $p=$p+strlen(${'c'.$strpart}); - } - $previous=$strpart; - } - - - // generating the password from the structure defined in $pass_structure - for ($g=0;$g $value) $params_str .= $key.'='.urlencode($value).'&'; - $post = $params_str; - } - - $ch = curl_init($url); - - $dbg = false; - if (defined('DEBUG_MODE') && DEBUG_MODE && constOn('DBG_CURL')) { - $dbg = true; - safeDefine('DBG_CURL_LOGFILE', '/curl.log'); - $log = fopen(FULL_PATH.DBG_CURL_LOGFILE, 'a'); - - curl_setopt($ch, CURLOPT_FILE, $log); - curl_setopt($ch, CURLOPT_VERBOSE, TRUE); - curl_setopt($ch, CURLOPT_STDERR, $log); - //curl_setopt($ch, CURLOPT_WRITEHEADER, $log); - } - - if (!is_null($headers)) { - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - } - - // if we have post data, then POST else use GET method instead - if ($request_type == 'POST') { - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, $post); - } - elseif ($request_type == 'GET' && isset($post) && strlen($post) > 0) { - curl_setopt($ch, CURLOPT_URL, preg_match('/\?/', $url) ? $url.'&'.$post : $url.'?'.$post); - } - - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - - curl_setopt($ch,CURLOPT_REFERER, PROTOCOL.SERVER_NAME); - curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); - curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 0); - curl_setopt($ch, CURLOPT_TIMEOUT, 90); - - $ret = curl_exec($ch); - $GLOBALS['curl_errorno'] = curl_errno($ch); - $GLOBALS['curl_error'] = curl_error($ch); - curl_close($ch); - - if ($dbg) { - fwrite($log, "\n".$ret); - fclose($log); - } - - return $ret; - } - } - - if( !function_exists('memory_get_usage') ) - { - function memory_get_usage(){ return -1; } - } - - function &ref_call_user_func_array($callable, $args) - { - if( is_scalar($callable) ) - { - // $callable is the name of a function - $call = $callable; - } - else - { - if( is_object($callable[0]) ) - { - // $callable is an object and a method name - $call = "\$callable[0]->{$callable[1]}"; - } - else - { - // $callable is a class name and a static method - $call = "{$callable[0]}::{$callable[1]}"; - } - } - - // Note because the keys in $args might be strings - // we do this in a slightly round about way. - $argumentString = Array(); - $argumentKeys = array_keys($args); - foreach($argumentKeys as $argK) - { - $argumentString[] = "\$args[$argumentKeys[$argK]]"; - } - $argumentString = implode($argumentString, ', '); - // Note also that eval doesn't return references, so we - // work around it in this way... - eval("\$result =& {$call}({$argumentString});"); - return $result; - } - - /** - * Checks if constant is defined and has positive value - * - * @param string $const_name - * @return bool - */ - function constOn($const_name) - { - return defined($const_name) && constant($const_name); - } - - function Kg2Pounds($kg) - { - $major = floor( round($kg / POUND_TO_KG, 3) ); - $minor = abs(round(($kg - $major * POUND_TO_KG) / POUND_TO_KG * 16, 2)); - return array($major, $minor); - } - - function Pounds2Kg($pounds, $ounces=0) - { - return round(($pounds + ($ounces / 16)) * POUND_TO_KG, 5); - } - - /** - * Formats file/memory size in nice way - * - * @param int $bytes - * @return string - * @access public - */ - function formatSize($bytes) - { - if ($bytes >= 1099511627776) { - $return = round($bytes / 1024 / 1024 / 1024 / 1024, 2); - $suffix = "TB"; - } elseif ($bytes >= 1073741824) { - $return = round($bytes / 1024 / 1024 / 1024, 2); - $suffix = "GB"; - } elseif ($bytes >= 1048576) { - $return = round($bytes / 1024 / 1024, 2); - $suffix = "MB"; - } elseif ($bytes >= 1024) { - $return = round($bytes / 1024, 2); - $suffix = "KB"; - } else { - $return = $bytes; - $suffix = "Byte"; - } - $return .= ' '.$suffix; - return $return; - } - - /** - * Enter description here... - * - * @param resource $filePointer the file resource to write to - * @param Array $data the data to write out - * @param string $delimiter the field separator - * @param string $enclosure symbol to enclose field data to - * @param string $recordSeparator symbols to separate records with - */ - function fputcsv2($filePointer, $data, $delimiter = ',', $enclosure = '"', $recordSeparator = "\r\n") - { - foreach($data as $field_index => $field_value) { - // replaces an enclosure with two enclosures - $data[$field_index] = str_replace($enclosure, $enclosure.$enclosure, $field_value); - } - - $line = $enclosure.implode($enclosure.$delimiter.$enclosure, $data).$enclosure.$recordSeparator; - fwrite($filePointer, $line); - } - - /** - * Allows to replace #section# within any string with current section - * - * @param string $string - * @return string - */ - function replaceModuleSection($string) - { - $application =& kApplication::Instance(); - $module_section = $application->RecallVar('section'); - if ($module_section) { - // substitute section instead of #section# parameter in title preset name - $module_section = explode(':', $module_section); - $section = preg_replace('/(configuration|configure)_(.*)/i', '\\2', $module_section[count($module_section) == 2 ? 1 : 0]); - $string = str_replace('#section#', strtolower($section), $string); - } - return $string; - } - - /** - * Checks, that user IP address is within allowed range - * - * @param string $ip_list semi-column (by default) separated ip address list - * @param string $separator ip address separator (default ";") - * - * @return bool - */ - function ipMatch($ip_list, $separator = ';') - { - $ip_match = false; - $ip_addresses = $ip_list ? explode($separator, $ip_list) : Array (); - foreach ($ip_addresses as $ip_address) { - if (netMatch($ip_address, $_SERVER['REMOTE_ADDR'])) { - $ip_match = true; - break; - } - } - - return $ip_match; - } - - function netMatch($network, $ip) { - $network = trim($network); - $ip = trim($ip); - - if ($network == $ip) { - // comparing 2 ip addresses directly - return true; - } - - $d = strpos($network, '-'); - if ($d === false) { - // sigle subnet specified - $ip_arr = explode('/', $network); - - if (!preg_match("@\d*\.\d*\.\d*\.\d*@", $ip_arr[0], $matches)) { - $ip_arr[0] .= '.0'; // Alternate form 194.1.4/24 - } - - $network_long = ip2long($ip_arr[0]); - $x = ip2long($ip_arr[1]); - - $mask = long2ip($x) == $ip_arr[1] ? $x : (0xffffffff << (32 - $ip_arr[1])); - $ip_long = ip2long($ip); - - return ($ip_long & $mask) == ($network_long & $mask); - } - else { - // ip address range specified - $from = ip2long(trim(substr($network, 0, $d))); - $to = ip2long(trim(substr($network, $d + 1))); - - $ip = ip2long($ip); - return ($ip >= $from && $ip <= $to); - } - } - - function request_headers() - { - if(function_exists("apache_request_headers")) // If apache_request_headers() exists... - { - if($headers = apache_request_headers()) // And works... - { - return $headers; // Use it - } - } - - $headers = array(); - - foreach(array_keys($_SERVER) as $skey) - { - if(substr($skey, 0, 5) == "HTTP_") - { - $headername = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($skey, 0, 5))))); - $headers[$headername] = $_SERVER[$skey]; - } - } - - return $headers; - } -?> \ No newline at end of file