224 lines
4.7 KiB
PHP
Executable File
224 lines
4.7 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* system.php
|
|
* string-to-php and general system functions
|
|
*/
|
|
|
|
/**
|
|
* function system_save
|
|
*
|
|
* This function saves a list of variables provided after $file
|
|
* encapsulated in an array where KEY is the var name
|
|
* in a php file.
|
|
*
|
|
* Example usage:
|
|
* <code>
|
|
* <?php
|
|
* // Let's suppose you want to save an array called $my_arr
|
|
* // in file $my_file
|
|
* $my_file = 'path/to/file'
|
|
* $my_arr = array ('val1', 'val2', 'val3');
|
|
* $save_arr = array('$my_arr' => $my_arr); //same as: $save_arr['$my_arr'] = $my_arr);
|
|
* system_save($my_file, $my_arr);
|
|
* // now the file $my_file will contain the following lines:
|
|
* // global $my_arr;
|
|
* // $my_arr = array (
|
|
* // '$my_arr' => val1',
|
|
* // '$my_arr' => 'val2',
|
|
* // '$my_arr' => 'val3'
|
|
* // );
|
|
* ?>
|
|
* </code>
|
|
*
|
|
* @param string $file
|
|
* file path where $array contents will be saved
|
|
* @array $var_list list of vars to be saved
|
|
* @return bool
|
|
*
|
|
* @see config_save, config_load
|
|
*
|
|
*/
|
|
function system_save($file, $array) {
|
|
|
|
// if ( ( $numargs = func_num_args() ) > 1) {
|
|
$string = "<?php\n\n";
|
|
|
|
// $arg_list = func_get_args();
|
|
foreach ($array as $key => $arg) {
|
|
// $vname = utils_vname ($arg);
|
|
// var_export($arg);
|
|
$s = /*" global {$key};\n*/ "\${$key} = " . var_export($arg, true) . ";\n";
|
|
$string .= $s;
|
|
}
|
|
|
|
$string .= "\n?>";
|
|
|
|
return io_write_file($file, $string);
|
|
|
|
// } else die('Wrong number of parameters!');
|
|
}
|
|
|
|
function system_hashsalt_save($force = false) {
|
|
global $fp_config;
|
|
if ($force || !file_exists(HASHSALT_FILE))
|
|
return system_save(HASHSALT_FILE, array(
|
|
'fp_hashsalt' => $fp_config ['general'] ['blogid'] . ABS_PATH . BLOG_BASEURL . mt_rand()
|
|
));
|
|
return true;
|
|
}
|
|
|
|
define('SYSTEM_VER', '1.1');
|
|
|
|
function system_ver() {
|
|
return 'fp-' . SYSTEM_VER;
|
|
}
|
|
|
|
function system_ver_compare($newver, $oldver) {
|
|
$nv_arr = explode('.', $newver);
|
|
$ov_arr = explode('.', $oldver);
|
|
$cn = count($nv_arr);
|
|
$co = count($ov_arr);
|
|
$max = min($cn, $co);
|
|
|
|
// let's compare if one of the first version numbers differs
|
|
// from new version, being greater
|
|
for($i = 0; $i < $max; $i++) {
|
|
if ($nv_arr [$i] > $ov_arr [$i]) {
|
|
return 1;
|
|
}
|
|
if ($nv_arr [$i] < $ov_arr [$i]) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
// if they equals, but still new version has more digits
|
|
// then old-version is still outdated
|
|
if ($cn > $co)
|
|
return 1;
|
|
}
|
|
|
|
function system_generate_id($string) {
|
|
return 'fp-' . dechex(crc32($string) ^ mt_rand());
|
|
}
|
|
|
|
function system_guessblogroot() {
|
|
return substr($_SERVER ['REQUEST_URI'], 0, strrpos($_SERVER ['REQUEST_URI'], '/') + 1);
|
|
}
|
|
|
|
function system_guessbaseurl() {
|
|
return 'http://' . $_SERVER ['HTTP_HOST'] . BLOG_ROOT;
|
|
}
|
|
|
|
function system_getindex() {
|
|
if (MOD_BLOG != INDEX)
|
|
return MOD_BLOG;
|
|
else
|
|
return 'index.php';
|
|
}
|
|
|
|
function system_unregister_globals() {
|
|
$v = @ini_get('register_globals');
|
|
|
|
// on error we unregister anyway
|
|
if ($v || is_null($v)) {
|
|
foreach ($_REQUEST as $var => $val) {
|
|
unset($GLOBALS [$var]);
|
|
}
|
|
}
|
|
}
|
|
|
|
function system_sanitizequery() {
|
|
$err = false;
|
|
foreach ($_GET as $k => $v) {
|
|
if (preg_match('![<>]|://!', $v)) {
|
|
$err = true;
|
|
break;
|
|
}
|
|
}
|
|
if ($err) {
|
|
// @todo add log handler
|
|
utils_redirect();
|
|
}
|
|
}
|
|
|
|
function system_prepare_iis() {
|
|
if (!@$_SERVER ['REQUEST_URI']) {
|
|
$_SERVER ['REQUEST_URI'] = substr($_SERVER ['PHP_SELF'], 1);
|
|
if (isset($_SERVER ['QUERY_STRING'])) {
|
|
$_SERVER ['REQUEST_URI'] .= '?' . $_SERVER ['QUERY_STRING'];
|
|
}
|
|
}
|
|
}
|
|
|
|
function system_init_action_params() {
|
|
global $fp_params;
|
|
|
|
$fp_params = array();
|
|
|
|
if ($x = @$_GET ['x'])
|
|
$fp_params = utils_kexplode($x, ':;', false);
|
|
|
|
$fp_params = array_merge($_GET, $fp_params);
|
|
}
|
|
|
|
function system_init() {
|
|
system_sanitizequery();
|
|
system_unregister_globals();
|
|
system_prepare_iis();
|
|
|
|
$GLOBALS ['fpdb'] = new FPDB();
|
|
|
|
$GLOBALS ['fp_widgets'] = new widget_indexer();
|
|
|
|
$GLOBALS ['smarty'] = & $GLOBALS ['_FP_SMARTY'];
|
|
$smarty = & $GLOBALS ['smarty'];
|
|
|
|
$GLOBALS ['fp_config'] = config_load();
|
|
|
|
cookie_setup();
|
|
sess_setup();
|
|
user_loggedin();
|
|
|
|
ob_start();
|
|
|
|
$GLOBALS ['theme'] = theme_loadsettings();
|
|
|
|
$GLOBALS ['lang'] = lang_load();
|
|
|
|
plugin_loadall();
|
|
|
|
// init smarty
|
|
$smarty->compile_dir = CACHE_DIR;
|
|
$smarty->cache_dir = SMARTY_DIR . 'cache/';
|
|
$smarty->caching = 0;
|
|
|
|
do_action('init');
|
|
ob_end_clean();
|
|
}
|
|
|
|
function system_seterr($module, $val) {
|
|
if ($module)
|
|
$elem = 'success_' . $module;
|
|
else
|
|
$elem = 'success';
|
|
sess_add($elem, $val);
|
|
}
|
|
|
|
function system_geterr($module = '') {
|
|
if ($module)
|
|
$elem = 'success_' . $module;
|
|
else
|
|
$elem = 'success';
|
|
return sess_remove($elem);
|
|
}
|
|
|
|
/* delayed print */
|
|
function system_dpr($action, $content) {
|
|
$p = print_r($content, 1);
|
|
$f = create_function('', "echo '<pre style=\'position:absolute\'>$p</pre>';");
|
|
add_action($action, $f);
|
|
}
|
|
|
|
?>
|