summaryrefslogtreecommitdiffstats
path: root/app/class/group.class.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--app/class/group.class.php93
1 files changed, 93 insertions, 0 deletions
diff --git a/app/class/group.class.php b/app/class/group.class.php
new file mode 100644
index 0000000..1191d71
--- /dev/null
+++ b/app/class/group.class.php
@@ -0,0 +1,93 @@
+<?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/agent.class.php";
+require_once "class/user.class.php";
+
+/*
+ * This class models Scrott user groups, a construct which exists to
+ * simplify the sharing of multiple Scrott pads.
+ */
+class group extends agent
+{
+ /*
+ * Constructor
+ */
+ public function __construct(?string $guid = NULL)
+ {
+ $this->fields['groups'] = array(
+ "guid",
+ );
+
+ parent::__construct($guid);
+ $this->expectType("group");
+ }
+
+ /*
+ * Get an array of all groups, sorted by name
+ */
+ public static function getAll_ordByName() : array
+ {
+ $query = "SELECT guid FROM objects WHERE objtype = 'group' ORDER BY name";
+ $res = database::query($query);
+
+ $groups = array();
+
+ foreach ($res as $g)
+ $groups[] = new group($g['guid']);
+
+ return $groups;
+ }
+
+ /*
+ * Initialize a new group object with the given name and owner
+ */
+ public static function initNew(string $name, user $owner) : group
+ {
+ $group = new group();
+ $group->setOwner($owner);
+ $group->name = $name;
+ $group->objtype = "group";
+ $group->saveObj();
+ return $group;
+ }
+
+ /*
+ * Send an email message to this group using stored configuration
+ * parameters. If config is not established, delivery is not
+ * attempted. Return status. If any delivery attempts fail, the
+ * rest are aborted and false is returned.
+ */
+ public function sendEmail(string $subj, string $mesg,
+ ?string $attachPath = NULL, ?string $attachName = NULL,
+ bool $ignoreEmailConf = false) : bool
+ {
+ $owner = $this->getOwner();
+
+ if (!$owner->sendEmail($subj, $mesg, $attachPath, $attachName,
+ $ignoreEmailConf))
+ return false;
+
+ foreach ($this->getMembers() as $memb)
+ {
+ if (!$memb->sendEmail($subj, $mesg, $attachPath, $attachName,
+ $ignoreEmailConf))
+ return false;
+ }
+
+ return true;
+ }
+}
+
+?>