summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMalf Furious <m@lfurio.us>2018-10-25 21:37:41 -0400
committerMalf Furious <m@lfurio.us>2018-10-25 21:37:41 -0400
commitb50b994af2df3453dbc2a1015a297c2b28e4b209 (patch)
tree8f16cd3ceb2bbdc8354e0e5fe06540fe065e69ef
parent1bb6077c7c74c0b65be906cbeed417f911498e87 (diff)
downloadscrott-b50b994af2df3453dbc2a1015a297c2b28e4b209.tar.gz
scrott-b50b994af2df3453dbc2a1015a297c2b28e4b209.zip
issue: Implement form handler iss-mesg-add
Submissions to the iss-mesg-add form are now handled by this function. User must be logged in and permitted to post to the issue in question. Signed-off-by: Malf Furious <m@lfurio.us>
-rw-r--r--app/model/issue.php57
-rw-r--r--app/view/issue.php1
2 files changed, 58 insertions, 0 deletions
diff --git a/app/model/issue.php b/app/model/issue.php
new file mode 100644
index 0000000..2120256
--- /dev/null
+++ b/app/model/issue.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * SCROTT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For more information, please refer to UNLICENSE
+ */
+
+require_once "class/form.class.php";
+require_once "class/issue.class.php";
+require_once "class/mesg.class.php";
+
+/*
+ * Action: iss-mesg-add - Post new issue message
+ */
+if (isAction("iss-mesg-add"))
+{
+ $form = new form();
+ $form->text("issue");
+ $form->text("mesg");
+
+ if (!$form->populate(input()))
+ return;
+
+ $issue = new issue($form->issue);
+
+ if (!($user = user::getCurrent()))
+ {
+ logError(ERROR, "You must be logged in to post a message");
+ return;
+ }
+
+ if (!$user->canCreateSub($issue))
+ {
+ logError(ERROR, "You do not have permission to post to this issue");
+ return;
+ }
+
+ $mesg = mesg::initNew($form->mesg, $user, $issue);
+
+ if ($mesg->setAttachment("attachment"))
+ logError(NOTICE, "Saved attachment " . $mesg->attachment);
+
+ if (isset(input()['closeIssue']))
+ {
+ $issue->close($user);
+ logError(NOTICE, "Issue #" . $issue->numb . " closed");
+ }
+}
+
+?>
diff --git a/app/view/issue.php b/app/view/issue.php
index 6f9f95a..9b3910c 100644
--- a/app/view/issue.php
+++ b/app/view/issue.php
@@ -14,6 +14,7 @@
namespace issue_v;
+require_once "model/issue.php";
require_once "class/issue.class.php";
?>