loginzone.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. // This file is part of the Sloodle project (www.sloodle.org)
  3. /**
  4. * This page allows users to get/check their LoginZone allocation.
  5. * Should be directly accessed as an interface script.
  6. *
  7. * @package sloodle
  8. * @copyright Copyright (c) 2008 Sloodle (various contributors)
  9. * @license http://www.gnu.org/licenses/gpl-3.0.html GNU GPL v3
  10. *
  11. * @contributor Peter R. Bloomfield
  12. *
  13. */
  14. /** Sloodle/Moodle configuration script. */
  15. require_once('../init.php');
  16. /** Main Sloodle API. */
  17. require_once(SLOODLE_LIBROOT.'/sloodle_session.php');
  18. // Fetch our request parameters
  19. $id = optional_param('id', 0, PARAM_INT); // Course Module instance ID
  20. // Attempt to fetch the course module instance
  21. if ($id) {
  22. if (!$course = sloodle_get_record('course', 'id', $id)) {
  23. error('Could not find course');
  24. }
  25. } else {
  26. error('Must specify a course ID');
  27. }
  28. // Get the Sloodle course data
  29. $sloodle_course = new SloodleCourse();
  30. if (!$sloodle_course->load($course)) error(get_string('failedcourseload','sloodle'));
  31. // Ensure that the user is logged-in to this course
  32. require_login($course->id);
  33. $course_context = get_context_instance(CONTEXT_COURSE, $course->id);
  34. // Do not allow guest access
  35. if (isguestuser()) {
  36. error(get_string('noguestaccess', 'sloodle'));
  37. exit();
  38. }
  39. // This is really a dummy Sloodle Session
  40. $sloodle = new SloodleSession(false);
  41. $sloodle->user->load_user($USER->id);
  42. $has_avatar = $sloodle->user->load_linked_avatar();
  43. // Log the view
  44. add_to_log($course->id, 'sloodle', 'view loginzone', "mod/sloodle/classroom/loginzone.php?id={$course->id}", "$course->id");
  45. // Display the page header
  46. $navigation = "<a href=\"{$CFG->wwwroot}/mod/sloodle/classroom/loginzone.php?id={$course->id}\">".get_string('loginzone','sloodle')."</a>";
  47. sloodle_print_header_simple(get_string('loginzone','sloodle'), "&nbsp;", $navigation, "", "", true, '', navmenu($course));
  48. echo '<h1 style="text-align:center;">'.get_string('loginzone','sloodle').'</h1>';
  49. //------------------------------------------------------
  50. // Loginzone information
  51. sloodle_print_box_start('generalbox boxaligncenter boxwidthnormal');
  52. echo '<div style="text-align:center;"><h3>'.get_string('loginzonedata','sloodle').'</h3>';
  53. // Does the user have an avatar?
  54. if ($has_avatar) {
  55. sloodle_print_box_start('generalbox boxaligncenter boxwidthwide');
  56. echo get_string('loginzone:alreadyregistered','sloodle').'<br><br>';
  57. echo "<a href=\"{$CFG->wwwroot}/mod/sloodle/view.php?_type=user&amp;id={$USER->id}&course={$course->id}\">".get_string('viewmyavatar', 'sloodle')."</a><br>\n";
  58. sloodle_print_box_end();
  59. }
  60. // Check we have all the data we need
  61. $data_error = array();
  62. if ($sloodle_course->get_loginzone_position() == '') $data_error[] = get_string('position','sloodle');
  63. if ($sloodle_course->get_loginzone_size() == '') $data_error[] = get_string('size','sloodle');
  64. if ($sloodle_course->get_loginzone_region() == '') $data_error[] = get_string('region','sloodle');
  65. // Do we have all the data?
  66. if (count($data_error) > 0) {
  67. // No - display the error, and stop
  68. echo '<span style="font-weight:bold;color:red;">'.get_string('loginzone:datamissing','sloodle').'</span><br><i>(';
  69. $isfirst = true;
  70. foreach ($data_error as $de) {
  71. if ($isfirst) $isfirst = false;
  72. else echo ", ";
  73. echo "$de";
  74. }
  75. echo ')</i><br><br>';
  76. print_string('loginzone:mayneedrez','sloodle');
  77. sloodle_print_box_end();
  78. sloodle_print_footer();
  79. exit();
  80. }
  81. // Store a string indicating the time/date of the last loginzone update
  82. $lastupdated = '('.get_string('unknown','sloodle').')';
  83. if ($sloodle_course->get_loginzone_time_updated() > 0) $lastupdated = date('Y-m-d H:i:s', $sloodle_course->get_loginzone_time_updated());
  84. sloodle_print_box_start('generalbox boxaligncenter boxwidthnarrow');
  85. echo get_string('position','sloodle').': '.$sloodle_course->get_loginzone_position().'<br>';
  86. echo get_string('size','sloodle').': '.$sloodle_course->get_loginzone_size().'<br>';
  87. echo get_string('region','sloodle').': '.$sloodle_course->get_loginzone_region().'<br>';
  88. echo get_string('lastupdated','sloodle').': '.$lastupdated.'<br>';
  89. sloodle_print_box_end();
  90. echo '<br>';
  91. // How long ago was the loginzone rezzed?
  92. $time_difference = time() - $sloodle_course->get_loginzone_time_updated();
  93. if ($time_difference > 1800) {
  94. echo '<span style="font-weight:bold;color:red;">'.get_string('loginzone:olddata','sloodle').'</span><br>';
  95. echo get_string('loginzone:mayneedrez','sloodle').'<br><br>';
  96. }
  97. // If the user already had an avatar, then there's nothing else to do
  98. if ($has_avatar) {
  99. sloodle_print_box_end();
  100. sloodle_print_footer();
  101. exit();
  102. }
  103. // Make sure the user is allowed to register an avatar
  104. require_capability('mod/sloodle:registeravatar', get_context_instance(CONTEXT_SYSTEM));
  105. // Has a new allocation been requested?
  106. if (isset($_REQUEST['allocate_loginzone'])) {
  107. // Yes - generate one
  108. if ($sloodle_course->generate_loginzone_allocation($sloodle->user)) {
  109. echo '<span style="font-weight:bold;color:green;">'.get_string('loginzone:allocationsucceeded','sloodle').'</span><br>';
  110. echo get_string('loginzone:expirynote','sloodle').'<br>';
  111. } else {
  112. echo get_string('loginzone:allocationfailed','sloodle').'<br>';
  113. }
  114. echo '<br>';
  115. }
  116. // Does the user already have a loginzone?
  117. $alloc = $sloodle_course->get_loginzone_allocation($sloodle->user);
  118. if ($alloc) {
  119. // Yes - show the teleport link
  120. echo '<span style="font-size:150%; font-weight:bold;">';
  121. echo '<a href="'.$alloc.'">'.get_string('loginzone:teleport','sloodle').'</a>';
  122. echo '</span><br><br>';
  123. } else {
  124. echo '<span style="color:orange; font-weight:bold;">';
  125. print_string('loginzone:needallocation','sloodle');
  126. echo '</span><br><br>';
  127. }
  128. // Create a form
  129. echo "<br><form action=\"loginzone.php\" method=\"GET\">\n";
  130. echo "<input type=\"hidden\" name=\"id\" value=\"{$course->id}\">\n";
  131. echo "<input type=\"hidden\" name=\"allocate_loginzone\" value=\"true\">\n";
  132. // Let the user opt to generate a new LoginZone allocation
  133. echo "<input type=\"submit\" value=\"".get_string('loginzone:newallocation','sloodle')."\"/>\n";
  134. // Close the form
  135. echo "</form>\n";
  136. echo '</div>';
  137. sloodle_print_box_end();
  138. //------------------------------------------------------
  139. sloodle_print_footer($course);
  140. ?>