PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/report/eventlist/classes/renderer.php

https://gitlab.com/JrLucena/moodle
PHP | 175 lines | 106 code | 24 blank | 45 comment | 17 complexity | b64c5519c3a4d31277042851e24cc15d MD5 | raw file
  1. <?php
  2. // This file is part of Moodle - http://moodle.org/
  3. //
  4. // Moodle is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // Moodle is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License
  15. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
  16. /**
  17. * Event report renderer.
  18. *
  19. * @package report_eventlist
  20. * @copyright 2014 Adrian Greeve <adrian@moodle.com>
  21. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  22. */
  23. defined('MOODLE_INTERNAL') || die();
  24. /**
  25. * Renderer for event report.
  26. *
  27. * @package report_eventlist
  28. * @copyright 2014 Adrian Greeve <adrian@moodle.com>
  29. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  30. */
  31. class report_eventlist_renderer extends plugin_renderer_base {
  32. /**
  33. * Renders the event list page with filter form and datatable.
  34. *
  35. * @param eventfilter_form $form Event filter form.
  36. * @param array $tabledata An array of event data to be used by the datatable.
  37. * @return string HTML to be displayed.
  38. */
  39. public function render_event_list($form, $tabledata) {
  40. global $PAGE;
  41. $title = get_string('pluginname', 'report_eventlist');
  42. // Header.
  43. $html = $this->output->header();
  44. $html .= $this->output->heading($title);
  45. // Form.
  46. ob_start();
  47. $form->display();
  48. $html .= ob_get_contents();
  49. ob_end_clean();
  50. $PAGE->requires->yui_module('moodle-report_eventlist-eventfilter', 'Y.M.report_eventlist.EventFilter.init',
  51. array(array('tabledata' => $tabledata)));
  52. $PAGE->requires->strings_for_js(array(
  53. 'eventname',
  54. 'component',
  55. 'action',
  56. 'crud',
  57. 'edulevel',
  58. 'affectedtable',
  59. 'dname',
  60. 'legacyevent',
  61. 'since'
  62. ), 'report_eventlist');
  63. $html .= html_writer::start_div('report-eventlist-data-table', array('id' => 'report-eventlist-table'));
  64. $html .= html_writer::end_div();
  65. $html .= $this->output->footer();
  66. return $html;
  67. }
  68. /**
  69. * Event detail renderer.
  70. *
  71. * @param array $observerlist A list of observers that consume this event.
  72. * @param array $eventinformation A list of information about the event.
  73. * @return string HTML to be displayed.
  74. */
  75. public function render_event_detail($observerlist, $eventinformation) {
  76. global $PAGE;
  77. $titlehtml = $this->output->header();
  78. $titlehtml .= $this->output->heading($eventinformation['title']);
  79. $html = html_writer::start_tag('dl', array('class' => 'list'));
  80. $explanation = nl2br($eventinformation['explanation']);
  81. $html .= html_writer::tag('dt', get_string('eventexplanation', 'report_eventlist'));
  82. $html .= html_writer::tag('dd', $explanation);
  83. if (isset($eventinformation['crud'])) {
  84. $html .= html_writer::tag('dt', get_string('crud', 'report_eventlist'));
  85. $html .= html_writer::tag('dd', $eventinformation['crud']);
  86. }
  87. if (isset($eventinformation['edulevel'])) {
  88. $html .= html_writer::tag('dt', get_string('edulevel', 'report_eventlist'));
  89. $html .= html_writer::tag('dd', $eventinformation['edulevel']);
  90. }
  91. if (isset($eventinformation['objecttable'])) {
  92. $html .= html_writer::tag('dt', get_string('affectedtable', 'report_eventlist'));
  93. $html .= html_writer::tag('dd', $eventinformation['objecttable']);
  94. }
  95. if (isset($eventinformation['legacyevent'])) {
  96. $html .= html_writer::tag('dt', get_string('legacyevent', 'report_eventlist'));
  97. $html .= html_writer::tag('dd', $eventinformation['legacyevent']);
  98. }
  99. if (isset($eventinformation['parentclass'])) {
  100. $url = new moodle_url('eventdetail.php', array('eventname' => $eventinformation['parentclass']));
  101. $html .= html_writer::tag('dt', get_string('parentevent', 'report_eventlist'));
  102. $html .= html_writer::tag('dd', html_writer::link($url, $eventinformation['parentclass']));
  103. }
  104. if (isset($eventinformation['abstract'])) {
  105. $html .= html_writer::tag('dt', get_string('abstractclass', 'report_eventlist'));
  106. $html .= html_writer::tag('dd', get_string('yes', 'report_eventlist'));
  107. }
  108. if (isset($eventinformation['typeparameter'])) {
  109. $html .= html_writer::tag('dt', get_string('typedeclaration', 'report_eventlist'));
  110. foreach ($eventinformation['typeparameter'] as $typeparameter) {
  111. $html .= html_writer::tag('dd', $typeparameter);
  112. }
  113. }
  114. if (isset($eventinformation['otherparameter'])) {
  115. $html .= html_writer::tag('dt', get_string('othereventparameters', 'report_eventlist'));
  116. foreach ($eventinformation['otherparameter'] as $otherparameter) {
  117. $html .= html_writer::tag('dd', $otherparameter);
  118. }
  119. }
  120. // List observers consuming this event if there are any.
  121. if (!empty($observerlist)) {
  122. $html .= html_writer::tag('dt', get_string('relatedobservers', 'report_eventlist'));
  123. foreach ($observerlist as $observer) {
  124. if ($observer->plugin == 'core') {
  125. $html .= html_writer::tag('dd', $observer->plugin);
  126. } else {
  127. $manager = get_string_manager();
  128. $pluginstring = $observer->plugintype . '_' . $observer->plugin;
  129. if ($manager->string_exists('pluginname', $pluginstring)) {
  130. if (!empty($observer->parentplugin)) {
  131. $string = get_string('pluginname', $pluginstring) . ' (' . $observer->parentplugin
  132. . ' ' . $pluginstring . ')';
  133. } else {
  134. $string = get_string('pluginname', $pluginstring) . ' (' . $pluginstring . ')';
  135. }
  136. } else {
  137. $string = $observer->plugintype . ' ' . $observer->plugin;
  138. }
  139. $html .= html_writer::tag('dd', $string);
  140. }
  141. }
  142. }
  143. $html .= html_writer::end_div();
  144. $html .= html_writer::end_tag('dl');
  145. $pagecontent = new html_table();
  146. $pagecontent->data = array(array($html));
  147. $pagehtml = $titlehtml . html_writer::table($pagecontent);
  148. $pagehtml .= $this->output->footer();
  149. return $pagehtml;
  150. }
  151. }