summaryrefslogtreecommitdiffstats
path: root/app/model/datamods.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/model/datamods.php')
-rw-r--r--app/model/datamods.php120
1 files changed, 120 insertions, 0 deletions
diff --git a/app/model/datamods.php b/app/model/datamods.php
new file mode 100644
index 0000000..0b7f3da
--- /dev/null
+++ b/app/model/datamods.php
@@ -0,0 +1,120 @@
+<?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/agent.class.php";
+require_once "class/user.class.php";
+require_once "class/group.class.php";
+require_once "class/pad.class.php";
+require_once "class/stage.class.php";
+require_once "class/issue.class.php";
+require_once "class/mesg.class.php";
+
+/*
+ * Action: dm-group-add - New group modal
+ */
+if (isAction("dm-group-add"))
+{
+ $form = new form();
+ $form->text("name");
+
+ if (!$form->populate(input()))
+ return;
+
+ if (!($user = user::getCurrent()))
+ {
+ logError(ERROR, "You must be logged in to create a group");
+ return;
+ }
+
+ $group = group::initNew($form->name, $user);
+}
+
+/*
+ * Action: dm-pad-add - New pad modal
+ */
+if (isAction("dm-pad-add"))
+{
+ $form = new form();
+ $form->text("owner");
+ $form->text("name");
+
+ if (!$form->populate(input()))
+ return;
+
+ $owner = agent::getAgentObj($form->owner);
+
+ if (!($user = user::getCurrent()))
+ {
+ logError(ERROR, "You must be logged in to create a pad");
+ return;
+ }
+
+ if (!$user->canCreateSub($owner))
+ {
+ logError(ERROR, "You do not have permission to create a pad for '" . $owner->getDisplayName() . "'");
+ return;
+ }
+
+ $pad = pad::initNew($form->name, $owner);
+ $td = stage::initNew("To Do", $pad);
+ $ip = stage::initNew("In Progress", $pad);
+
+ $pad->insertStage($td);
+ $td->insertStage($ip);
+}
+
+/*
+ * Action: dm-issue-add - New issue modal
+ */
+if (isAction("dm-issue-add"))
+{
+ $form = new form();
+ $form->text("pad");
+ $form->text("name");
+ $form->text("mesg", false);
+
+ if (!$form->populate(input()))
+ return;
+
+ $pad = new pad($form->pad);
+
+ if (!($user = user::getCurrent()))
+ {
+ logError(ERROR, "You must be logged in to open an issue");
+ return;
+ }
+
+ if (!$user->canCreateSub($pad))
+ {
+ logError(ERROR, "You do not have permission to open an issue for '" . $pad->name . "'");
+ return;
+ }
+
+ $stages = $pad->getStages();
+
+ if (count($stages) == 0)
+ {
+ logError(ERROR, "Cannot create new issue, '" . $pad->name . "' doesn't have any stages");
+ return;
+ }
+
+ $mesg = mesg::initNewDiscussion($form->name, $form->mesg, $user, $pad);
+ $issue = issue::initNew($mesg, $user, $stages[0]);
+ $log = mesg::initNewLog("%s opened issue", $user, $issue);
+
+ location(); // bug mitigation
+}
+
+?>