diff --git a/src/CoreBundle/Entity/Listener/CourseListener.php b/src/CoreBundle/Entity/Listener/CourseListener.php index 26995648f7..2374ba30a8 100644 --- a/src/CoreBundle/Entity/Listener/CourseListener.php +++ b/src/CoreBundle/Entity/Listener/CourseListener.php @@ -58,13 +58,6 @@ class CourseListener $this->checkLimit($repo, $course, $url); $this->toolChain->addToolsInCourse($course, $this->settingsManager); } - - /* - error_log('ddd'); - $course->setDescription( ' dq sdqs dqs dqs '); - - $args->getEntityManager()->persist($course); - $args->getEntityManager()->flush();*/ } /** @@ -79,7 +72,6 @@ class CourseListener { if ($course) { $url = $course->getCurrentUrl(); - $repo = $args->getEntityManager()->getRepository('ChamiloCoreBundle:Course'); $this->checkLimit($repo, $course, $url); diff --git a/src/CoreBundle/Entity/Resource/ResourceFile.php b/src/CoreBundle/Entity/Resource/ResourceFile.php index 7fe4fcc7b0..9c0568ea70 100644 --- a/src/CoreBundle/Entity/Resource/ResourceFile.php +++ b/src/CoreBundle/Entity/Resource/ResourceFile.php @@ -100,7 +100,7 @@ class ResourceFile protected $resourceNode; /** - * @var string + * @var bool * * @ORM\Column(name="enabled", type="boolean") */ @@ -124,4 +124,224 @@ class ResourceFile public function __construct() { } + + /** + * @return mixed + */ + public function getName() + { + return $this->name; + } + + /** + * @param mixed $name + * + * @return ResourceFile + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + /** + * @return string + */ + public function getHash(): string + { + return $this->hash; + } + + /** + * @param string $hash + * + * @return ResourceFile + */ + public function setHash(string $hash): ResourceFile + { + $this->hash = $hash; + + return $this; + } + + /** + * @return string + */ + public function getOriginalFilename(): string + { + return $this->originalFilename; + } + + /** + * @param string $originalFilename + * + * @return ResourceFile + */ + public function setOriginalFilename(string $originalFilename): ResourceFile + { + $this->originalFilename = $originalFilename; + + return $this; + } + + /** + * @return string + */ + public function getSize(): string + { + return $this->size; + } + + /** + * @param string $size + * + * @return ResourceFile + */ + public function setSize(string $size): ResourceFile + { + $this->size = $size; + + return $this; + } + + /** + * @return string + */ + public function getWidth(): string + { + return $this->width; + } + + /** + * @param string $width + * + * @return ResourceFile + */ + public function setWidth(string $width): ResourceFile + { + $this->width = $width; + + return $this; + } + + /** + * @return string + */ + public function getHeight(): string + { + return $this->height; + } + + /** + * @param string $height + * + * @return ResourceFile + */ + public function setHeight(string $height): ResourceFile + { + $this->height = $height; + + return $this; + } + + /** + * @return string + */ + public function getCopyright(): string + { + return $this->copyright; + } + + /** + * @param string $copyright + * + * @return ResourceFile + */ + public function setCopyright(string $copyright): ResourceFile + { + $this->copyright = $copyright; + + return $this; + } + + /** + * @return string + */ + public function getContentType(): string + { + return $this->contentType; + } + + /** + * @param string $contentType + * + * @return ResourceFile + */ + public function setContentType(string $contentType): ResourceFile + { + $this->contentType = $contentType; + + return $this; + } + + /** + * @return string + */ + public function getExtension(): string + { + return $this->extension; + } + + /** + * @param string $extension + * + * @return ResourceFile + */ + public function setExtension(string $extension): ResourceFile + { + $this->extension = $extension; + + return $this; + } + + /** + * @return ResourceNode + */ + public function getResourceNode(): ResourceNode + { + return $this->resourceNode; + } + + /** + * @param ResourceNode $resourceNode + * + * @return ResourceFile + */ + public function setResourceNode(ResourceNode $resourceNode): ResourceFile + { + $this->resourceNode = $resourceNode; + + return $this; + } + + /** + * @return bool + */ + public function isEnabled(): bool + { + return $this->enabled; + } + + /** + * @param bool $enabled + * + * @return ResourceFile + */ + public function setEnabled(bool $enabled): ResourceFile + { + $this->enabled = $enabled; + + return $this; + } } diff --git a/src/CoreBundle/Entity/Resource/ResourceLink.php b/src/CoreBundle/Entity/Resource/ResourceLink.php index ec5d92404c..22f1377c41 100644 --- a/src/CoreBundle/Entity/Resource/ResourceLink.php +++ b/src/CoreBundle/Entity/Resource/ResourceLink.php @@ -72,7 +72,7 @@ class ResourceLink implements ResourceInterface protected $resourceRight; /** - * @var bool + * @var int * * @ORM\Column(name="visibility", type="integer", nullable=false) */ @@ -307,6 +307,26 @@ class ResourceLink implements ResourceInterface return $this->resourceNode; } + /** + * @return int + */ + public function getVisibility(): int + { + return $this->visibility; + } + + /** + * @param int $visibility + * + * @return ResourceLink + */ + public function setVisibility(int $visibility): ResourceLink + { + $this->visibility = $visibility; + + return $this; + } + /** * @return $this */ diff --git a/src/CoreBundle/Entity/Resource/ResourceNode.php b/src/CoreBundle/Entity/Resource/ResourceNode.php index 82d9ae3ac0..6e52851059 100644 --- a/src/CoreBundle/Entity/Resource/ResourceNode.php +++ b/src/CoreBundle/Entity/Resource/ResourceNode.php @@ -3,7 +3,6 @@ namespace Chamilo\CoreBundle\Entity\Resource; -use Chamilo\CoreBundle\Entity\Tool; use Chamilo\UserBundle\Entity\User; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; @@ -35,6 +34,13 @@ class ResourceNode */ protected $name; + /** + * @var string + * + * @ORM\Column(name="description", type="text", nullable = true) + */ + protected $description; + /** * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceType", inversedBy="resourceNodes") * @ORM\JoinColumn(name="resource_type_id", referencedColumnName="id") @@ -153,6 +159,8 @@ class ResourceNode public function setUpdatedAt(\DateTime $updatedAt = null) { $this->updatedAt = $updatedAt; + + return $this; } /** @@ -169,6 +177,8 @@ class ResourceNode public function setCreatedAt(\DateTime $createdAt = null) { $this->createdAt = $createdAt; + + return $this; } /** @@ -405,4 +415,24 @@ class ResourceNode return $this; } + + /** + * @return string + */ + public function getDescription(): string + { + return $this->description; + } + + /** + * @param string $description + * + * @return ResourceNode + */ + public function setDescription(string $description): ResourceNode + { + $this->description = $description; + + return $this; + } } diff --git a/src/CoreBundle/Entity/Resource/ResourceType.php b/src/CoreBundle/Entity/Resource/ResourceType.php index 780ac301a5..b2601012dc 100644 --- a/src/CoreBundle/Entity/Resource/ResourceType.php +++ b/src/CoreBundle/Entity/Resource/ResourceType.php @@ -67,6 +67,7 @@ class ResourceType /** * @param mixed $id + * * @return ResourceType */ public function setId($id) @@ -106,6 +107,7 @@ class ResourceType /** * @param Tool $tool + * * @return ResourceType */ public function setTool($tool) @@ -125,6 +127,7 @@ class ResourceType /** * @param mixed $resourceNodes + * * @return ResourceType */ public function setResourceNodes($resourceNodes) diff --git a/src/CoreBundle/Migrations/Schema/V200/Version20.php b/src/CoreBundle/Migrations/Schema/V200/Version20.php index d7ba1fdf6a..cb69a080e2 100644 --- a/src/CoreBundle/Migrations/Schema/V200/Version20.php +++ b/src/CoreBundle/Migrations/Schema/V200/Version20.php @@ -542,7 +542,7 @@ class Version20 extends AbstractMigrationChamilo $this->addSql('CREATE TABLE resource_type (id INT AUTO_INCREMENT NOT NULL, tool_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_83FEF7938F7B22CC (tool_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); $this->addSql('CREATE TABLE resource_right (id INT AUTO_INCREMENT NOT NULL, resource_link_id INT DEFAULT NULL, role VARCHAR(255) NOT NULL, mask INT NOT NULL, UNIQUE INDEX UNIQ_C99C3BF9F004E599 (resource_link_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); $this->addSql('CREATE TABLE resource_link (id INT AUTO_INCREMENT NOT NULL, resource_node_id INT DEFAULT NULL, session_id INT DEFAULT NULL, user_id INT DEFAULT NULL, c_id INT DEFAULT NULL, group_id INT DEFAULT NULL, usergroup_id INT DEFAULT NULL, visibility INT NOT NULL, start_visibility_at DATETIME DEFAULT NULL, end_visibility_at DATETIME DEFAULT NULL, INDEX IDX_398C394B1BAD783F (resource_node_id), INDEX IDX_398C394B613FECDF (session_id), INDEX IDX_398C394BA76ED395 (user_id), INDEX IDX_398C394B91D79BD3 (c_id), INDEX IDX_398C394BFE54D947 (group_id), INDEX IDX_398C394BD2112630 (usergroup_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); - $this->addSql('CREATE TABLE resource_node (id INT AUTO_INCREMENT NOT NULL, resource_type_id INT DEFAULT NULL, creator_id INT NOT NULL, parent_id INT DEFAULT NULL, resource_file_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, level INT DEFAULT NULL, path VARCHAR(3000) DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_8A5F48FF98EC6B7B (resource_type_id), INDEX IDX_8A5F48FF61220EA6 (creator_id), INDEX IDX_8A5F48FF727ACA70 (parent_id), UNIQUE INDEX UNIQ_8A5F48FFCE6B9E84 (resource_file_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); + $this->addSql('CREATE TABLE resource_node (id INT AUTO_INCREMENT NOT NULL, resource_type_id INT DEFAULT NULL, creator_id INT NOT NULL, parent_id INT DEFAULT NULL, resource_file_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, description LONGTEXT DEFAULT NULL, level INT DEFAULT NULL, path VARCHAR(3000) DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_8A5F48FF98EC6B7B (resource_type_id), INDEX IDX_8A5F48FF61220EA6 (creator_id), INDEX IDX_8A5F48FF727ACA70 (parent_id), UNIQUE INDEX UNIQ_8A5F48FFCE6B9E84 (resource_file_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); $this->addSql('CREATE TABLE resource_file (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, hash VARCHAR(255) NOT NULL, original_filename VARCHAR(255) NOT NULL, size VARCHAR(255) NOT NULL, width VARCHAR(255) DEFAULT NULL, height VARCHAR(255) DEFAULT NULL, copyright VARCHAR(255) DEFAULT NULL, contentType VARCHAR(255) DEFAULT NULL, extension VARCHAR(255) NOT NULL, enabled TINYINT(1) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); $this->addSql('CREATE TABLE c_document (iid INT AUTO_INCREMENT NOT NULL, c_id INT DEFAULT NULL, session_id INT DEFAULT NULL, resource_node_id INT DEFAULT NULL, id INT DEFAULT NULL, path VARCHAR(255) NOT NULL, comment LONGTEXT DEFAULT NULL, title VARCHAR(255) DEFAULT NULL, filetype VARCHAR(10) NOT NULL, size INT NOT NULL, readonly TINYINT(1) NOT NULL, INDEX IDX_C9FA0CBD613FECDF (session_id), UNIQUE INDEX UNIQ_C9FA0CBD1BAD783F (resource_node_id), INDEX course (c_id), PRIMARY KEY(iid)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC'); $this->addSql('ALTER TABLE resource_type ADD CONSTRAINT FK_83FEF7938F7B22CC FOREIGN KEY (tool_id) REFERENCES tool (id)'); diff --git a/tests/scripts/migrate_item_property.php b/tests/scripts/migrate_item_property.php new file mode 100644 index 0000000000..755b00c1a6 --- /dev/null +++ b/tests/scripts/migrate_item_property.php @@ -0,0 +1,141 @@ +getCode(), $sessionId); + if (!$documentData) { + error_log('Skipped'); + continue 2; + } + + $file = new ResourceFile(); + $file + ->setName($documentData['title']) + ->setOriginalFilename(basename($documentData['path'])) + ->setSize($documentData['size']) + ; + + $resourceType = $em->getRepository('ChamiloCoreBundle:ResourceType')->findOneBy(['name' => 'document']); + + $node = new ResourceNode(); + $node + ->setName($documentData['title']) + ->setDescription($documentData['comment']) + ->setResourceFile($file) + ->setCreator($author) + ->setResourceFile($file) + ->setResourceType($resourceType) + + ->setCreatedAt($createdAt) + ->setUpdatedAt($lastUpdatedAt) + ; + $em->persist($node); + $em->flush(); + + $rights = []; + switch ($row['visibility']) { + case '0': + $newVisibility = ResourceLink::VISIBILITY_DRAFT; + + $readerMask = ResourceNodeVoter::getReaderMask(); + $editorMask = ResourceNodeVoter::getEditorMask(); + + $resourceRight = new ResourceRight(); + $resourceRight + ->setMask($editorMask) + ->setRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_TEACHER) + ; + $rights[] = $resourceRight; + break; + case '1': + $newVisibility = ResourceLink::VISIBILITY_PUBLISHED; + break; + case '2': + $newVisibility = ResourceLink::VISIBILITY_DELETED; + break; + } + + $link = new ResourceLink(); + $link + ->setCourse($course) + ->setSession($session) + ->setGroup($group) + ->setUser($toUser) + ->setResourceNode($node) + ->setVisibility($newVisibility) + ; + + if (!empty($rights)) { + foreach ($rights as $right) { + $link->addResourceRight($right); + } + } + + $em->persist($link); + $em->flush(); + + break; + } +} + +/** +default resource type list +| announcement | +| attendance | +| blog_management | +| calendar_event | +| calendar_event_attachment | +| course_description | +| document | +| dropbox | +| forum | +| forum_attachment | +| forum_category | +| forum_post | +| forum_thread | +| glossary | +| learnpath | +| learnpath_category | +| link | +| link_category | +| notebook | +| quiz | +| survey | +| test_category | +| thematic | +| thematic_advance | +| thematic_plan | +| wiki | +| work | + + */