search.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. require "misc/header.php";
  3. $config = require "config.php";
  4. require "misc/tools.php";
  5. ?>
  6. <title>
  7. <?php
  8. $query = htmlspecialchars(trim($_REQUEST["q"]));
  9. echo $query;
  10. ?> - LibreX</title>
  11. </head>
  12. <body>
  13. <form class="sub-search-container" method="get" autocomplete="off">
  14. <h1 class="logomobile"><a class="no-decoration" href="./">Libre<span class="X">X</span></a></h1>
  15. <input type="text" name="q"
  16. <?php
  17. $query_encoded = urlencode($query);
  18. if (1 > strlen($query) || strlen($query) > 256)
  19. {
  20. header("Location: ./");
  21. die();
  22. }
  23. echo "value=\"$query\"";
  24. ?>
  25. >
  26. <br>
  27. <?php
  28. foreach($_REQUEST as $key=>$value)
  29. {
  30. if ($key != "q" && $key != "p" && $key != "t")
  31. {
  32. echo "<input type=\"hidden\" name=\"" . htmlspecialchars($key) . "\" value=\"" . htmlspecialchars($value) . "\"/>";
  33. }
  34. }
  35. $type = isset($_REQUEST["t"]) ? (int) $_REQUEST["t"] : 0;
  36. echo "<button class=\"hide\" name=\"t\" value=\"$type\"/></button>";
  37. ?>
  38. <button type="submit" class="hide"></button>
  39. <input type="hidden" name="p" value="0">
  40. <div class="sub-search-button-wrapper">
  41. <?php
  42. $categories = array("general", "images", "videos", "torrents", "tor");
  43. foreach ($categories as $category)
  44. {
  45. $category_index = array_search($category, $categories);
  46. if (($config->disable_bittorent_search && $category_index == 3) ||
  47. ($config->disable_hidden_service_search && $category_index ==4))
  48. {
  49. continue;
  50. }
  51. echo "<a " . (($category_index == $type) ? "class=\"active\"" : "") . "href=\"/search.php?q=" . $query . "&p=0&t=" . $category_index . "\"><img src=\"static/images/" . $category . "_result.png\" alt=\"" . $category . " result\" />" . ucfirst($category) . "</a>";
  52. }
  53. ?>
  54. </div>
  55. <hr>
  56. </form>
  57. <?php
  58. $page = isset($_REQUEST["p"]) ? (int) $_REQUEST["p"] : 0;
  59. $start_time = microtime(true);
  60. switch ($type)
  61. {
  62. case 0:
  63. $query_parts = explode(" ", $query);
  64. $last_word_query = end($query_parts);
  65. if (substr($query, 0, 1) == "!" || substr($last_word_query, 0, 1) == "!")
  66. check_ddg_bang($query);
  67. require "engines/google/text.php";
  68. $results = get_text_results($query, $page);
  69. print_elapsed_time($start_time);
  70. print_text_results($results);
  71. break;
  72. case 1:
  73. require "engines/qwant/image.php";
  74. $results = get_image_results($query_encoded, $page);
  75. print_elapsed_time($start_time);
  76. print_image_results($results);
  77. break;
  78. case 2:
  79. require "engines/invidious/video.php";
  80. $results = get_video_results($query_encoded);
  81. print_elapsed_time($start_time);
  82. print_video_results($results);
  83. break;
  84. case 3:
  85. if ($config->disable_bittorent_search)
  86. echo "<p class=\"text-result-container\">The host disabled this feature! :C</p>";
  87. else
  88. {
  89. require "engines/bittorrent/merge.php";
  90. $results = get_merged_torrent_results($query_encoded);
  91. print_elapsed_time($start_time);
  92. print_merged_torrent_results($results);
  93. }
  94. break;
  95. case 4:
  96. if ($config->disable_hidden_service_search)
  97. echo "<p class=\"text-result-container\">The host disabled this feature! :C</p>";
  98. else
  99. {
  100. require "engines/ahmia/hidden_service.php";
  101. $results = get_hidden_service_results($query_encoded);
  102. print_elapsed_time($start_time);
  103. print_hidden_service_results($results);
  104. }
  105. break;
  106. default:
  107. require "engines/google/text.php";
  108. $results = get_text_results($query_encoded, $page);
  109. print_text_results($results);
  110. print_elapsed_time($start_time);
  111. break;
  112. }
  113. if (2 > $type)
  114. {
  115. echo "<div class=\"next-page-button-wrapper\">";
  116. if ($page != 0)
  117. {
  118. print_next_page_button("&lt;&lt;", 0, $query, $type);
  119. print_next_page_button("&lt;", $page - 10, $query, $type);
  120. }
  121. for ($i=$page / 10; $page / 10 + 10 > $i; $i++)
  122. print_next_page_button($i + 1, $i * 10, $query, $type);
  123. print_next_page_button("&gt;", $page + 10, $query, $type);
  124. echo "</div>";
  125. }
  126. ?>
  127. <?php require "misc/footer.php"; ?>