Fix upgrade error when loading too many rows.

1.10.x
Julio 10 years ago
parent 11fda5a9bf
commit dcb1fdce13
  1. 125
      main/install/install.lib.php

@ -2198,70 +2198,83 @@ function fixIds(EntityManager $em)
if ($debug) {
error_log('update c_item_property');
}
$sql = "SELECT * FROM c_item_property";
$result = $connection->fetchAll($sql);
$counter = 0;
error_log("Items to process: ".count($result));
foreach ($result as $item) {
$courseId = $item['c_id'];
$sessionId = intval($item['session_id']);
$groupId = intval($item['to_group_id']);
$iid = $item['iid'];
$ref = $item['ref'];
$sql = "SELECT * FROM course";
$courseList = $connection->fetchAll($sql);
if ($debug) {
error_log('Getting course list');
}
// Fix group id
foreach ($courseList as $courseData) {
$courseId = $courseData['id'];
if ($debug) {
error_log('Updating course: '.$courseData['code']);
}
if (!empty($groupId)) {
$sql = "SELECT * FROM c_group_info
WHERE c_id = $courseId AND id = $groupId";
$data = $connection->fetchAssoc($sql);
if (!empty($data)) {
$newGroupId = $data['iid'];
$sql = "UPDATE c_item_property SET to_group_id = $newGroupId
WHERE iid = $iid";
$connection->executeQuery($sql);
} else {
// The group does not exists clean this record
$sql = "DELETE FROM c_item_property WHERE iid = $iid";
$connection->executeQuery($sql);
$sql = "SELECT * FROM c_item_property WHERE c_id = $courseId";
$result = $connection->fetchAll($sql);
$counter = 0;
error_log("Items to process: ".count($result));
foreach ($result as $item) {
//$courseId = $item['c_id'];
$sessionId = intval($item['session_id']);
$groupId = intval($item['to_group_id']);
$iid = $item['iid'];
$ref = $item['ref'];
// Fix group id
if (!empty($groupId)) {
$sql = "SELECT * FROM c_group_info
WHERE c_id = $courseId AND id = $groupId";
$data = $connection->fetchAssoc($sql);
if (!empty($data)) {
$newGroupId = $data['iid'];
$sql = "UPDATE c_item_property SET to_group_id = $newGroupId
WHERE iid = $iid";
$connection->executeQuery($sql);
} else {
// The group does not exists clean this record
$sql = "DELETE FROM c_item_property WHERE iid = $iid";
$connection->executeQuery($sql);
}
}
}
$sql = '';
$newId = '';
switch ($item['tool']) {
case TOOL_LINK:
$sql = "SELECT * FROM c_link WHERE c_id = $courseId AND id = $ref ";
break;
case TOOL_STUDENTPUBLICATION:
$sql = "SELECT * FROM c_student_publication WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_QUIZ:
$sql = "SELECT * FROM c_quiz WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_DOCUMENT:
$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_FORUM:
$sql = "SELECT * FROM c_forum_forum WHERE c_id = $courseId AND id = $ref";
break;
case 'thread':
$sql = "SELECT * FROM c_forum_thread WHERE c_id = $courseId AND id = $ref";
break;
}
$sql = '';
$newId = '';
switch ($item['tool']) {
case TOOL_LINK:
$sql = "SELECT * FROM c_link WHERE c_id = $courseId AND id = $ref ";
break;
case TOOL_STUDENTPUBLICATION:
$sql = "SELECT * FROM c_student_publication WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_QUIZ:
$sql = "SELECT * FROM c_quiz WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_DOCUMENT:
$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_FORUM:
$sql = "SELECT * FROM c_forum_forum WHERE c_id = $courseId AND id = $ref";
break;
case 'thread':
$sql = "SELECT * FROM c_forum_thread WHERE c_id = $courseId AND id = $ref";
break;
}
if (!empty($sql) && !empty($newId)) {
$data = $connection->fetchAssoc($sql);
if (isset($data['iid'])) {
$newId = $data['iid'];
if (!empty($sql) && !empty($newId)) {
$data = $connection->fetchAssoc($sql);
if (isset($data['iid'])) {
$newId = $data['iid'];
}
$sql = "UPDATE c_item_property SET ref = $newId WHERE iid = $iid";
error_log($sql);
$connection->executeQuery($sql);
}
$sql = "UPDATE c_item_property SET ref = $newId WHERE iid = $iid";
error_log($sql);
$connection->executeQuery($sql);
error_log("Process item #$counter");
$counter++;
}
error_log("Process item #$counter");
$counter++;
}
if ($debug) {

Loading…
Cancel
Save