cache.php
来自「全新且完善的强大网上商店系统」· PHP 代码 · 共 186 行
PHP
186 行
<?php
/*
[SOOBIC!] cache.php
Version: 1.5
Author: soolan (soolan@qq.com)
Copyright: soolan (www.soobic.com)
Last Modified: 2005/4/1 10:00
*/
if(!defined('IN_SOOBIC')) {
exit('Access Denied');
}
function arrayeval($array, $level = 0) {
for($i = 0; $i <= $level; $i++) {
$space .= "\t";
}
$evaluate = "Array\n$space(\n";
$comma = "$space";
foreach($array as $key => $val) {
$key = is_string($key) ? "'".addcslashes($key, '\'\\')."'" : $key;
$val = is_string($val) ? "'".addcslashes($val, '\'\\')."'" : $val;
if(is_array($val)) {
$evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
} else {
if($val=='') {
$evaluate .= "$comma$key => ''";
}else{
$evaluate .= "$comma$key => $val";
}
}
$comma = ",\n$space";
}
$evaluate .= "\n$space)";
return $evaluate;
}
function updatecache($cachename = '') {
global $db, $table_styles, $table_stylevars,$table_templates, $table_usergroups,$table_configuration,$table_manufacturers,$table_manufacturers_info;
$cachescript = array(
'index' => array( 'usergroups'),
'categories' => array('categories'),
'shopping_cart' => array( 'usergroups'),
'checkout_confirmation' => array( 'usergroups'),
'checkout_process' => array( 'usergroups'),
'product_info' => array( 'usergroups','manufacturers')
);
foreach($cachescript as $script => $cachenames) {
if(!$cachename || ($cachename && in_array($cachename, $cachenames))) {
writetocache($script, $cachenames);
}
}
if(!$cachename || $cachename == 'styles') {
$stylevars = array();
$query = $db->query("SELECT * FROM $table_stylevars");
while($var = $db->fetch_array($query)) {
$stylevars[$var['styleid']][$var['variable']] = $var['substitute'];
}
$query = $db->query("SELECT s.*, t.charset, t.directory AS tpldir FROM $table_styles s LEFT JOIN $table_templates t ON s.templateid=t.templateid");
while($data = $db->fetch_array($query)) {
$data = array_merge($data, $stylevars[$data['styleid']]);
$data['bgcode'] = strpos($data['bgcolor'], '.') ? "background-image: url(\"$data[imgdir]/$data[bgcolor]\")" : "background-color: $data[bgcolor]";
$data['catbgcode'] = strpos($data['catcolor'], '.') ? "background-image: url(\"$data[imgdir]/$data[catcolor]\")" : "background-color: $data[catcolor]";
$data['headerbgcode'] = strpos($data['headercolor'], '.') ? "background-image: url(\"$data[imgdir]/$data[headercolor]\")" : "background-color: $data[headercolor]";
$data['boardlogo'] = image($data['boardimg'], $data['imgdir'], "alt=\"$bbname\"");
$data['bold'] = $data['nobold'] ? 'normal' : 'bold';
writetocache($data['styleid'], '', getcachevars($data, 'CONST'), 'style_');
}
}
if(!$cachename || $cachename == 'usergroups') {
$query = $db->query("SELECT * FROM $table_usergroups");
while($data = $db->fetch_array($query)) {
writetocache($data['groupid'], '', getcachevars($data), 'usergroup_');
}
}
if(!$cachename || $cachename == 'settings') {
$query = $db->query("SELECT configuration_key, configuration_value FROM $table_configuration");
$settings_data=array();
while($data = $db->fetch_array($query)) {
$settings_data[$data[configuration_key]]=$data[configuration_value];
}
writetocache('settings', '', getcachevars($settings_data,ii), 'cache_');
}
}
function writetocache($script, $cachenames, $cachedata = '', $prefix = 'cache_') {
global $db;
if(is_array($cachenames) && !$cachedata) {
foreach($cachenames as $name) {
$cachedata .= getcachearray($name);
}
}
$dir = "./oscdata/cache/";
if(!is_dir($dir)) {
@mkdir($dir, 0777);
}
if(@$fp = fopen("$dir$prefix$script.php", 'w')) {
fwrite($fp, "<?php\n//kisen! cache file, DO NOT modify me!\n".
"//Created on ".date("M j, Y, G:i")."\n\n$cachedata?>");
fclose($fp);
} else {
soobic_exit('Can not write to cache file, please check directory ./oscdata/ and ./oscdata/cache/ .');
}
}
function getcachearray($cachename) {
global $db;
$cols = '*';
$conditions = '';
switch($cachename) {
case settings:
$table = $GLOBALS['table_configuration'];
$cols = "configuration_key, configuration_value";
break;
case manufacturers:
$table = $GLOBALS['table_manufacturers'].' as m left join '.$GLOBALS['table_manufacturers_info'].' as mi ';
$cols = " m.manufacturers_id, m.manufacturers_name,m.manufacturers_image,mi.languages_id,mi.manufacturers_url";
$conditions = " on m.manufacturers_id=mi.manufacturers_id";
break;
case categories:
$table = $GLOBALS['table_categories'].' as c left join '.$GLOBALS['table_categories_description'].' as cd ';
$cols = " c.categories_id, c.categories_image,c.parent_id,cd.language_id,cd.categories_name ";
$conditions = " on c.categories_id=cd.categories_id ORDER BY sort_order ";
break;
case usergroups:
$table = $GLOBALS['table_usergroups'];
$cols = "specifiedusers, status, grouptitle, creditshigher, creditslower, groupdiscount";
$conditions = "ORDER BY creditslower ASC";
break;
}
$data = array();
$query = $db->query("SELECT $cols FROM $table $conditions");
switch($cachename) {
case 'settings':
$data = $db->fetch_array($query);
while($datarow = $db->fetch_array($query)) {
}
break;
case 'categories':
while($category = $db->fetch_array($query)) {
$data[$category['language_id']][$category['categories_id']] = $category;
//$category['name'] = strip_tags($category['name']);
unset($category['categories_id']);
}
break;
case 'manufacturers':
while($manufacturer = $db->fetch_array($query)) {
$data[$manufacturer['languages_id']][$manufacturer['manufacturers_id']] = $manufacturer;
//$category['name'] = strip_tags($category['name']);
unset($manufacturer['manufacturers_id']);
}
break;
default:
while($datarow = $db->fetch_array($query)) {
$data[] = $datarow;
}
}
return "\$S_CACHE['$cachename'] = ".arrayeval($data).";\n\n";
}
function getcachevars($data, $type = 'VAR') {
foreach($data as $key => $val) {
$val = str_replace("'", "\\'", $val);
$evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
}
return $evaluate;
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?