Internal: Identified and handled obsolete tables, added LTI and blog entities, created necessary migrations - refs BT#20968
parent
1e7fc158bf
commit
a404f43443
@ -0,0 +1,118 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Entity; |
||||
|
||||
use Chamilo\CoreBundle\Traits\UserTrait; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
/** |
||||
* Block entity. |
||||
*/ |
||||
#[ORM\Table(name: 'block')] |
||||
#[ORM\Entity] |
||||
class Block |
||||
{ |
||||
use UserTrait; |
||||
|
||||
#[ORM\Column(name: 'id', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue(strategy: 'IDENTITY')] |
||||
protected ?int $id = null; |
||||
|
||||
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: true)] |
||||
protected ?string $title = null; |
||||
|
||||
#[ORM\Column(name: 'description', type: 'text', nullable: true)] |
||||
protected ?string $description = null; |
||||
|
||||
#[ORM\Column(name: 'path', type: 'string', length: 190, nullable: false)] |
||||
protected string $path; |
||||
|
||||
#[ORM\Column(name: 'controller', type: 'string', length: 100, nullable: false)] |
||||
protected string $controller; |
||||
|
||||
#[ORM\Column(name: 'active', type: 'boolean', nullable: false)] |
||||
protected bool $active; |
||||
|
||||
#[ORM\OneToOne(inversedBy: 'block', targetEntity: User::class)] |
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] |
||||
protected User $user; |
||||
|
||||
/** |
||||
* Get id. |
||||
*/ |
||||
public function getId(): ?int |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
public function getTitle(): ?string |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
public function setTitle(?string $title): self |
||||
{ |
||||
$this->title = $title; |
||||
return $this; |
||||
} |
||||
|
||||
public function getDescription(): ?string |
||||
{ |
||||
return $this->description; |
||||
} |
||||
|
||||
public function setDescription(?string $description): self |
||||
{ |
||||
$this->description = $description; |
||||
return $this; |
||||
} |
||||
|
||||
public function getPath(): string |
||||
{ |
||||
return $this->path; |
||||
} |
||||
|
||||
public function setPath(string $path): self |
||||
{ |
||||
$this->path = $path; |
||||
return $this; |
||||
} |
||||
|
||||
public function getController(): string |
||||
{ |
||||
return $this->controller; |
||||
} |
||||
|
||||
public function setController(string $controller): self |
||||
{ |
||||
$this->controller = $controller; |
||||
return $this; |
||||
} |
||||
|
||||
public function isActive(): bool |
||||
{ |
||||
return $this->active; |
||||
} |
||||
|
||||
public function setActive(bool $active): self |
||||
{ |
||||
$this->active = $active; |
||||
return $this; |
||||
} |
||||
|
||||
public function getUser(): User |
||||
{ |
||||
return $this->user; |
||||
} |
||||
|
||||
public function setUser(User $user): self |
||||
{ |
||||
$this->user = $user; |
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,55 @@ |
||||
<?php |
||||
declare(strict_types=1); |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Doctrine\DBAL\Schema\Schema; |
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
|
||||
final class Version20240811221500 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription(): string |
||||
{ |
||||
return 'Migration to drop unnecessary foreign keys and adjust table structure for data consistency.'; |
||||
} |
||||
|
||||
public function up(Schema $schema): void |
||||
{ |
||||
// Disable foreign key checks to prevent issues during migration |
||||
$this->addSql('SET FOREIGN_KEY_CHECKS = 0;'); |
||||
|
||||
// Drop foreign keys from the specified tables |
||||
$this->addSql('ALTER TABLE page__snapshot DROP FOREIGN KEY IF EXISTS FK_3963EF9AC4663E4;'); |
||||
$this->addSql('ALTER TABLE page__snapshot DROP FOREIGN KEY IF EXISTS FK_3963EF9AF6BD1646;'); |
||||
$this->addSql('ALTER TABLE classification__collection DROP FOREIGN KEY IF EXISTS FK_A406B56AE25D857E;'); |
||||
$this->addSql('ALTER TABLE classification__collection DROP FOREIGN KEY IF EXISTS FK_A406B56AEA9FDD75;'); |
||||
$this->addSql('ALTER TABLE faq_question DROP FOREIGN KEY IF EXISTS FK_4A55B05912469DE2;'); |
||||
$this->addSql('ALTER TABLE page__page DROP FOREIGN KEY IF EXISTS FK_2FAE39ED727ACA70;'); |
||||
$this->addSql('ALTER TABLE page__page DROP FOREIGN KEY IF EXISTS FK_2FAE39EDF6BD1646;'); |
||||
$this->addSql('ALTER TABLE page__page DROP FOREIGN KEY IF EXISTS FK_2FAE39ED158E0B66;'); |
||||
$this->addSql('ALTER TABLE page__bloc DROP FOREIGN KEY IF EXISTS FK_FCDC1A97727ACA70;'); |
||||
$this->addSql('ALTER TABLE page__bloc DROP FOREIGN KEY IF EXISTS FK_FCDC1A97C4663E4;'); |
||||
$this->addSql('ALTER TABLE timeline__timeline DROP FOREIGN KEY IF EXISTS FK_FFBC6AD523EDC87;'); |
||||
$this->addSql('ALTER TABLE timeline__timeline DROP FOREIGN KEY IF EXISTS FK_FFBC6AD59D32F035;'); |
||||
$this->addSql('ALTER TABLE plugin_bbb_room DROP FOREIGN KEY IF EXISTS plugin_bbb_room_ibfk_2;'); |
||||
$this->addSql('ALTER TABLE plugin_bbb_room DROP FOREIGN KEY IF EXISTS plugin_bbb_room_ibfk_1;'); |
||||
$this->addSql('ALTER TABLE classification__category DROP FOREIGN KEY IF EXISTS FK_43629B36727ACA70;'); |
||||
$this->addSql('ALTER TABLE classification__category DROP FOREIGN KEY IF EXISTS FK_43629B36E25D857E;'); |
||||
$this->addSql('ALTER TABLE classification__category DROP FOREIGN KEY IF EXISTS FK_43629B36EA9FDD75;'); |
||||
$this->addSql('ALTER TABLE faq_question_translation DROP FOREIGN KEY IF EXISTS FK_C2D1A2C2AC5D3;'); |
||||
$this->addSql('ALTER TABLE classification__tag DROP FOREIGN KEY IF EXISTS FK_CA57A1C7E25D857E;'); |
||||
$this->addSql('ALTER TABLE faq_category_translation DROP FOREIGN KEY IF EXISTS FK_5493B0FC2C2AC5D3;'); |
||||
$this->addSql('ALTER TABLE timeline__action_component DROP FOREIGN KEY IF EXISTS FK_6ACD1B16E2ABAFFF;'); |
||||
$this->addSql('ALTER TABLE timeline__action_component DROP FOREIGN KEY IF EXISTS FK_6ACD1B169D32F035;'); |
||||
$this->addSql('ALTER TABLE media__media DROP FOREIGN KEY IF EXISTS FK_5C6DD74E12469DE2;'); |
||||
$this->addSql('ALTER TABLE contact_category_translation DROP FOREIGN KEY IF EXISTS FK_3E770F302C2AC5D3;'); |
||||
$this->addSql('ALTER TABLE media__gallery_media DROP FOREIGN KEY IF EXISTS FK_80D4C541EA9FDD75;'); |
||||
$this->addSql('ALTER TABLE media__gallery_media DROP FOREIGN KEY IF EXISTS FK_80D4C5414E7AF8F;'); |
||||
$this->addSql('ALTER TABLE c_blog DROP FOREIGN KEY IF EXISTS FK_64B00A121BAD783F;'); |
||||
|
||||
// Re-enable foreign key checks |
||||
$this->addSql('SET FOREIGN_KEY_CHECKS = 1;'); |
||||
} |
||||
|
||||
public function down(Schema $schema): void {} |
||||
} |
@ -0,0 +1,79 @@ |
||||
<?php |
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Doctrine\DBAL\Schema\Schema; |
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
|
||||
final class Version20240811221600 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription(): string |
||||
{ |
||||
return 'Migration to drop unused tables and ensure schema consistency.'; |
||||
} |
||||
|
||||
public function up(Schema $schema): void |
||||
{ |
||||
// Disable foreign key checks to prevent issues during migration |
||||
$this->addSql('SET FOREIGN_KEY_CHECKS = 0;'); |
||||
|
||||
// Drop tables if they exist |
||||
$tablesToDrop = [ |
||||
'page__snapshot', |
||||
'class_item', |
||||
'classification__collection', |
||||
'c_userinfo_def', |
||||
'class_user', |
||||
'faq_question', |
||||
'timeline__component', |
||||
'page__page', |
||||
'c_online_connected', |
||||
'c_permission_task', |
||||
'page__bloc', |
||||
'c_online_link', |
||||
'c_permission_user', |
||||
'c_role_user', |
||||
'c_role', |
||||
'page__site', |
||||
'shared_survey', |
||||
'media__gallery', |
||||
'faq_category', |
||||
'classification__context', |
||||
'timeline__timeline', |
||||
'classification__category', |
||||
'faq_question_translation', |
||||
'c_userinfo_content', |
||||
'contact_category', |
||||
'classification__tag', |
||||
'faq_category_translation', |
||||
'timeline__action_component', |
||||
'media__media', |
||||
'c_role_permissions', |
||||
'shared_survey_question_option', |
||||
'shared_survey_question', |
||||
'timeline__action', |
||||
'contact_category_translation', |
||||
'media__gallery_media', |
||||
'c_item_property', |
||||
'c_survey_group', |
||||
'c_permission_group', |
||||
'c_role_group', |
||||
'track_e_open' |
||||
]; |
||||
|
||||
foreach ($tablesToDrop as $table) { |
||||
// Check if the table exists before attempting to drop it |
||||
if ($schema->hasTable($table)) { |
||||
$this->addSql("DROP TABLE $table;"); |
||||
} |
||||
} |
||||
|
||||
// Re-enable foreign key checks |
||||
$this->addSql('SET FOREIGN_KEY_CHECKS = 1;'); |
||||
} |
||||
|
||||
public function down(Schema $schema): void {} |
||||
} |
@ -0,0 +1,186 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Doctrine\DBAL\Schema\Schema; |
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
|
||||
final class Version20240811221700 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription(): string |
||||
{ |
||||
return 'Migration to create LTI-related tables and establish foreign key relationships, including lti_token, lti_lineitem, lti_platform, and their relations.'; |
||||
} |
||||
|
||||
public function up(Schema $schema): void |
||||
{ |
||||
if (!$schema->hasTable('lti_external_tool')) { |
||||
$this->addSql(' |
||||
CREATE TABLE lti_external_tool ( |
||||
id INT AUTO_INCREMENT NOT NULL, |
||||
resource_node_id INT DEFAULT NULL, |
||||
c_id INT DEFAULT NULL, |
||||
gradebook_eval_id INT DEFAULT NULL, |
||||
parent_id INT DEFAULT NULL, |
||||
title VARCHAR(255) NOT NULL, |
||||
description LONGTEXT DEFAULT NULL, |
||||
launch_url VARCHAR(255) NOT NULL, |
||||
consumer_key VARCHAR(255) DEFAULT NULL, |
||||
shared_secret VARCHAR(255) DEFAULT NULL, |
||||
custom_params LONGTEXT DEFAULT NULL, |
||||
active_deep_linking TINYINT(1) DEFAULT 0 NOT NULL, |
||||
privacy LONGTEXT DEFAULT NULL, |
||||
client_id VARCHAR(255) DEFAULT NULL, |
||||
login_url VARCHAR(255) DEFAULT NULL, |
||||
redirect_url VARCHAR(255) DEFAULT NULL, |
||||
advantage_services LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:json)\', |
||||
version VARCHAR(255) DEFAULT \'lti1p1\' NOT NULL, |
||||
launch_presentation LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\', |
||||
replacement_params LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\', |
||||
UNIQUE INDEX UNIQ_DB0E04E41BAD783F (resource_node_id), |
||||
INDEX IDX_DB0E04E491D79BD3 (c_id), |
||||
INDEX IDX_DB0E04E482F80D8B (gradebook_eval_id), |
||||
INDEX IDX_DB0E04E4727ACA70 (parent_id), |
||||
PRIMARY KEY(id) |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
$this->addSql(' |
||||
CREATE TABLE IF NOT EXISTS lti_token ( |
||||
id INT AUTO_INCREMENT NOT NULL, |
||||
tool_id INT DEFAULT NULL, |
||||
scope LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\', |
||||
hash VARCHAR(255) NOT NULL, |
||||
created_at INT NOT NULL, |
||||
expires_at INT NOT NULL, |
||||
INDEX IDX_EA71C468F7B22CC (tool_id), |
||||
PRIMARY KEY(id) |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
|
||||
$this->addSql(' |
||||
CREATE TABLE IF NOT EXISTS lti_lineitem ( |
||||
id INT AUTO_INCREMENT NOT NULL, |
||||
tool_id INT NOT NULL, |
||||
evaluation INT NOT NULL, |
||||
resource_id VARCHAR(255) DEFAULT NULL, |
||||
tag VARCHAR(255) DEFAULT NULL, |
||||
start_date DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\', |
||||
end_date DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\', |
||||
INDEX IDX_5C76B75D8F7B22CC (tool_id), |
||||
UNIQUE INDEX UNIQ_5C76B75D1323A575 (evaluation), |
||||
PRIMARY KEY(id) |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
|
||||
$this->addSql(' |
||||
CREATE TABLE IF NOT EXISTS lti_platform ( |
||||
id INT AUTO_INCREMENT NOT NULL, |
||||
public_key LONGTEXT NOT NULL, |
||||
kid VARCHAR(255) NOT NULL, |
||||
private_key LONGTEXT NOT NULL, |
||||
PRIMARY KEY(id) |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
|
||||
if ($schema->hasTable('lti_external_tool')) { |
||||
|
||||
if (!$schema->getTable('lti_external_tool')->hasForeignKey('FK_DB0E04E41BAD783F')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_external_tool |
||||
ADD CONSTRAINT FK_DB0E04E41BAD783F FOREIGN KEY (resource_node_id) |
||||
REFERENCES resource_node (id) ON DELETE CASCADE; |
||||
'); |
||||
|
||||
$this->addSql(' |
||||
CREATE UNIQUE INDEX UNIQ_DB0E04E41BAD783F ON lti_external_tool (resource_node_id); |
||||
'); |
||||
} |
||||
|
||||
if (!$schema->getTable('lti_external_tool')->hasForeignKey('FK_DB0E04E491D79BD3')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_external_tool |
||||
ADD CONSTRAINT FK_DB0E04E491D79BD3 FOREIGN KEY (c_id) |
||||
REFERENCES course (id); |
||||
'); |
||||
} |
||||
|
||||
if (!$schema->getTable('lti_external_tool')->hasForeignKey('FK_DB0E04E482F80D8B')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_external_tool |
||||
ADD CONSTRAINT FK_DB0E04E482F80D8B FOREIGN KEY (gradebook_eval_id) |
||||
REFERENCES gradebook_evaluation (id) ON DELETE SET NULL; |
||||
'); |
||||
} |
||||
|
||||
if (!$schema->getTable('lti_external_tool')->hasForeignKey('FK_DB0E04E4727ACA70')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_external_tool |
||||
ADD CONSTRAINT FK_DB0E04E4727ACA70 FOREIGN KEY (parent_id) |
||||
REFERENCES lti_external_tool (id); |
||||
'); |
||||
} |
||||
|
||||
} |
||||
|
||||
if ($schema->hasTable('lti_token') && !$schema->getTable('lti_token')->hasForeignKey('FK_EA71C468F7B22CC')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_token |
||||
ADD CONSTRAINT FK_EA71C468F7B22CC FOREIGN KEY (tool_id) |
||||
REFERENCES lti_external_tool (id) ON DELETE CASCADE; |
||||
'); |
||||
} |
||||
|
||||
if ($schema->hasTable('lti_lineitem') && !$schema->getTable('lti_lineitem')->hasForeignKey('FK_5C76B75D8F7B22CC')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_lineitem |
||||
ADD CONSTRAINT FK_5C76B75D8F7B22CC FOREIGN KEY (tool_id) |
||||
REFERENCES lti_external_tool (id) ON DELETE CASCADE; |
||||
'); |
||||
} |
||||
|
||||
if ($schema->hasTable('lti_lineitem') && !$schema->getTable('lti_lineitem')->hasForeignKey('FK_5C76B75D1323A575')) { |
||||
$this->addSql(' |
||||
ALTER TABLE lti_lineitem |
||||
ADD CONSTRAINT FK_5C76B75D1323A575 FOREIGN KEY (evaluation) |
||||
REFERENCES gradebook_evaluation (id) ON DELETE CASCADE; |
||||
'); |
||||
} |
||||
|
||||
$this->addSql('SET FOREIGN_KEY_CHECKS = 1;'); |
||||
} |
||||
|
||||
public function down(Schema $schema): void |
||||
{ |
||||
$columnsToAdd = [ |
||||
'resource_node_id' => 'INT DEFAULT NULL', |
||||
'c_id' => 'INT DEFAULT NULL', |
||||
'gradebook_eval_id' => 'INT DEFAULT NULL', |
||||
'parent_id' => 'INT DEFAULT NULL', |
||||
'client_id' => 'VARCHAR(255) DEFAULT NULL', |
||||
'login_url' => 'VARCHAR(255) DEFAULT NULL', |
||||
'redirect_url' => 'VARCHAR(255) DEFAULT NULL', |
||||
'advantage_services' => 'LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:json)\'', |
||||
'version' => 'VARCHAR(255) DEFAULT \'lti1p1\' NOT NULL', |
||||
'launch_presentation' => 'LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\'', |
||||
'replacement_params' => 'LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\'', |
||||
]; |
||||
|
||||
$this->addSql('ALTER TABLE lti_token DROP FOREIGN KEY IF EXISTS FK_EA71C468F7B22CC;'); |
||||
$this->addSql('ALTER TABLE lti_lineitem DROP FOREIGN KEY IF EXISTS FK_5C76B75D8F7B22CC;'); |
||||
$this->addSql('ALTER TABLE lti_lineitem DROP FOREIGN KEY IF EXISTS FK_5C76B75D1323A575;'); |
||||
$this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY IF EXISTS FK_DB0E04E41BAD783F;'); |
||||
$this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY IF EXISTS FK_DB0E04E491D79BD3;'); |
||||
$this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY IF EXISTS FK_DB0E04E482F80D8B;'); |
||||
$this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY IF EXISTS FK_DB0E04E4727ACA70;'); |
||||
|
||||
foreach (array_keys($columnsToAdd) as $column) { |
||||
$this->addSql(sprintf('ALTER TABLE lti_external_tool DROP COLUMN IF EXISTS %s;', $column)); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,193 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Doctrine\DBAL\Schema\Schema; |
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
|
||||
final class Version20240811221800 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription(): string |
||||
{ |
||||
return 'Migration for creating new tables corresponding to the entities c_blog, c_blog_attachment, c_blog_comment, c_blog_post, c_blog_rating, c_blog_rel_user, c_blog_task, c_blog_task_rel_user, and block.'; |
||||
} |
||||
|
||||
public function up(Schema $schema): void |
||||
{ |
||||
// Create block table |
||||
if (!$schema->hasTable('block')) { |
||||
$this->addSql(' |
||||
CREATE TABLE block ( |
||||
id INT AUTO_INCREMENT NOT NULL, |
||||
title VARCHAR(255) DEFAULT NULL, |
||||
description LONGTEXT DEFAULT NULL, |
||||
path VARCHAR(190) NOT NULL, |
||||
controller VARCHAR(100) NOT NULL, |
||||
active TINYINT(1) NOT NULL, |
||||
user_id INT DEFAULT NULL, |
||||
PRIMARY KEY(id), |
||||
UNIQUE KEY path (path), |
||||
CONSTRAINT FK_831B9722A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog table |
||||
if (!$schema->hasTable('c_blog')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
resource_node_id INT DEFAULT NULL, |
||||
title LONGTEXT NOT NULL, |
||||
blog_subtitle VARCHAR(250) DEFAULT NULL, |
||||
date_creation DATETIME NOT NULL, |
||||
PRIMARY KEY(iid), |
||||
UNIQUE INDEX UNIQ_64B00A121BAD783F (resource_node_id), |
||||
CONSTRAINT FK_64B00A121BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_attachment table |
||||
if (!$schema->hasTable('c_blog_attachment')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_attachment ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
path VARCHAR(255) NOT NULL, |
||||
comment LONGTEXT DEFAULT NULL, |
||||
size INT NOT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
filename VARCHAR(255) NOT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_E769AADCDAE07E97 (blog_id), |
||||
CONSTRAINT FK_E769AADCDAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_comment table |
||||
if (!$schema->hasTable('c_blog_comment')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_comment ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
title VARCHAR(250) NOT NULL, |
||||
comment LONGTEXT NOT NULL, |
||||
author_id INT DEFAULT NULL, |
||||
date_creation DATETIME NOT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_CAA18F1F675F31B (author_id), |
||||
INDEX IDX_CAA18F1DAE07E97 (blog_id), |
||||
CONSTRAINT FK_CAA18F1F675F31B FOREIGN KEY (author_id) REFERENCES user (id) ON DELETE CASCADE, |
||||
CONSTRAINT FK_CAA18F1DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_post table |
||||
if (!$schema->hasTable('c_blog_post')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_post ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
title VARCHAR(250) NOT NULL, |
||||
full_text LONGTEXT NOT NULL, |
||||
date_creation DATETIME NOT NULL, |
||||
author_id INT DEFAULT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_B6FD68A3F675F31B (author_id), |
||||
INDEX IDX_B6FD68A3DAE07E97 (blog_id), |
||||
CONSTRAINT FK_B6FD68A3F675F31B FOREIGN KEY (author_id) REFERENCES user (id) ON DELETE CASCADE, |
||||
CONSTRAINT FK_B6FD68A3DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_rating table |
||||
if (!$schema->hasTable('c_blog_rating')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_rating ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
rating_type VARCHAR(40) NOT NULL, |
||||
user_id INT DEFAULT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
rating INT NOT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_D4E30760DAE07E97 (blog_id), |
||||
INDEX IDX_D4E30760A76ED395 (user_id), |
||||
CONSTRAINT FK_D4E30760DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE, |
||||
CONSTRAINT FK_D4E30760A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_rel_user table |
||||
if (!$schema->hasTable('c_blog_rel_user')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_rel_user ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
user_id INT DEFAULT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_B55D851BDAE07E97 (blog_id), |
||||
INDEX IDX_B55D851BA76ED395 (user_id), |
||||
CONSTRAINT FK_B55D851BDAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE, |
||||
CONSTRAINT FK_B55D851BA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_task table |
||||
if (!$schema->hasTable('c_blog_task')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_task ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
title VARCHAR(250) NOT NULL, |
||||
description LONGTEXT NOT NULL, |
||||
color VARCHAR(10) NOT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_BE09DF0BDAE07E97 (blog_id), |
||||
CONSTRAINT FK_BE09DF0BDAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
|
||||
// Create c_blog_task_rel_user table |
||||
if (!$schema->hasTable('c_blog_task_rel_user')) { |
||||
$this->addSql(' |
||||
CREATE TABLE c_blog_task_rel_user ( |
||||
iid INT AUTO_INCREMENT NOT NULL, |
||||
user_id INT DEFAULT NULL, |
||||
blog_id INT DEFAULT NULL, |
||||
task_id INT DEFAULT NULL, |
||||
target_date DATE NOT NULL, |
||||
PRIMARY KEY(iid), |
||||
INDEX IDX_FD8B3C73DAE07E97 (blog_id), |
||||
INDEX IDX_FD8B3C738DB60186 (task_id), |
||||
INDEX IDX_FD8B3C73A76ED395 (user_id), |
||||
CONSTRAINT FK_FD8B3C73DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE, |
||||
CONSTRAINT FK_FD8B3C738DB60186 FOREIGN KEY (task_id) REFERENCES c_blog_task (iid) ON DELETE CASCADE, |
||||
CONSTRAINT FK_FD8B3C73A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE |
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC; |
||||
'); |
||||
} |
||||
} |
||||
|
||||
public function down(Schema $schema): void |
||||
{ |
||||
$this->addSql('DROP TABLE IF EXISTS block;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_attachment;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_comment;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_post;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_rating;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_rel_user;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_task_rel_user;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog_task;'); |
||||
$this->addSql('DROP TABLE IF EXISTS c_blog;'); |
||||
} |
||||
} |
@ -0,0 +1,150 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||
|
||||
use Doctrine\DBAL\Schema\Schema; |
||||
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||
|
||||
final class Version20240811221900 extends AbstractMigrationChamilo |
||||
{ |
||||
public function getDescription(): string |
||||
{ |
||||
return 'Migration for modifying existing tables: block, c_blog, c_blog_attachment, c_blog_comment, c_blog_post, c_blog_rating, c_blog_rel_user, c_blog_task, and c_blog_task_rel_user.'; |
||||
} |
||||
|
||||
public function up(Schema $schema): void |
||||
{ |
||||
$this->addSql('ALTER TABLE block ADD user_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE block ADD CONSTRAINT FK_831B9722A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_831B9722A76ED395 ON block (user_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_attachment;'); |
||||
$this->addSql('ALTER TABLE c_blog_attachment DROP id, DROP c_id, DROP post_id, DROP comment_id, CHANGE blog_id blog_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_attachment ADD CONSTRAINT FK_E769AADCDAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_E769AADCDAE07E97 ON c_blog_attachment (blog_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_rating;'); |
||||
$this->addSql('ALTER TABLE c_blog_rating DROP rating_id, DROP c_id, DROP item_id, CHANGE blog_id blog_id INT DEFAULT NULL, CHANGE user_id user_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_rating ADD CONSTRAINT FK_D4E30760DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('ALTER TABLE c_blog_rating ADD CONSTRAINT FK_D4E30760A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_D4E30760DAE07E97 ON c_blog_rating (blog_id);'); |
||||
$this->addSql('CREATE INDEX IDX_D4E30760A76ED395 ON c_blog_rating (user_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_post;'); |
||||
$this->addSql('ALTER TABLE c_blog_post DROP c_id, DROP post_id, CHANGE blog_id blog_id INT DEFAULT NULL, CHANGE author_id author_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_post ADD CONSTRAINT FK_B6FD68A3F675F31B FOREIGN KEY (author_id) REFERENCES user (id) ON DELETE CASCADE;'); |
||||
$this->addSql('ALTER TABLE c_blog_post ADD CONSTRAINT FK_B6FD68A3DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_B6FD68A3F675F31B ON c_blog_post (author_id);'); |
||||
$this->addSql('CREATE INDEX IDX_B6FD68A3DAE07E97 ON c_blog_post (blog_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_rel_user;'); |
||||
$this->addSql('ALTER TABLE c_blog_rel_user DROP c_id, CHANGE blog_id blog_id INT DEFAULT NULL, CHANGE user_id user_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_rel_user ADD CONSTRAINT FK_B55D851BDAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('ALTER TABLE c_blog_rel_user ADD CONSTRAINT FK_B55D851BA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_B55D851BDAE07E97 ON c_blog_rel_user (blog_id);'); |
||||
$this->addSql('CREATE INDEX IDX_B55D851BA76ED395 ON c_blog_rel_user (user_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_task_rel_user;'); |
||||
$this->addSql('DROP INDEX user ON c_blog_task_rel_user;'); |
||||
$this->addSql('DROP INDEX task ON c_blog_task_rel_user;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user DROP c_id, CHANGE blog_id blog_id INT DEFAULT NULL, CHANGE user_id user_id INT DEFAULT NULL, CHANGE task_id task_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user ADD CONSTRAINT FK_FD8B3C738DB60186 FOREIGN KEY (task_id) REFERENCES c_blog_task (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user ADD CONSTRAINT FK_FD8B3C73DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user ADD CONSTRAINT FK_FD8B3C73A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_FD8B3C73DAE07E97 ON c_blog_task_rel_user (blog_id);'); |
||||
$this->addSql('CREATE INDEX IDX_FD8B3C738DB60186 ON c_blog_task_rel_user (task_id);'); |
||||
$this->addSql('CREATE INDEX IDX_FD8B3C73A76ED395 ON c_blog_task_rel_user (user_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog;'); |
||||
$this->addSql('DROP INDEX session_id ON c_blog;'); |
||||
$this->addSql('ALTER TABLE c_blog DROP c_id, DROP blog_id, DROP visibility, DROP session_id;'); |
||||
$this->addSql('ALTER TABLE c_blog ADD CONSTRAINT FK_64B00A121BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;'); |
||||
|
||||
$this->addSql('ALTER TABLE c_lp_category_rel_user DROP FOREIGN KEY FK_61F0427A76ED395;'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_task;'); |
||||
$this->addSql('ALTER TABLE c_blog_task DROP c_id, CHANGE blog_id blog_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_task ADD CONSTRAINT FK_BE09DF0BDAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_BE09DF0BDAE07E97 ON c_blog_task (blog_id);'); |
||||
|
||||
$this->addSql('DROP INDEX course ON c_blog_comment;'); |
||||
$this->addSql('ALTER TABLE c_blog_comment DROP c_id, DROP post_id, DROP task_id, DROP parent_comment_id, CHANGE author_id author_id INT DEFAULT NULL, CHANGE blog_id blog_id INT DEFAULT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_comment ADD CONSTRAINT FK_CAA18F1F675F31B FOREIGN KEY (author_id) REFERENCES user (id) ON DELETE CASCADE;'); |
||||
$this->addSql('ALTER TABLE c_blog_comment ADD CONSTRAINT FK_CAA18F1DAE07E97 FOREIGN KEY (blog_id) REFERENCES c_blog (iid) ON DELETE CASCADE;'); |
||||
$this->addSql('CREATE INDEX IDX_CAA18F1F675F31B ON c_blog_comment (author_id);'); |
||||
$this->addSql('CREATE INDEX IDX_CAA18F1DAE07E97 ON c_blog_comment (blog_id);'); |
||||
} |
||||
|
||||
public function down(Schema $schema): void |
||||
{ |
||||
$this->addSql('ALTER TABLE block DROP FOREIGN KEY FK_831B9722A76ED395;'); |
||||
$this->addSql('ALTER TABLE block DROP COLUMN user_id;'); |
||||
$this->addSql('DROP INDEX UNIQ_831B9722A76ED395 ON block;'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_attachment DROP FOREIGN KEY FK_E769AADCDAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_attachment ADD c_id INT NOT NULL, ADD post_id INT NOT NULL, ADD comment_id INT NOT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_attachment ADD id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_E769AADCDAE07E97 ON c_blog_attachment;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_attachment (c_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_rating DROP FOREIGN KEY FK_D4E30760DAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_rating DROP FOREIGN KEY FK_D4E30760A76ED395;'); |
||||
$this->addSql('ALTER TABLE c_blog_rating ADD c_id INT NOT NULL, ADD rating_id INT NOT NULL, ADD item_id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_D4E30760DAE07E97 ON c_blog_rating;'); |
||||
$this->addSql('DROP INDEX IDX_D4E30760A76ED395 ON c_blog_rating;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_rating (c_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_survey_question_option DROP FOREIGN KEY FK_C4B6F5F1E27F6BF;'); |
||||
$this->addSql('ALTER TABLE c_survey_question_option ADD CONSTRAINT FK_C4B6F5F1E27F6BF FOREIGN KEY (question_id) REFERENCES c_survey_question (iid);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_post DROP FOREIGN KEY FK_B6FD68A3F675F31B;'); |
||||
$this->addSql('ALTER TABLE c_blog_post DROP FOREIGN KEY FK_B6FD68A3DAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_post ADD c_id INT NOT NULL, ADD post_id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_B6FD68A3F675F31B ON c_blog_post;'); |
||||
$this->addSql('DROP INDEX IDX_B6FD68A3DAE07E97 ON c_blog_post;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_post (c_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_rel_user DROP FOREIGN KEY FK_B55D851BDAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_rel_user DROP FOREIGN KEY FK_B55D851BA76ED395;'); |
||||
$this->addSql('ALTER TABLE c_blog_rel_user ADD c_id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_B55D851BDAE07E97 ON c_blog_rel_user;'); |
||||
$this->addSql('DROP INDEX IDX_B55D851BA76ED395 ON c_blog_rel_user;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_rel_user (c_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user DROP FOREIGN KEY FK_FD8B3C738DB60186;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user DROP FOREIGN KEY FK_FD8B3C73DAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user DROP FOREIGN KEY FK_FD8B3C73A76ED395;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user ADD c_id INT NOT NULL;'); |
||||
$this->addSql('ALTER TABLE c_blog_task_rel_user ADD task_id INT NOT NULL, ADD user_id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_FD8B3C73DAE07E97 ON c_blog_task_rel_user;'); |
||||
$this->addSql('DROP INDEX IDX_FD8B3C738DB60186 ON c_blog_task_rel_user;'); |
||||
$this->addSql('DROP INDEX IDX_FD8B3C73A76ED395 ON c_blog_task_rel_user;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_task_rel_user (c_id);'); |
||||
$this->addSql('CREATE INDEX task ON c_blog_task_rel_user (task_id);'); |
||||
$this->addSql('CREATE INDEX user ON c_blog_task_rel_user (user_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog DROP FOREIGN KEY FK_64B00A121BAD783F;'); |
||||
$this->addSql('ALTER TABLE c_blog ADD c_id INT NOT NULL, ADD blog_id INT NOT NULL, ADD visibility TINYINT(1) NOT NULL, ADD session_id INT DEFAULT NULL;'); |
||||
$this->addSql('DROP INDEX UNIQ_64B00A121BAD783F ON c_blog;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog (c_id);'); |
||||
$this->addSql('CREATE INDEX session_id ON c_blog (session_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_lp_category_rel_user ADD CONSTRAINT FK_61F0427A76ED395 FOREIGN KEY (c_id) REFERENCES course (id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_task DROP FOREIGN KEY FK_BE09DF0BDAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_task ADD c_id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_BE09DF0BDAE07E97 ON c_blog_task;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_task (c_id);'); |
||||
|
||||
$this->addSql('ALTER TABLE c_blog_comment DROP FOREIGN KEY FK_CAA18F1F675F31B;'); |
||||
$this->addSql('ALTER TABLE c_blog_comment DROP FOREIGN KEY FK_CAA18F1DAE07E97;'); |
||||
$this->addSql('ALTER TABLE c_blog_comment ADD c_id INT NOT NULL, ADD post_id INT NOT NULL, ADD task_id INT NOT NULL, ADD parent_comment_id INT NOT NULL;'); |
||||
$this->addSql('DROP INDEX IDX_CAA18F1F675F31B ON c_blog_comment;'); |
||||
$this->addSql('DROP INDEX IDX_CAA18F1DAE07E97 ON c_blog_comment;'); |
||||
$this->addSql('CREATE INDEX course ON c_blog_comment (c_id);'); |
||||
} |
||||
} |
@ -0,0 +1,130 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Chamilo\CoreBundle\Entity\AbstractResource; |
||||
use Chamilo\CoreBundle\Entity\ResourceInterface; |
||||
use Doctrine\Common\Collections\ArrayCollection; |
||||
use Doctrine\Common\Collections\Collection; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
use Stringable; |
||||
use Symfony\Component\Validator\Constraints as Assert; |
||||
|
||||
#[ORM\Table(name: 'c_blog')] |
||||
#[ORM\Entity] |
||||
class CBlog extends AbstractResource implements ResourceInterface, Stringable |
||||
{ |
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[Assert\NotBlank] |
||||
#[ORM\Column(name: 'title', type: 'text', nullable: false)] |
||||
protected string $title; |
||||
|
||||
#[ORM\Column(name: 'blog_subtitle', type: 'string', length: 250, nullable: true)] |
||||
protected ?string $blogSubtitle = null; |
||||
|
||||
#[ORM\Column(name: 'date_creation', type: 'datetime', nullable: false)] |
||||
protected \DateTime $dateCreation; |
||||
|
||||
#[ORM\OneToMany(mappedBy: 'blog', targetEntity: CBlogAttachment::class, cascade: ['persist', 'remove'])] |
||||
private Collection $attachments; |
||||
|
||||
public function __construct() |
||||
{ |
||||
$this->attachments = new ArrayCollection(); |
||||
} |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getTitle(): string |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
public function setTitle(string $title): self |
||||
{ |
||||
$this->title = $title; |
||||
return $this; |
||||
} |
||||
|
||||
public function getBlogSubtitle(): ?string |
||||
{ |
||||
return $this->blogSubtitle; |
||||
} |
||||
|
||||
public function setBlogSubtitle(?string $blogSubtitle): self |
||||
{ |
||||
$this->blogSubtitle = $blogSubtitle; |
||||
return $this; |
||||
} |
||||
|
||||
public function getDateCreation(): \DateTime |
||||
{ |
||||
return $this->dateCreation; |
||||
} |
||||
|
||||
public function setDateCreation(\DateTime $dateCreation): self |
||||
{ |
||||
$this->dateCreation = $dateCreation; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return Collection<int, CBlogAttachment> |
||||
*/ |
||||
public function getAttachments(): Collection |
||||
{ |
||||
return $this->attachments; |
||||
} |
||||
|
||||
public function addAttachment(CBlogAttachment $attachment): self |
||||
{ |
||||
if (!$this->attachments->contains($attachment)) { |
||||
$this->attachments->add($attachment); |
||||
$attachment->setBlog($this); |
||||
} |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function removeAttachment(CBlogAttachment $attachment): self |
||||
{ |
||||
if ($this->attachments->removeElement($attachment)) { |
||||
if ($attachment->getBlog() === $this) { |
||||
$attachment->setBlog(null); |
||||
} |
||||
} |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getResourceIdentifier(): int |
||||
{ |
||||
return $this->getIid(); |
||||
} |
||||
|
||||
public function getResourceName(): string |
||||
{ |
||||
return $this->getTitle(); |
||||
} |
||||
|
||||
public function setResourceName(string $name): self |
||||
{ |
||||
return $this->setTitle($name); |
||||
} |
||||
|
||||
public function __toString(): string |
||||
{ |
||||
return $this->getTitle(); |
||||
} |
||||
} |
@ -0,0 +1,100 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_attachment')] |
||||
#[ORM\Entity] |
||||
class CBlogAttachment |
||||
{ |
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\Column(name: 'path', type: 'string', length: 255, nullable: false)] |
||||
protected string $path; |
||||
|
||||
#[ORM\Column(name: 'comment', type: 'text', nullable: true)] |
||||
protected ?string $comment = null; |
||||
|
||||
#[ORM\Column(name: 'size', type: 'integer', nullable: false)] |
||||
protected int $size; |
||||
|
||||
#[ORM\Column(name: 'filename', type: 'string', length: 255, nullable: false)] |
||||
protected string $filename; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class, inversedBy: 'attachments')] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getPath(): string |
||||
{ |
||||
return $this->path; |
||||
} |
||||
|
||||
public function setPath(string $path): self |
||||
{ |
||||
$this->path = $path; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getComment(): ?string |
||||
{ |
||||
return $this->comment; |
||||
} |
||||
|
||||
public function setComment(?string $comment): self |
||||
{ |
||||
$this->comment = $comment; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getSize(): int |
||||
{ |
||||
return $this->size; |
||||
} |
||||
|
||||
public function setSize(int $size): self |
||||
{ |
||||
$this->size = $size; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getFilename(): string |
||||
{ |
||||
return $this->filename; |
||||
} |
||||
|
||||
public function setFilename(string $filename): self |
||||
{ |
||||
$this->filename = $filename; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,117 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Chamilo\CoreBundle\Entity\User; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_comment')] |
||||
#[ORM\Entity] |
||||
class CBlogComment |
||||
{ |
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\Column(name: 'comment_id', type: 'integer', nullable: false)] |
||||
protected int $commentId; |
||||
|
||||
#[ORM\Column(name: 'title', type: 'string', length: 250, nullable: false)] |
||||
protected string $title; |
||||
|
||||
#[ORM\Column(name: 'comment', type: 'text', nullable: false)] |
||||
protected string $comment; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: User::class)] |
||||
#[ORM\JoinColumn(name: 'author_id', referencedColumnName: 'id', onDelete: 'CASCADE')] |
||||
protected User $author; |
||||
|
||||
#[ORM\Column(name: 'date_creation', type: 'datetime', nullable: false)] |
||||
protected \DateTime $dateCreation; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class)] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getCommentId(): int |
||||
{ |
||||
return $this->commentId; |
||||
} |
||||
|
||||
public function setCommentId(int $commentId): self |
||||
{ |
||||
$this->commentId = $commentId; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getTitle(): string |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
public function setTitle(string $title): self |
||||
{ |
||||
$this->title = $title; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getComment(): string |
||||
{ |
||||
return $this->comment; |
||||
} |
||||
|
||||
public function setComment(string $comment): self |
||||
{ |
||||
$this->comment = $comment; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getAuthor(): User |
||||
{ |
||||
return $this->author; |
||||
} |
||||
|
||||
public function setAuthor(User $author): self |
||||
{ |
||||
$this->author = $author; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getDateCreation(): \DateTime |
||||
{ |
||||
return $this->dateCreation; |
||||
} |
||||
|
||||
public function setDateCreation(\DateTime $dateCreation): self |
||||
{ |
||||
$this->dateCreation = $dateCreation; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,102 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Chamilo\CoreBundle\Entity\User; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_post')] |
||||
#[ORM\Entity] |
||||
class CBlogPost |
||||
{ |
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\Column(name: 'title', type: 'string', length: 250, nullable: false)] |
||||
protected string $title; |
||||
|
||||
#[ORM\Column(name: 'full_text', type: 'text', nullable: false)] |
||||
protected string $fullText; |
||||
|
||||
#[ORM\Column(name: 'date_creation', type: 'datetime', nullable: false)] |
||||
protected \DateTime $dateCreation; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: User::class)] |
||||
#[ORM\JoinColumn(name: 'author_id', referencedColumnName: 'id', onDelete: 'CASCADE')] |
||||
protected User $author; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class)] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getTitle(): string |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
public function setTitle(string $title): self |
||||
{ |
||||
$this->title = $title; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getFullText(): string |
||||
{ |
||||
return $this->fullText; |
||||
} |
||||
|
||||
public function setFullText(string $fullText): self |
||||
{ |
||||
$this->fullText = $fullText; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getDateCreation(): \DateTime |
||||
{ |
||||
return $this->dateCreation; |
||||
} |
||||
|
||||
public function setDateCreation(\DateTime $dateCreation): self |
||||
{ |
||||
$this->dateCreation = $dateCreation; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getAuthor(): User |
||||
{ |
||||
return $this->author; |
||||
} |
||||
|
||||
public function setAuthor(User $author): self |
||||
{ |
||||
$this->author = $author; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,78 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\User; |
||||
use Chamilo\CoreBundle\Traits\UserTrait; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_rating')] |
||||
#[ORM\Entity] |
||||
class CBlogRating |
||||
{ |
||||
use UserTrait; |
||||
|
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\Column(name: 'rating_type', type: 'string', length: 40, nullable: false)] |
||||
protected string $ratingType; |
||||
|
||||
#[ORM\Column(name: 'rating', type: 'integer', nullable: false)] |
||||
protected int $rating; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class)] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: User::class)] |
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] |
||||
protected User $user; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getRatingType(): string |
||||
{ |
||||
return $this->ratingType; |
||||
} |
||||
|
||||
public function setRatingType(string $ratingType): self |
||||
{ |
||||
$this->ratingType = $ratingType; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getRating(): int |
||||
{ |
||||
return $this->rating; |
||||
} |
||||
|
||||
public function setRating(int $rating): self |
||||
{ |
||||
$this->rating = $rating; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,48 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Chamilo\CoreBundle\Entity\User; |
||||
use Chamilo\CoreBundle\Traits\UserTrait; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_rel_user')] |
||||
#[ORM\Entity] |
||||
class CBlogRelUser |
||||
{ |
||||
use UserTrait; |
||||
|
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class)] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: User::class)] |
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] |
||||
protected User $user; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,115 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_task')] |
||||
#[ORM\Entity] |
||||
class CBlogTask |
||||
{ |
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\Column(name: 'task_id', type: 'integer', nullable: false)] |
||||
protected int $taskId; |
||||
|
||||
#[ORM\Column(name: 'title', type: 'string', length: 250, nullable: false)] |
||||
protected string $title; |
||||
|
||||
#[ORM\Column(name: 'description', type: 'text', nullable: false)] |
||||
protected string $description; |
||||
|
||||
#[ORM\Column(name: 'color', type: 'string', length: 10, nullable: false)] |
||||
protected string $color; |
||||
|
||||
#[ORM\Column(name: 'system_task', type: 'boolean', nullable: false)] |
||||
protected bool $systemTask; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class)] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getTaskId(): int |
||||
{ |
||||
return $this->taskId; |
||||
} |
||||
|
||||
public function setTaskId(int $taskId): self |
||||
{ |
||||
$this->taskId = $taskId; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getTitle(): string |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
public function setTitle(string $title): self |
||||
{ |
||||
$this->title = $title; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getDescription(): string |
||||
{ |
||||
return $this->description; |
||||
} |
||||
|
||||
public function setDescription(string $description): self |
||||
{ |
||||
$this->description = $description; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getColor(): string |
||||
{ |
||||
return $this->color; |
||||
} |
||||
|
||||
public function setColor(string $color): self |
||||
{ |
||||
$this->color = $color; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function isSystemTask(): bool |
||||
{ |
||||
return $this->systemTask; |
||||
} |
||||
|
||||
public function setSystemTask(bool $systemTask): self |
||||
{ |
||||
$this->systemTask = $systemTask; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,79 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CourseBundle\Entity; |
||||
|
||||
use Chamilo\CoreBundle\Entity\User; |
||||
use Chamilo\CoreBundle\Traits\UserTrait; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
#[ORM\Table(name: 'c_blog_task_rel_user')] |
||||
#[ORM\Entity] |
||||
class CBlogTaskRelUser |
||||
{ |
||||
use UserTrait; |
||||
|
||||
#[ORM\Column(name: 'iid', type: 'integer')] |
||||
#[ORM\Id] |
||||
#[ORM\GeneratedValue] |
||||
protected ?int $iid = null; |
||||
|
||||
#[ORM\Column(name: 'target_date', type: 'date', nullable: false)] |
||||
protected \DateTime $targetDate; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlogTask::class)] |
||||
#[ORM\JoinColumn(name: 'task_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlogTask $task = null; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: CBlog::class)] |
||||
#[ORM\JoinColumn(name: 'blog_id', referencedColumnName: 'iid', onDelete: 'CASCADE')] |
||||
protected ?CBlog $blog = null; |
||||
|
||||
#[ORM\ManyToOne(targetEntity: User::class)] |
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] |
||||
protected User $user; |
||||
|
||||
public function getIid(): ?int |
||||
{ |
||||
return $this->iid; |
||||
} |
||||
|
||||
public function getTargetDate(): \DateTime |
||||
{ |
||||
return $this->targetDate; |
||||
} |
||||
|
||||
public function setTargetDate(\DateTime $targetDate): self |
||||
{ |
||||
$this->targetDate = $targetDate; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getTask(): ?CBlogTask |
||||
{ |
||||
return $this->task; |
||||
} |
||||
|
||||
public function setTask(?CBlogTask $task): self |
||||
{ |
||||
$this->task = $task; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
public function getBlog(): ?CBlog |
||||
{ |
||||
return $this->blog; |
||||
} |
||||
|
||||
public function setBlog(?CBlog $blog): self |
||||
{ |
||||
$this->blog = $blog; |
||||
|
||||
return $this; |
||||
} |
||||
} |
Loading…
Reference in new issue