Migrations: Fix lp item

pull/3890/head
Julio Montoya 4 years ago
parent 05d206b4a3
commit 64898fedd6
  1. 1
      public/main/install/install.lib.php
  2. 5
      src/CoreBundle/Migrations/Schema/V200/Version20170625122900.php
  3. 38
      src/CoreBundle/Migrations/Schema/V200/Version20201216122012.php
  4. 2
      src/CourseBundle/Repository/CLpItemRepository.php

@ -2142,7 +2142,6 @@ function migrate(EntityManager $manager)
$planCalculator = $dependency->getMigrationPlanCalculator();
$migrations = $planCalculator->getMigrations();
$lastVersion = $migrations->getLast();
//var_dump($lastVersion->getVersion());
$plan = $dependency->getMigrationPlanCalculator()->getPlanUntilVersion($lastVersion->getVersion());

@ -43,6 +43,11 @@ class Version20170625122900 extends AbstractMigrationChamilo
//$this->addSql('ALTER TABLE c_document DROP id, DROP c_id, DROP path, DROP size, DROP session_id');
}
$this->addSql('ALTER TABLE c_document CHANGE c_id c_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE c_document CHANGE path path VARCHAR(255) DEFAULT NULL');
$this->addSql('ALTER TABLE c_document CHANGE size size INT DEFAULT NULL');
$this->addSql('ALTER TABLE c_document CHANGE session_id session_id INT DEFAULT NULL');
if (false === $table->hasIndex('idx_cdoc_type')) {
$this->addSql('CREATE INDEX idx_cdoc_type ON c_document (filetype)');
}

@ -16,6 +16,7 @@ use Chamilo\CourseBundle\Entity\CLpCategory;
use Chamilo\CourseBundle\Entity\CLpItem;
use Chamilo\CourseBundle\Repository\CGroupRepository;
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
use Chamilo\CourseBundle\Repository\CLpItemRepository;
use Chamilo\CourseBundle\Repository\CLpRepository;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Schema\Schema;
@ -42,9 +43,9 @@ final class Version20201216122012 extends AbstractMigrationChamilo
$sessionRepo = $container->get(SessionRepository::class);
$groupRepo = $container->get(CGroupRepository::class);
$userRepo = $container->get(UserRepository::class);
$lpItemRepo = $container->get(CLpItemRepository::class);
$lpItemRepo = $container->get(CLpItem::class);
$batchSize = self::BATCH_SIZE;
$admin = $this->getAdmin();
$q = $em->createQuery('SELECT c FROM Chamilo\CoreBundle\Entity\Course c');
@ -86,13 +87,20 @@ final class Version20201216122012 extends AbstractMigrationChamilo
$em->flush();
$em->clear();
// AND iid = 242 with error
// c_lp.
$sql = "SELECT * FROM c_lp WHERE c_id = {$courseId}
ORDER BY iid";
$result = $connection->executeQuery($sql);
$lps = $result->fetchAllAssociative();
$counter = 1;
$course = $courseRepo->find($courseId);
$admin = $this->getAdmin();
foreach ($lps as $lp) {
$lpId = $lp['iid'];
$lpId = (int) $lp['iid'];
error_log("LP #$lpId");
/** @var CLp $resource */
$resource = $lpRepo->find($lpId);
@ -100,8 +108,6 @@ final class Version20201216122012 extends AbstractMigrationChamilo
continue;
}
$course = $courseRepo->find($courseId);
$result = $this->fixItemProperty(
'learnpath',
$lpRepo,
@ -116,11 +122,11 @@ final class Version20201216122012 extends AbstractMigrationChamilo
}
$em->persist($resource);
$em->flush();
//$em->flush();
$itemRoot = $lpItemRepo->getItemRoot($lpId);
$rootItem = $lpItemRepo->getRootItem($lpId);
if (!empty($itemRoot)) {
if (null === $rootItem) {
continue;
}
@ -131,23 +137,29 @@ final class Version20201216122012 extends AbstractMigrationChamilo
->setLp($resource)
->setItemType('root');
$em->persist($lpItem);
$em->flush();
// Migrate c_lp_item
$sql = "SELECT * FROM c_lp_item WHERE lp_id = $lpId
$sql = "SELECT * FROM c_lp_item WHERE lp_id = $lpId AND path <> 'root'
ORDER BY display_order";
$resultItems = $connection->executeQuery($sql);
$lpItems = $resultItems->fetchAllAssociative();
$orderList = [];
foreach ($lpItems as $item) {
var_dump($item);
$object = new \stdClass();
$object->id = $item['iid'];
$object->parent_id = $item['parentId'];
$object->parent_id = (int) $item['parent_item_id'];
$orderList[] = $object;
}
\learnpath::sortItemByOrderList($lpId, $orderList);
\learnpath::sortItemByOrderList($lpItem, $orderList, false);
if (0 === $counter % $batchSize) {
$em->flush();
$em->clear(); // Detaches all objects from Doctrine!
}
$counter++;
$em->flush();
}
}
}

@ -24,7 +24,7 @@ final class CLpItemRepository extends ServiceEntityRepository
$this->initializeTreeRepository($this->getEntityManager(), $this->getClassMetadata());
}
public function getItemRoot($lpId): ?CLpItem
public function getRootItem($lpId): ?CLpItem
{
return $this->findOneBy([
'path' => 'root',

Loading…
Cancel
Save