function nodeaccess_update_1 in Nodeaccess 6
Same name and namespace in other branches
- 5 nodeaccess.install \nodeaccess_update_1()
- 6.2 nodeaccess.install \nodeaccess_update_1()
Implementations of hook_update_N().
File
- ./
nodeaccess.install, line 58
Code
function nodeaccess_update_1() {
// Create new nodeaccess table.
$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',
),
);
$ret = array();
db_create_table($ret, 'nodeaccess', $schema['nodeaccess']);
// Update format of content type specific variables.
foreach (node_get_types() as $type => $name) {
$perm = variable_get('nodeaccess_' . $type, array());
if (count($perm) > 0) {
foreach ($perm['rid'] as $role => $grants) {
$new[] = array(
'gid' => $grants[0],
'realm' => 'nodeaccess_rid',
'grant_view' => $grants['grant_view'],
'grant_update' => $grants['grant_update'],
'grant_delete' => $grants['grant_delete'],
);
}
variable_set('nodeaccess_' . $type, $new);
}
}
// Populate the new nodeaccess table with data from node_access.
$result = db_query("SELECT na.nid, na.gid, na.realm, na.grant_view, na.grant_update, na.grant_delete, n.type FROM {node_access} na LEFT JOIN {node} n ON n.nid = na.nid WHERE na.realm = 'nodeaccess_uid' OR na.realm = 'nodeaccess_rid'");
while ($row = db_fetch_object($result)) {
$default = variable_get('nodeaccess_' . $row->type, array());
if ($default['grant_view'] != $row->grant_view && $default['grant_update'] != $row->grant_update && $default['grant_delete'] != $row->grant_delete) {
db_query("INSERT INTO {nodeaccess} (nid, gid, realm, grant_view, grant_update, grant_delete) VALUES (%d, %d, '%s', %d, %d, %d)", $row->nid, $row->gid, $row->realm, $row->grant_view, $row->grant_update, $row->grant_delete);
}
}
return $ret;
}