diff --git a/Web/Models/Repositories/Users.php b/Web/Models/Repositories/Users.php index 0eec3306..6c165aa3 100644 --- a/Web/Models/Repositories/Users.php +++ b/Web/Models/Repositories/Users.php @@ -58,7 +58,7 @@ class Users $nnparamsCount = 0; foreach($pars as $paramName => $paramValue) - if($paramName != "before" && $paramName != "after" && $paramName != "gender" && $paramName != "maritalstatus" && $paramName != "politViews") + if($paramName != "before" && $paramName != "after" && $paramName != "gender" && $paramName != "maritalstatus" && $paramName != "politViews" && $paramName != "doNotSearchMe") $paramValue != NULL ? $notNullParams += ["$paramName" => "%$paramValue%"] : NULL; else $paramValue != NULL ? $notNullParams += ["$paramName" => "$paramValue"] : NULL; @@ -125,6 +125,9 @@ class Users case "gender": $result->where("sex ?", $paramValue); break; + case "doNotSearchMe": + $result->where("id !=", $paramValue); + break; } } } diff --git a/Web/Presenters/SearchPresenter.php b/Web/Presenters/SearchPresenter.php index fadf9954..48d7b8c8 100644 --- a/Web/Presenters/SearchPresenter.php +++ b/Web/Presenters/SearchPresenter.php @@ -100,4 +100,56 @@ final class SearchPresenter extends OpenVKPresenter $this->template->type = $type; $this->template->page = $page; } + + function renderFastSearch() + { + $this->assertUserLoggedIn(); + $this->willExecuteWriteAction(); + + if($_SERVER["REQUEST_METHOD"] === "POST") { + + $query = $this->queryParam("query") ?? ""; + + if($query == "" || strlen($query) < 3) + $this->returnJson([ + "error" => "type something longer" + ]); + + $type = $this->queryParam("type") ?? "users"; + + $isUsers = $type == "users"; + $repo = $isUsers ? (new Users) : (new Clubs); + $sort = $isUsers ? "rating DESC" : "id ASC"; + + $res = $repo->find($query, ["doNotSearchMe" => $this->user->id], $sort); + + $results = array_slice(iterator_to_array($res), 0, 5); + + $count = sizeof($results); + + $arr = [ + "count" => $count, + "items" => [] + ]; + + if(sizeof($results) < 1) { + $this->returnJson(["err" => "No results"]); + } + + foreach($results as $res) { + + $arr["items"][] = [ + "id" => $res->getId(), + "name" => $isUsers ? $res->getCanonicalName() : $res->getName(), + "avatar" => $res->getAvatarUrl(), + "url" => $res->getUrl(), + "description" => ovk_proc_strtr($res->getDescription() ?? "...", 40) + ]; + } + + $this->returnJson($arr); + } else { + $this->returnJson(["err" => "or"]); + } + } } diff --git a/Web/Presenters/templates/@layout.xml b/Web/Presenters/templates/@layout.xml index 7bb7e194..cd23d47a 100644 --- a/Web/Presenters/templates/@layout.xml +++ b/Web/Presenters/templates/@layout.xml @@ -93,8 +93,8 @@ {if !$atSearch}
+