diff --git a/nodeaccess.module b/nodeaccess.module --- a/nodeaccess.module +++ b/nodeaccess.module @@ -220,9 +220,11 @@ * @return mixed */ function nodeaccess_grants_form($form, &$form_state, $node) { - $form_values = $form_state['values']; + if (isset($form_state['values'])) { + $form_values = $form_state['values']; + } - if (!$form_values) { + if (!isset($form_values)) { $form_values = array(); $grants = nodeaccess_get_grants($node); $form_values['rid'] = isset($grants['rid']) ? $grants['rid'] : array(); @@ -939,13 +941,11 @@ $grants = array(); // Load grants by roles. - $query = db_select('nodeaccess', 'na'); - $query->join('role', 'r', 'r.rid = na.gid'); - $query->join('nodeaccess_role_alias', 'nra', 'nra.rid = r.rid'); + $query = db_select('role', 'r'); + $query->leftJoin('nodeaccess', 'na', 'r.rid = na.gid AND na.realm = :realm AND na.nid = :nid', array(':realm' => 'nodeaccess_rid', ':nid' => $node->nid)); + $query->leftJoin('nodeaccess_role_alias', 'nra', 'nra.rid = r.rid'); $query->fields('r', array('rid', 'name')); $query->fields('na', array('grant_view', 'grant_update', 'grant_delete')); - $query->condition('na.realm', 'nodeaccess_rid', '='); - $query->condition('na.nid', $node->nid, '='); $query->orderBy('nra.weight'); $query->orderBy('nra.name'); $result = $query->execute();