public function getTags()
{
+ $result = \OC_DB::executeAudited(
+ 'SELECT `note_tags` FROM `*PREFIX*grauphel_notes`'
+ . ' WHERE note_user = ?',
+ array($this->username)
+ );
+
+ $tags = array();
+ while ($row = $result->fetchRow()) {
+ $tags = array_merge($tags, json_decode($row['note_tags']));
+ }
+ return array_unique($tags);
}
/**
)->fetchRow();
if ($row === false) {
- $syncdata = $this->getNewSyncData($this->username);
- $this->saveSyncData($this->username, $syncdata);
+ $syncdata = $this->getNewSyncData();
+ $this->saveSyncData($syncdata);
} else {
$syncdata = new SyncData();
$syncdata->latestSyncRevision = (int) $row['syncdata_latest_sync_revision'];
* 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 integer $since Revision number after which the notes changed
+ * @param string $rawtag Filter by tag. Special tags:
+ * - grauphel:special:all
+ * - grauphel:special:untagged
*
* @return array Array of short note objects
*/
- public function loadNotesOverview($since = null)
+ public function loadNotesOverview($since = null, $rawtag = null)
{
$result = \OC_DB::executeAudited(
- 'SELECT `note_guid`, `note_title`, `note_last_sync_revision`'
+ 'SELECT `note_guid`, `note_title`, `note_last_sync_revision`, `note_tags`'
. ' FROM `*PREFIX*grauphel_notes`'
. ' WHERE note_user = ?',
array($this->username)
);
$notes = array();
+ if ($rawtag == 'grauphel:special:all') {
+ $rawtag = null;
+ } else if ($rawtag == 'grauphel:special:untagged') {
+ $jsRawtag = json_encode(array());
+ } else {
+ $jsRawtag = json_encode($rawtag);
+ }
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(
'guid' => $row['note_guid'],
'ref' => array(
return $notes;
}
+ protected function fixDate($date)
+ {
+ if (strlen($date) == 32) {
+ //Bug in grauphel 0.1.1; date fields in DB had only 32 instead of 33
+ // characters. The last digit of the time zone was missing
+ $date .= '0';
+ }
+ return $date;
+ }
+
protected function noteFromRow($row)
{
return (object) array(
'guid' => $row['note_guid'],
- 'create-date' => $row['note_create_date'],
- 'last-change-date' => $row['note_last_change_date'],
- 'last-metadata-change-date' => $row['note_last_metadata_change_date'],
+ 'create-date' => $this->fixDate($row['note_create_date']),
+ 'last-change-date' => $this->fixDate($row['note_last_change_date']),
+ 'last-metadata-change-date' => $this->fixDate($row['note_last_metadata_change_date']),
'title' => $row['note_title'],
'note-content' => $row['note_content'],
'note_last_change_date' => $note->{'last-change-date'},
'note_last_metadata_change_date' => $note->{'last-metadata-change-date'},
- 'note_open_on_startup' => $note->{'open-on-startup'},
- 'note_pinned' => $note->pinned,
+ 'note_open_on_startup' => (int) $note->{'open-on-startup'},
+ 'note_pinned' => (int) $note->pinned,
'note_tags' => json_encode($note->tags),
'note_last_sync_revision' => $note->{'last-sync-revision'},