parent
dfafadf43a
commit
8ad82c278e
@ -0,0 +1,85 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
/** |
||||
* Script to restore some deleted documents |
||||
*/ |
||||
|
||||
use Chamilo\CourseBundle\Entity\CDocument; |
||||
use Chamilo\CourseBundle\Entity\CItemProperty; |
||||
|
||||
exit; |
||||
|
||||
require __DIR__.'/../../main/inc/global.inc.php'; |
||||
|
||||
api_protect_admin_script(); |
||||
|
||||
$em = Database::getManager(); |
||||
|
||||
$cId = 0; |
||||
$path = '%_DELETED_%'; |
||||
|
||||
//// ---> |
||||
|
||||
$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; |
||||
} |
||||
Loading…
Reference in new issue