backup_sloodle_stepslib.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. /**
  3. * Define the complete sloodle structure for backup, with file and id annotations
  4. */
  5. class backup_sloodle_activity_structure_step extends backup_activity_structure_step {
  6. protected function define_structure() {
  7. // To know if we are including userinfo
  8. $userinfo = $this->get_setting_value('userinfo');
  9. // Define each element separated
  10. $sloodle = new backup_nested_element('sloodle',
  11. array('id'),
  12. array(
  13. 'course',
  14. 'type',
  15. 'name',
  16. 'intro',
  17. 'introformat',
  18. 'timecreated',
  19. 'timemodified'
  20. )
  21. );
  22. $trackers = new backup_nested_element('trackers');
  23. $tracker = new backup_nested_element('tracker',
  24. array('id'),
  25. array(
  26. 'sloodleid',
  27. )
  28. );
  29. $distributors = new backup_nested_element('distributors');
  30. $distributor = new backup_nested_element('distributor',
  31. array('id'),
  32. array(
  33. 'sloodleid',
  34. 'channel',
  35. 'timeupdated'
  36. )
  37. );
  38. $presenters = new backup_nested_element('presenters');
  39. $presenter = new backup_nested_element('presenter',
  40. array('id'),
  41. array(
  42. 'sloodleid',
  43. 'framewidth',
  44. 'frameheight'
  45. )
  46. );
  47. $presenterentries = new backup_nested_element('presenter_entries');
  48. $presenterentry = new backup_nested_element('presenter_entry',
  49. array('id'),
  50. array(
  51. 'sloodleid',
  52. 'name',
  53. 'source',
  54. 'type',
  55. 'ordering'
  56. )
  57. );
  58. $controllers = new backup_nested_element('controllers');
  59. $controller = new backup_nested_element('controller',
  60. array('id'),
  61. array(
  62. 'sloodleid',
  63. 'enabled',
  64. 'password'
  65. )
  66. );
  67. $layouts = new backup_nested_element('layouts');
  68. $layout = new backup_nested_element('layout',
  69. array('id'),
  70. array(
  71. 'course',
  72. 'name',
  73. 'timeupdated',
  74. 'controllerid'
  75. )
  76. );
  77. $layoutentries = new backup_nested_element('layout_entries');
  78. $layoutentry = new backup_nested_element('layout_entry',
  79. array('id'),
  80. array(
  81. 'layout',
  82. 'name',
  83. 'position',
  84. 'rotation'
  85. )
  86. );
  87. $layoutentryconfigs = new backup_nested_element('layout_entry_configs');
  88. $layoutentryconfig = new backup_nested_element('layout_entry_config',
  89. array('id'),
  90. array(
  91. 'layout_entry',
  92. 'name',
  93. 'value'
  94. )
  95. );
  96. $sloodlecurrencytypes = new backup_nested_element('currency_types');
  97. $sloodlecurrencytype = new backup_nested_element('currency_type',
  98. array('id'),
  99. array(
  100. 'name',
  101. 'timemodified',
  102. 'imageurl',
  103. 'displayorder'
  104. )
  105. );
  106. $sloodleusers = new backup_nested_element('users');
  107. $sloodleuser = new backup_nested_element('user',
  108. array('id'),
  109. array(
  110. 'userid',
  111. 'uuid',
  112. 'avname',
  113. 'profilepic',
  114. 'lastactive'
  115. )
  116. );
  117. $sloodle->add_child($controllers);
  118. $controllers->add_child($controller);
  119. $controller->add_child($layouts);
  120. $layouts->add_child($layout);
  121. $layout->add_child($layoutentries);
  122. $layoutentries->add_child($layoutentry);
  123. $layoutentry->add_child($layoutentryconfigs);
  124. $layoutentryconfigs->add_child($layoutentryconfig);
  125. $distributors->add_child($distributor);
  126. $sloodle->add_child($distributors);
  127. $trackers->add_child($tracker);
  128. $sloodle->add_child($trackers);
  129. $presenterentries->add_child($presenterentry);
  130. $presenter->add_child($presenterentries);
  131. $presenters->add_child($presenter);
  132. $sloodle->add_child($presenters);
  133. if ($userinfo) {
  134. $sloodleusers->add_child($sloodleuser);
  135. $sloodle->add_child($sloodleusers);
  136. }
  137. $sloodlecurrencytypes->add_child($sloodlecurrencytype);
  138. $sloodle->add_child($sloodlecurrencytypes);
  139. // Build the tree
  140. // Define sources
  141. $sloodle->set_source_table('sloodle', array('id' => backup::VAR_ACTIVITYID));
  142. /*
  143. Neither of these tables link directly to a course or controller.
  144. However, they may be referenced by other things that are in a controller, so we can't leave them out.
  145. There will need to be some restore code in the to do something sensible with these on load.
  146. */
  147. $sloodleuser->set_source_table('sloodle_users', array());
  148. $sloodlecurrencytype->set_source_table('sloodle_currency_types', array());
  149. //$sloodleuser->set_source_sql("SELECT * FROM {sloodle_users} ORDER BY id", array());
  150. if ($userinfo) {
  151. }
  152. $distributor->set_source_table('sloodle_distributor', array('sloodleid' => backup::VAR_ACTIVITYID));
  153. $tracker->set_source_table('sloodle_tracker', array('sloodleid' => backup::VAR_ACTIVITYID));
  154. $presenter->set_source_table('sloodle_presenter', array('sloodleid' => backup::VAR_ACTIVITYID));
  155. $presenterentry->set_source_table('sloodle_presenter_entry', array('sloodleid' => backup::VAR_ACTIVITYID));
  156. $controller->set_source_table('sloodle_controller', array('sloodleid' => backup::VAR_ACTIVITYID));
  157. $layout->set_source_table('sloodle_layout', array('controllerid' => backup::VAR_MODID));
  158. $layoutentry->set_source_table('sloodle_layout_entry', array('layout' => backup::VAR_PARENTID));
  159. $layoutentryconfig->set_source_table('sloodle_layout_entry_config', array('layout_entry' => backup::VAR_PARENTID));
  160. /*
  161. $layout->set_source_sql(
  162. 'SELECT * FROM {sloodle_layout} WHERE controllerid = ?',
  163. array(backup::VAR_MODID)
  164. );
  165. */
  166. // Define id annotations
  167. $sloodleuser->annotate_ids('sloodle_user', 'userid');
  168. // Define file annotations
  169. //mod_sloodle | presenter | 8
  170. $presenter->annotate_files('mod_sloodle', 'presenter', null);
  171. // Return the root element (sloodle), wrapped into standard activity structure
  172. return $this->prepare_activity_structure($sloodle);
  173. }
  174. }