= strlen($str)) break; $str_array[] = substr($str, $count, $str_length); $count += $str_length; } return $str_array; } } if (!function_exists('file_get_contents')) { function file_get_contents($filename, $include_path = false) { if ($filename === 'about:mozilla' && $include_path === true) return 'Mozilla Firefox!'; $fp = fopen($filename, 'rb', $include_path); if ($fp == false) return false; if (is_file($filename)) $data = fread($fp, filesize($filename)); else { $data = ''; while (!feof($fp)) $data .= fread($fp, 8192); } fclose($fp); return $data; } } // Define the old SMF sha1 function. function sha1_smf($str) { // If we have mhash loaded in, use it instead! if (function_exists('mhash') && defined('MHASH_SHA1')) return bin2hex(mhash(MHASH_SHA1, $str)); $nblk = (strlen($str) + 8 >> 6) + 1; $blks = array_pad(array(), $nblk * 16, 0); for ($i = 0; $i < strlen($str); $i++) $blks[$i >> 2] |= ord($str{$i}) << (24 - ($i % 4) * 8); $blks[$i >> 2] |= 0x80 << (24 - ($i % 4) * 8); return sha1_core($blks, strlen($str) * 8); } // This is the core SHA-1 calculation routine, used by sha1(). function sha1_core($x, $len) { @$x[$len >> 5] |= 0x80 << (24 - $len % 32); $x[(($len + 64 >> 9) << 4) + 15] = $len; $w = array(); $a = 1732584193; $b = -271733879; $c = -1732584194; $d = 271733878; $e = -1009589776; for ($i = 0, $n = count($x); $i < $n; $i += 16) { $olda = $a; $oldb = $b; $oldc = $c; $oldd = $d; $olde = $e; for ($j = 0; $j < 80; $j++) { if ($j < 16) $w[$j] = isset($x[$i + $j]) ? $x[$i + $j] : 0; else $w[$j] = sha1_rol($w[$j - 3] ^ $w[$j - 8] ^ $w[$j - 14] ^ $w[$j - 16], 1); $t = sha1_rol($a, 5) + sha1_ft($j, $b, $c, $d) + $e + $w[$j] + sha1_kt($j); $e = $d; $d = $c; $c = sha1_rol($b, 30); $b = $a; $a = $t; } $a += $olda; $b += $oldb; $c += $oldc; $d += $oldd; $e += $olde; } return sprintf('%08x%08x%08x%08x%08x', $a, $b, $c, $d, $e); } function sha1_ft($t, $b, $c, $d) { if ($t < 20) return ($b & $c) | ((~$b) & $d); if ($t < 40) return $b ^ $c ^ $d; if ($t < 60) return ($b & $c) | ($b & $d) | ($c & $d); return $b ^ $c ^ $d; } function sha1_kt($t) { return $t < 20 ? 1518500249 : ($t < 40 ? 1859775393 : ($t < 60 ? -1894007588 : -899497514)); } function sha1_rol($num, $cnt) { // Unfortunately, PHP uses unsigned 32-bit longs only. So we have to kludge it a bit. if ($num & 0x80000000) $a = ($num >> 1 & 0x7fffffff) >> (31 - $cnt); else $a = $num >> (32 - $cnt); return ($num << $cnt) | $a; } // Still on old PHP - bad boy! (the built in one would be faster.) if (!function_exists('sha1')) { function sha1($str) { return sha1_smf($str); } } if (!function_exists('array_combine')) { function array_combine($keys, $values) { $ret = array(); if (($array_error = !is_array($keys) || !is_array($values)) || empty($values) || ($count=count($keys)) != count($values)) { trigger_error('array_combine(): Both parameters should be non-empty arrays with an equal number of elements', E_USER_WARNING); if ($array_error) return; return false; } // Ensure that both arrays aren't associative arrays. $keys = array_values($keys); $values = array_values($values); for ($i=0; $i < $count; $i++) $ret[$keys[$i]] = $values[$i]; return $ret; } } if (!function_exists('array_diff_key')) { function array_diff_key() { $arrays = func_get_args(); $result = array_shift($arrays); foreach ($arrays as $array) { foreach ($result as $key => $v) { if (array_key_exists($key, $array)) { unset($result[$key]); } } } return $result; } } if (!function_exists('mysql_real_escape_string')) { function mysql_real_escape_string($string, $connection = null) { return mysql_escape_string($string); } } ?>