save($engine); // NOTE: Fallthrough! case "engines": json_response($engines->allSorted()); break; } // ----------- Check for query ---------------------- if ($query) { $words = parse_query($query); $keyword = $words[0]; unset($words[0]); // Look for requested engine $engine = $engines->find(strtolower($keyword), 'keyword'); if (!$engine) { $error = "Unknown engine: $keyword"; break; } // Check positional arguments from engine against provided query $positionals = get_positionals($engine["url"]); if (count($words) < count($positionals)) { $error = sprintf("%s requires at least %d positional arguments (%s)", $engine["name"], count($positionals), $engine["remarks"]); break; } // If everything checks out, construct URL and redirect $url = url_replace($engine["url"], $words, $positionals); header("Location: $url"); die; } } while(0); include_once "page-template.php";