X-Git-Url: https://git.cweiske.de/grauphel.git/blobdiff_plain/16bb2f544c636425ed9e6bff90654b8fa3c0f2e3..HEAD:/lib/search/provider.php diff --git a/lib/search/provider.php b/lib/search/provider.php index 8b867bb..816209e 100644 --- a/lib/search/provider.php +++ b/lib/search/provider.php @@ -39,8 +39,12 @@ class Provider extends \OCP\Search\Provider { $urlGen = \OC::$server->getURLGenerator(); $notes = new NoteStorage($urlGen); - $notes->setUsername(\OC_User::getUser()); - $rows = $notes->search($this->parseQuery($query)); + $notes->setUsername( + \OC::$server->getUserSession()->getUser()->getUID() + ); + + $qp = new QueryParser(); + $rows = $notes->search($qp->parse($query)); $results = array(); foreach ($rows as $row) { @@ -54,48 +58,5 @@ class Provider extends \OCP\Search\Provider } return $results; } - - /** - * Splits the user's query string up into several keywords - * that all have to be within the note (AND). - * - * Split by space, quotes are supported: - * - foo bar - * -> searches for notes that contain "foo" and "bar" - * - foo "bar baz" - * -> searches for notes that contain "foo" and "bar baz" - * - * @param string $query User-given query string - * - * @return array Array of keywords - */ - protected function parseQuery($query) - { - $keywords = explode(' ', $query); - array_map('trim', $keywords); - $loop = 0; - do { - $changed = false; - foreach ($keywords as $key => &$keyword) { - if ($keyword{0} != '"') { - continue; - } - if (substr($keyword, -1) == '"') { - // "foo" - $keyword = trim($keyword, '"'); - continue; - } - if ($key < count($keywords) -1) { - //not at the end - $keyword .= ' ' . $keywords[$key + 1]; - unset($keywords[$key + 1]); - $changed = true; - break; - } - } - } while ($changed && ++$loop < 20); - - return $keywords; - } } ?>