public function getPermissionsByRole($roleID)
{
$inc = Gdn::userModel()->getPermissionsIncrement();
$key = "perms:{$inc}:role:{$roleID}";
$permissions = Gdn::cache()->get($key);
if ($permissions === Gdn_Cache::CACHEOP_FAILURE) {
$sql = clone $this->SQL;
$sql->reset();
// Select all of the permission columns.
$permissionColumns = $this->permissionColumns();
foreach ($permissionColumns as $columnName => $value) {
$sql->select('p.`' . $columnName . '`', 'MAX');
}
$sql->from('Permission p')->where('p.RoleID', $roleID)->select(array('p.JunctionTable', 'p.JunctionColumn', 'p.JunctionID'))->groupBy(array('p.JunctionTable', 'p.JunctionColumn', 'p.JunctionID'));
$permissions = $sql->get()->resultArray();
$permissions = UserModel::compilePermissions($permissions);
Gdn::cache()->store($key, $permissions);
}
return $permissions;
}