diff options
author | lolcat <will@lolcat.ca> | 2025-08-11 01:55:15 +0000 |
---|---|---|
committer | lolcat <will@lolcat.ca> | 2025-08-11 01:55:15 +0000 |
commit | cdf958d29333d448f4521f4d2faa2592b58e9b27 (patch) | |
tree | 528f2a0ffa789a6f4279d9f54a4a2aaf391f390f /settings.php | |
download | shittyweb-search-cdf958d29333d448f4521f4d2faa2592b58e9b27.tar.gz shittyweb-search-cdf958d29333d448f4521f4d2faa2592b58e9b27.tar.bz2 shittyweb-search-cdf958d29333d448f4521f4d2faa2592b58e9b27.zip |
fix wikipedia crashgrafted
Diffstat (limited to 'settings.php')
-rw-r--r-- | settings.php | 601 |
1 files changed, 601 insertions, 0 deletions
diff --git a/settings.php b/settings.php new file mode 100644 index 0000000..75bc373 --- /dev/null +++ b/settings.php @@ -0,0 +1,601 @@ +<?php + +include "data/config.php"; + +/* + Define settings +*/ +$settings = [ + [ + "name" => "General", + "settings" => [ + [ + "description" => "Allow NSFW content", + "parameter" => "nsfw", + "options" => [ + [ + "value" => "yes", + "text" => "Yes" + ], + [ + "value" => "maybe", + "text" => "Maybe" + ], + [ + "value" => "no", + "text" => "No" + ] + ] + ], + [ + "description" => "Theme", + "parameter" => "theme", + "options" => [] + ], + [ + "description" => "Prevent clicking background elements when image viewer is open", + "parameter" => "bg_noclick", + "options" => [ + [ + "value" => "no", + "text" => "No" + ], + [ + "value" => "yes", + "text" => "Yes" + ] + ] + ] + ] + ], + [ + "name" => "Scrapers to use", + "settings" => [ + [ + "description" => "Autocomplete<br><i>Picking <span class=\"code-inline\">Auto</span> changes the source dynamically depending of the page's scraper<br><b>Warning:</b> If you edit this field, you will need to re-add the search engine so that the new autocomplete settings are applied!</i>", + "parameter" => "scraper_ac", + "options" => [ + [ + "value" => "disabled", + "text" => "Disabled" + ], + [ + "value" => "auto", + "text" => "Auto" + ], + [ + "value" => "brave", + "text" => "Brave" + ], + [ + "value" => "ddg", + "text" => "DuckDuckGo" + ], + [ + "value" => "yandex", + "text" => "Yandex" + ], + [ + "value" => "google", + "text" => "Google" + ], + [ + "value" => "startpage", + "text" => "Startpage" + ], + [ + "value" => "kagi", + "text" => "Kagi" + ], + [ + "value" => "qwant", + "text" => "Qwant" + ], + [ + "value" => "ghostery", + "text" => "Ghostery" + ], + [ + "value" => "yep", + "text" => "Yep" + ], + [ + "value" => "marginalia", + "text" => "Marginalia" + ], + [ + "value" => "yt", + "text" => "YouTube" + ], + [ + "value" => "sc", + "text" => "SoundCloud" + ] + ] + ], + [ + "description" => "Web", + "parameter" => "scraper_web", + "options" => [ + [ + "value" => "ddg", + "text" => "DuckDuckGo" + ], + [ + "value" => "brave", + "text" => "Brave" + ], + [ + "value" => "yandex", + "text" => "Yandex" + ], + [ + "value" => "google", + "text" => "Google" + ], + [ + "value" => "google_cse", + "text" => "Google CSE" + ], + [ + "value" => "startpage", + "text" => "Startpage" + ], + [ + "value" => "qwant", + "text" => "Qwant" + ], + [ + "value" => "ghostery", + "text" => "Ghostery" + ], + [ + "value" => "yep", + "text" => "Yep" + ], + [ + "value" => "greppr", + "text" => "Greppr" + ], + [ + "value" => "crowdview", + "text" => "Crowdview" + ], + [ + "value" => "mwmbl", + "text" => "Mwmbl" + ], + [ + "value" => "mojeek", + "text" => "Mojeek" + ], + [ + "value" => "baidu", + "text" => "Baidu" + ], + [ + "value" => "coccoc", + "text" => "Cốc Cốc" + ], + [ + "value" => "marginalia", + "text" => "Marginalia" + ], + [ + "value" => "wiby", + "text" => "wiby" + ], + [ + "value" => "curlie", + "text" => "Curlie" + ] + ] + ], + [ + "description" => "Images", + "parameter" => "scraper_images", + "options" => [ + [ + "value" => "ddg", + "text" => "DuckDuckGo" + ], + [ + "value" => "yandex", + "text" => "Yandex" + ], + [ + "value" => "brave", + "text" => "Brave" + ], + [ + "value" => "google", + "text" => "Google" + ], + [ + "value" => "google_cse", + "text" => "Google CSE" + ], + [ + "value" => "startpage", + "text" => "Startpage" + ], + [ + "value" => "qwant", + "text" => "Qwant" + ], + [ + "value" => "yep", + "text" => "Yep" + ], + [ + "value" => "baidu", + "text" => "Baidu" + ], + [ + "value" => "pinterest", + "text" => "Pinterest" + ], + [ + "value" => "cara", + "text" => "Cara" + ], + [ + "value" => "flickr", + "text" => "Flickr" + ], + [ + "value" => "fivehpx", + "text" => "500px" + ], + [ + "value" => "vsco", + "text" => "VSCO" + ], + [ + "value" => "imgur", + "text" => "Imgur" + ], + [ + "value" => "ftm", + "text" => "FindThatMeme" + ] + ] + ], + [ + "description" => "Videos", + "parameter" => "scraper_videos", + "options" => [ + [ + "value" => "yt", + "text" => "YouTube" + ], + [ + "value" => "vimeo", + "text" => "Vimeo" + ], + [ + "value" => "sepiasearch", + "text" => "Sepia Search" + ], + [ + "value" => "ddg", + "text" => "DuckDuckGo" + ], + [ + "value" => "brave", + "text" => "Brave" + ], + [ + "value" => "yandex", + "text" => "Yandex" + ], + [ + "value" => "google", + "text" => "Google" + ], + [ + "value" => "startpage", + "text" => "Startpage" + ], + [ + "value" => "qwant", + "text" => "Qwant" + ], + [ + "value" => "baidu", + "text" => "Baidu" + ], + [ + "value" => "coccoc", + "text" => "Cốc Cốc" + ] + ] + ], + [ + "description" => "News", + "parameter" => "scraper_news", + "options" => [ + [ + "value" => "ddg", + "text" => "DuckDuckGo" + ], + [ + "value" => "brave", + "text" => "Brave" + ], + [ + "value" => "google", + "text" => "Google" + ], + [ + "value" => "startpage", + "text" => "Startpage" + ], + [ + "value" => "qwant", + "text" => "Qwant" + ], + [ + "value" => "yep", + "text" => "Yep" + ], + [ + "value" => "mojeek", + "text" => "Mojeek" + ], + [ + "value" => "baidu", + "text" => "Baidu" + ] + ] + ], + [ + "description" => "Music", + "parameter" => "scraper_music", + "options" => [ + [ + "value" => "sc", + "text" => "SoundCloud" + ]//, + //[ + // "value" => "spotify", + // "text" => "Spotify" + //] + ] + ] + ] + ] +]; + +/* + Set theme collection +*/ +$themes = glob("static/themes/*"); + +$settings[0]["settings"][1]["options"][] = [ + "value" => "Dark", + "text" => "Dark" +]; + +foreach($themes as $theme){ + + $theme = explode(".", basename($theme))[0]; + + $settings[0]["settings"][1]["options"][] = [ + "value" => $theme, + "text" => $theme + ]; +} + +/* + Set cookies +*/ +if($_POST){ + + $loop = &$_POST; +}elseif(count($_GET) !== 0){ + + // redirect user to front page + $loop = &$_GET; + header("Location: /"); + +}else{ + // refresh cookie dates + $loop = &$_COOKIE; +} + +foreach($loop as $key => $value){ + + if($key == "theme"){ + + if($value == config::DEFAULT_THEME){ + + unset($_COOKIE[$key]); + + setcookie( + "theme", + "", + [ + "expires" => -1, // removes cookie + "samesite" => "Lax", + "path" => "/" + ] + ); + continue; + } + }else{ + + foreach($settings as $title){ + + foreach($title["settings"] as $list){ + + if( + $list["parameter"] == $key && + $list["options"][0]["value"] == $value + ){ + + unset($_COOKIE[$key]); + + setcookie( + $key, + "", + [ + "expires" => -1, // removes cookie + "samesite" => "Lax", + "path" => "/" + ] + ); + + continue 3; + } + } + } + } + + if(!is_string($value)){ + + continue; + } + + $key = trim($key); + $value = trim($value); + + $_COOKIE[$key] = $value; + + setcookie( + $key, + $value, + [ + "expires" => strtotime("+400 days"), // maximal cookie ttl in chrome + "samesite" => "Lax", + "path" => "/" + ] + ); +} + +include "lib/frontend.php"; +$frontend = new frontend(); + +echo + $frontend->load( + "header_nofilters.html", + [ + "title" => "Settings", + "class" => "" + ] + ); + +$left = + '<h1>Settings</h1>' . + '<form method="post" autocomplete="off">' . + 'By clicking <div class="code-inline">Update settings!</div>, a plaintext <div class="code-inline">key=value</div> cookie will be stored on your browser. When selecting a default setting, the parameter is removed from your cookies.'; + +$c = count($_COOKIE); +$code = ""; + +if($c !== 0){ + + $left .= + '<br><br>Your current cookie looks like this:' . + '<div class="code">'; + + $ca = 0; + foreach($_COOKIE as $key => $value){ + + $code .= $key . "=" . $value; + + $ca++; + if($ca !== $c){ + + $code .= "; "; + } + } + + $left .= $frontend->highlightcode($code); + + $left .= '</div>'; +}else{ + + $left .= + '<br><br>You currently don\'t have any cookies set.'; +} + +$left .= + '<div class="settings">'; + +foreach($settings as $title){ + + $left .= '<h2>' . $title["name"] . '</h2>'; + + foreach($title["settings"] as $setting){ + + $left .= + '<div class="setting">' . + '<div class="title">' . $setting["description"] . '</div>' . + '<select name="' . $setting["parameter"] . '">'; + + if($setting["parameter"] == "theme"){ + + if(!isset($_COOKIE["theme"])){ + + $_COOKIE["theme"] = config::DEFAULT_THEME; + } + } + + foreach($setting["options"] as $option){ + + $left .= + '<option value="' . $option["value"] . '"'; + + if( + isset($_COOKIE[$setting["parameter"]]) && + $_COOKIE[$setting["parameter"]] == $option["value"] + ){ + $left .= ' selected'; + } + + $left .= '>' . $option["text"] . '</option>'; + } + + $left .= '</select></div>'; + } +} + +$left .= + '</div>' . + '<div class="settings-submit">' . + '<input type="submit" value="Update settings!">' . + '<a href="../">< Go back</a>' . + '</div>' . + '</form>'; + +if(count($_GET) === 0){ + + $code = []; + foreach($_COOKIE as $key => $value){ + + $code[] = rawurlencode($key) . "=" . rawurlencode($value); + } + + $code = implode("&", $code); + + if($code != ""){ + + $code = "?" . $code; + } + + echo + $frontend->load( + "search.html", + [ + "timetaken" => null, + "class" => "", + "right-left" => + '<div class="infobox"><h2>Preference link</h2>Following this link will re-apply all cookies configured here and will redirect you to the front page. Useful if your browser clears out cookies after a browsing session.<br><br>' . + '<a href="settings' . $code . '">Bookmark me!</a>' . + '</div>', + "right-right" => "", + "left" => $left + ] + ); +} |