You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
|
|
|
|
use Chamilo\CoreBundle\Entity\TicketMessageAttachment;
|
|
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
|
|
use Chamilo\CoreBundle\Repository\Node\TicketMessageAttachmentRepository;
|
|
use Chamilo\CoreBundle\Repository\Node\UserRepository;
|
|
use Chamilo\Kernel;
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
|
|
class Version20211005154000 extends AbstractMigrationChamilo
|
|
{
|
|
public function getDescription(): string
|
|
{
|
|
return 'Migrate ticket attachment files';
|
|
}
|
|
|
|
public function up(Schema $schema): void
|
|
{
|
|
/** @var Kernel $kernel */
|
|
$kernel = $this->container->get('kernel');
|
|
$rootPath = $kernel->getProjectDir();
|
|
|
|
$attachmentRepo = $this->container->get(TicketMessageAttachmentRepository::class);
|
|
$userRepo = $this->container->get(UserRepository::class);
|
|
|
|
$sql = 'SELECT * FROM ticket_message_attachments ORDER BY id';
|
|
|
|
$result = $this->connection->executeQuery($sql);
|
|
$items = $result->fetchAllAssociative();
|
|
|
|
foreach ($items as $item) {
|
|
/** @var TicketMessageAttachment $messageAttachment */
|
|
$messageAttachment = $attachmentRepo->find($item['id']);
|
|
|
|
if ($messageAttachment->hasResourceNode()) {
|
|
continue;
|
|
}
|
|
|
|
$ticket = $messageAttachment->getTicket();
|
|
$user = $userRepo->find($item['sys_insert_user_id']);
|
|
|
|
if (null === $user) {
|
|
continue;
|
|
}
|
|
|
|
$attachmentRepo->addResourceNode($messageAttachment, $user, $user);
|
|
|
|
if (null !== $ticket->getAssignedLastUser()) {
|
|
$messageAttachment->addUserLink($ticket->getAssignedLastUser());
|
|
}
|
|
|
|
$attachmentRepo->create($messageAttachment);
|
|
|
|
$filePath = $this->getUpdateRootPath().'/app/upload/ticket_attachment/'.$item['path'];
|
|
error_log('MIGRATIONS :: $filePath -- '.$filePath.' ...');
|
|
$this->addLegacyFileToResource($filePath, $attachmentRepo, $messageAttachment, $item['id']);
|
|
|
|
$this->entityManager->persist($messageAttachment);
|
|
$this->entityManager->flush();
|
|
}
|
|
}
|
|
}
|
|
|