return $row['note_guid'];
}
+ /**
+ * Search for a note
+ *
+ * @param array $keywords arrays of query strings within keys AND and NOT
+ *
+ * @return array Database rows with note_guid and note_title
+ */
+ public function search($keywordGroups)
+ {
+ if (!isset($keywordGroups['AND'])) {
+ $keywordGroups['AND'] = array();
+ }
+ if (!isset($keywordGroups['NOT'])) {
+ $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 ?)';
+ $arData = array(
+ $this->username
+ );
+ foreach (array('AND', 'NOT') as $group) {
+ $keywords = $keywordGroups[$group];
+ 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($sqlTplAnd, count($keywordGroups['AND']))
+ . str_repeat($sqlTplNot, count($keywordGroups['NOT'])),
+ $arData
+ );
+
+ $notes = array();
+ while ($row = $result->fetchRow()) {
+ $notes[] = $row;
+ }
+ return $notes;
+ }
+
/**
* Save a note into storage.
*
* 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)
- {
+ public function loadNotesOverview(
+ $since = null, $rawtag = null, $includeDate = false
+ ) {
$result = \OC_DB::executeAudited(
'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)
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(
)
)
),
- '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;