WIP: script migration from c_item_property to resource #2326

pull/2715/head
Julio 8 years ago
parent 0fa0acd2b9
commit a907c37ff6
  1. 2
      config/packages/sonata_media.yaml
  2. 2
      config/services.yaml
  3. 80
      tests/scripts/migrate_item_property.php

@ -45,7 +45,7 @@ sonata_media:
filesystem:
# define where the uploaded file will be stored
local:
directory: '%kernel.root_dir%/../public/uploads/media'
directory: '%kernel.root_dir%/../var/upload/media'
create: true
providers:
file:

@ -73,7 +73,7 @@ parameters:
mailer_user: admin@example.com
mailer_password: null
course_info_is_not_editable: false
sonata_media.cdn.host: /public/uploads/media
sonata_media.cdn.host: '/%env(APP_URL_APPEND)%/public/uploads/media'
sonata_page.varnish.command: 'if [ ! -r "/etc/varnish/secret" ]; then echo "VALID ERROR :/"; else varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 {{ COMMAND }} "{{ EXPRESSION }}"; fi;'
router.request_context.base_url: '%url_append%'
asset.request_context.base_path: '%router.request_context.base_url%'

@ -1,19 +1,30 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
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;
require_once __DIR__.'/../../main/inc/global.inc.php';
$sql = "SELECT * FROM c_item_property WHERE tool = 'document' LIMIT 1";
$sql = "SELECT * FROM c_item_property WHERE tool = 'document' LIMIT 10";
$result = Database::query($sql);
$fs = Container::$container->get('oneup_flysystem.courses_filesystem');
$em = Database::getManager();
$resourceType = $em->getRepository('ChamiloCoreBundle:Resource\ResourceType')->findOneBy(['name' => 'document']);
$coursePath = api_get_path(SYS_PATH).'app/courses/';
$mediaManager = Container::$container->get('sonata.media.manager.media');
while ($row = Database::fetch_array($result, 'ASSOC')) {
$row['iid'];
$itemIid = $row['iid'];
$courseId = $row['c_id'];
$sessionId = $row['session_id'];
$groupId = $row['to_group_id'];
@ -24,29 +35,61 @@ while ($row = Database::fetch_array($result, 'ASSOC')) {
$createdAt = api_get_utc_datetime($row['insert_date'], true, true);
$lastUpdatedAt = api_get_utc_datetime($row['lastedit_date'], true, true);
$em = Database::getManager();
$course = api_get_course_entity($courseId);
$session = api_get_course_entity($sessionId);
$group = api_get_group_entity($groupId);
switch ($row['tool']) {
case 'document':
$course = api_get_course_entity($courseId);
$session = api_get_course_entity($sessionId);
$group = api_get_group_entity($groupId);
$documentData = DocumentManager::get_document_data_by_id($row['ref'], $course->getCode(), $sessionId);
var_dump($documentData);
if (!$documentData) {
error_log('Skipped');
//$documentData = DocumentManager::get_document_data_by_id($row['ref'], $course->getCode(), $sessionId);
error_log("Skipped item property iid #$itemIid");
continue 2;
}
$folderPath = $course->getDirectory().'/document/'.$documentData['path'];
$file = $coursePath.$folderPath;
switch ($documentData['filetype']) {
case 'folder':
//$fs->createDir($folderPath);
break;
case 'file':
//$stream = fopen($file, 'r+');
//$fs->writeStream($folderPath, $stream);
//fclose($stream);
/** @var Media $media */
$media = $mediaManager->create();
//$media = new Media();
$media->setName($documentData['title']);
$media->setSize($documentData['size']);
$media->setContext('default');
$media->setProviderName('sonata.media.provider.image');
var_dump($file);
$media->setEnabled(true);
$stdFile = new Std
$media->setBinaryContent(file_get_contents($file));
$mediaManager->save($media, true);
break;
}
continue;
$file = new ResourceFile();
$file
->setHash('')
->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'])
@ -110,32 +153,31 @@ while ($row = Database::fetch_array($result, 'ASSOC')) {
/**
default resource type list
| announcement |
| attendance |
| blog_management |
| blog_management | blog
| 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 |
*/

Loading…
Cancel
Save