X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/7c9537015a7361681323e5a5ce2f10d9c0ee42d3..8216853ef9dabf609c67f2cfea3b71a5c9811c6e:/widget/reply.php diff --git a/widget/reply.php b/widget/reply.php index 0935567..4f6a2c8 100644 --- a/widget/reply.php +++ b/widget/reply.php @@ -1,67 +1,12 @@ 'Toegewezen aan', -]; +require_once 'upload.inc.php'; if ($_POST) { - require_once 'upload.inc.php'; try { - $html = messagehtml($_POST['reply']); - if ($_FILES and !empty($_FILES['image'])) { - $target = 'data/upload'; - if (!file_exists($target)) { - throw new Exception("er is geen uploadmap aanwezig op $target"); - } - $target .= '/' . $User->login; - if ($result = userupload($_FILES['image'], $target)) { - $html .= sprintf('

', $result); - } - } - $query = $Db->set('comments', [ - 'page' => $Page->link, - 'message' => $html, - 'author' => $User->login, - ]); - if (!$query->rowCount()) { - throw new Exception('Fout bij opslaan'); - } - $newcomment = $Db->dbh->lastInsertId('comments_id_seq'); - - if (isset($Issue)) { - $row = []; - foreach (array_keys($journalcol) as $col) { - if (!isset($_POST[$col])) continue; - $row[$col] = $_POST[$col] ?: NULL; - } - if (isset($_POST['status'])) { - $reset = !empty($_POST['status']); - if (isset($Issue->closed) !== $reset) { - $row['closed'] = $reset ? ['now()'] : NULL; - } - } - $derived = ['updated' => ['now()']]; - $filter = ['id = ? RETURNING *', $Issue->id]; - $subquery = $Db->set('issues', $row + $derived, $filter); - - if ($updated = $subquery->fetch()) { - foreach (array_keys($row) as $col) { - if ($updated->$col === $Issue->$col) continue; # unaltered - $Db->set('journal', [ - 'comment_id' => $newcomment, - 'property' => 'attr', - 'col' => $col, - 'old_value' => $Issue->$col, - 'value' => $updated->$col, - ]); - } - $Issue = $updated; - } - } - - $target = "/{$Page->link}/$newcomment#$newcomment"; + $newcomment = createcomment($_POST, $Issue); + $target = "/{$Page->link}?last=$newcomment#$newcomment"; abort($target, ($Page->api ? 200 : 303) . ' reply success'); $_POST['reply'] = NULL; } @@ -69,22 +14,42 @@ if ($_POST) { if ($Page->api) { abort(ucfirst($e->getMessage()), '500 reply error'); } - print "

Antwoord niet opgeslagen: {$e->getMessage()}.

\n\n"; + printf("

Antwoord niet opgeslagen: %s.

\n\n", + nl2br(htmlspecialchars($e->getMessage())) + ); } } -$cols = '*, (SELECT json_agg(journal.*) FROM journal WHERE comment_id = comments.id) AS journal'; +$cols = "*, (SELECT json_agg(journal.*) FROM journal WHERE comment_id = comments.id AND property = 'attr') AS journal"; $query = $Db->query("SELECT $cols FROM comments WHERE page = ? ORDER BY created", [$Page->link]); -print '\n\n"; +print "\n\n";