1, 2 => 2)); $role_perms[1]['access content'] = isset($role_perms[1]['access content'])? intval($role_perms[1]['access content']) : 0; $role_perms[2]['access content'] = isset($role_perms[2]['access content'])? intval($role_perms[2]['access content']) : 0; // Anonymous user setting. $grants[] = array( 'gid' => 1, 'realm' => 'nodeaccess_rid', 'grant_view' => $role_perms[1]['access content'], ); // Authenticated user setting. $grants[] = array( 'gid' => 2, 'realm' => 'nodeaccess_rid', 'grant_view' => $role_perms[2]['access content'], ); $author_prefs = array(); foreach (node_type_get_types() as $type => $name) { // We check the edit permissions for anonymous and authenticated users. $edit_perm = 'edit any ' . $type . ' content'; $role_perms[1][$edit_perm] = isset($role_perms[1][$edit_perm])? intval($role_perms[1][$edit_perm]) : 0; $role_perms[2][$edit_perm] = isset($role_perms[2][$edit_perm])? intval($role_perms[2][$edit_perm]) : 0; $grants[0]['grant_update'] = $role_perms[1][$edit_perm]; $grants[1]['grant_update'] = $role_perms[2][$edit_perm]; // We check the delete permissions for anonymous and authenticated users. $delete_perm = 'delete any ' . $type . ' content'; $role_perms[1][$delete_perm] = isset($role_perms[1][$delete_perm])? intval($role_perms[1][$delete_perm]) : 0; $role_perms[2][$delete_perm] = isset($role_perms[2][$delete_perm])? intval($role_perms[2][$delete_perm]) : 0; $grants[0]['grant_delete'] = $role_perms[1][$delete_perm]; $grants[1]['grant_delete'] = $role_perms[2][$delete_perm]; variable_set('nodeaccess_' . $type, $grants); $author_prefs[$type] = array( 'grant_view' => 0, 'grant_update' => 0, 'grant_delete' => 0, ); } variable_set('nodeaccess_authors', $author_prefs); // Set up all permissions to be editable by default. $grant_prefs = array('view' => 1, 'edit' => 1, 'delete' => 1); variable_set('nodeaccess-grants', $grant_prefs); } /** * Implements hook_schema(). */ function nodeaccess_schema() { $schema['nodeaccess'] = array( 'fields' => array( 'nid' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), 'gid' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), 'realm' => array( 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'grant_view' => array( 'type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), 'grant_update' => array( 'type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), 'grant_delete' => array( 'type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), ), 'primary key' => array('nid', 'gid', 'realm'), ); $schema['nodeaccess_role_alias'] = array( 'fields' => array( 'rid' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), 'name' => array( 'type' => 'varchar', 'length' => 50, 'not null' => TRUE, 'default' => '', ), 'weight' => array( 'type' => 'int', 'not null' => TRUE, 'default' => 0, ), ), 'primary key' => array('rid'), ); return $schema; } /** * Implements hook_uninstall(). */ function nodeaccess_uninstall() { // Remove variables. variable_del('nodeaccess-priority'); variable_del('nodeaccess-preserve'); variable_del('nodeaccess-grants'); variable_del('nodeaccess-roles'); variable_del('nodeaccess-types'); variable_del('nodeaccess_authors'); foreach (node_type_get_types() as $type => $name) { variable_del('nodeaccess_' . $type); variable_del('nodeaccess_' . $type . '_userreference'); } // Remove tables. drupal_uninstall_schema('nodeaccess'); } /** * Flag nodeaccess permissions as needing a rebuild. Rebuild permissions from the status page. */ function nodeaccess_update_7105() { node_access_needs_rebuild(); }