diff --git a/app/Http/Controllers/FokiLoader.php b/app/Http/Controllers/FokiLoader.php index bc450f053208ccad01d86438a4b82ed3fbd908b8..5b1a06713d667e43f9c96dac55545ccdf73a0f26 100644 --- a/app/Http/Controllers/FokiLoader.php +++ b/app/Http/Controllers/FokiLoader.php @@ -10,12 +10,12 @@ class FokiLoader { $sumaFile = ""; if (App::isLocale('en')) { - $sumaFile = config_path() . "/sumas.xml"; + $sumaFile = config_path() . "/sumasEn.xml"; } else { $sumaFile = config_path() . "/sumas.xml"; } - $xml = simplexml_load_file($sumaFile); + $xml = simplexml_load_file($sumaFile); $sumas = $xml->xpath("suma"); $foki = []; @@ -24,13 +24,13 @@ class FokiLoader if (isset($suma['type'])) { $f = explode(",", $suma['type']->__toString()); foreach ($f as $tmp) { - $displayName = $suma['displayName']->__toString(); - $url = isset($suma['homepage']) ? $suma['homepage']->__toString() : "https://metager.de"; + $displayName = $suma['displayName']->__toString(); + $url = isset($suma['homepage']) ? $suma['homepage']->__toString() : "https://metager.de"; $foki[$tmp][$suma['name']->__toString()] = ['displayName' => $displayName, 'url' => $url]; } } else { - $displayName = $suma['displayName']->__toString(); - $url = isset($suma['homepage']) ? $suma['homepage']->__toString() : "https://metager.de"; + $displayName = $suma['displayName']->__toString(); + $url = isset($suma['homepage']) ? $suma['homepage']->__toString() : "https://metager.de"; $foki["andere"][$suma['name']->__toString()] = ['displayName' => $displayName, 'url' => $url]; } } diff --git a/app/Http/Controllers/StartpageController.php b/app/Http/Controllers/StartpageController.php index 5c0ef9397fe7d0d4e268f276e47bcc26a0a6ec32..b7f8608de80b78aa2d3954ff3f1cc8befb797632 100644 --- a/app/Http/Controllers/StartpageController.php +++ b/app/Http/Controllers/StartpageController.php @@ -5,8 +5,8 @@ namespace App\Http\Controllers; use App; use Illuminate\Http\Request; use Jenssegers\Agent\Agent; -use Response; use LaravelLocalization; +use Response; class StartpageController extends Controller { @@ -20,7 +20,7 @@ class StartpageController extends Controller public function loadStartPage(Request $request) { $focusPages = []; - $theme = "default"; + $theme = "default"; $optionParams = ['param_sprueche', 'param_newtab', 'param_maps', 'param_autocomplete', 'param_lang', 'param_key']; $option_values = []; @@ -33,12 +33,12 @@ class StartpageController extends Controller } $autocomplete = 'on'; - if(in_array('autocomplete', array_keys($option_values))) { + if (in_array('autocomplete', array_keys($option_values))) { $autocomplete = $option_values['autocomplete']; } $lang = LaravelLocalization::getCurrentLocale(); - if ($lang === 'de') { + if ($lang === 'de' || $lang === "en") { $lang = 'all'; } @@ -78,9 +78,9 @@ class StartpageController extends Controller public function loadPlugin($params, $locale = "de") { - $params = unserialize(base64_decode($params)); + $params = unserialize(base64_decode($params)); $requests = $params; - $params = []; + $params = []; foreach ($requests as $key => $value) { if (strpos($key, "param_") === 0) { $key = substr($key, strpos($key, "param_") + 6); @@ -135,12 +135,12 @@ class StartpageController extends Controller public function berlin(Request $request) { - $link = ""; + $link = ""; $password = ""; if ($request->filled('eingabe')) { $password = getenv('berlin'); $password = md5($request->input('eingabe') . " -host:userpage.fu-berlin.de" . $password); - $link = "/meta/meta.ger3?eingabe=" . $request->input('eingabe') . " -host:userpage.fu-berlin.de&focus=web&password=" . $password . "&encoding=utf8&lang=all&site=fu-berlin.de&quicktips=off&out=results-with-style"; + $link = "/meta/meta.ger3?eingabe=" . $request->input('eingabe') . " -host:userpage.fu-berlin.de&focus=web&password=" . $password . "&encoding=utf8&lang=all&site=fu-berlin.de&quicktips=off&out=results-with-style"; } return view('berlin') ->with('title', 'Testseite für die FU-Berlin') diff --git a/app/MetaGer.php b/app/MetaGer.php index 57d89a841fd1ba1608578ce416f69c13ec96ba1e..c0d76f6cba6851f84fbe66ab5c41e5f2b4f31efa 100644 --- a/app/MetaGer.php +++ b/app/MetaGer.php @@ -34,6 +34,7 @@ class MetaGer protected $warnings = []; protected $errors = []; protected $addedHosts = []; + protected $availableFoki = []; protected $startCount = 0; protected $canCache = false; # Daten über die Abfrage$ @@ -525,6 +526,20 @@ class MetaGer $overtureEnabled = false; $sumaCount = 0; + /* + * Erstellt eine Liste mit Foki, die verfügbar sind + */ + $this->availableFoki = []; + foreach ($sumas as $suma) { + $foki = explode(",", trim($suma["type"])); + foreach ($foki as $fokus) { + if (!empty($fokus)) { + $this->availableFoki[$fokus] = "available"; + } + + } + } + $isCustomSearch = $this->startsWith($this->fokus, 'focus_'); # Im Falle einer Custom-Suche ohne mindestens einer selektierter Suchmaschine wird eine Web-Suche durchgeführt @@ -646,7 +661,7 @@ class MetaGer public function sumaIsSelected($suma, $request, $custom) { if ($custom) { - if ($request->filled("engine_" . $suma["name"])) { + if ($request->filled("engine_" . strtolower($suma["name"]))) { return true; } } else { @@ -950,7 +965,7 @@ class MetaGer $this->fokus = $request->input('focus', 'web'); # Suma-File if (App::isLocale("en")) { - $this->sumaFile = config_path() . "/sumas.xml"; + $this->sumaFile = config_path() . "/sumasEn.xml"; } else { $this->sumaFile = config_path() . "/sumas.xml"; } @@ -1561,6 +1576,12 @@ class MetaGer return $this->lang; } + public function getAvailableFoki() + { + return $this->availableFoki; + } + + public function getSprueche() { return $this->sprueche; diff --git a/app/Models/Searchengine.php b/app/Models/Searchengine.php index e537a164942d4e6811453fcdcbeac81c2acd2138..f3242cbc58d784fa5d133e39be4ab80ff83fb726 100644 --- a/app/Models/Searchengine.php +++ b/app/Models/Searchengine.php @@ -31,6 +31,9 @@ abstract class Searchengine public $startTime; # Die Zeit der Erstellung dieser Suchmaschine public $hash; # Der Hash-Wert dieser Suchmaschine + private $user; # Username für HTTP-Auth (falls angegeben) + private $password; # Passwort für HTTP-Auth (falls angegeben) + public $fp; # Wird für Artefakte benötigt public $socketNumber = null; # Wird für Artefakte benötigt public $counter = 0; # Wird eventuell für Artefakte benötigt diff --git a/app/Models/parserSkripte/Overture.php b/app/Models/parserSkripte/Overture.php index 1cd0b69a9d577382cbe2886bed7e5313a44eba76..c54d531f2732facdd035c9dcab06b5e00e39faf4 100644 --- a/app/Models/parserSkripte/Overture.php +++ b/app/Models/parserSkripte/Overture.php @@ -25,10 +25,10 @@ class Overture extends Searchengine $results = $content->xpath('//Results/ResultSet[@id="inktomi"]/Listing'); foreach ($results as $result) { - $title = $result["title"]; - $link = $result->{"ClickUrl"}->__toString(); + $title = $result["title"]; + $link = $result->{"ClickUrl"}->__toString(); $anzeigeLink = $result["siteHost"]; - $descr = $result["description"]; + $descr = $result["description"]; $this->counter++; $this->results[] = new \App\Models\Result( $this->engine, @@ -36,7 +36,8 @@ class Overture extends Searchengine $link, $anzeigeLink, $descr, - $this->displayName,$this->homepage, + $this->displayName, + $this->homepage, $this->counter ); } @@ -44,10 +45,10 @@ class Overture extends Searchengine # Nun noch die Werbeergebnisse: $ads = $content->xpath('//Results/ResultSet[@id="searchResults"]/Listing'); foreach ($ads as $ad) { - $title = $ad["title"]; - $link = $ad->{"ClickUrl"}->__toString(); + $title = $ad["title"]; + $link = $ad->{"ClickUrl"}->__toString(); $anzeigeLink = $ad["siteHost"]; - $descr = $ad["description"]; + $descr = $ad["description"]; $this->counter++; $this->ads[] = new \App\Models\Result( $this->engine, @@ -55,7 +56,7 @@ class Overture extends Searchengine $link, $anzeigeLink, $descr, - $this->displayName,$this->homepage, + $this->displayName, $this->homepage, $this->counter ); } @@ -87,9 +88,9 @@ class Overture extends Searchengine // Yahoo liefert, wenn es keine weiteren Ergebnisse hat immer wieder die gleichen Ergebnisse // Wir müssen also überprüfen, ob wir am Ende der Ergebnisse sind $resultCount = $content->xpath('//Results/ResultSet[@id="inktomi"]/MetaData/TotalHits'); - $results = $content->xpath('//Results/ResultSet[@id="inktomi"]/Listing'); + $results = $content->xpath('//Results/ResultSet[@id="inktomi"]/Listing'); if (isset($resultCount[0]) && sizeof($results) > 0) { - $resultCount = intval($resultCount[0]->__toString()); + $resultCount = intval($resultCount[0]->__toString()); $lastResultOnPage = intval($results[sizeof($results) - 1]["rank"]); if ($resultCount <= $lastResultOnPage) { return; @@ -111,9 +112,9 @@ class Overture extends Searchengine } # Erstellen des neuen Suchmaschinenobjekts und anpassen des GetStrings: - $next = new Overture(simplexml_load_string($this->engine), $metager); + $next = new Overture(simplexml_load_string($this->engine), $metager); $next->getString = preg_replace("/&Keywords=.*?&/si", "&", $next->getString) . "&" . $nextArgs; - $next->hash = md5($next->host . $next->getString . $next->port . $next->name); - $this->next = $next; + $next->hash = md5($next->host . $next->getString . $next->port . $next->name); + $this->next = $next; } } diff --git a/app/Models/parserSkripte/Scopia.php b/app/Models/parserSkripte/Scopia.php index b728de0bdd478007ac851ce5f8f7864bbe38cad3..8516eacb0d032c6ee774755c0fc7f3485effa08a 100644 --- a/app/Models/parserSkripte/Scopia.php +++ b/app/Models/parserSkripte/Scopia.php @@ -17,7 +17,10 @@ class Scopia extends Searchengine public function loadResults($result) { $result = html_entity_decode($result); - $result = str_replace("&", "&", $result); + $result = preg_replace("/<description>(.*?)<\/description>/si", "<description><![CDATA[ $1 ]]></description>", $result); + $result = preg_replace("/<title>(.*?)<\/title>/si", "<title><![CDATA[ $1 ]]></title>", $result); + $result = preg_replace("/<url>(.*?)<\/url>/si", "<url><![CDATA[ $1 ]]></url>", $result); + try { $content = simplexml_load_string($result); @@ -38,7 +41,8 @@ class Scopia extends Searchengine $link, $anzeigeLink, $descr, - $this->gefVon, + $this->displayName, + $this->homepage, $this->counter ); } diff --git a/resources/views/parts/foki.blade.php b/resources/views/parts/foki.blade.php index dfda2acf6e931550ca8100d369cf2fc037cfc46b..1b3746f1b50e9b680c3940ad20ea67d9c5662fa8 100644 --- a/resources/views/parts/foki.blade.php +++ b/resources/views/parts/foki.blade.php @@ -1,15 +1,23 @@ +@if( array_has($metager->getAvailableFoki(), "web")) <div id="web" @if($metager->getFokus() === "web")class="active"@endif> <a href="@if($metager->getFokus() === "web")#@else{!!$metager->generateSearchLink('web')!!}@endif" target="_self" tabindex="2">@lang('index.foki.web')</a> </div> +@endif +@if( array_has($metager->getAvailableFoki(), "nachrichten")) <div id="nachrichten" @if($metager->getFokus() === "nachrichten")class="active"@endif> <a href="@if($metager->getFokus() === "nachrichten")#@else{!!$metager->generateSearchLink('nachrichten')!!}@endif" target="_self" tabindex="3">@lang('index.foki.nachrichten')</a> </div> +@endif +@if( array_has($metager->getAvailableFoki(), "wissenschaft")) <div id="wissenschaft" @if($metager->getFokus() === "wissenschaft")class="active"@endif> <a href="@if($metager->getFokus() === "wissenschaft")#@else{!!$metager->generateSearchLink('wissenschaft')!!}@endif" target="_self" tabindex="4">@lang('index.foki.wissenschaft')</a> </div> +@endif +@if( array_has($metager->getAvailableFoki(), "produktsuche")) <div id="produkte" @if($metager->getFokus() === "produktsuche")class="active"@endif> <a href="@if($metager->getFokus() === "produktsuche")#@else{!!$metager->generateSearchLink('produktsuche')!!}@endif" target="_self" tabindex="5">@lang('index.foki.produkte')</a> </div> +@endif <div id="maps"> <a href="https://maps.metager.de/map/{{ $metager->getQ() }}/9.7380161,52.37119740000003,12" target="_self" tabindex="6">@lang('index.foki.maps')</a> </div>