function createRole($rolename, $password, $superuser, $createdb, $createrole, $inherits, $login, $connlimit, $expiry, $memberof, $members, $adminmembers)
{
$enc = $this->_encryptPassword($rolename, $password);
$this->fieldClean($rolename);
$this->clean($enc);
$this->clean($connlimit);
$this->clean($expiry);
$this->fieldArrayClean($memberof);
$this->fieldArrayClean($members);
$this->fieldArrayClean($adminmembers);
$sql = "CREATE ROLE \"{$rolename}\"";
if ($password != '') {
$sql .= " WITH ENCRYPTED PASSWORD '{$enc}'";
}
$sql .= $superuser ? ' SUPERUSER' : ' NOSUPERUSER';
$sql .= $createdb ? ' CREATEDB' : ' NOCREATEDB';
$sql .= $createrole ? ' CREATEROLE' : ' NOCREATEROLE';
$sql .= $inherits ? ' INHERIT' : ' NOINHERIT';
$sql .= $login ? ' LOGIN' : ' NOLOGIN';
if ($connlimit != '') {
$sql .= " CONNECTION LIMIT {$connlimit}";
} else {
$sql .= ' CONNECTION LIMIT -1';
}
if ($expiry != '') {
$sql .= " VALID UNTIL '{$expiry}'";
} else {
$sql .= " VALID UNTIL 'infinity'";
}
if (is_array($memberof) && sizeof($memberof) > 0) {
$sql .= ' IN ROLE "' . join('", "', $memberof) . '"';
}
if (is_array($members) && sizeof($members) > 0) {
$sql .= ' ROLE "' . join('", "', $members) . '"';
}
if (is_array($adminmembers) && sizeof($adminmembers) > 0) {
$sql .= ' ADMIN "' . join('", "', $adminmembers) . '"';
}
return $this->execute($sql);
}