From 8ad82c278efe3dda4e1371bc8835092a4df68025 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Tue, 15 Jan 2019 12:15:23 -0500 Subject: [PATCH] Add script to restore deleted documents - refs BT#15200 --- tests/scripts/restore_deleted_documents.php | 85 +++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/scripts/restore_deleted_documents.php diff --git a/tests/scripts/restore_deleted_documents.php b/tests/scripts/restore_deleted_documents.php new file mode 100644 index 0000000000..89ed92bf97 --- /dev/null +++ b/tests/scripts/restore_deleted_documents.php @@ -0,0 +1,85 @@ + + +$currentUserId = api_get_user_id(); +$course = api_get_course_entity($cId); +$courseDirectory = api_get_path(SYS_COURSE_PATH).$course->getDirectory().'/document'; + +$documents = $em + ->createQuery( + 'SELECT d FROM ChamiloCourseBundle:CDocument d + WHERE d.cId = :cid AND d.path LIKE :path AND d.sessionId = 0' + ) + ->setParameters(['cid' => (int) $cId, 'path' => $path]) + ->getResult(); + +header('Content-Type: text/plain'); + +/** @var CDocument $document */ +foreach ($documents as $document) { + $properties = $em + ->createQuery( + 'SELECT i FROM ChamiloCourseBundle:CItemProperty i + WHERE i.course = :course AND i.session IS NULL AND i.ref = :ref' + ) + ->setParameters(['course' => $course, 'ref' => $document->getIid()]) + ->getResult(); + + /** @var CItemProperty $property */ + foreach ($properties as $property) { + if (!in_array($property->getLasteditType(), ['DocumentDeleted', 'delete'])) { + continue; + } + switch ($property->getLasteditType()) { + case 'DocumentDeleted': + echo "Changing 'deleted' log to 'added' log".PHP_EOL; + $property + ->setLasteditType('DocumentAdded') + ->setLasteditUserId($currentUserId) + ->setLasteditDate( + api_get_utc_datetime(null, false, true) + ) + ->setVisibility(1); + + $em->persist($property); + break; + case 'delete': + echo "Removing delete log".PHP_EOL; + $em->remove($property); + break; + } + } + + $filePath = $courseDirectory.$document->getPath(); + $newPath = str_replace('_DELETED_'.$document->getIid(), '', $document->getPath()); + $newFilePath = $courseDirectory.$newPath; + + $document->setPath($newPath); + $em->flush(); + + $renaming = rename($filePath, $newFilePath); + + echo "Renaming $filePath to $newFilePath : "; + echo $renaming ? 'y' : 'n'; + echo PHP_EOL; +}