Internal: Fix conflicts with last changes with master.

pull/5832/head
christianbeeznst 10 months ago
parent 5e7552a3ff
commit 77db84a5cb
  1. 3
      src/CoreBundle/Entity/SessionRelCourseRelUser.php
  2. 78
      src/CoreBundle/Migrations/Schema/V200/Version20230913162700.php

@ -10,6 +10,7 @@ use ApiPlatform\Doctrine\Orm\Filter\DateFilter;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter; use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Metadata\ApiFilter; use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\ApiResource;
use Chamilo\CoreBundle\Repository\SessionRelCourseRelUserRepository;
use Chamilo\CoreBundle\Traits\UserTrait; use Chamilo\CoreBundle\Traits\UserTrait;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
@ -32,7 +33,7 @@ use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Index(columns: ['user_id'], name: 'idx_session_rel_course_rel_user_id_user')] #[ORM\Index(columns: ['user_id'], name: 'idx_session_rel_course_rel_user_id_user')]
#[ORM\Index(columns: ['c_id'], name: 'idx_session_rel_course_rel_user_course_id')] #[ORM\Index(columns: ['c_id'], name: 'idx_session_rel_course_rel_user_course_id')]
#[ORM\UniqueConstraint(name: 'course_session_unique', columns: ['session_id', 'c_id', 'user_id', 'status'])] #[ORM\UniqueConstraint(name: 'course_session_unique', columns: ['session_id', 'c_id', 'user_id', 'status'])]
#[ORM\Entity] #[ORM\Entity(repositoryClass: SessionRelCourseRelUserRepository::class)]
#[ApiFilter( #[ApiFilter(
filterClass: SearchFilter::class, filterClass: SearchFilter::class,
properties: [ properties: [

@ -67,7 +67,6 @@ final class Version20230913162700 extends AbstractMigrationChamilo
} }
} }
private function updateContent($config, $courseDirectory, $courseId, $documentRepo): void private function updateContent($config, $courseDirectory, $courseId, $documentRepo): void
{ {
if (isset($config['field'])) { if (isset($config['field'])) {
@ -88,11 +87,9 @@ final class Version20230913162700 extends AbstractMigrationChamilo
if (!empty($originalText)) { if (!empty($originalText)) {
$updatedText = $this->replaceOldURLsWithNew($originalText, $courseDirectory, $courseId, $documentRepo); $updatedText = $this->replaceOldURLsWithNew($originalText, $courseDirectory, $courseId, $documentRepo);
if ($originalText !== $updatedText) { if ($originalText !== $updatedText) {
error_log("SIMULACIÓN: Actualizar campo {$field} en {$config['table']} para ID {$item['iid']}"); $sql = "UPDATE {$config['table']} SET {$field} = :newText WHERE iid = :id";
// Simular sin guardar cambios $params = ['newText' => $updatedText, 'id' => $item['iid']];
// $sql = "UPDATE {$config['table']} SET {$field} = :newText WHERE iid = :id"; $this->connection->executeQuery($sql, $params);
// $params = ['newText' => $updatedText, 'id' => $item['iid']];
// $this->connection->executeQuery($sql, $params);
} }
} }
} }
@ -101,7 +98,7 @@ final class Version20230913162700 extends AbstractMigrationChamilo
private function updateHtmlContent($courseDirectory, $courseId, $documentRepo, $resourceNodeRepo): void private function updateHtmlContent($courseDirectory, $courseId, $documentRepo, $resourceNodeRepo): void
{ {
$sql = "SELECT iid, resource_node_id FROM c_document WHERE filetype = 'file' AND resource_node_id IS NOT NULL"; $sql = "SELECT iid, resource_node_id FROM c_document WHERE filetype = 'file'";
$result = $this->connection->executeQuery($sql); $result = $this->connection->executeQuery($sql);
$items = $result->fetchAllAssociative(); $items = $result->fetchAllAssociative();
@ -126,20 +123,18 @@ final class Version20230913162700 extends AbstractMigrationChamilo
$filePath = $resourceFile->getTitle(); $filePath = $resourceFile->getTitle();
if ('text/html' === $resourceFile->getMimeType()) { if ('text/html' === $resourceFile->getMimeType()) {
error_log("Verificando archivo HTML: $filePath"); error_log('Verifying HTML file: '.$filePath);
try { try {
$content = $resourceNodeRepo->getResourceNodeFileContent($resourceNode); $content = $resourceNodeRepo->getResourceNodeFileContent($resourceNode);
$updatedContent = $this->replaceOldURLsWithNew($content, $courseDirectory, $courseId, $documentRepo); $updatedContent = $this->replaceOldURLsWithNew($content, $courseDirectory, $courseId, $documentRepo);
if ($content !== $updatedContent) { if ($content !== $updatedContent) {
error_log("SIMULACIÓN: Actualizar contenido HTML en {$filePath}"); $documentRepo->updateResourceFileContent($document, $updatedContent);
// Simular sin guardar cambios $documentRepo->update($document);
// $documentRepo->updateResourceFileContent($document, $updatedContent);
// $documentRepo->update($document);
} }
} catch (Exception $e) { } catch (Exception $e) {
error_log("Error al procesar archivo $filePath: " . $e->getMessage()); error_log("Error processing file $filePath: ".$e->getMessage());
} }
} }
} }
@ -203,7 +198,7 @@ final class Version20230913162700 extends AbstractMigrationChamilo
$documentRepo = $this->container->get(CDocumentRepository::class); $documentRepo = $this->container->get(CDocumentRepository::class);
$kernel = $this->container->get('kernel'); $kernel = $this->container->get('kernel');
$rootPath = $kernel->getProjectDir(); $rootPath = $kernel->getProjectDir();
$appCourseOldPath = $rootPath . '/app' . $videoPath; $appCourseOldPath = $rootPath.'/app'.$videoPath;
$title = basename($appCourseOldPath); $title = basename($appCourseOldPath);
$courseRepo = $this->container->get(CourseRepository::class); $courseRepo = $this->container->get(CourseRepository::class);
@ -212,32 +207,59 @@ final class Version20230913162700 extends AbstractMigrationChamilo
throw new Exception("Course with ID $courseId not found."); throw new Exception("Course with ID $courseId not found.");
} }
error_log("SIMULACIÓN: Intentando localizar archivo {$title} en la ruta esperada: {$appCourseOldPath}"); $document = $documentRepo->findCourseResourceByTitle($title, $course->getResourceNode(), $course);
if (null !== $document) {
return $document;
}
// Verificar si el archivo existe en la ubicación esperada
if (file_exists($appCourseOldPath) && !is_dir($appCourseOldPath)) { if (file_exists($appCourseOldPath) && !is_dir($appCourseOldPath)) {
error_log("SIMULACIÓN: Archivo encontrado en ruta esperada: {$appCourseOldPath}"); $document = new CDocument();
return null; // Retorna null en modo de solo lectura $document->setFiletype('file')
->setTitle($title)
->setComment(null)
->setReadonly(false)
->setCreator($this->getAdmin())
->setParent($course)
->addCourseLink($course)
;
$this->entityManager->persist($document);
$this->entityManager->flush();
$documentRepo->addFileFromPath($document, $title, $appCourseOldPath);
return $document;
} }
$generalCoursesPath = $this->getUpdateRootPath().'/app/courses/';
// Buscar en directorios alternativos usando recursiveFileSearch
$generalCoursesPath = $this->getUpdateRootPath() . '/app/courses/';
$foundPath = $this->recursiveFileSearch($generalCoursesPath, $title); $foundPath = $this->recursiveFileSearch($generalCoursesPath, $title);
if ($foundPath) { if ($foundPath) {
// Registrar el valor de foundPath sin realizar ninguna operación de escritura $document = new CDocument();
error_log("SIMULACIÓN: Archivo encontrado en nueva ubicación: {$foundPath}"); $document->setFiletype('file')
} else { ->setTitle($title)
error_log("SIMULACIÓN: Archivo {$title} no encontrado en {$generalCoursesPath}"); ->setComment(null)
->setReadonly(false)
->setCreator($this->getAdmin())
->setParent($course)
->addCourseLink($course)
;
$this->entityManager->persist($document);
$this->entityManager->flush();
$documentRepo->addFileFromPath($document, $title, $foundPath);
error_log('File found in new location: '.$foundPath);
return $document;
} }
return null; // No realizar ninguna operación de creación throw new Exception('File not found in any location.');
} catch (Exception $e) { } catch (Exception $e) {
error_log('Error en la migración: ' . $e->getMessage()); error_log('Migration error: '.$e->getMessage());
return null; return null;
} }
} }
private function recursiveFileSearch($directory, $title) private function recursiveFileSearch($directory, $title)
{ {
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)); $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

Loading…
Cancel
Save