summaryrefslogblamecommitdiffstats
path: root/examples/class/object.class.php
blob: 4bafc5c2808e48e781caa46f692e3d030cdcb1d3 (plain) (tree)
1
2
3
4
5

     

                                       
      
































































































































































































































































































                                                           

      







                                               





                                                                      










                                                         


  
<?php

abstract class Object extends Framework
{
    /*
     * Check if given user has permissions for this object
     */
    function canAccess($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user))
            return true;

        if ($this->perms & 0x004) // accessible by public
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canAccessSub($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canAccessSub($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canModify($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user) && $this->perms & 0x100)
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canModifySub($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canModifySub($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canModifyMembers($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user) && $this->perms & 0x080)
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canModifySubMembers($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canModifySubMembers($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canModifyPermissions($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canModifySubPermissions($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canModifySubPermissions($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canAccessSub($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user) && $this->perms & 0x040)
            return true;

        if ($this->perms & 0x002) // accessible by public
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canAccessSub($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canAccessSub($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canCreateSub($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user) && $this->perms & 0x020)
            return true;

        if ($this->perms & 0x001) // accessible by public
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canCreateSub($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canCreateSub($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canModifySub($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user) && $this->perms & 0x010)
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canModifySub($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canModifySub($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canModifySubMembers($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->isMember($user) && $this->perms & 0x008)
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canModifySubMembers($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canModifySubMembers($user))
                return true;
        }

        return false;
    }

    /*
     * Check if given user has permissions for this object
     */
    function canModifySubPermissions($user)
    {
        if ($user->admin)
            return true;

        if ($this->isOwner($user))
            return true;

        if ($this->parent != "")
        {
            $parent = new DBObject($this->parent);

            if ($parent->canModifySubPermissions($user))
                return true;
        }
        else if ($this->owner != $this->guid)
        {
            $owner = new DBObject($this->owner);

            if ($owner->canModifySubPermissions($user))
                return true;
        }

        return false;
    }

    /*
     * Get URL to this object
     */
    function getURL()
    {
        return $this->ar() . "/" . $this->guid;
    }

    /*
     * Get object's head image
     */
    function getHeadImage()
    {
        return $this->ar() . "/file.php?d=img/heads&f=" . $this->guid;
    }

    /*
     * Remove this object's head image
     */
    function rmHeadImage()
    {
        if (!is_file("assets/img/heads/" . $this->guid))
            return true;

        return unlink("assets/img/heads/" . $this->guid);
    }
}

?>