{
$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) {
}
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;
- }
}
?>