Postgres::getPrivileges PHP Method

getPrivileges() public method

Grabs an array of users and their privileges for an object, given its type.
public getPrivileges ( $object, $type, $table = null ) : -3
$object The name of the object whose privileges are to be retrieved
$type The type of the object (eg. database, schema, relation, function or language)
$table Optional, column's table if type = column
return -3 array
    function getPrivileges($object, $type, $table = null)
    {
        $c_schema = $this->_schema;
        $this->clean($c_schema);
        $this->clean($object);
        switch ($type) {
            case 'column':
                $this->clean($table);
                $sql = "\n\t\t\t\t\tSELECT E'{' || pg_catalog.array_to_string(attacl, E',') || E'}' as acl\n\t\t\t\t\tFROM pg_catalog.pg_attribute a\n\t\t\t\t\t\tLEFT JOIN pg_catalog.pg_class c ON (a.attrelid = c.oid)\n\t\t\t\t\t\tLEFT JOIN pg_catalog.pg_namespace n ON (c.relnamespace=n.oid)\n\t\t\t\t\tWHERE n.nspname='{$c_schema}'\n\t\t\t\t\t\tAND c.relname='{$table}'\n\t\t\t\t\t\tAND a.attname='{$object}'";
                break;
            case 'table':
            case 'view':
            case 'sequence':
                $sql = "\n\t\t\t\t\tSELECT relacl AS acl FROM pg_catalog.pg_class\n\t\t\t\t\tWHERE relname='{$object}'\n\t\t\t\t\t\tAND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace\n\t\t\t\t\t\t\tWHERE nspname='{$c_schema}')";
                break;
            case 'database':
                $sql = "SELECT datacl AS acl FROM pg_catalog.pg_database WHERE datname='{$object}'";
                break;
            case 'function':
                // Since we fetch functions by oid, they are already constrained to
                // the current schema.
                $sql = "SELECT proacl AS acl FROM pg_catalog.pg_proc WHERE oid='{$object}'";
                break;
            case 'language':
                $sql = "SELECT lanacl AS acl FROM pg_catalog.pg_language WHERE lanname='{$object}'";
                break;
            case 'schema':
                $sql = "SELECT nspacl AS acl FROM pg_catalog.pg_namespace WHERE nspname='{$object}'";
                break;
            case 'tablespace':
                $sql = "SELECT spcacl AS acl FROM pg_catalog.pg_tablespace WHERE spcname='{$object}'";
                break;
            default:
                return -1;
        }
        // Fetch the ACL for object
        $acl = $this->selectField($sql, 'acl');
        if ($acl == -1) {
            return -2;
        } elseif ($acl == '' || $acl == null) {
            return array();
        } else {
            return $this->_parseACL($acl);
        }
    }
Postgres