500 Error"; echo "Bad marker: " . $path; exit(); } $parts = explode("/", $path); if (($parts[0] != "faces") && ($parts[0] != "_markers_")) { header('HTTP/1.0 500 Error'); echo "

500 Error

"; echo "Bad marker: " . $path; exit(); } $db = new SQLite3($dbfile, SQLITE3_OPEN_READONLY); if ($parts[0] == "faces") { if (count($parts) != 3) { header('HTTP/1.0 500 Error'); echo "

500 Error

"; echo "Bad face: " . $path; exit(); } $ft = 0; if ($parts[1] == "8x8") { $ft = 0; } elseif ($parts[1] == '16x16') { $ft = 1; } elseif ($parts[1] == '32x32') { $ft = 2; } elseif ($parts[1] == 'body') { $ft = 3; } $pn = explode(".", $parts[2]); $stmt = $db->prepare('SELECT Image from Faces WHERE PlayerName=:pn AND TypeID=:ft'); $stmt->bindValue(":pn", $pn[0], SQLITE3_TEXT); $stmt->bindValue(":ft", $ft, SQLITE3_INTEGER); $res = $stmt->execute(); $row = $res->fetchArray(); if (isset($row[0])) { header('Content-Type: image/png'); echo $row[0]; } else { header('Location: ../images/blank.png'); exit; } } else { // _markers_ $in = explode(".", $parts[1]); $name = implode(".", array_slice($in, 0, count($in) - 1)); $ext = $in[count($in) - 1]; if (($ext == "json") && (strpos($name, "marker_") == 0)) { $world = substr($name, 7); $stmt = $db->prepare('SELECT Content from MarkerFiles WHERE FileName=:fn'); $stmt->bindValue(':fn', $world, SQLITE3_TEXT); $res = $stmt->execute(); $row = $res->fetchArray(); header('Content-Type: application/json'); if (isset($row[0])) { echo $row[0]; } else { echo "{ }"; } } else { $stmt = $db->prepare('SELECT Image from MarkerIcons WHERE IconName=:in'); $stmt->bindValue(":in", $name, SQLITE3_TEXT); $res = $stmt->execute(); $row = $res->fetchArray(); if (isset($row[0])) { header('Content-Type: image/png'); echo $row[0]; } else { header('Location: ../images/blank.png'); exit; } } } $res->finalize(); $stmt->close(); $db->close(); exit;