php8
[web.mtrack] / admin / enum.php
1 <?php # vim:ts=2:sw=2:et:
2 /* For licensing and copyright terms, see the file named LICENSE */
3 include '../../inc/common.php';
4
5 MTrackACL::requireAnyRights('Enumerations', 'modify');
6
7 $ename = mtrack_get_pathinfo();
8 $enums = array('Priority', 'TicketState', 'Severity', 'Resolution', 'Classification');
9
10 if (!in_array($ename, $enums)) {
11   throw new Exception("Invalid enum type");
12 }
13
14 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
15   $cls = 'MTrack' . $ename;
16   if (isset($_POST["$ename:name:"]) && strlen($_POST["$ename:name:"])) {
17     $obj = new $cls;
18     $obj->name = $_POST["$ename:name:"];
19     $obj->value = $_POST["$ename:value:"];
20     $CS = MTrackChangeset::begin("enum:$obj->tablename:$obj->name",
21         "added $ename $obj->name");
22     $obj->save($CS);
23     $CS->commit();
24   }
25
26   foreach ($_POST as $name => $value) {
27     if (preg_match("/^$ename:value:(.+)$/", $name, $M)) {
28       $n = $M[1];
29       $obj = new $cls($n);
30       $changed = false;
31
32       if ($obj->value != $value) {
33         $obj->value = $value;
34         $changed = true;
35       }
36       if (isset($_POST["$ename:deleted:$n"]) &&
37           $_POST["$ename:deleted:$n"] == "on") {
38         $deleted = '1';
39       } else {
40         $deleted = '';
41       }
42       if ($obj->deleted != $deleted) {
43         $obj->deleted = $deleted;
44         $changed = true;
45       }
46
47       if ($changed) {
48         $CS = MTrackChangeset::begin("enum:$obj->tablename:$obj->name",
49             "changed $ename $obj->name");
50         $obj->save($CS);
51         $CS->commit();
52       }
53     }
54   }
55   header("Location: ${ABSWEB}admin/");
56   exit;
57 }
58
59 mtrack_head("Administration - $ename");
60
61 echo "<form method='post'>";
62
63 $cls = 'MTrack' . $ename;
64 $obj = new $cls;
65 echo "<br><b>$ename values</b><br>\n";
66 $vals = $obj->enumerate(true);
67 echo "<table><tr><th>Name</th><th>Value</th><th>Deleted</th></tr>\n";
68 foreach ($vals as $V) {
69   $n = htmlentities($V['name'], ENT_QUOTES, 'utf-8');
70   $v = htmlentities($V['value'], ENT_QUOTES, 'utf-8');
71   $del = $V['deleted'] ? ' checked="checked" ' : '';
72   echo "<tr>" .
73     "<td>$n</td>" .
74     "<td><input type='text' name='$ename:value:$n' value='$v'></td>" .
75     "<td><input type='checkbox' name='$ename:deleted:$n' $del></td>" .
76     "</tr>\n";
77 }
78 echo "<tr>" .
79   "<td><input type='text' name='$ename:name:' value=''></td>" .
80   "<td><input type='text' name='$ename:value:' value=''></td>" .
81   "<td>Add a new $ename</td>" .
82   "</tr>\n";
83 echo "</table>\n";
84
85 echo "<button>Save Changes</button></form>";
86
87 mtrack_foot();
88