/
memoryspeak
/
MemoryspeakServer
Обзор
Документация
Войти
/
memoryspeak
/
MemoryspeakServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
controllers/SearchController.php
113 строк
3 KB
memoryspeak
refactor share note
14 дек 2025, 11:31
14 дек 2025, 11:31
3e63e9d
Код
Авторство
О чём код?
<?php require_once '../utils/Utils.php'; class SearchController { private $database; private $userId; public function __construct($database, $userId) { $this->database = $database; $this->userId = $userId; } public function getTagsByUserId() { try { $tags = $this->database->getTagsByUserId($this->userId); return $tags; } catch(PDOException $e) { LoggerService::write(debug_backtrace(), $e->getMessage()); throw $e; } } public function getAllUsers() { try { $allUsers = $this->database->getAllUsers(); return $allUsers; } catch(PDOException $e) { LoggerService::write(debug_backtrace(), $e->getMessage()); throw $e; } } public function getFileById($fileId) { try { $file = $this->database->getFileById($fileId); return $file; } catch(PDOException $e) { LoggerService::write(debug_backtrace(), $e->getMessage()); throw $e; } } public function getNotesBySearch($inputSearch) { $notes = []; foreach ($inputSearch as $question) { $notesFromQuestion = $this->getNotesFromQuestion($question); $sortedNotesFromQuestion = Utils::sortedArray($notesFromQuestion); array_push($notes, $sortedNotesFromQuestion); } return $notes; } private function getAllNotes() { $allTags = $this->database->getTagsByUserId($this->userId); $queries = []; $allNotesId = $this->getNotesIdFromQueriesAndTags($queries, $allTags); $notes = $this->generateNotesByNotesId($allNotesId); return $notes; } private function getNotesFromQuestion($question) { $queries = $this->getQueriesFromQuestion($question); $tags = $this->getTagsFromQuestion($question); $notesId = $this->getNotesIdFromQueriesAndTags($queries, $tags); $notes = $this->generateNotesByNotesId($notesId); return $notes; } private function generateNotesByNotesId($notesId) { $notes = []; foreach ($notesId as $noteId) { $this->database->addViewToNote($noteId); $note = $this->database->getNoteById($noteId); $tags = $this->database->getTagsByNoteId($noteId); $files = $this->database->getFilesByNoteId($noteId); $owner = $this->database->getUserById($note['users_id']); array_push($notes, [ "id" => $noteId, "tags" => $tags, "title" => $note["title"], "body" => $note["body"], "note_token" => $note["token"], "views" => $note["views"], "files" => $files, "created" => $note["created"], "datetime" => $note["datetime"], "owner_username" => $owner["username"] ]); } return $notes; } private function getQueriesFromQuestion($question) { return $question->queries; } private function getTagsFromQuestion($question) { return $question->tags; } private function getNotesIdFromQueriesAndTags($queries, $tags) { if (empty($queries) || (count($queries) === 1 && trim($queries[0]) === '')) { $notesId = $this->database->getNotesIdByTagsLike($tags, $this->userId); } else { $notesId = $this->database->getNotesIdByQueriesAndTagsLike($queries, $tags, $this->userId); } return Utils::sortedArray($notesId); } } ?>