summaryrefslogtreecommitdiffstats
path: root/app/class/pad.class.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/class/pad.class.php')
-rw-r--r--app/class/pad.class.php87
1 files changed, 87 insertions, 0 deletions
diff --git a/app/class/pad.class.php b/app/class/pad.class.php
new file mode 100644
index 0000000..7c53f30
--- /dev/null
+++ b/app/class/pad.class.php
@@ -0,0 +1,87 @@
+<?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/object.class.php";
+require_once "class/agent.class.php";
+
+/*
+ * This class models Scrott pads. Pads are the space for projects to track
+ * issues and communicate.
+ */
+class pad extends object
+{
+ /*
+ * Constructor
+ */
+ public function __construct(?string $guid = NULL)
+ {
+ $this->fields['pads'] = array(
+ "guid",
+ "stage",
+ "issueNumb",
+ );
+
+ parent::__construct($guid);
+ $this->expectType("pad");
+ }
+
+ /*
+ * Get an array of all pads, sorted by name
+ */
+ public static function getAll_ordByName() : array
+ {
+ $query = "SELECT guid FROM objects WHERE objtype = 'pad' ORDER BY name";
+ $res = database::query($query);
+
+ $pads = array();
+
+ foreach ($res as $p)
+ $pads[] = new pad($p['guid']);
+
+ return $pads;
+ }
+
+ /*
+ * Get an array of all pads NOT owned by a group. These are root-level
+ * pads. Results are sorted by name.
+ */
+ public static function getAllNoGroup_ordByName() : array
+ {
+ $query = "SELECT o.guid FROM objects o JOIN objects b ON o.owner = b.guid WHERE o.objtype = 'pad' AND " .
+ "b.objtype = 'user' ORDER BY o.name";
+ $res = database::query($query);
+
+ $pads = array();
+
+ foreach ($res as $p)
+ $pads[] = new pad($p['guid']);
+
+ return $pads;
+ }
+
+ /*
+ * Initialize a new pad object with the given name and owner
+ */
+ public static function initNew(string $name, agent $owner) : pad
+ {
+ $pad = new pad();
+ $pad->setOwner($owner);
+ $pad->name = $name;
+ $pad->objtype = "pad";
+ $pad->issueNumb = 0;
+ return $pad;
+ }
+}
+
+?>