Skip to content

Instantly share code, notes, and snippets.

@Jan-E
Created June 2, 2023 05:32
Show Gist options
  • Save Jan-E/20218ef0b471756e0075287d3df761bc to your computer and use it in GitHub Desktop.
Save Jan-E/20218ef0b471756e0075287d3df761bc to your computer and use it in GitHub Desktop.
Rebuild Drupal Subgroup trees. Run without args to analyze, with ?execute=1 to rebuild all tree values
<?php
set_time_limit(600); // 10 minutes
error_reporting(E_ALL ^ E_NOTICE);
ini_set ('display_errors', "Off");
$execute = isset($_REQUEST['execute']) ? 1 : 0;
$only_tree = isset($_REQUEST['tree']) ? intval($_REQUEST['tree']) : NULL;
$execute_all_in_one = isset($_REQUEST['execute_all_in_one']) ? 1 : 0;
header("Pragma: no-cache");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-control: no-cache, no-store, must-revalidate, max_age=0");
$systemname = 'adminuser';
$password = 'adminpass';
$uid = 6; // uid f the adminuser
// https://drupal.stackexchange.com/questions/299662/programmatically-log-in-a-user
use Drupal\Core\DrupalKernel;
use Drupal\user\Entity\User;
use Drupal\node\Entity\Node;
use Drupal\group\Entity\Group;
use Drupal\views\Views;
use Drupal\views\Element;
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Route;
// borrowe from subgroup/src/Entity/SubgroupHandlerBase.php
use Drupal\Core\Entity\EntityHandlerBase;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\subgroup\InvalidLeafException;
use Drupal\subgroup\InvalidParentException;
use Drupal\subgroup\InvalidRootException;
use Drupal\subgroup\MalformedLeafException;
use Symfony\Component\DependencyInjection\ContainerInterface;
$autoloader = (require_once 'autoload.php');
try {
$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');
$kernel->boot();
// A route is required for route matching.
$request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, new Route('<none>'));
$request->attributes->set(RouteObjectInterface::ROUTE_NAME, '<none>');
$kernel->preHandle($request);
if (PHP_SAPI !== 'cli') {
$request->setSession($kernel->getContainer()->get('session'));
}
} catch (HttpExceptionInterface $e) {
$response = new Response('', $e->getStatusCode());
$response->prepare($request)->send();
exit;
}
\Drupal::moduleHandler()->addModule('system', 'core/modules/system');
\Drupal::moduleHandler()->addModule('user', 'core/modules/user');
\Drupal::moduleHandler()->load('system');
\Drupal::moduleHandler()->load('user');
$system = User::load($uid);
\Drupal::currentUser()->setAccount($system);
if (\Drupal::currentUser()->isAuthenticated()) {
$systemname = $system->getDisplayName();
$password = '';
}
$connection = \Drupal\Core\Database\Database::getConnection('default', 'default');
/* start of code to test */
$dbquery = "
SELECT
groups_field_data.id AS id,
groups_field_data.label AS title
FROM
drupal_groups_field_data groups_field_data
WHERE groups_field_data.type LIKE 'project'
";
$project2id = array();
$query = \Drupal::database()->query($dbquery);
$results = $query->fetchAll();
foreach ($results as $id => $result) {
//echo "<pre>result ".count($result)." = ".print_r($result,true)."</pre>";
if ($only_tree) {
if ($result->id == $only_tree)
$project2id[strtoupper($result->title)] = $result->id;
} else {
$project2id[strtoupper($result->title)] = $result->id;
}
}
//echo "<pre>project2id ".count($project2id)." = ".print_r($project2id,true)."</pre>";
$duplicates = array();
$right_not_left_plus_one = array();
$oops = 0;
foreach ($project2id as $projectid) {
$dbquery = "
SELECT
drupal_group_revision__subgroup_tree.subgroup_tree_value as tree_val,
drupal_groups.type,
drupal_group_content_field_data.gid as parent,
drupal_groups_parent_data.uid as parent_uid,
drupal_groups_field_data.uid,
drupal_groups_field_data.label,
drupal_groups_revision.id,
drupal_groups_revision.revision_id,
drupal_group_revision__subgroup_depth.subgroup_depth_value as depth_val,
drupal_group_revision__subgroup_right.subgroup_right_value as right_revision_val,
drupal_group_revision__subgroup_left.subgroup_left_value as left_revision_val
FROM
drupal_groups_revision
JOIN
drupal_group_revision__subgroup_tree
ON
drupal_group_revision__subgroup_tree.revision_id = drupal_groups_revision.revision_id
JOIN
drupal_group_revision__subgroup_depth
ON
drupal_group_revision__subgroup_depth.revision_id = drupal_groups_revision.revision_id
JOIN
drupal_group_revision__subgroup_right
ON
drupal_group_revision__subgroup_right.revision_id = drupal_groups_revision.revision_id
JOIN
drupal_group_revision__subgroup_left
ON
drupal_group_revision__subgroup_left.revision_id = drupal_groups_revision.revision_id
JOIN
drupal_groups
ON
drupal_groups.id = drupal_groups_revision.id
JOIN
drupal_groups_field_data
ON
drupal_groups_field_data.id = drupal_groups.id
JOIN
drupal_group_content_field_data
ON
drupal_group_content_field_data.entity_id = drupal_groups.id
JOIN
drupal_groups_field_data drupal_groups_parent_data
ON
drupal_groups_parent_data.id = drupal_group_content_field_data.gid
WHERE
((drupal_group_content_field_data.type = 'project-group_membership' AND drupal_group_content_field_data.gid = 4) OR
drupal_group_content_field_data.type = 'project-subgroup-case' OR
drupal_group_content_field_data.type = 'case-subgroup-session') AND
drupal_group_revision__subgroup_tree.subgroup_tree_value = {$projectid}
ORDER BY
drupal_groups_revision.id, drupal_groups_revision.revision_id
";
$query = \Drupal::database()->query($dbquery, [], ['fetch' => PDO::FETCH_ASSOC]);
$results = $query->fetchAll();
foreach ($results as $result) {
$revision_left[$result['id']] = $result['left_revision_val'];
$revision_right[$result['id']] = $result['right_revision_val'];
}
//echo "<pre>revision_left ".count($revision_left)." = ".print_r($revision_left,true)."</pre>";
//echo "<pre>revision_right ".count($revision_right)." = ".print_r($revision_right,true)."</pre>";die();
$dbquery = "
SELECT
drupal_group__subgroup_tree.subgroup_tree_value as tree_val,
drupal_groups.type,
drupal_group_content_field_data.gid as parent,
drupal_groups_parent_data.uid as parent_uid,
drupal_groups_field_data.uid,
drupal_groups_field_data.label,
drupal_groups.id,
drupal_groups.revision_id,
drupal_group__subgroup_depth.subgroup_depth_value as depth_val,
drupal_group__subgroup_right.subgroup_right_value as right_val,
drupal_group__subgroup_left.subgroup_left_value as left_val
FROM
drupal_groups
JOIN
drupal_groups_field_data
ON
drupal_groups_field_data.id = drupal_groups.id
JOIN
drupal_group__subgroup_tree
ON
drupal_group__subgroup_tree.revision_id = drupal_groups.revision_id
JOIN
drupal_group__subgroup_depth
ON
drupal_group__subgroup_depth.revision_id = drupal_groups.revision_id
JOIN
drupal_group__subgroup_right
ON
drupal_group__subgroup_right.revision_id = drupal_groups.revision_id
JOIN
drupal_group__subgroup_left
ON
drupal_group__subgroup_left.revision_id = drupal_groups.revision_id
JOIN
drupal_group_content_field_data
ON
drupal_group_content_field_data.entity_id = drupal_groups.id
JOIN
drupal_groups_field_data drupal_groups_parent_data
ON
drupal_groups_parent_data.id = drupal_group_content_field_data.gid
WHERE
((drupal_group_content_field_data.type = 'project-group_membership' AND drupal_group_content_field_data.gid = 4) OR
drupal_group_content_field_data.type = 'project-subgroup-case' OR
drupal_group_content_field_data.type = 'case-subgroup-session') AND
drupal_group__subgroup_tree.subgroup_tree_value = {$projectid}
ORDER BY
drupal_groups.id
";
if (isset($_REQUEST['only_left'])) {
$dbquery = "
SELECT
drupal_group__subgroup_tree.subgroup_tree_value as tree_val,
drupal_groups.type,
drupal_group_content_field_data.gid as parent,
drupal_groups_parent_data.uid as parent_uid,
drupal_groups_field_data.uid,
drupal_groups_field_data.label,
drupal_groups.id,
drupal_groups.revision_id,
drupal_group__subgroup_depth.subgroup_depth_value as depth_val,
drupal_group__subgroup_right.subgroup_right_value as right_val,
drupal_group__subgroup_left.subgroup_left_value as left_val
FROM
drupal_groups
JOIN
drupal_groups_field_data
ON
drupal_groups_field_data.id = drupal_groups.id
JOIN
drupal_group__subgroup_tree
ON
drupal_group__subgroup_tree.revision_id = drupal_groups.revision_id
JOIN
drupal_group__subgroup_depth
ON
drupal_group__subgroup_depth.revision_id = drupal_groups.revision_id
JOIN
drupal_group__subgroup_right
ON
drupal_group__subgroup_right.revision_id = drupal_groups.revision_id
JOIN
drupal_group__subgroup_left
ON
drupal_group__subgroup_left.revision_id = drupal_groups.revision_id
JOIN
drupal_group_content_field_data
ON
drupal_group_content_field_data.entity_id = drupal_groups.id
JOIN
drupal_groups_field_data drupal_groups_parent_data
ON
drupal_groups_parent_data.id = drupal_group_content_field_data.gid
WHERE
((drupal_group_content_field_data.type = 'project-group_membership' AND drupal_group_content_field_data.gid = 4) OR
drupal_group_content_field_data.type = 'project-subgroup-case' OR
drupal_group_content_field_data.type = 'case-subgroup-session') AND
drupal_group__subgroup_tree.subgroup_tree_value = {$projectid}
ORDER BY
drupal_groups.id
";
}
$query = \Drupal::database()->query($dbquery, [], ['fetch' => PDO::FETCH_ASSOC]);
$results = $query->fetchAll();
$connection = \Drupal\Core\Database\Database::getConnection();
$prev_id = 0;
$prev_revision_id = 0;
$prev_left = 0;
$prev_right = 0;
$prev_result = array();
$fixedone = 0;
foreach ($results as $id => $result) {
if ($result['depth_val'] == 0) {
//echo "<pre>{$id} ".print_r($result,true)."</pre>";//die();
$project_left[$result['id']] = $result['left_val'];
$project_right[$result['id']] = $result['right_val'];
}
if ($result['depth_val'] == 1) {
//echo "<pre>".$result['parent']." ".$result['id']." = ".$result['left_val'].":".$result['right_val']."</pre>";
//echo "<pre>{$id} ".print_r($result,true)."</pre>";
$curr_case_left = $result['left_val'];
$curr_case_right = $result['right_val'];
$curr_case_uid = $result['uid'];
$project_cases_left[$result['parent']][$result['id']] = $curr_case_left;
$project_cases_right[$result['parent']][$result['id']] = $curr_case_right;
$project_cases_uid[$result['parent']][$result['id']] = $curr_case_uid;
}
if ($result['depth_val'] == 2) {
//echo "<pre>".$result['parent']." ".$result['id']." = ".$result['left_val'].":".$result['right_val']."</pre>";
//echo "<pre>{$id} ".print_r($result,true)."</pre>";
$curr_sess_left = $result['left_val'];
$curr_sess_uid = $result['uid'];
$curr_parent_uid = $result['parent_uid'];
$curr_sess_right = $result['right_val'];
$case_sessions_left[$result['parent']][$result['id']] = $curr_sess_left;
$case_sessions_right[$result['parent']][$result['id']] = $curr_sess_right;
$case_sessions_uid[$result['parent']][$result['id']] = $curr_sess_uid;
}
$curr_id = $result['id'];
$curr_revision_id = $result['revision_id'];
$curr_left = $result['left_val'];
$curr_right = $result['right_val'];
if (
(isset($_REQUEST['only_left']) && $curr_left == $prev_left) ||
($curr_left == $prev_left && $curr_right == $prev_right)
) {
//echo "<pre>{$id} prev {$prev_id} = ".print_r($prev_result,true)."</pre>";
//echo "<pre>{$id} curr {$curr_id} = ".print_r($result,true)."</pre>";
$duplicates[$curr_id] = $prev_id;
}
if (
$result['depth_val'] == 2 && (
!isset($_REQUEST['only_left']) &&
($curr_sess_right != $curr_sess_left + 1)
)
) {
//echo "<pre>".$result['parent']." ".$result['id']." = ".$result['left_val'].":".$result['right_val']." diff: ".($result['right_val'] - $result['left_val'])."</pre>";
//echo "<pre>{$id} = ".print_r($result,true)."</pre>";
$right_not_left_plus_one[] = $result['id'];
$dbquery = "UPDATE drupal_group__subgroup_right SET subgroup_right_value = '".($result['left_val'] + 1)."' WHERE id = '".$result['id']."'";
if ($execute) $res = $connection->query($dbquery);
echo "<pre>".$dbquery."</pre>";
}
//echo "<pre>{$id} = ".print_r($result,true)."</pre>";die();
$prev_id = $curr_id;
$prev_revision_id = $curr_revision_id;
$prev_left = $curr_left;
$prev_right = $curr_right;
$prev_result = $result;
}
//die();
}
// echo "<pre>duplicates ".count($duplicates)." = ".print_r($duplicates,true)."</pre>";
// echo "<pre>right_not_left_plus_one ".count($right_not_left_plus_one)." = ".print_r($right_not_left_plus_one,true)."</pre>";
//echo "<pre>project_cases_left ".count($project_cases_left)." = ".print_r($project_cases_left,true)."</pre>";
//echo "<pre>case_sessions_left ".count($case_sessions_left)." = ".print_r($case_sessions_left,true)."</pre>";;
//echo "<pre>case_sessions_right ".count($case_sessions_right)." = ".print_r($case_sessions_right,true)."</pre>";;
ksort($project_cases_uid);
ksort($case_sessions_uid);
//echo "<pre>project_cases_uid ".count($project_cases_uid)." = ".print_r($project_cases_uid,true)."</pre>";
//echo "<pre>case_sessions_uid ".count($case_sessions_uid)." = ".print_r($case_sessions_uid,true)."</pre>";die();
?><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style>
table { border-collapse: collapse; }
th, tr, td { border: 1px solid black; text-align: right; }
th, tr, td { font-family: Arial; font-size: 14px; }
</style>
</head>
<body>
<?php
ksort($project_cases_left, SORT_NUMERIC);
foreach ($project_cases_left as $projectid => $project_case) {
$i = 0;
$maxi = 100000;
$break = 0;
$dbquery_all = '';
echo "<table>\n";
echo "\t<tr>\n";
echo "\t\t<th>title</th>\n";
echo "\t\t<th>projid</th>\n";
echo "\t\t<th>caseid</th>\n";
echo "\t\t<th>sessid</th>\n";
//echo "\t\t<th>puid</th>\n";
//echo "\t\t<th>suid</th>\n";
echo "\t\t<th>db_left</th>\n";
echo "\t\t<th>db_right</th>\n";
echo "\t\t<th>sb_left</th>\n";
echo "\t\t<th>sb_right</th>\n";
if ($i < $maxi) echo "\t\t<th style='text-align:left'>sql</th>\n";
echo "\t</tr>\n";
//echo "<pre>{$projectid} project_case = ".print_r($project_case,true)."</pre>";
$left_val = 1;
$right_val = 2;
$project_left_val = $left_val;
$project_curr_left = isset($project_left[$projectid]) ? $project_left[$projectid] : '';
$project_curr_right = isset($project_right[$projectid]) ? $project_right[$projectid] : '';
echo "\t<tr>\n";
echo "\t\t<td>project</td>\n";
echo "\t\t<td>{$projectid}</td>\n";
echo "\t\t<td></td>\n";
echo "\t\t<td></td>\n";
//echo "\t\t<td></td>\n";
//echo "\t\t<td></td>\n";
echo "\t\t<td>{$project_curr_left}</td>\n";
echo "\t\t<td>{$project_curr_right}</td>\n";
echo "\t\t<td>{$project_left_val}</td>\n";
echo "\t\t<td>...</td>\n";
$project_revision = \Drupal::entityTypeManager()->getStorage('group')->getLatestRevisionId($projectid);
$dbquery = "UPDATE drupal_group_revision__subgroup_left SET subgroup_left_value = '{$project_left_val}' WHERE entity_id = '{$projectid}'";
$dbquery_all .= $dbquery.";<br />\n";
if ($execute) $res1 = $connection->query($dbquery);
$dbquery = "UPDATE drupal_group__subgroup_left SET subgroup_left_value = '{$project_left_val}' WHERE entity_id = '{$projectid}'";
$dbquery_all .= $dbquery.";<br />\n";
if ($execute) $res2 = $connection->query($dbquery);
$dbquery_all = str_replace('drupal_','',$dbquery_all);
if ($i < $maxi) echo "\t\t<td style='text-align:left'>{$dbquery_all}</td>\n";
$dbquery_all = '';
echo "\t</tr>\n";
ksort($project_case, SORT_NUMERIC);
foreach ($project_case as $caseid => $case_curr_left) {
// new case: left = left val += 1
$case_left_val = $left_val + 1;
$case_uid = $project_cases_uid[$projectid][$caseid];
$case_curr_right = $project_cases_right[$projectid][$caseid];
echo "\t<tr>\n";
echo "\t\t<td>case</td>\n";
echo "\t\t<td>{$projectid}</td>\n";
echo "\t\t<td>{$caseid}</td>\n";
echo "\t\t<td></td>\n";
//echo "\t\t<td>{$case_uid}</td>\n";
//echo "\t\t<td></td>\n";
echo "\t\t<td>{$case_curr_left}</td>\n";
echo "\t\t<td>{$case_curr_right}</td>\n";
echo "\t\t<td>{$case_left_val}</td>\n";
echo "\t\t<td>...</td>\n";
$case_revision = \Drupal::entityTypeManager()->getStorage('group')->getLatestRevisionId($caseid);
$dbquery = "UPDATE drupal_group_revision__subgroup_left SET subgroup_left_value = '{$case_left_val}' WHERE entity_id = '{$caseid}'";
if ($execute) $res3 = $connection->query($dbquery);
if ($case_curr_left != $case_left_val || $revision_left[$caseid] != $case_curr_left) {
echo "<pre>case {$caseid} left {$case_curr_left} != {$case_left_val} || revision_left ".$revision_left[$caseid]." != {$case_curr_left}</pre>";
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery = "UPDATE drupal_group__subgroup_left SET subgroup_left_value = '{$case_left_val}' WHERE entity_id = '{$caseid}'";
if ($execute) $res4 = $connection->query($dbquery);
if ($case_curr_left != $case_left_val) {
echo "<pre>case {$caseid} left {$case_curr_left} != {$case_left_val}</pre>";
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery_all = str_replace('drupal_','',$dbquery_all);
if ($i < $maxi) echo "\t\t<td style='text-align:left'>{$dbquery_all}</td>\n";
$dbquery_all = '';
echo "\t</tr>\n";
if (isset($case_sessions_left[$caseid]) && is_array($case_sessions_left[$caseid])) {
ksort($case_sessions_left[$caseid], SORT_NUMERIC);
foreach ($case_sessions_left[$caseid] as $sessionid => $curr_session_left) {
// new session in case: leftval += 2, right_val = left_val + 1
$left_val += 2;
$right_val = $left_val + 1;
$sess_uid = $case_sessions_uid[$caseid][$sessionid];
$curr_session_right = $case_sessions_right[$caseid][$sessionid];
echo "\t<tr>\n";
echo "\t\t<td>sess</td>\n";
echo "\t\t<td>{$projectid}</td>\n";
echo "\t\t<td>{$caseid}</td>\n";
echo "\t\t<td>{$sessionid}</td>\n";
//echo "\t\t<td>{$case_uid}</td>\n";
//echo "\t\t<td>{$sess_uid}</td>\n";
echo "\t\t<td>{$curr_session_left}</td>\n";
echo "\t\t<td>{$curr_session_right}</td>\n";
echo "\t\t<td>{$left_val}</td>\n";
echo "\t\t<td>{$right_val}</td>\n";
$session_revision = \Drupal::entityTypeManager()->getStorage('group')->getLatestRevisionId($sessionid);
$dbquery = "UPDATE drupal_group_revision__subgroup_left SET subgroup_left_value = '{$left_val}' WHERE entity_id = '{$sessionid}'";
if ($execute) $res1 = $connection->query($dbquery);
if ($left_val != $curr_session_left || $revision_left[$sessionid] != $curr_session_left) {
echo "<pre>sess {$sessionid} left {$left_val} != {$curr_session_left} || revision_left ".$revision_left[$sessionid]." != {$curr_session_left} || {$sess_uid} != {$case_uid}</pre>";
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery = "UPDATE drupal_group__subgroup_left SET subgroup_left_value = '{$left_val}' WHERE entity_id = '{$sessionid}'";
if ($execute) $res2 = $connection->query($dbquery);
if ($left_val != $curr_session_left) {
echo "<pre>sess {$sessionid} left {$left_val} != {$curr_session_left} || {$sess_uid} != {$case_uid}</pre>";
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery = "UPDATE drupal_group_revision__subgroup_right SET subgroup_right_value = '{$right_val}' WHERE entity_id = '{$sessionid}'";
if ($execute) $res3 = $connection->query($dbquery);
if ($right_val != $curr_session_right || $revision_right[$sessionid] != $curr_session_right) {
echo "<pre>sess {$sessionid} right {$right_val} != {$curr_session_right} || revision_right ".$revision_right[$sessionid]." != {$curr_session_right} || {$sess_uid} != {$case_uid}</pre>";
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery = "UPDATE drupal_group__subgroup_right SET subgroup_right_value = '{$right_val}' WHERE entity_id = '{$sessionid}'";
if ($right_val != $curr_session_right) {
echo "<pre>sess {$sessionid} right {$right_val} != {$curr_session_right} || {$sess_uid} != {$case_uid}</pre>";
if ($execute) {
$res4 = $connection->query($dbquery);
if (!$execute_all_in_one) $execute = 0;
if (!$execute_all_in_one) $break = 1;
} else {
$break = 1;
}
if ($right_val != $curr_session_right) $dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery_all = str_replace('drupal_','',$dbquery_all);
if ($i < $maxi) echo "\t\t<td style='text-align:left'>{$dbquery_all}</td>\n";
$dbquery_all = '';
//echo "<pre>".print_r($case_sessions_left[$caseid],true)."</pre>";
//echo "<pre>".print_r($case_sessions_right[$caseid],true)."</pre>";
echo "\t</tr>\n";
}
}
$case_right_val = $right_val + 1;
echo "\t<tr>\n";
echo "\t\t<td>case</td>\n";
echo "\t\t<td>{$projectid}</td>\n";
echo "\t\t<td>{$caseid}</td>\n";
echo "\t\t<td></td>\n";
//echo "\t\t<td>{$case_uid}</td>\n";
//echo "\t\t<td></td>\n";
echo "\t\t<td>{$case_curr_left}</td>\n";
echo "\t\t<td>{$case_curr_right}</td>\n";
echo "\t\t<td>{$case_left_val}</td>\n";
echo "\t\t<td>{$case_right_val}</td>\n";
$dbquery = "UPDATE drupal_group_revision__subgroup_right SET subgroup_right_value = '{$case_right_val}' WHERE entity_id = '{$caseid}'";
if ($execute) $res3 = $connection->query($dbquery);
if ($case_curr_right != $case_right_val || $revision_right[$caseid] != $case_curr_right) {
echo "<pre>case {$caseid} right {$case_curr_right} != {$case_right_val} || revision_right ".$revision_right[$caseid]." != {$case_curr_right}</pre>";
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery = "UPDATE drupal_group__subgroup_right SET subgroup_right_value = '{$case_right_val}' WHERE entity_id = '{$caseid}'";
if ($case_curr_right != $case_right_val) {
echo "<pre>case {$caseid} right {$case_curr_right} != {$case_right_val}</pre>";
if ($execute) {
$res4 = $connection->query($dbquery);
if (!$execute_all_in_one) $execute = 0;
if (!$execute_all_in_one) $break = 1;
} else {
$break = 1;
}
$dbquery = "<b>".$dbquery."</b>";
}
$dbquery_all .= $dbquery.";<br />\n";
$dbquery_all = str_replace('drupal_','',$dbquery_all);
if ($i < $maxi) echo "\t\t<td style='text-align:left'>{$dbquery_all}</td>\n";
$dbquery_all = '';
echo "\t</tr>\n";
// after sessions in case: case right val = last session right val + 1
$left_val += 2;
$right_val += 2;
$i++;
//if ($break || $i > $maxi) break;
}
$project_right_val = $case_right_val + 1;
echo "\t<tr>\n";
echo "\t\t<td>project</td>\n";
echo "\t\t<td>{$projectid}</td>\n";
echo "\t\t<td></td>\n";
echo "\t\t<td></td>\n";
//echo "\t\t<td></td>\n";
//echo "\t\t<td></td>\n";
echo "\t\t<td>{$project_curr_left}</td>\n";
echo "\t\t<td>{$project_curr_right}</td>\n";
echo "\t\t<td>{$project_left_val}</td>\n";
echo "\t\t<td>{$project_right_val}</td>\n";
$dbquery = "UPDATE drupal_group_revision__subgroup_right SET subgroup_right_value = '{$project_right_val}' WHERE entity_id = '{$projectid}'";
if ($execute) $res3 = $connection->query($dbquery);
if ($project_curr_right && ($project_right_val != $project_curr_right || $revision_right[$projectid] != $project_curr_right)) $dbquery = "<b>".$dbquery."</b>";
$dbquery_all .= $dbquery.";<br />\n";
$dbquery = "UPDATE drupal_group__subgroup_right SET subgroup_right_value = '{$project_right_val}' WHERE entity_id = '{$projectid}'";
if ($execute) $res4 = $connection->query($dbquery);
if ($project_curr_right && $project_right_val != $project_curr_right) $dbquery = "<b>".$dbquery."</b>";
$dbquery_all .= $dbquery.";<br />\n";
$dbquery_all = str_replace('drupal_','',$dbquery_all);
if ($i < $maxi) echo "\t\t<td style='text-align:left'>{$dbquery_all}</td>\n";
$dbquery_all = '';
echo "\t</tr>\n";
echo "\t<tr>\n";
echo "\t\t<th>title</th>\n";
echo "\t\t<th>projid</th>\n";
echo "\t\t<th>caseid</th>\n";
echo "\t\t<th>sessid</th>\n";
//echo "\t\t<th>puid</th>\n";
//echo "\t\t<th>suid</th>\n";
echo "\t\t<th>db_left</th>\n";
echo "\t\t<th>db_right</th>\n";
echo "\t\t<th>sb_left</th>\n";
echo "\t\t<th>sb_right</th>\n";
if ($i < $maxi) echo "\t\t<th style='text-align:left'>sql</th>\n";
echo "\t</tr>\n";
echo "</table><br />\n";
if ($break || $i > $maxi) break;
}
$newurl = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?todo='.count($duplicates).(isset($_REQUEST['only_left']) ? '&only_left=1' : '');
if (isset($_REQUEST['manual'])) $newurl .= "&manual=1";
?>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment