X-Git-Url: https://git.cweiske.de/grauphel.git/blobdiff_plain/724cb02e3e7a98e58387e80c9360b420a09b3607..b816eb1d59d1f16a8f85d31d6b5ea2826648a332:/lib/notestorage.php diff --git a/lib/notestorage.php b/lib/notestorage.php index 6802e2f..27bb702 100644 --- a/lib/notestorage.php +++ b/lib/notestorage.php @@ -287,8 +287,8 @@ class NoteStorage $keywordGroups['NOT'] = array(); } - $sqlTplAnd = ' AND (note_title LIKE ? OR note_tags LIKE ? OR note_content LIKE ?)'; - $sqlTplNot = ' AND NOT (note_title LIKE ? OR note_tags LIKE ? OR note_content LIKE ?)'; + $sqlTplAnd = ' AND (note_title ILIKE ? OR note_tags ILIKE ? OR note_content ILIKE ?)'; + $sqlTplNot = ' AND NOT (note_title ILIKE ? OR note_tags ILIKE ? OR note_content ILIKE ?)'; $arData = array( $this->username ); @@ -386,23 +386,29 @@ class NoteStorage * Load notes for the given user in short form. * Optionally only those changed after $since revision * - * @param integer $since Revision number after which the notes changed - * @param string $rawtag Filter by tag. Special tags: - * - grauphel:special:all - * - grauphel:special:untagged + * @param integer $since Revision number after which the notes changed + * @param string $rawtag Filter by tag. Special tags: + * - grauphel:special:all + * - grauphel:special:untagged + * @param boolean $includeDate Load the last modification date or not * * @return array Array of short note objects */ - public function loadNotesOverview($since = null, $rawtag = null) - { - $result = \OC_DB::executeAudited( - 'SELECT `note_guid`, `note_title`, `note_last_sync_revision`, `note_tags`' + public function loadNotesOverview( + $since = null, $rawtag = null, $includeDate = false + ) { + $sql = 'SELECT `note_guid`, `note_title`' + . ', `note_last_sync_revision`, `note_tags`' + . ', `note_last_change_date`' . ' FROM `*PREFIX*grauphel_notes`' - . ' WHERE note_user = ?', - array($this->username) - ); + . ' WHERE note_user = ?'; + $sqlData = array($this->username); + + if ($since !== null) { + $sqlData[] = $since; + $sql .= ' AND note_last_sync_revision > ?'; + } - $notes = array(); if ($rawtag == 'grauphel:special:all') { $rawtag = null; } else if ($rawtag == 'grauphel:special:untagged') { @@ -410,14 +416,15 @@ class NoteStorage } else { $jsRawtag = json_encode($rawtag); } + if ($rawtag !== null) { + $sqlData[] = '%' . $jsRawtag . '%'; + $sql .= ' AND note_tags LIKE ?'; + } + + $result = \OC_DB::executeAudited($sql, $sqlData); + $notes = array(); while ($row = $result->fetchRow()) { - if ($since !== null && $row['note_last_sync_revision'] <= $since) { - continue; - } - if ($rawtag !== null && strpos($row['note_tags'], $jsRawtag) === false) { - continue; - } - $notes[] = array( + $note = array( 'guid' => $row['note_guid'], 'ref' => array( 'api-ref' => $this->urlGen->getAbsoluteURL( @@ -429,10 +436,21 @@ class NoteStorage ) ) ), - 'href' => null,//FIXME + 'href' => $this->urlGen->getAbsoluteURL( + $this->urlGen->linkToRoute( + 'grauphel.gui.note', + array( + 'guid' => $row['note_guid'] + ) + ) + ), ), 'title' => $row['note_title'], ); + if ($includeDate) { + $note['last-change-date'] = $row['note_last_change_date']; + } + $notes[] = $note; } return $notes;