Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Mon, Jul 28, 10:22 AM

in-portal

Index: branches/unlabeled/unlabeled-1.34.2/core/kernel/globals.php
===================================================================
--- branches/unlabeled/unlabeled-1.34.2/core/kernel/globals.php (nonexistent)
+++ branches/unlabeled/unlabeled-1.34.2/core/kernel/globals.php (revision 7888)
@@ -0,0 +1,491 @@
+<?php
+ if( !function_exists('array_merge_recursive2') )
+ {
+ /**
+ * array_merge_recursive2()
+ *
+ * Similar to array_merge_recursive but keyed-valued are always overwritten.
+ * Priority goes to the 2nd array.
+ *
+ * @static yes
+ * @param $paArray1 array
+ * @param $paArray2 array
+ * @return array
+ * @access public
+ */
+ function array_merge_recursive2($paArray1, $paArray2)
+ {
+ if (!is_array($paArray1) or !is_array($paArray2)) { return $paArray2; }
+ foreach ($paArray2 AS $sKey2 => $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('<b>'.$label.'</b>');
+ $application->Debugger->dumpVars($data);
+ }
+ else
+ {
+ if ($label) echo '<b>', $label, '</b><br>';
+ echo '<pre>', print_r($data, true), '</pre>';
+ }
+ }
+
+ /**
+ * Returns array value if key exists
+ *
+ * @param Array $array searchable array
+ * @param int $key array key
+ * @return string
+ * @access public
+ */
+ //
+ function getArrayValue(&$array, $key)
+ {
+ $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 '<br />';
+ } //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<strlen($pass_structure);$g++)
+ {
+ mt_srand((double)microtime()*1000000);
+ $sel=substr($pass_structure,$g,1);
+ $pass.=${'p'.$sel}[mt_rand(0,-1+${'s'.$sel})];
+
+ }
+ return $pass;
+ }
+ }
+
+ if( !function_exists('unhtmlentities') )
+ {
+ function unhtmlentities($string)
+ {
+ $trans_tbl = get_html_translation_table(HTML_ENTITIES);
+ $trans_tbl = array_flip ($trans_tbl);
+ return strtr($string, $trans_tbl);
+ }
+ }
+
+ if( !function_exists('curl_post') )
+ {
+ /**
+ * submits $url with $post as POST
+ *
+ * @param string $url
+ * @param unknown_type $post
+ * @return unknown
+ */
+ function curl_post($url, $post, $headers=null, $request_type = 'POST')
+ {
+ if( is_array($post) )
+ {
+ $params_str = '';
+ foreach($post as $key => $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);
+ }
+
+ 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;
+ }
+?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.34.2/core/kernel/globals.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.34
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property

Event Timeline