1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 
<?php

/* --------------------------------------------------------------
   AdminAccessPermissionDeleter.inc.php 2018-01-22
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2017 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/

/**
 * Class AdminAccessPermissionDeleter
 *
 * @category   System
 * @package    AdminAccess
 * @subpackage Deleters
 */
class AdminAccessPermissionDeleter implements AdminAccessPermissionDeleterInterface
{
    
    /**
     * @var CI_DB_query_builder
     */
    protected $queryBuilder;
    
    /**
     * @var string
     */
    protected $permissionTable;
    
    
    /**
     * AdminAccessPermissionDeleter constructor.
     *
     * @param CI_DB_query_builder $queryBuilder Query builder.
     */
    public function __construct(CI_DB_query_builder $queryBuilder)
    {
        $this->queryBuilder    = $queryBuilder;
        $this->permissionTable = 'admin_access_permissions';
    }
    
    
    /**
     * Deletes a permission by given AdminAccessRole and AdminAccessGroup objects.
     *
     * @param AdminAccessRoleInterface  $accessRole  Role object.
     * @param AdminAccessGroupInterface $accessGroup Group object.
     *
     * @return AdminAccessPermissionDeleterInterface Returns same instance for chained method calls.
     */
    public function delete(AdminAccessRoleInterface $accessRole, AdminAccessGroupInterface $accessGroup)
    {
        $this->deleteByIds(new IdType($accessRole->getId()), new IdType($accessGroup->getId()));
        
        return $this;
    }
    
    
    /**
     * Deletes a permission by given AdminAccessRole id and AdminAccessGroup id.
     *
     * @param IdType $roleId  Role ID.
     * @param IdType $groupId Group ID.
     *
     * @return AdminAccessPermissionDeleterInterface Returns same instance for chained method calls.
     */
    public function deleteByIds(IdType $roleId, IdType $groupId)
    {
        $where = [
            'admin_access_role_id'  => $roleId->asInt(),
            'admin_access_group_id' => $groupId->asInt(),
        ];
        $this->queryBuilder->delete($this->permissionTable, $where);
        
        return $this;
    }
}