diff --git a/tests/scripts/migrate_item_property.php b/tests/scripts/migrate_item_property.php index a0c965d3d2..c2e8564804 100644 --- a/tests/scripts/migrate_item_property.php +++ b/tests/scripts/migrate_item_property.php @@ -7,10 +7,13 @@ use Chamilo\CoreBundle\Entity\Resource\ResourceLink; use Chamilo\CoreBundle\Entity\Resource\ResourceFile; use Chamilo\CoreBundle\Entity\Resource\ResourceType; use Chamilo\CoreBundle\Entity\Resource\ResourceRight; - use Chamilo\MediaBundle\Entity\Media; use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter; +echo 'first run:
'; +echo 'bin/console sonata:media:fix-media-context'; +//exit; + require_once __DIR__.'/../../main/inc/global.inc.php'; $sql = "SELECT @@ -28,8 +31,10 @@ $sql = "SELECT FROM c_item_property i INNER JOIN c_document d ON (d.iid = i.ref AND i.c_id = d.c_id) - WHERE i.tool = 'document' AND filetype <> 'folder' AND d.c_id = 4 - ORDER BY d.path LIMIT 10"; + WHERE + i.tool = 'document' AND + d.c_id = 12 + ORDER BY d.path"; $result = Database::query($sql); $fs = Container::$container->get('oneup_flysystem.courses_filesystem'); @@ -82,25 +87,74 @@ while ($row = Database::fetch_array($result, 'ASSOC')) { $folderPath = $course->getDirectory().'/document/'.$documentData['path']; $file = $coursePath.$folderPath; + $document = $documentManager->find($documentData['iid']); + + var_dump('Parsing document iid #'.$document->getIid()); + + + $node = new ResourceNode(); + $node + ->setName($documentData['title']) + ->setDescription($documentData['comment'] ?? '') + ->setCreator($author) + ->setResourceType($resourceType) + ->setCreatedAt($createdAt) + ->setUpdatedAt($lastUpdatedAt) + ; + + $em->persist($node); + $document->setResourceNode($node); + $em->persist($document); + + $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; + + /*$resourceRight = new ResourceRight(); + $resourceRight + ->setMask($readerMask) + ->setRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_STUDENT) + ; + $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); + } + } + switch ($documentData['filetype']) { case 'folder': - //$fs->createDir($folderPath); - /*$node = new ResourceNode(); - $node - ->setName($documentData['title']) - ->setDescription('') - ->setCreator($author) - ->setResourceType($resourceType) - ->setCreatedAt($createdAt) - ->setUpdatedAt($lastUpdatedAt) - ; - $em->persist($node); - $em->flush();*/ break; case 'file': - $document = $documentManager->find($documentData['iid']); - var_dump('Parsing document iid #'.$document->getIid()); - /** @var Media $media */ $media = $mediaManager->create(); $media->setName($documentData['title']); @@ -125,76 +179,17 @@ while ($row = Database::fetch_array($result, 'ASSOC')) { $resourceFile = new ResourceFile(); $resourceFile->setMedia($media); $resourceFile->setName($documentData['title']); + $node->setResourceFile($resourceFile); $em->persist($resourceFile); - - $node = new ResourceNode(); - $node - ->setName($documentData['title']) - ->setDescription($documentData['comment'] ?? '') - ->setResourceFile($resourceFile) - ->setCreator($author) - ->setResourceType($resourceType) - ->setCreatedAt($createdAt) - ->setUpdatedAt($lastUpdatedAt) - ; $em->persist($node); + break; + } - $document->setResourceNode($node); - $em->persist($document); - $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; - - /*$resourceRight = new ResourceRight(); - $resourceRight - ->setMask($readerMask) - ->setRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_STUDENT) - ; - $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(); + $em->persist($link); + $em->flush(); - break; - } break; } }