123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- /* For licensing terms, see /license.txt */
- /**
- * This script will find paths with:
- *
- * https://example.fr/../../../../../../../LOLOS/CHAMILO/document/Chamilo/Fonctionalite_de_groupe.html
- *
- * And will be transformed to:
- *
- * /NEWFOLDER/courses/CHAMILO/document/Chamilo/Fonctionalite_de_groupe.html
- *
- * You need to choose the /NEWFOLDER in the $newUrlAppend variable
- *
- * The script will edit HTML documents inside every document course folder and also edit
- * exercises (question, answer) and course description in the database.
- *
- */
- exit;
- require_once __DIR__.'/../../main/inc/global.inc.php';
- /*$test = '
- https://example.fr/../../../../../../../LOLOS/CHAMILO/document/Chamilo/Fonctionalite_de_groupe.html
- http://example.fr/../../../../../../../LOLOS/CHAMILO/document/Chamilo/Fonctionalite_de_groupe.html
- ';*/
- $courses = CourseManager::get_courses_list();
- // New values
- $newUrlAppend = '/NEWFOLDER'; // Url append of new portal
- $slashes = '/../../../../../../../';
- //$pathToSearch = '#http(.*)://(.*)'.$slashes.'([^/]+)/(.*)/#';
- $pathToSearch = '#(http:\/\/\s*|https:\/\/\s*)?(www\s*)?(?(1)([.]\s*))?(?(2)([.]\s*))?([a-zA-Z0-9.-]{2,256})(\s*[.]\s*)(com|fr|)('.$slashes.')(.*?)/(.*?)/(.*?)/#';
- $pathToReplace = $newUrlAppend.'/courses/${10}/${11}/';
- // tests
- /*
- $contents = 'http://something.fr/../../../../../../../courses-lt-marie-chamilo/ABC/document/images/gallery/science.jpg';
- $contents .= '<br />http://something.something.fr/../../../../../../../courses-lt-marie-chamilo/CDE/document/science.jpg';
- $newContent = preg_replace($pathToSearch, $pathToReplace, $contents);
- echo $newContent;
- exit;*/
- $courseSysPath = api_get_path(SYS_COURSE_PATH);
- foreach ($courses as $course) {
- $courseId = $course['real_id'];
- $docsPath = $courseSysPath.$course['directory'].'/document/';
- echo "<h4>Course in: $docsPath</h4>".'<br />';
- if (is_dir($docsPath)) {
- $finder = new \Symfony\Component\Finder\Finder();
- $finder->files()->in($docsPath)->name('*.html');
- foreach ($finder as $file) {
- echo $file->getRealPath().'<br />';
- $contents = file_get_contents($file->getRealPath());
- $newContent = preg_replace($pathToSearch, $pathToReplace, $contents);
- file_put_contents($file->getRealPath(), $newContent);
- }
- // Updating exercises
- $sql = "SELECT iid, description FROM c_quiz WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $newContent = preg_replace($pathToSearch, $pathToReplace, $item['description']);
- $newContent = Database::escape_string($newContent);
- $sql = "UPDATE c_quiz SET description = '$newContent' WHERE iid = $id";
- Database::query($sql);
- }
- // Updating questions
- $sql = "SELECT iid, question, description FROM c_quiz_question WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $description = preg_replace($pathToSearch, $pathToReplace, $item['description']);
- $description = Database::escape_string($description);
- $question = preg_replace($pathToSearch, $pathToReplace, $item['question']);
- $question = Database::escape_string($question);
- $sql = "UPDATE c_quiz_question SET
- description = '$description',
- question = '$question'
- WHERE iid = $id";
- Database::query($sql);
- }
- // Updating answer
- $sql = "SELECT iid, answer, comment FROM c_quiz_answer WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $answer = preg_replace($pathToSearch, $pathToReplace, $item['answer']);
- $answer = Database::escape_string($answer);
- $comment = preg_replace($pathToSearch, $pathToReplace, $item['comment']);
- $comment = Database::escape_string($comment);
- $sql = "UPDATE c_quiz_answer SET
- answer = '$answer',
- comment = '$comment'
- WHERE iid = $id";
- Database::query($sql);
- }
- // Updating intros
- $sql = "SELECT iid, intro_text FROM c_tool_intro WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $text = preg_replace($pathToSearch, $pathToReplace, $item['intro_text']);
- $text = Database::escape_string($text);
- $sql = "UPDATE c_tool_intro SET
- intro_text = '$text'
- WHERE iid = $id";
- Database::query($sql);
- }
- // Updating Glossary
- $sql = "SELECT iid, description FROM c_glossary WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $gdescription = preg_replace($pathToSearch, $pathToReplace, $item['description']);
- $gdescription = Database::escape_string($gdescription);
- $sql = "UPDATE c_glossary SET description = '$gdescription' WHERE iid = $id";
- Database::query($sql);
- }
- // Updating forums
- $sql = "SELECT iid, forum_comment FROM c_forum_forum WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $text = preg_replace($pathToSearch, $pathToReplace, $item['forum_comment']);
- $text = Database::escape_string($text);
- $sql = "UPDATE c_forum_forum SET
- forum_comment = '$text'
- WHERE iid = $id";
- Database::query($sql);
- }
- // Updating posts
- $sql = "SELECT iid, post_text FROM c_forum_post WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $text = preg_replace($pathToSearch, $pathToReplace, $item['post_text']);
- $text = Database::escape_string($text);
- $sql = "UPDATE c_forum_post SET
- post_text = '$text'
- WHERE iid = $id";
- Database::query($sql);
- }
- // Updating forum cats
- $sql = "SELECT iid, cat_comment FROM c_forum_category WHERE c_id = $courseId";
- $result = Database::query($sql);
- $items = Database::store_result($result);
- foreach ($items as $item) {
- $id = $item['iid'];
- $text = preg_replace($pathToSearch, $pathToReplace, $item['cat_comment']);
- $text = Database::escape_string($text);
- $sql = "UPDATE c_forum_category SET
- cat_comment = '$text'
- WHERE iid = $id";
- Database::query($sql);
- }
- } else {
- echo "<h4>Path doesn't exist</h4>".'<br />';
- }
- }
|