update_rezzer_contents.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. /** Grab the Sloodle/Moodle configuration. */
  3. require_once('../../../init.php');
  4. /** Include the Sloodle PHP API. */
  5. /** Sloodle core library functionality */
  6. require_once(SLOODLE_DIRROOT.'/lib.php');
  7. /** General Sloodle functions. */
  8. require_once(SLOODLE_LIBROOT.'/io.php');
  9. /** Sloodle course data. */
  10. require_once(SLOODLE_LIBROOT.'/course.php');
  11. require_once(SLOODLE_LIBROOT.'/layout_profile.php');
  12. require_once(SLOODLE_LIBROOT.'/active_object.php');
  13. require_once(SLOODLE_LIBROOT.'/user.php');
  14. require_once(SLOODLE_LIBROOT.'/object_configs.php');
  15. require_once '../../../lib/json/json_encoding.inc.php';
  16. $controllerid = optional_param('controllerid', 0, PARAM_INT);
  17. // TODO: What should this be? Probably not 1...
  18. $controller_context = get_context_instance( CONTEXT_MODULE, $controllerid);
  19. $can_use_layouts = has_capability('mod/sloodle:uselayouts', $controller_context);
  20. if (!$can_use_layouts) {
  21. //include('../../../login/shared_media/index.php');
  22. error_output( 'Permission denied');
  23. }
  24. $layoutid = optional_param('layoutid', 0, PARAM_INT);
  25. if (!$layoutid) {
  26. error_output( 'Layout ID missing');
  27. }
  28. $layout = new SloodleLayout();
  29. if (!$layout->load( $layoutid )) {
  30. error_output('Could not load layout');
  31. }
  32. if (!$courseid = $layout->course) {
  33. error_output('Could not get courseid from layout');
  34. }
  35. $controllerid = optional_param('controllerid', 0, PARAM_INT);
  36. $controller_context = get_context_instance( CONTEXT_MODULE, $controllerid);
  37. if (!has_capability('mod/sloodle:uselayouts', $controller_context)) {
  38. error_output( 'Access denied');
  39. }
  40. include('index.template.php');
  41. $html_list_items = array();
  42. $add_object_forms = array();
  43. $edit_object_forms = array();
  44. $rezzer = new SloodleActiveObject();
  45. $sloodleuser = new SloodleUser();
  46. $sloodleuser->user_data = $USER;
  47. if (!$controllerid = optional_param('controllerid', 0, PARAM_INT)) {
  48. error_output( 'Controller ID missing' );
  49. }
  50. if ( !$rezzeruuid = optional_param('rezzeruuid', '', PARAM_SAFEDIR) ) {
  51. error_output( 'Rezzer UUID missing or incorrect' );
  52. }
  53. if ( !$rezzer->loadByUUID($rezzeruuid) ) {
  54. error_output( 'Rezzer could not be loaded' );
  55. }
  56. $objects_in_rezzer = $rezzer->listInventory( $include_sloodle = false );
  57. if ( $objects_in_rezzer === FALSE) {
  58. error_output('Fetching inventory failed');
  59. }
  60. //$objects_in_rezzer = array('Dummy Object 1', 'Dummy Object 2', 'Dummy Object 3');
  61. foreach($objects_in_rezzer as $objname) {
  62. $e = SloodleLayoutEntry::ForConfig( $objname, $is_dummy = true);
  63. // If we already know about the object, don't add it again.
  64. if (SloodleObjectConfig::ForObjectName($objname, false)) {
  65. continue;
  66. }
  67. $config = SloodleObjectConfig::ForNonSloodleObjectWithName( $objname );
  68. ob_start();
  69. //print_rezzable_item_li( $e, $courseid, $controllerid, $layout, $isrezzed = false);
  70. $element_id = print_add_object_item_li( $objname, $config, $courseid, $controllerid, $layout);
  71. $html_list_items[$element_id] = ob_get_clean();
  72. ob_start();
  73. $element_id = print_add_object_form( $config, $courseid, $controllerid, $layout, $objname, $rezzeruuid);
  74. $add_object_forms[$element_id] = ob_get_clean();
  75. ob_start();
  76. $element_id = print_config_form( $e, $config, $courseid, $controllerid, $layout->id, 'misc', $rezzeruuid);
  77. $edit_object_forms[$element_id] = ob_get_clean();
  78. }
  79. $content = array(
  80. 'result' => 'refreshed',
  81. //'layoutname' => $layoutname, // TODO: Get this from the object_configs
  82. //'layoutid' => $layoutid,
  83. //'courseid' => $courseid,
  84. 'html_list_items' => $html_list_items,
  85. 'add_object_forms' => $add_object_forms,
  86. 'edit_object_forms' => $edit_object_forms
  87. );
  88. print json_encode($content);
  89. exit;
  90. $result = 'configured';
  91. $content = array(
  92. 'result' => $result,
  93. 'error' => $error,
  94. );
  95. function error_output($error) {
  96. $content = array(
  97. 'result' => 'failed',
  98. 'error' => $error,
  99. );
  100. print json_encode($content);
  101. exit;
  102. }
  103. ?>