Commit graph

58 commits

Author SHA1 Message Date
David Mudrak
034b0e4a30 Fixed applying convert_path recipes on sub-paths of grouped elements
Grouped elements contain arrays with the sub-paths. This patch makes
sure that the sub-paths are pre-cooked recursively. However because the
recipes do not distinguish the full path to the element, only the
implicit recipe (making the tags lowecase) is applied. To avoid
potential data loss (for example dropfields recipe would delete all
fields from the whole grouped tree, not only the direct descendants of
the path where the recipe is declared), explicit recipes are forbidden
for grouped elements. The developer has to convert the $data manually as
needed.
2011-06-02 03:26:52 +02:00
David Mudrak
93264625f2 The source passed to the migrate_directory() may not exist
In case the source $rootpath passed to the migrate_directory() does not
exist, an empty array is returned by the method. Note that if the
directory exists and is empty, the directory itself is converter so
there would be a new record created. However, the restore process
ignores these records anyway, as the directory records are created
automatically by certain file api methods.
2011-05-29 00:38:23 +02:00
David Mudrak
214c492447 Converter file manager's methods take relative path within the backup instead of the absolute path 2011-05-29 00:18:19 +02:00
David Mudrak
66f79e50a3 Files conversion support improved
The new file manager class is introduced. Once its public properties are
set, one can use it to migrate either a single file or a whole
directory. The course_files conversion reworked so that it uses the new
manager now. The files.xml written at the very end of the conversion,
giving all handlers a chance to migrate the files they need.
2011-05-27 04:13:34 +02:00
David Mudrak
6cfa5a3220 Added support for the on_xxx_start() event handler for MOD and BLOCK sub-paths 2011-05-26 16:59:59 +02:00
David Mudrak
4ddf9ac6b5 Added base class for the activity module subplugins 2011-05-26 16:59:51 +02:00
David Mudrak
2fe7d14a04 The generation of module.xml and friends moved to a later phase
This is needed to give the modules a chance to actually rewrite course
modules related information. Resource module needs this so it is able to
split its own information into its successors (url, folder, page etc).
2011-05-24 16:01:04 +02:00
David Mudrak
8bcefb3254 Activity module handler get_moduleid() replaced with get_cminfo() 2011-05-24 16:01:00 +02:00
David Mudrak
6357693c8b Extended debugging information thrown by an exception 2011-05-24 16:00:55 +02:00
David Mudrak
8312ab674a Course files conversion 2011-05-20 11:59:41 +02:00
David Mudrak
f3b0b1e552 The write_xml() does not put 'id' into attributes implicitly
In some situations - like in inforef.xml - we need id to be proper
nested citizen.
2011-05-20 11:29:00 +02:00
David Mudrak
716a9616e3 The handlers now throw moodle1_convert_exception instead of convert_exception 2011-05-20 10:19:28 +02:00
David Mudrak
26cac34a6c Improved get_contextid()
For system and course levels, we do not need itemid as we work with
single system context and single course context only. Thanks to this, we
can generate contextid for the restored course even we do not know its
original id yet.
2011-05-20 10:19:28 +02:00
David Mudrak
6700d288b3 New get_nextid() method
This is useful for generating artificial database records ids.
2011-05-20 10:19:27 +02:00
David Mudrak
dbf6843a72 Include a course file in the unit test 2011-05-20 10:19:27 +02:00
David Mudrak
6d73f18573 New method get_stash_itemids()
This will be useful to build inforef.xml files.
2011-05-20 10:19:22 +02:00
David Mudrak
01b922fe70 Trivial improvement of member variables doc 2011-05-20 09:39:22 +02:00
David Mudrak
2304cbaacd Do not try to convert activity modules that do not have the converter implemented yet
This checks for the presence of moodle1 library in the module directory.
If there is no such file, the converter does not include the module in
the list of included modules.

