Created
June 2, 2023 05:32
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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