NotePost/action.php

166 lines
5.9 KiB
PHP
Raw Permalink Normal View History

2017-04-24 17:13:08 -06:00
<?php
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
2017-04-24 17:13:08 -06:00
/**
* Make things happen when buttons are pressed and forms submitted.
*/
require_once __DIR__ . "/required.php";
if ($VARS['action'] !== "signout") {
dieifnotloggedin();
}
2017-04-24 17:13:08 -06:00
2017-05-07 00:30:25 -06:00
/**
* Redirects back to the page ID in $_POST/$_GET['source'] with the given message ID.
* The message will be displayed by the app.
* @param string $msg message ID (see lang/messages.php)
* @param string $arg If set, replaces "{arg}" in the message string when displayed to the user.
*/
2017-04-24 17:13:08 -06:00
function returnToSender($msg, $arg = "") {
global $VARS;
2019-03-01 23:37:06 -07:00
$header = "Location: app.php?page=" . urlencode($VARS['source']) . "&msg=$msg";
if ($arg != "") {
$header .= "&arg=$arg";
2017-04-24 17:13:08 -06:00
}
2019-03-01 23:37:06 -07:00
header($header);
2017-04-24 17:13:08 -06:00
die();
}
switch ($VARS['action']) {
case "signout":
session_destroy();
2018-12-22 16:57:45 -07:00
header('Location: index.php?logout=1');
2017-04-24 17:13:08 -06:00
die("Logged out.");
case "savenote":
if (!isset($VARS['content']) || empty($VARS['noteid'])) {
die($Strings->get("invalid parameters", false));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasWriteAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters", false));
}
$note->setText($VARS['content']);
$note->setColor($VARS['color']);
2019-01-12 01:38:17 -07:00
$note->setModified(date("Y-m-d H:i:s"));
$note->saveNote();
2018-11-24 16:07:08 -07:00
if (isset($VARS['reload'])) {
returnToSender("", "&note=" . $note->getID());
} else {
http_response_code(204);
}
break;
case "deletenote":
if (empty($VARS['noteid'])) {
die($Strings->get("invalid parameters"));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasWriteAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters"));
}
$note->deleteNote();
returnToSender("note_deleted");
break;
2018-11-24 13:03:15 -07:00
case "downloadnote":
if (empty($VARS['noteid'])) {
die($Strings->get("invalid parameters", false));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasReadAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters", false));
}
if (empty($VARS['type'])) {
$VARS['type'] = "markdown";
}
switch ($VARS['type']) {
case "html":
header("Content-Type: text/html; charset=UTF-8");
header("Content-disposition: attachment; filename=\"" . $note->getTitle() . "_" . $note->getModified() . ".html\"");
echo $note->getHTML(false);
break;
case "odt":
2018-12-26 14:38:56 -07:00
if ($SETTINGS['pandoc'] != "") {
header("Content-Type: application/vnd.oasis.opendocument.text");
header("Content-disposition: attachment; filename=\"" . $note->getTitle() . "_" . $note->getModified() . ".odt\"");
$pandoc = new Pandoc\Pandoc();
echo $pandoc->convert($note->getText(), "markdown_github", "odt");
break;
}
default:
header("Content-Type: text/markdown; charset=UTF-8");
header("Content-disposition: attachment; filename=\"" . $note->getTitle() . "_" . $note->getModified() . ".md\"");
echo $note->getText();
}
break;
case "favoritenote":
if (empty($VARS['noteid'])) {
die($Strings->get("invalid parameters"));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasWriteAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters"));
}
$note->setFavorite(!$note->getFavorite());
$note->setModified(date("Y-m-d H:i:s"));
$note->saveNote();
returnToSender("");
break;
case "getnotes":
header("Content-Type: application/json");
$noteids = $database->select('notes', 'noteid', ['ownerid' => $_SESSION['uid']]);
$notes = [];
foreach ($noteids as $n) {
$notes[] = Note::loadNote($n)->toArray();
}
exit(json_encode($notes));
2018-11-24 15:11:05 -07:00
case "setcolor":
if (empty($VARS['noteid'])) {
die($Strings->get("invalid parameters"));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasWriteAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters"));
}
$note->setColor($VARS['color']);
2019-01-12 01:38:17 -07:00
$note->setModified(date("Y-m-d H:i:s"));
2018-11-24 15:11:05 -07:00
$note->saveNote();
returnToSender("");
break;
case "maketodolist":
if (empty($VARS['noteid'])) {
die($Strings->get("invalid parameters"));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasWriteAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters"));
}
$note->toChecklist();
2019-01-12 01:38:17 -07:00
$note->setModified(date("Y-m-d H:i:s"));
$note->saveNote();
returnToSender("");
break;
case "togglecheckitem":
if (empty($VARS['noteid'])) {
die($Strings->get("invalid parameters"));
}
$note = Note::loadNote($VARS['noteid']);
if (!$note->hasWriteAccess(new User($_SESSION['uid']))) {
die($Strings->get("invalid parameters"));
}
if (!empty($VARS['text'])) {
$note->toggleChecklistItem($VARS['text']);
2019-01-12 01:38:17 -07:00
$note->setModified(date("Y-m-d H:i:s"));
$note->saveNote();
}
if (isset($VARS['reload'])) {
returnToSender("");
} else {
http_response_code(204);
}
break;
2017-04-24 17:13:08 -06:00
}