Note that some files (like module.xml) are created for such skipped
modules anyway. But restore process seems to use the information from
moodle_backup.xml so it does not try to restore them.
2011-05-19 14:25:37 +02:00
David Mudrak
317f1c6f61 Generate fake XML files to make the restore process happy
With these changes I was able to restore the very first 1.9 course
containing a forum and a choice.
2011-05-19 13:56:43 +02:00
David Mudrak
46ff8b0ecf The handler's process_xxx() method is not mandatory any more
It was realized that it is pretty common to register a convert_path just
to be able to attach on-start or on-end listeners to it, without actual
processing data. So now, the handler must provide at least one of these
three methods and the process_xxx() does not need to be there if it is
not needed.
2011-05-19 03:17:18 +02:00
David Mudrak
ae80f68f31 Improvements in moodle1_xml_handler external API
The methods are protected now as they are supposed to be used by
subclasses only. Added a new method to check if the output writer has
been opened.
2011-05-18 16:32:51 +02:00
David Mudrak
c171d28ebc The basic wrapper for question categories conversion
The QUESTION_CATEGORIES tag is optional in moodle.xml but the file
questions.xml is required by the moodle2 restore process. So here we
make sure that at least an empty file is created.
2011-05-18 14:33:05 +02:00
David Mudrak
ba66847b71 Roles definition conversion 2011-05-18 14:12:52 +02:00
David Mudrak
96f7c7ad72 Implemented new XML transformer for the files being written during the conversion 2011-05-18 14:10:04 +02:00
David Mudrak
179982a400 Added missing description of the moodle1 converter 2011-05-18 00:54:00 +02:00
David Mudrak
99a82518eb The main moodle_backup.xml file is now being generated by the converter 2011-05-16 19:02:13 +02:00
David Mudrak
17d2e210b7 Renamed converter factory method to more self-descriptive get_converter() 2011-05-13 12:06:10 +02:00
David Mudrak
1cc0e42a86 The current element's data are passed to the on_element_end() event handler 2011-05-13 10:16:25 +02:00
David Mudrak
a5ea28b32d Removing relics of the previous plan/tasks/steps based implementation
Kudos to Mark Nielsen for his initial work on this project. In his code,
Mark described the valuable logic of the conversion using a framework
mirroring plan/tasks/steps based architecture of the backup and restore.
My attempt to simplify it led to the current handlers-based
architecture.
2011-05-13 03:09:26 +02:00
David Mudrak
baa6f6a848 Improved course module info conversion 2011-05-13 02:41:47 +02:00
David Mudrak
d5d02635d7 Refactored get_contextid() and unit tests for it 2011-05-12 18:36:03 +02:00
David Mudrak
9b5f1ad5fb Improved the moodle1_convert stashing subsystem 2011-05-12 18:18:29 +02:00
David Mudrak
beb7de3736 More backup-converter API improvements
Added write_xml() helper that writes the given tree-ish structure into
the current xml writer. Improved get_contextid() so that it can use
indices for searching data. Added set_stash() and get_stash() helper
methods.
2011-05-12 15:36:09 +02:00
David Mudrak
a5fe591280 MDL-27376 MDL-27377 MDL-27378 Backup converters refactoring - still work in progress
This patch mainly adds support for dispatching path-start and path-end events,
defines API to access backup_ids_temp table. Some ideas emailed by Mark
after his first review of the code are incorporated already.
2011-05-11 03:28:39 +02:00
David Mudrak
1e2c735111 MDL-27376 MDL-27377 MDL-27378 Backup converters refactoring - work in progress
These are David's changes of Mark's code that replace the
plan/tasks/steps infrastructure with a bit simpler one. The changes will
be described in the next commit that will actually finish the
conversion.

TODO: refactor backup/converter/moodle1/stepslib.php into conversion
handlers.
2011-05-10 17:58:00 +02:00
David Mudrak
0164592b8c MDL-27376 MDL-27377 Backup converters API refactored
* Several base_converter methods made protected when there was no obvious
reason why they should be public (subject of eventual change still).
* The conversion chain now constructed in advance before any converter
class is instantiated, using Dijkstra's algorithm.
2011-05-10 17:57:59 +02:00
David Mudrak
e48477d94f MDL-22414 Fixed standard copyright file headers (R0417) 2011-05-10 17:57:59 +02:00
Eloy Lafuente (stronk7)
5b01180aed Apply parser processor new methods + observe $CFG->keeptempdirectoriesonbackup 2011-05-10 17:57:58 +02:00
Mark Nielsen
be85390109 Adding moodle_backup.xml generation and updating course structure step 2011-05-10 17:57:58 +02:00
Mark Nielsen
8e2c53665e Adding basic block instance conversion 2011-05-10 17:57:58 +02:00
Mark Nielsen
5aee1af3f1 Adding plugin abstract class and adding a step to activities to generate their module.xml 2011-05-10 17:57:57 +02:00
Mark Nielsen
7c9d2927b8 Cleanup from last commit, just wanted prototype code to be saved to VCS 2011-05-10 17:57:57 +02:00
Mark Nielsen
72c089f117 Adding in activity support and adding base forum classes as proof of concept 2011-05-10 17:57:57 +02:00
Mark Nielsen
534d4294a4 Section conversion 2011-05-10 17:57:57 +02:00
Mark Nielsen
30a4a49421 Figured out how to get the final task to work properly 2011-05-10 17:57:56 +02:00
Mark Nielsen
7125544864 Adding to moodle1 abstract structured step 2011-05-10 17:57:56 +02:00
Mark Nielsen
d2c32ec8a1 A start at a moodle1 abstract structured step 2011-05-10 17:57:56 +02:00
Mark Nielsen
be145927c5 Creating stepslib.php and taskslib.php 2011-05-10 17:57:55 +02:00
Mark Nielsen
56bd1ab0e1 Added use of get_contextid and fixed some problems 2011-05-10 17:57:55 +02:00
Mark Nielsen
970bc1f3e0 Adding root and final tasks 2011-05-10 17:57:53 +02:00