commit
747ed877c2
@ -0,0 +1,32 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
use Doctrine\DBAL\Schema\Schema; |
||||
|
||||
final class Version20240129225700 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription() : string |
||||
{ |
||||
return 'Add image_id field to templates table to link with asset table'; |
||||
} |
||||
|
||||
public function up(Schema $schema) : void |
||||
{ |
||||
// this up() migration is auto-generated, please modify it to your needs |
||||
$this->addSql('ALTER TABLE templates ADD image_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\''); |
||||
$this->addSql('ALTER TABLE templates ADD CONSTRAINT FK_6F287D8E3DA5256D FOREIGN KEY (image_id) REFERENCES asset (id) ON DELETE SET NULL'); |
||||
$this->addSql('CREATE INDEX IDX_6F287D8E3DA5256D ON templates (image_id)'); |
||||
} |
||||
|
||||
public function down(Schema $schema) : void |
||||
{ |
||||
// this down() migration is auto-generated, please modify it to your needs |
||||
$this->addSql('ALTER TABLE templates DROP FOREIGN KEY FK_6F287D8E3DA5256D'); |
||||
$this->addSql('DROP INDEX IDX_6F287D8E3DA5256D ON templates'); |
||||
$this->addSql('ALTER TABLE templates DROP image_id'); |
||||
} |
||||
} |
||||
@ -0,0 +1,76 @@ |
||||
<?php |
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Chamilo\CoreBundle\Entity\Asset; |
||||
use Chamilo\CoreBundle\Entity\Templates; |
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
use Chamilo\Kernel; |
||||
use Doctrine\DBAL\Schema\Schema; |
||||
use Symfony\Component\HttpFoundation\File\UploadedFile; |
||||
|
||||
class Version20240130161800 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription(): string |
||||
{ |
||||
return 'Migrate template images to Asset entities.'; |
||||
} |
||||
|
||||
public function up(Schema $schema): void |
||||
{ |
||||
$container = $this->getContainer(); |
||||
|
||||
/** @var Kernel $kernel */ |
||||
$kernel = $container->get('kernel'); |
||||
$rootPath = $kernel->getProjectDir(); |
||||
$doctrine = $container->get('doctrine'); |
||||
|
||||
$em = $doctrine->getManager(); |
||||
$connection = $em->getConnection(); |
||||
|
||||
$sql = "SELECT id, image, c_id FROM templates WHERE image IS NOT NULL"; |
||||
$stmt = $connection->prepare($sql); |
||||
$result = $stmt->executeQuery(); |
||||
|
||||
while ($row = $result->fetchAssociative()) { |
||||
$imagePath = $row['image']; |
||||
$templateId = $row['id']; |
||||
$courseId = $row['c_id']; |
||||
|
||||
$courseDirectorySql = "SELECT directory FROM course WHERE id = :courseId"; |
||||
$courseStmt = $connection->prepare($courseDirectorySql); |
||||
$courseResult = $courseStmt->executeQuery(['courseId' => $courseId]); |
||||
|
||||
$courseRow = $courseResult->fetchAssociative(); |
||||
|
||||
if ($courseRow) { |
||||
$directory = $courseRow['directory']; |
||||
$thumbPath = $rootPath.'/app/courses/'.$directory.'/upload/template_thumbnails/'.$imagePath; |
||||
|
||||
if (file_exists($thumbPath)) { |
||||
$mimeType = mime_content_type($thumbPath); |
||||
$fileName = basename($thumbPath); |
||||
$file = new UploadedFile($thumbPath, $fileName, $mimeType, null, true); |
||||
|
||||
$asset = new Asset(); |
||||
$asset->setCategory(Asset::TEMPLATE); |
||||
$asset->setTitle($fileName); |
||||
$asset->setFile($file); |
||||
|
||||
$em->persist($asset); |
||||
$em->flush(); |
||||
|
||||
$template = $em->getRepository(Templates::class)->find($templateId); |
||||
if ($template) { |
||||
$template->setImage($asset); |
||||
$em->persist($template); |
||||
$em->flush(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue