diff options
| -rw-r--r-- | app/class/agent.class.php | 54 | 
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; +    } +} + +?> | 
