function nodeaccess_update_1 in Nodeaccess 5
Same name and namespace in other branches
- 6.2 nodeaccess.install \nodeaccess_update_1()
- 6 nodeaccess.install \nodeaccess_update_1()
Implementations of hook_update_N().
File
- ./
nodeaccess.install, line 66
Code
function nodeaccess_update_1() {
// Create new nodeaccess table.
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
db_query("CREATE TABLE {nodeaccess} (\n nid int(10) unsigned NOT NULL default '0',\n gid int(10) unsigned NOT NULL default '0',\n realm varchar(255) NOT NULL default '',\n grant_view tinyint(1) unsigned NOT NULL default '0',\n grant_update tinyint(1) unsigned NOT NULL default '0',\n grant_delete tinyint(1) unsigned NOT NULL default '0',\n PRIMARY KEY (nid,gid,realm)\n )");
/*!40100 DEFAULT CHARACTER SET utf8 */
break;
case 'pgsql':
db_query("CREATE TABLE {nodeaccess} (\n nid int_unsigned NOT NULL default '0',\n gid int_unsigned NOT NULL default '0',\n realm varchar(255) NOT NULL default '',\n grant_view smallint_unsigned NOT NULL default '0',\n grant_update smallint_unsigned NOT NULL default '0',\n grant_delete smallint_unsigned NOT NULL default '0',\n PRIMARY KEY (nid,gid,realm)\n )");
break;
}
// 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);
}
}
}