issue: reuse function to create messages from reply widget
[minimedit.git] / widget / reply.php
index 66e958746b6f71bb330b4165ff138446c6178021..b740c2a5276722aa8bba0f6482a263af65a7b272 100644 (file)
@@ -1,78 +1,11 @@
 <?php
 global $User, $Db, $Issue;
 require_once 'database.inc.php';
-
-$journalcol = [
-       'assign' => 'Toegewezen aan',
-       'subject' => 'Onderwerp',
-];
+require_once 'upload.inc.php';
 
 if ($_POST) {
-       require_once 'upload.inc.php';
        try {
-               $reply = [];
-               if (isset($_POST['reply']) and $body = $_POST['reply']) {
-                       $reply['raw'] = $body;
-                       $reply['message'] = messagehtml($body);
-               }
-               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)) {
-                               $reply['raw'] .= "/$result";
-                               if (preg_match('(^image/)', $_FILES['image']['type'])) {
-                                       $reply['message'] .= sprintf('<p><img src="/thumb/640x/%s" /></p>', $result);
-                               }
-                               else {
-                                       $reply['message'] .= sprintf('<p>Bijgevoegd bestand: <a href="/%s" />%s</a></p>',
-                                               $result, basename($result)
-                                       );
-                               }
-                       }
-               }
-               $query = $Db->set('comments', $reply + [
-                       'page'    => $Page->link,
-                       '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;
-                       }
-               }
-
+               $newcomment = createcomment($_POST, $Issue);
                $target = "/{$Page->link}/$newcomment#$newcomment";
                abort($target, ($Page->api ? 200 : 303) . ' reply success');
                $_POST['reply'] = NULL;