X-Git-Url: http://git.shiar.nl/minimedit.git/blobdiff_plain/084f4a795fb5874eecd7b17b3999f716432ad41c..621fc2f9638a1a92aa8535310e7852de5542f11e:/widget/reply.php diff --git a/widget/reply.php b/widget/reply.php index 4d504bb..edffaa7 100644 --- a/widget/reply.php +++ b/widget/reply.php @@ -1,13 +1,25 @@ Reacties'."\n"; +$journalcol = [ + 'assign' => 'Toegewezen aan', +]; if ($_POST) { + require_once 'upload.inc.php'; try { - $html = nl2br(htmlspecialchars($_POST['reply'])); - $html = "

$html

"; + $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, 'message' => $html, @@ -16,9 +28,37 @@ if ($_POST) { if (!$query->rowCount()) { throw new Exception('Fout bij opslaan'); } - if (@list ($cat, $issue) = explode('/', $Page) and ctype_digit($issue)) { - $row = ['updated' => ['now()']]; - $Db->set('issues', $row, ['page = ? AND id = ?', $cat, $issue]); + $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; + } } $_POST['reply'] = NULL; } @@ -27,7 +67,8 @@ if ($_POST) { } } -$query = $Db->query('SELECT * FROM comments WHERE page = ? ORDER BY created', [$Page]); +$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]); print '