X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/2aeb3486d5598fec6a6b58c37abead5a829678ad..8216853ef9dabf609c67f2cfea3b71a5c9811c6e:/widget/reply.php diff --git a/widget/reply.php b/widget/reply.php index 53fe34f..4f6a2c8 100644 --- a/widget/reply.php +++ b/widget/reply.php @@ -1,73 +1,55 @@ 'Toegewezen aan', -]; +require_once 'upload.inc.php'; if ($_POST) { try { - $html = nl2br(htmlspecialchars($_POST['reply'])); - $html = "

$html

"; - $query = $Db->set('comments', [ - 'page' => $Page, - '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, - ]); - } - } - } + $newcomment = createcomment($_POST, $Issue); + $target = "/{$Page->link}?last=$newcomment#$newcomment"; + abort($target, ($Page->api ? 200 : 303) . ' reply success'); $_POST['reply'] = NULL; } catch (Exception $e) { - print "

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

\n\n"; + if ($Page->api) { + abort(ucfirst($e->getMessage()), '500 reply error'); + } + 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'; -$query = $Db->query("SELECT $cols FROM comments WHERE page = ? ORDER BY created", [$Page]); +$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]); + +if ($row = $query->fetch()) { + print $row->message; + $Page->teaser = $row->raw; +} -print '\n\n"; +print "\n\n";