Столкнулся с ситуацией: есть ноды, которые должны принадлежать группам в OG, но, в процессе переезда с 6 на 7 была утеряна информация о том, какая нода какой группе принадлежит. В базе нашёл таблицу d6_og_ancestry, оставшуюся после неудачного переезда с необходимой информацией. Дальше помог следующий скрипт:
<?php
// PHP Script to generate a set of SQL statements that assign a set of posts
// to a group in Drupal 7.
// Node ID of the group to assign the nodes below to.
$group_id = "33";
echo 'Group N '.$group_id;
// Node IDs of the nodes to assign to group with node ID $group_id.
// (One mode to get the right set relatively fast is by copying the "System" column
// from the "URL aliases" Drupal view at http://example.com/admin/config/search/path .)
$node_ids = array(2178, 2212, 2231, 2288, 2338, 2350, 2355); //
$link = mysql_connect('localhost', 'sql-user', 'sql-user-pass');
if (!$link) {
die('Error: ' . mysql_error());
}
// выбираем базу данных
$db_selected = mysql_select_db('base-name', $link);
if (!$db_selected) {
die ('Cant select base: ' . mysql_error());
}
foreach ($node_ids as $node_id) {
$query = sprintf("INSERT
INTO og_membership (type, etid, entity_type, gid, group_type, state, created, field_name, language)
VALUES ('og_membership_type_default', $node_id, 'node', $group_id, 'node', 1, 1359419168, 'og_group_ref', 'ru');\n\n"
);
$result = mysql_query($query);
if (!$result) {
$message = 'Wrong query: ' . mysql_error() . "\n";
$message .= 'Full query: ' . $query;
die($message);
}
}
mysql_close($link);
?>
Насколько понимаю, для пользователей подойдёт этот же скрипт, только в $node_ids надо занести uid пользователей.
Комментарии
Для пользователей:
<?php
// Node IDs of the nodes to assign to group with node ID $group_id.
// PHP Script to generate a set of SQL statements that assign a set of posts
// to a group in Drupal 7.
// Node ID of the group to assign the nodes below to.
$group_id = "1";echo "Group N " . $group_id . "\n";
// (One mode to get the right set relatively fast is by copying the "System" column
// from the "URL aliases" Drupal view at http://example.com/admin/config/search/path .)
$node_ids = array(1, 4, 871, 26, 1051, 1054, 1056); // $link = mysql_connect('localhost', 'sql-user', 'sql-user-pass');
if (!$link) {
die('Error: ' . mysql_error());
}
echo 'Connected to SQL...' . "\n"; // выбираем текущей базы данных
$db_selected = mysql_select_db('sql-base-name', $link);
if (!$db_selected) {
die ('Cant select base: ' . mysql_error());
}
foreach ($node_ids as $node_id) {
$query = sprintf("INSERT
INTO og_membership (type, etid, entity_type, gid, group_type, state, created, field_name, language)
VALUES ('og_membership_type_default', $node_id, 'user', $group_id, 'node', 1, 1359419168, 'og_user_node', 'ru');\n\n"
);
$result = mysql_query($query);
if (!$result) {
$message = 'Wrong query: ' . mysql_error() . "\n";
$message .= 'The query: ' . $query;
die($message);
}
}
mysql_close($link); ?>