X-Git-Url: http://git.shiar.nl/minimedit.git/blobdiff_plain/a89937ec79577fd78af6fe40450ca53dd2d3604f..483761be2d405d4a69c005bd407f12e6d81445b1:/widget/reply.php?ds=sidebyside diff --git a/widget/reply.php b/widget/reply.php index 3a16e2c..879b53d 100644 --- a/widget/reply.php +++ b/widget/reply.php @@ -1,14 +1,16 @@ Reacties'."\n"; +$journalcol = [ + 'assign' => 'Toegewezen aan', +]; if ($_POST) { try { $html = nl2br(htmlspecialchars($_POST['reply'])); $html = "

$html

"; - $query = $Db->insert('comments', [ + $query = $Db->set('comments', [ 'page' => $Page, 'message' => $html, 'author' => $User->login, @@ -16,10 +18,41 @@ if ($_POST) { 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, + ]); + } + } + } $_POST['reply'] = NULL; } catch (Exception $e) { - print '

Antwoord niet opgeslagen.

'."\n\n"; + print "

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

\n\n"; } } @@ -37,14 +70,36 @@ while ($row = $query->fetch()) { print "\n"; } -print '
  • '; -print '
    '; -printf(''."\n", - 'reply', - "Bericht van {$User->login}", - '' -); -print ''."\n"; -print "
  • \n"; +if ($User) { + print '
  • '; + print '
    '; + if (isset($Issue) and $User->admin("edit $Page")) { + print '

    '; + printf( + ' ' + . ''."\n", + 'assign', + $journalcol['assign'], + htmlspecialchars($Issue->assign ?? '') + ); + printf( + '' . + '' + . ''."\n", + 'status', + 'resolved', + isset($Issue->closed) ? ' checked' : '', + 'Gesloten' + ); + print "

    \n"; + } + printf(''."\n", + 'reply', + "Bericht van {$User->login}", + '' + ); + print ''."\n"; + print "
  • \n"; +} print "\n\n";