Merge pull request #5061 from christianbeeznest/GH-displayorder
Migration: Change tools display_order by resource_node order fieldpull/5070/head
commit
026fc0ac09
@ -0,0 +1,81 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||||
|
|
||||||
|
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||||
|
use Chamilo\CourseBundle\Repository\CAnnouncementRepository; |
||||||
|
use Chamilo\CourseBundle\Repository\CGlossaryRepository; |
||||||
|
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository; |
||||||
|
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository; |
||||||
|
use Chamilo\CourseBundle\Repository\CLinkRepository; |
||||||
|
use Doctrine\DBAL\Connection; |
||||||
|
use Doctrine\DBAL\Schema\Schema; |
||||||
|
|
||||||
|
final class Version20240112191200 extends AbstractMigrationChamilo |
||||||
|
{ |
||||||
|
public function getDescription(): string |
||||||
|
{ |
||||||
|
return 'Migrate tool display_order as resource order'; |
||||||
|
} |
||||||
|
|
||||||
|
public function up(Schema $schema): void |
||||||
|
{ |
||||||
|
$container = $this->getContainer(); |
||||||
|
$doctrine = $container->get('doctrine'); |
||||||
|
$em = $doctrine->getManager(); |
||||||
|
|
||||||
|
/** @var Connection $connection */ |
||||||
|
$connection = $em->getConnection(); |
||||||
|
|
||||||
|
$linkCategoryRepo = $container->get(CLinkCategoryRepository::class); |
||||||
|
$linkRepo = $container->get(CLinkRepository::class); |
||||||
|
$groupCategoryRepo = $container->get(CGroupCategoryRepository::class); |
||||||
|
$glossaryRepo = $container->get(CGlossaryRepository::class); |
||||||
|
$announcementRepo = $container->get(CAnnouncementRepository::class); |
||||||
|
|
||||||
|
$this->updateResourceNodeDisplayOrder($linkCategoryRepo, 'c_link_category', $em); |
||||||
|
$this->updateResourceNodeDisplayOrder($linkRepo, 'c_link', $em); |
||||||
|
$this->updateResourceNodeDisplayOrder($groupCategoryRepo, 'c_group_category', $em); |
||||||
|
$this->updateResourceNodeDisplayOrder($glossaryRepo, 'c_glossary', $em); |
||||||
|
$this->updateResourceNodeDisplayOrder($announcementRepo, 'c_announcement', $em); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private function updateResourceNodeDisplayOrder($resourceRepo, $tableName, $em) { |
||||||
|
|
||||||
|
/** @var Connection $connection */ |
||||||
|
$connection = $em->getConnection(); |
||||||
|
|
||||||
|
try { |
||||||
|
$testResult = $connection->executeQuery("SELECT display_order FROM $tableName LIMIT 1"); |
||||||
|
$columnExists = true; |
||||||
|
} catch (\Exception $e) { |
||||||
|
$columnExists = false; |
||||||
|
} |
||||||
|
|
||||||
|
if ($columnExists) { |
||||||
|
$sql = "SELECT * FROM $tableName ORDER BY display_order"; |
||||||
|
$result = $connection->executeQuery($sql); |
||||||
|
$resources = $result->fetchAllAssociative(); |
||||||
|
|
||||||
|
foreach ($resources as $resourceData) { |
||||||
|
$resourceId = (int) $resourceData['iid']; |
||||||
|
$resourcePosition = (int) $resourceData['display_order']; |
||||||
|
|
||||||
|
$resource = $resourceRepo->find($resourceId); |
||||||
|
if ($resource && $resource->hasResourceNode()) { |
||||||
|
$resourceNode = $resource->getResourceNode(); |
||||||
|
if ($resourceNode) { |
||||||
|
$resourceNode->setDisplayOrder($resourcePosition); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$em->flush(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue