1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409:
<?php
class PHPShopParser {
static function check($path, $value) {
$string = null;
$path = $GLOBALS['SysValue']['dir']['templates'] . chr(47) . $_SESSION['skin'] . chr(47) . $path;
if (file_exists($path))
$string = @file_get_contents($path);
else
echo "Error Tmp File: $path";
if (stristr($string, '@' . $value . '@'))
return true;
}
static function checkFile($path, $mod = false) {
if (!$mod)
$path = $GLOBALS['SysValue']['dir']['templates'] . chr(47) . $_SESSION['skin'] . chr(47) . $path;
if (file_exists($path))
return true;
else
return false;
}
static function replacedir($string) {
$replaces = array(
"/images\//i" => $GLOBALS['SysValue']['dir']['dir'] . $GLOBALS['SysValue']['dir']['templates'] . chr(47) . $_SESSION['skin'] . "/images/",
"/!images!\//i" => "images/",
"/java\//i" => "/java/",
"/css\//i" => "/css/",
"/phpshop\//i" => "/phpshop/",
"/\/id\//i" => $GLOBALS['SysValue']['dir']['dir'] . "/id/",
);
return $string = preg_replace(array_keys($replaces), array_values($replaces), $string);
}
static function file($path, $return = false, $replace = true, $check_template = false) {
$string = null;
if ($check_template) {
$path_template = str_replace('./phpshop', $GLOBALS['SysValue']['dir']['templates'] . chr(47) . $_SESSION['skin'], $path);
if (is_file($path_template))
$path = $path_template;
}
if (is_file($path))
$string = @file_get_contents($path);
else
echo "Error Tpl File: $path";
$replaces = array(
"/images\//i" => $GLOBALS['SysValue']['dir']['dir'] . $GLOBALS['SysValue']['dir']['templates'] . chr(47) . $_SESSION['skin'] . "/images/",
"/!images!\//i" => "images/",
"/java\//i" => "/java/",
"/phpshop\//i" => "/phpshop/",
);
$string = preg_replace_callback("/(@php)(.*)(php@)/sU", "phpshopparserevalstr", $string);
$string = preg_replace_callback("/@([a-zA-Z0-9_]+)@/", 'PHPShopParser::SysValueReturn', $string);
if (!empty($replace))
$string = preg_replace(array_keys($replaces), array_values($replaces), $string);
if (!empty($return))
return $string;
else
echo $string;
}
static function set($name, $value, $flag = false) {
if ($flag)
$GLOBALS['SysValue']['other'][$name].=$value;
else
$GLOBALS['SysValue']['other'][$name] = $value;
}
static function get($name) {
return $GLOBALS['SysValue']['other'][$name];
}
static function SysValueReturn($m) {
global $SysValue;
return $SysValue["other"][$m[1]];
}
}
function phpshopparserevalstr($str) {
ob_start();
if (eval(stripslashes($str[2])) !== NULL) {
echo ('');
echo ('');
echo ('<pre>');
echo ($str[2]);
echo ('</pre></div>');
return ob_get_clean();
}
return ob_get_clean();
}
class PHPShopCssParser {
var $file;
var $css_array;
function __construct($file) {
$this->file = $file;
}
function parse() {
if (file_exists($this->file)) {
$css = file_get_contents($this->file);
preg_match_all('/(?ims)([a-z0-9\s\.\:#_\-@,>]+)\{([^\}]*)\}/', $css, $arr);
$result = array();
foreach ($arr[0] as $i => $x) {
$selector = trim($arr[1][$i]);
$rules = explode(';', trim($arr[2][$i]));
$rules_arr = array();
foreach ($rules as $strRule) {
if (!empty($strRule)) {
$rule = explode(":", $strRule);
$rules_arr[trim($rule[0])] = trim($rule[1]);
}
}
$result[$selector] = $rules_arr;
}
$this->css_array = $result;
}
return $this->css_array;
}
function getParam($element, $param) {
return $this->css_array[$element][$param];
}
function setParam($element, $param, $value, $add = ' !important') {
switch ($param) {
case "filter":
$filters = array('filter', '-webkit-filter', '-ms-filter', '-o-filter', '-moz-filter');
foreach ($filters as $set) {
$this->css_array[$element][$set] = 'hue-rotate(' . $value . 'deg)'.$add;
}
$this->css_array[$element]['-editor-filter'] = $value;
break;
default: $this->css_array[$element][$param] = $value.$add;
}
}
function compile() {
$css = null;
if (is_array($this->css_array))
foreach ($this->css_array as $k => $v) {
$css.='
' . $k . '{
';
if (is_array($v))
foreach ($v as $name => $rule)
$css.=$name . ':' . $rule . ';
';
$css.='}';
}
return $css;
}
}
function ParseTemplate($TemplateName) {
global $SysValue;
$file = tmpGetFile($SysValue['dir']['templates'] . chr(47) . $_SESSION['skin'] . chr(47) . $TemplateName);
$string = Parser($file);
$path_parts = pathinfo($_SERVER['PHP_SELF']);
if (getenv("COMSPEC"))
$dirSlesh = "\\";
else
$dirSlesh = "/";
$root = $path_parts['dirname'] . "/";
if ($path_parts['dirname'] != $dirSlesh) {
$replaces = array(
"/images\//i" => $SysValue['dir']['templates'] . chr(47) . $_SESSION['skin'] . "/images/",
"/!images!\//i" => "images/",
"/\/favicon.ico/i" => $root . "favicon.ico",
"/java\//i" => $root . "java/",
"/css\//i" => "/css/",
"/phpshop\//i" => $root . "phpshop/",
"/\/order\//i" => $root . "order/",
"/\/done\//i" => $root . "done/",
"/\/print\//i" => $root . "print/",
"/\/links\//i" => $root . "links/",
"/\/files\//i" => $root . "files/",
"/\/opros\//i" => $root . "opros/",
"/\/page\//i" => $root . "page/",
"/\/news\//i" => $root . "news/",
"/\/gbook\//i" => $root . "gbook/",
"/\/users\//i" => $root . "users/",
"/\/clients\//i" => $root . "clients/",
"/\/price\//i" => $root . "price/",
"/\/pricemail\//i" => $root . "pricemail/",
"/\/compare\//i" => $root . "compare/",
"/\/wishlist\//i" => $root . "wishlist/",
"/\/shop\/CID/i" => $root . "shop/CID",
"/\/shop\/UID/i" => $root . "shop/UID",
"/\/search\//i" => $root . "search/",
"/\"\/\"/i" => $root,
"/\/notice\//i" => $root . "notice/",
"/\/map\//i" => $root . "map/",
"/\/success\//i" => $root . "success/",
"/\/fail\//i" => $root . "fail/",
"/\/rss\//i" => $root . "rss/",
"/\/newtip\//i" => $root . "newtip/",
"/\/spec\//i" => $root . "spec/",
"/\/forma\//i" => $root . "forma/",
"/\/newprice\//i" => $root . "newprice/",
);
} else {
$replaces = array(
"/images\//i" => $SysValue['dir']['templates'] . chr(47) . $_SESSION['skin'] . "/images/",
"/!images!\//i" => "images/",
"/java\//i" => "/java/",
"/css\//i" => "/css/",
"/phpshop\//i" => "/phpshop/",
);
}
echo preg_replace(array_keys($replaces), array_values($replaces), $string);
}
function ParseTemplateReturn($TemplateName, $mod = false) {
global $SysValue;
if ($mod)
$file = tmpGetFile($TemplateName);
else
$file = tmpGetFile($SysValue['dir']['templates'] . chr(47) . $_SESSION['skin'] . chr(47) . $TemplateName);
$dis = Parser($file);
return $dis;
}
function evalstr($str) {
ob_start();
if (parser_function_guard == 'true') {
if (!allowedFunctions($str[2]))
return ob_get_clean();
}
if (eval(stripslashes($str[2])) !== NULL) {
echo ('');
echo ('');
echo ('<pre>');
echo ($str[2]);
echo ('</pre></div>');
return ob_get_clean();
}
return ob_get_clean();
}
function allowedFunctions($str) {
$Functions = array(
'if',
'else',
'switch',
'for',
'foreach',
'echo',
'print',
'print_r',
'array',
'isset',
'empty',
'chr',
'str_replace',
'empty'
);
$allowFunctions = array_merge($Functions, explode(',', parser_function_allowed));
preg_match_all('/\s*([A-Za-z0-9_$]+)\s*\(/isU', $str, $findedFunctions);
$remElements = array_diff($findedFunctions[1], $allowFunctions);
$denyFunctions = explode(',', parser_function_deny);
foreach ($denyFunctions as $deny)
if (stristr($str, $deny))
$remElements[] = $deny;
if (count($remElements) > 0) {
echo ('');
echo ('');
echo ('<pre>');
foreach ($remElements as $remElement) {
echo ($remElement . '()');
}
echo ('</pre>');
echo ('');
echo ('<pre>');
foreach ($allowFunctions as $allowFunction) {
echo ($allowFunction . '()<br>');
}
echo ('</pre></div>');
return false;
} else {
return true;
}
}
function SysValueReturn($m) {
global $SysValue;
return $SysValue["other"][$m[1]];
}
function Parser($string) {
return @preg_replace_callback("/@([a-zA-Z0-9_]+)@/", 'SysValueReturn', @preg_replace_callback("/(@php)(.*)(php@)/sU", "evalstr", $string));
}
function tmpGetFile($path) {
if (strpos($path, '.tpl')) {
$file = @file_get_contents($path);
if (!$file)
return false;
return $file;
}
else
return false;
}
?>