public function getCrudPermissions($user_id, $filter = null) {
        return $this->cache(array(__METHOD__, $user_id), function($self) use ($user_id, $filter) {
            $crud = array();

            if ($permissions = $self->getPermissions($user_id)) {
                foreach ($permissions as $permission) {
                    if ($filter && stripos($permission['ControlObject']['alias'], $filter) === false) {
                        continue;
                    }

                    $crud[$permission['ControlObject']['alias']] = array(
                        'create' => ($permission['ObjectPermission']['_create'] >= 0),
                        'read' => ($permission['ObjectPermission']['_read'] >= 0),
                        'update' => ($permission['ObjectPermission']['_update'] >= 0),
                        'delete' => ($permission['ObjectPermission']['_delete'] >= 0)
                    );
                }
            }

            return $crud;
        });
    }