From: skodak Date: Thu, 27 Nov 2008 20:30:14 +0000 (+0000) Subject: MDL-17372 course reports: Added full plugin support for course reports X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=95f04461477db78143450c031da806864b41b7d4;p=moodle.git MDL-17372 course reports: Added full plugin support for course reports --- diff --git a/course/report.php b/course/report.php index 9cf29228a9..21e3632d27 100644 --- a/course/report.php +++ b/course/report.php @@ -9,9 +9,9 @@ print_error("That's an invalid course id"); } - require_login($course->id); + require_login($course); - $context=get_context_instance(CONTEXT_COURSE, $course->id); + $context = get_context_instance(CONTEXT_COURSE, $course->id); require_capability('moodle/site:viewreports', $context); $strreports = get_string('reports'); @@ -26,10 +26,16 @@ foreach ($directories as $directory) { $pluginfile = $CFG->dirroot.'/course/report/'.$directory.'/mod.php'; if (file_exists($pluginfile)) { - echo '
'; - //echo $pluginfile; - include_once($pluginfile); // Fragment for listing - echo '
'; + ob_start(); + include($pluginfile); // Fragment for listing + $html = ob_get_contents(); + ob_end_clean(); + // add div only if plugin accessible + if ($html !== '') { + echo '
'; + echo $html; + echo '
'; + } } } diff --git a/course/report/log/mod.php b/course/report/log/mod.php index 6673a1c307..e9470d8dec 100644 --- a/course/report/log/mod.php +++ b/course/report/log/mod.php @@ -7,13 +7,14 @@ require_once($CFG->dirroot.'/course/lib.php'); require_once($CFG->dirroot.'/course/report/log/lib.php'); + if (has_capability('moodle/site:viewreports', $context)) { + print_heading(get_string('chooselogs') .':'); - print_heading(get_string('chooselogs') .':'); + print_log_selector_form($course); - print_log_selector_form($course); - - print_heading(get_string('chooselivelogs') .':'); - echo '

'; - link_to_popup_window('/course/report/log/live.php?id='. $course->id,'livelog', get_string('livelogs'), 500, 800); - echo '

'; + print_heading(get_string('chooselivelogs') .':'); + echo '

'; + link_to_popup_window('/course/report/log/live.php?id='. $course->id,'livelog', get_string('livelogs'), 500, 800); + echo '

'; + } ?> \ No newline at end of file diff --git a/course/report/outline/mod.php b/course/report/outline/mod.php index 4dfc569fcf..042e57b0f0 100644 --- a/course/report/outline/mod.php +++ b/course/report/outline/mod.php @@ -4,9 +4,11 @@ die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page } - echo '

'; - $activityreport = get_string( 'activityreport' ); - echo "wwwroot}/course/report/outline/index.php?id={$course->id}\">"; - echo "$activityreport\n"; - echo '

'; + if (has_capability('moodle/site:viewreports', $context)) { + echo '

'; + $activityreport = get_string( 'activityreport' ); + echo "wwwroot}/course/report/outline/index.php?id={$course->id}\">"; + echo "$activityreport\n"; + echo '

'; + } ?> \ No newline at end of file diff --git a/course/report/participation/mod.php b/course/report/participation/mod.php index 22146808d0..77c4472646 100644 --- a/course/report/participation/mod.php +++ b/course/report/participation/mod.php @@ -4,10 +4,11 @@ die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page } - echo '

'; - $participationreport = get_string('participationreport'); - echo "wwwroot}/course/report/participation/index.php?id={$course->id}\">"; - echo "$participationreport\n"; - echo '

'; - + if (has_capability('moodle/site:viewreports', $context)) { + echo '

'; + $participationreport = get_string('participationreport'); + echo "wwwroot}/course/report/participation/index.php?id={$course->id}\">"; + echo "$participationreport\n"; + echo '

'; + } ?> diff --git a/course/report/progress/mod.php b/course/report/progress/mod.php index 94231009c6..5ce896e280 100644 --- a/course/report/progress/mod.php +++ b/course/report/progress/mod.php @@ -4,10 +4,12 @@ die('Direct access to this script is forbidden.'); // It must be included from a Moodle page } - $completion=new completion_info($course); - if ($completion->is_enabled() && has_capability('moodle/course:viewprogress',$context)) { - echo '

'; - echo ''.get_string('completionreport','completion').''; - echo '

'; - } + if (has_capability('moodle/site:viewreports', $context)) { + $completion = new completion_info($course); + if ($completion->is_enabled() && has_capability('moodle/course:viewprogress', $context)) { + echo '

'; + echo ''.get_string('completionreport','completion').''; + echo '

'; + } + } ?> diff --git a/course/report/stats/mod.php b/course/report/stats/mod.php index 1f305d42c4..a57ee59b89 100644 --- a/course/report/stats/mod.php +++ b/course/report/stats/mod.php @@ -3,14 +3,16 @@ if (!defined('MOODLE_INTERNAL')) { die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page } - - if (!empty($CFG->enablestats)) { - echo '

'; - echo ''.get_string('stats').''; - echo '

'; - } else { - echo '

'; - echo get_string('statsoff'); - echo '

'; + + if (has_capability('moodle/site:viewreports', $context)) { + if (!empty($CFG->enablestats)) { + echo '

'; + echo ''.get_string('stats').''; + echo '

'; + } else { + echo '

'; + echo get_string('statsoff'); + echo '

'; + } } ?> diff --git a/lib/accesslib.php b/lib/accesslib.php index 9560af3fac..354361a596 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -3061,6 +3061,10 @@ function load_capability_def($component) { $defpath = $CFG->dirroot.'/mod/quiz/report/'.$compparts[1].'/db/access.php'; $varprefix = $compparts[0].'_'.$compparts[1]; + } else if ($compparts[0] == 'coursereport') { + $defpath = $CFG->dirroot.'/course/report/'.$compparts[1].'/db/access.php'; + $varprefix = $compparts[0].'_'.$compparts[1]; + } else { $defpath = $CFG->dirroot.'/'.$component.'/db/access.php'; $varprefix = str_replace('/', '_', $component); @@ -3928,6 +3932,10 @@ function get_capability_string($capabilityname) { $string = get_string($stringname, 'gradereport_'.$componentname); break; + case 'coursereport': + $string = get_string($stringname, 'coursereport_'.$componentname); + break; + case 'quizreport': $string = get_string($stringname, 'quiz_'.$componentname); break; @@ -3980,6 +3988,8 @@ function get_component_string($component, $contextlevel) { || preg_match('|^gradeexport/|', $component) || preg_match('|^gradereport/|', $component)) { $string = get_string('gradebook', 'admin'); + } else if (preg_match('|^coursereport/|', $component)) { + $string = get_string('reports'); } else { $string = get_string('course'); } @@ -5557,13 +5567,20 @@ function component_level_changed($cap, $comp, $contextlevel) { $compsa = explode('/', $cap->component); $compsb = explode('/', $comp); - + // list of system reports + if (($compsa[0] == 'report') && ($compsb[0] == 'report')) { + return false; + } // we are in gradebook, still if (($compsa[0] == 'gradeexport' || $compsa[0] == 'gradeimport' || $compsa[0] == 'gradereport') && ($compsb[0] == 'gradeexport' || $compsb[0] == 'gradeimport' || $compsb[0] == 'gradereport')) { return false; } + + if (($compsa[0] == 'coursereport') && ($compsb[0] == 'coursereport')) { + return false; + } } return ($cap->component != $comp || $cap->contextlevel != $contextlevel); diff --git a/lib/adminlib.php b/lib/adminlib.php index 9cfb22f143..027452dc19 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -414,6 +414,9 @@ function upgrade_db($version, $release) { /// Check all message output plugins and upgrade if necessary upgrade_plugins('message','message/output',$return_url); +/// Check all course report plugins and upgrade if necessary + upgrade_plugins('coursereport', 'course/report', $return_url); + /// Check all admin report plugins and upgrade if necessary upgrade_plugins('report', $CFG->admin.'/report', $return_url);