X-Git-Url: https://git.cweiske.de/grauphel.git/blobdiff_plain/600e904f35d598a64be0139d39b87a59ed5eaa12..16bb2f544c636425ed9e6bff90654b8fa3c0f2e3:/lib/notestorage.php diff --git a/lib/notestorage.php b/lib/notestorage.php index c665903..67baa20 100644 --- a/lib/notestorage.php +++ b/lib/notestorage.php @@ -189,6 +189,22 @@ class NoteStorage \OC_DB::executeAudited($sql, $params); } + /** + * Delete synchronization data for the given user. + * + * @param SyncData $syncdata Synchronization data object + * + * @return void + */ + public function deleteSyncData() + { + \OC_DB::executeAudited( + 'DELETE FROM `*PREFIX*grauphel_syncdata`' + . ' WHERE `syncdata_user` = ?', + array($this->username) + ); + } + /** * Load a note from the storage. * @@ -229,6 +245,65 @@ class NoteStorage return $this->noteFromRow($row); } + /** + * Load a GUID of a note by the note title. + * + * The note title is stored html-escaped in the database because we + * get it that way from tomboy. Thus we have to escape the search + * input, too. + * + * @param string $title Note title. + * + * @return string GUID, NULL if note could not be found + */ + public function loadGuidByTitle($title) + { + $row = \OC_DB::executeAudited( + 'SELECT note_guid FROM `*PREFIX*grauphel_notes`' + . ' WHERE `note_user` = ? AND `note_title` = ?', + array($this->username, htmlspecialchars($title)) + )->fetchRow(); + + if ($row === false) { + return null; + } + + return $row['note_guid']; + } + + /** + * Search for a note + * + * @param string $keywords AND-concatenated query strings + * + * @return array Database rows with note_guid and note_title + */ + public function search($keywords) + { + $sqlWhere = ' AND (note_title LIKE ? OR note_tags LIKE ? OR note_content LIKE ?)'; + $arData = array( + $this->username + ); + foreach ($keywords as $keyword) { + $arData[] = '%' . $keyword . '%';//title + $arData[] = '%' . $keyword . '%';//tags + $arData[] = '%' . $keyword . '%';//content + } + $result = \OC_DB::executeAudited( + 'SELECT `note_guid`, `note_title`' + . ' FROM `*PREFIX*grauphel_notes`' + . ' WHERE note_user = ?' + . str_repeat($sqlWhere, count($keywords)), + $arData + ); + + $notes = array(); + while ($row = $result->fetchRow()) { + $notes[] = $row; + } + return $notes; + } + /** * Save a note into storage. * @@ -280,6 +355,20 @@ class NoteStorage ); } + /** + * Delete all notes from storage. + * + * @return void + */ + public function deleteAll() + { + \OC_DB::executeAudited( + 'DELETE FROM `*PREFIX*grauphel_notes`' + . ' WHERE `note_user` = ?', + array($this->username) + ); + } + /** * Load notes for the given user in short form. * Optionally only those changed after $since revision