summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/class/agent.class.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/app/class/agent.class.php b/app/class/agent.class.php
new file mode 100644
index 0000000..7c3b23c
--- /dev/null
+++ b/app/class/agent.class.php
@@ -0,0 +1,54 @@
+<?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";
+
+/*
+ * This is a supertype for users and groups, since these two object types
+ * will often be handled polymorphically and will share some functionality.
+ */
+abstract class agent extends object
+{
+ /*
+ * Constructor
+ */
+ public function __construct(?string $guid = NULL)
+ {
+ parent::__construct($guid);
+ }
+
+ /*
+ * Check whether this agent is the owner of the given object
+ */
+ public function isOwnerOf(object $obj) : bool
+ {
+ return $obj->getOwner()->guid == $this->guid;
+ }
+
+ /*
+ * Check whether this agent is a member of the given object
+ */
+ public function isMemberOf(object $obj) : bool
+ {
+ foreach ($obj->getMembers() as $memb)
+ {
+ if ($memb->guid == $this->guid)
+ return true;
+ }
+
+ return false;
+ }
+}
+
+?>