$link = str_replace("\\{$i}", $matches[$i], $link); } $link = preg_replace('/\\\\(\\d+?)/is', '', $link); $found = 1; } } if (preg_match('/^moved:(.+)/is', $link, $matches)) { Header("HTTP/1.1 301 Moved Permanently"); header("Location:" . $matches[1]); exit; } include_once "./config.php"; include_once "./lib/loader.php"; if ($link != '') { $mdl = new module(); $param_str = $mdl->parseLinks("<a href=\"{$link}\">"); if (preg_match("/<a href=\".+?\\?pd=(.*?)&(.+)\">/", $param_str, $matches)) { $pd = $matches[1]; $other = $matches[2]; $tmp = explode('&', $other); foreach ($tmp as $pair) { $tmp2 = explode('=', $pair); $_GET[$tmp2[0]] = $tmp2[1]; ${$tmp2[0]} = $tmp2[1]; } } elseif (preg_match("/<a href=\".+?\\?pd=(.*?)\">/", $param_str, $matches)) { $pd = $matches[1]; } } else { header("HTTP/1.0 404 Not Found"); echo "The page cannot be found. Please use <a href='/'>this link</a> to continue browsing.";
/** * Title * * Description * * @access public */ function context(&$out) { global $ajax; if ($ajax) { header("HTTP/1.0: 200 OK\n"); header('Content-Type: text/html; charset=utf-8'); global $op; if ($op == 'process') { global $keyword; global $body; global $type; $found = array(); $keywords = array(); $keys = array(); //processing keywords if ($keyword) { $keys[$keyword] = $type; } if ($body != '') { if (preg_match_all('/runScript\\([\'"](.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'script'; } } if (preg_match_all('/setGlobal\\([\'"](.+?)\\.(.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'object'; $keys[$m[1][$i] . '.' . $m[2][$i]] = 'property'; } } if (preg_match_all('/getGlobal\\([\'"](.+?)\\.(.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'object'; $keys[$m[1][$i] . '.' . $m[2][$i]] = 'property'; } } if (preg_match_all('/sg\\([\'"](.+?)\\.(.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'object'; $keys[$m[1][$i] . '.' . $m[2][$i]] = 'property'; } } if (preg_match_all('/gg\\([\'"](.+?)\\.(.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'object'; $keys[$m[1][$i] . '.' . $m[2][$i]] = 'property'; } } if (preg_match_all('/callMethod\\([\'"](.+?)\\.(.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'object'; $keys[$m[1][$i] . '.' . $m[2][$i]] = 'method'; } } if (preg_match_all('/cm\\([\'"](.+?)\\.(.+?)[\'"]/is', $body, $m)) { $total = count($m[0]); for ($i = 0; $i < $total; $i++) { $keys[$m[1][$i]] = 'object'; $keys[$m[1][$i] . '.' . $m[2][$i]] = 'method'; } } } //print_r($keys);echo "<br>"; foreach ($keys as $k => $v) { if ($v == 'script') { $keywords["runscript(\"" . $k . "\""] = $k; $keywords["runscript('" . $k . "'"] = $k; } if ($v == 'object') { $keywords["setGlobal(\"" . $k . "."] = $k; $keywords["setGlobal('" . $k . "."] = $k; $keywords["sg(\"" . $k . "."] = $k; $keywords["sg('" . $k . "."] = $k; } if ($v == 'property') { $keywords["setGlobal(\"" . $k] = $k; $keywords["setGlobal('" . $k] = $k; $keywords["sg(\"" . $k] = $k; $keywords["sg('" . $k] = $k; $tmp = explode('.', $k); $keywords["->setProperty('" . $tmp[1]] = $tmp[1]; $keywords["->setProperty(\"" . $tmp[1]] = $tmp[1]; } if ($v == 'method') { $keywords["callMethod(\"" . $k] = $k; $keywords["callMethod('" . $k] = $k; $keywords["cm(\"" . $k] = $k; $keywords["cm('" . $k] = $k; $tmp = explode('.', $k); $keywords["->callMethod('" . $tmp[1]] = $tmp[1]; $keywords["->callMethod(\"" . $tmp[1]] = $tmp[1]; } } //print_r($keywords);echo "<br>"; $mdl = new module(); //processing body for keywords //... //processing keywords foreach ($keywords as $k => $v) { //scripts $scripts = SQLSelect("SELECT ID, TITLE FROM scripts WHERE (CODE LIKE '%" . DBSafe($k) . "%' OR TITLE LIKE '" . DBSafe($v) . "')"); $total = count($scripts); for ($i = 0; $i < $total; $i++) { if (!$found['script' . $scripts[$i]['ID']]) { $rec = array(); $rec['TYPE'] = 'script'; $rec['TITLE'] = $scripts[$i]['TITLE']; $rec['LINK'] = '/admin.php?action=scripts&md=scripts&inst=adm&view_mode=edit_scripts&id=' . $scripts[$i]['ID']; $found['script' . $scripts[$i]['ID']] = $rec; } } //objects $objects = SQLSelect("SELECT ID, TITLE, CLASS_ID FROM objects WHERE (TITLE LIKE '" . DBSafe($v) . "')"); $total = count($objects); for ($i = 0; $i < $total; $i++) { if (!$found['object' . $scripts[$i]['ID']]) { $rec = array(); $rec['TYPE'] = 'object'; $rec['TITLE'] = $objects[$i]['TITLE']; $rec['LINK'] = "?(panel:{action=classes}classes:{view_mode=edit_classes,instance=adm,tab=objects,id=" . $objects[$i]['CLASS_ID'] . "})&md=objects&view_mode=edit_objects&id=" . $objects[$i]['ID']; $result = $mdl->parseLinks("<a href=\"" . $rec['LINK'] . "\">"); if (preg_match('/\\?pd=.+"/', $result, $m)) { $rec['LINK'] = '/admin.php' . $m[0]; } $found['object' . $objects[$i]['ID']] = $rec; } } //methods $methods = SQLSelect("SELECT methods.ID, methods.TITLE, classes.TITLE as CLASS, objects.TITLE as OBJECT, methods.CLASS_ID, methods.OBJECT_ID FROM methods LEFT JOIN classes ON methods.CLASS_ID=classes.ID LEFT JOIN objects ON methods.OBJECT_ID=objects.ID WHERE (methods.CODE LIKE '%" . DBSafe($k) . "%' OR methods.TITLE LIKE '" . DBSafe($v) . "')"); $total = count($methods); for ($i = 0; $i < $total; $i++) { if (!$found['method' . $methods[$i]['ID']]) { $rec = array(); $rec['TYPE'] = 'method'; $rec['TITLE'] = $methods[$i]['TITLE']; if ($methods[$i]['OBJECT_ID']) { $rec['LINK'] = "?(panel:{action=classes}classes:{view_mode=edit_classes,instance=adm,tab=objects,id=" . $methods[$i]['CLASS_ID'] . "})&md=objects&view_mode=edit_objects&id=" . $methods[$i]['OBJECT_ID'] . "&tab=methods&overwrite=1&method_id=" . $methods[$i]['ID']; $rec['TITLE'] = $methods[$i]['OBJECT'] . '.' . $rec['TITLE']; } else { $rec['LINK'] = "?(panel:{action=classes}classes:{view_mode=edit_classes,instance=adm,tab=methods,id=" . $methods[$i]['CLASS_ID'] . "})&md=methods&view_mode=edit_methods&id=" . $methods[$i]['ID']; $rec['TITLE'] = $methods[$i]['CLASS'] . ' (class).' . $rec['TITLE']; } $result = $mdl->parseLinks("<a href=\"" . $rec['LINK'] . "\">"); if (preg_match('/\\?pd=.+"/', $result, $m)) { $rec['LINK'] = '/admin.php' . $m[0]; } $found['method' . $methods[$i]['ID']] = $rec; } } //properties $properties = SQLSelect("SELECT properties.ID, properties.TITLE, classes.TITLE as CLASS, objects.TITLE as OBJECT, properties.CLASS_ID, properties.OBJECT_ID FROM properties LEFT JOIN classes ON properties.CLASS_ID=classes.ID LEFT JOIN objects ON properties.OBJECT_ID=objects.ID WHERE (properties.TITLE LIKE '" . DBSafe($v) . "')"); $total = count($properties); for ($i = 0; $i < $total; $i++) { if (!$found['property' . $properties[$i]['ID'] . '_' . $properties[$i]['OBJECT_ID']]) { $rec = array(); $rec['TYPE'] = 'property'; $rec['TITLE'] = $properties[$i]['TITLE']; if ($properties[$i]['OBJECT_ID']) { $rec['LINK'] = "?(panel:{action=classes}classes:{view_mode=edit_classes,instance=adm,tab=objects,id=" . $properties[$i]['CLASS_ID'] . "})&md=objects&view_mode=edit_objects&id=" . $properties[$i]['OBJECT_ID'] . "&tab=properties"; $rec['TITLE'] = $properties[$i]['OBJECT'] . '.' . $rec['TITLE']; } else { $rec['LINK'] = "?(panel:{action=classes}classes:{view_mode=edit_classes,instance=adm,tab=properties,id=" . $properties[$i]['CLASS_ID'] . "})&md=properties&view_mode=edit_properties&id=" . $properties[$i]['ID']; $rec['TITLE'] = $properties[$i]['CLASS'] . ' (class).' . $rec['TITLE']; } $result = $mdl->parseLinks("<a href=\"" . $rec['LINK'] . "\">"); if (preg_match('/\\?pd=.+"/', $result, $m)) { $rec['LINK'] = '/admin.php' . $m[0]; } $found['property' . $properties[$i]['ID'] . '_' . $properties[$i]['OBJECT_ID']] = $rec; } } //properties $pvalues = SQLSelect("SELECT pvalues.ID, objects.TITLE as OBJECT, properties.ID as PROPERTY_ID, properties.TITLE, properties.CLASS_ID, pvalues.OBJECT_ID FROM pvalues LEFT JOIN properties ON pvalues.PROPERTY_ID=properties.ID LEFT JOIN objects ON pvalues.OBJECT_ID=objects.ID WHERE (properties.TITLE LIKE '" . DBSafe($v) . "')"); //print_r($pvalues); $total = count($pvalues); for ($i = 0; $i < $total; $i++) { if (!$found['property' . $pvalues[$i]['PROPERTY_ID'] . '_' . $pvalues[$i]['OBJECT_ID']]) { $rec = array(); $rec['TYPE'] = 'property'; $rec['TITLE'] = $pvalues[$i]['OBJECT'] . '.' . $pvalues[$i]['TITLE']; $rec['LINK'] = "?(panel:{action=classes}classes:{view_mode=edit_classes,instance=adm,tab=objects,id=" . $pvalues[$i]['CLASS_ID'] . "})&md=objects&view_mode=edit_objects&id=" . $pvalues[$i]['OBJECT_ID'] . "&tab=properties"; $result = $mdl->parseLinks("<a href=\"" . $rec['LINK'] . "\">"); if (preg_match('/\\?pd=.+"/', $result, $m)) { $rec['LINK'] = '/admin.php' . $m[0]; } $found['property' . $pvalues[$i]['PROPERTY_ID'] . '_' . $pvalues[$i]['OBJECT_ID']] = $rec; } } //menu items //timers //scene elements //web-vars } foreach ($found as $k => $v) { echo '<a href="' . $v['LINK'] . '" target=_blank>' . $v['TYPE'] . ': ' . $v['TITLE'] . '</a><br/>'; } //print_r($found); } exit; } if ($this->keyword) { $out['KEYWORD'] = $this->keyword; } if ($this->code_id) { $out['CODE_ID'] = $this->code_id; } if ($this->type) { $out['TYPE'] = $this->type; } }