fossq/settings.php
vdbhb59 4236b1df5a Synced
lmao forgot that little shit (2785f23a54)
xi changed the description format (b2ab422f62)
remove cara (89051f0129)
remove tracking links on video search using euroshit proxies (d7bb0755cb)
turn off history in ff (2d8e5838cd)
2026-08-29 16:14:40 +05:30

617 lines
No EOL
11 KiB
PHP

<?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" => "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_api",
"text" => "Google API"
],
[
"value" => "google_cse",
"text" => "Google CSE"
],
[
"value" => "yahoo_japan",
"text" => "Yahoo! JAPAN",
],
[
"value" => "startpage",
"text" => "Startpage"
],
[
"value" => "yep",
"text" => "Yep"
],
[
"value" => "mwmbl",
"text" => "Mwmbl"
],
[
"value" => "mojeek",
"text" => "Mojeek"
],
[
"value" => "naver",
"text" => "Naver"
],
[
"value" => "baidu",
"text" => "Baidu"
],
[
"value" => "coccoc",
"text" => "Cốc Cốc"
],
[
"value" => "solofield",
"text" => "Solofield"
],
[
"value" => "marginalia",
"text" => "Marginalia"
],
[
"value" => "purili",
"text" => "Purili"
],
[
"value" => "wiby",
"text" => "wiby"
]
]
],
[
"description" => "Images",
"parameter" => "scraper_images",
"options" => [
[
"value" => "ddg",
"text" => "DuckDuckGo"
],
[
"value" => "yandex",
"text" => "Yandex"
],
[
"value" => "brave",
"text" => "Brave"
],
[
"value" => "google",
"text" => "Google"
],
[
"value" => "google_api",
"text" => "Google API"
],
[
"value" => "google_cse",
"text" => "Google CSE"
],
[
"value" => "yahoo_japan",
"text" => "Yahoo! JAPAN",
],
[
"value" => "startpage",
"text" => "Startpage"
],
[
"value" => "naver",
"text" => "Naver"
],
[
"value" => "baidu",
"text" => "Baidu"
],
[
"value" => "solofield",
"text" => "Solofield"
],
[
"value" => "pinterest",
"text" => "Pinterest"
],
[
"value" => "flickr",
"text" => "Flickr"
],
[
"value" => "pexels",
"text" => "Pexels"
],
[
"value" => "pixabay",
"text" => "Pixabay"
],
[
"value" => "unsplash",
"text" => "Unsplash"
],
[
"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" => "yahoo_japan",
"text" => "Yahoo! JAPAN",
],
[
"value" => "startpage",
"text" => "Startpage"
],
[
"value" => "naver",
"text" => "Naver"
],
[
"value" => "baidu",
"text" => "Baidu"
],
[
"value" => "coccoc",
"text" => "Cốc Cốc"
],
[
"value" => "purili",
"text" => "Purili"
],
[
"value" => "solofield",
"text" => "Solofield"
]
]
],
[
"description" => "News",
"parameter" => "scraper_news",
"options" => [
[
"value" => "ddg",
"text" => "DuckDuckGo"
],
[
"value" => "brave",
"text" => "Brave"
],
[
"value" => "google",
"text" => "Google"
],
[
"value" => "yahoo_japan",
"text" => "Yahoo! JAPAN",
],
[
"value" => "startpage",
"text" => "Startpage"
],
/*[
"value" => "mojeek",
"text" => "Mojeek"
],*/
[
"value" => "baidu",
"text" => "Baidu"
]
]
],
[
"description" => "Music",
"parameter" => "scraper_music",
"options" => [
[
"value" => "sc",
"text" => "SoundCloud"
],
[
"value" => "swisscows",
"text" => "Swisscows"
]
]
]
]
]
];
/*
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="../">&lt; 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
]
);
}