AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** @package report_overviewstats* @copyright 2013 David Mudrak <david@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();/*** Reports various users related charts and figures*/class report_overviewstats_chart_courses extends report_overviewstats_chart {/*** @return array*/public function get_content() {global $OUTPUT;$this->prepare_data();$title = get_string('chart-courses', 'report_overviewstats');$titlepercategory = get_string('chart-courses-percategory', 'report_overviewstats');$percategorydata = new html_table();$percategorydata->head = array(get_string('chart-courses-percategory-categoryname', 'report_overviewstats'),get_string('chart-courses-percategory-coursesrecursive', 'report_overviewstats'),get_string('chart-courses-percategory-coursesown', 'report_overviewstats'),);foreach ($this->data['percategory'] as $catdata) {$percategorydata->data[] = new html_table_row(array($catdata['categoryname'],$catdata['coursesrecursive'],$catdata['coursesown'],));}$titlesizes = sprintf('%s %s', get_string('chart-courses-sizes', 'report_overviewstats'),$OUTPUT->help_icon('chart-courses-sizes', 'report_overviewstats'));return array($title => array($titlepercategory => html_writer::tag('div',html_writer::table($percategorydata),array('id' => 'chart_courses_percategory','class' => 'simple_data_table',)),$titlesizes => html_writer::tag('div', '', array('id' => 'chart_courses_sizes','class' => 'chartplaceholder','style' => 'min-height: 300px;',)),));}/*** @see parent*/public function inject_page_requirements(moodle_page $page) {$this->prepare_data();$page->requires->yui_module('moodle-report_overviewstats-charts','M.report_overviewstats.charts.courses.init',array($this->data));}/*** Prepares data to report*/protected function prepare_data() {global $DB;if (!is_null($this->data)) {return;}// Number of courses per category.$cats = core_course_category::make_categories_list();$this->data['percategory'] = array();$total = 0;foreach ($cats as $catid => $catname) {$cat = core_course_category::get($catid);$coursesown = $cat->get_courses_count();$total += $coursesown;$this->data['percategory'][] = array('categoryname' => $catname,'coursesrecursive' => $cat->get_courses_count(array('recursive' => true)),'coursesown' => $coursesown,);}$this->data['percategory'][] = array('categoryname' => html_writer::tag('strong', get_string('total')),'coursesrecursive' => '','coursesown' => html_writer::tag('strong', $total),);// Distribution graph of number of activities per course.$sql = "SELECT course, COUNT(id) AS modulesFROM {course_modules}GROUP BY course";$rs = $DB->get_recordset_sql($sql);$max = 0;$data = array();$this->data['sizes'] = array();foreach ($rs as $record) {$distributiongroup = floor($record->modules / 5); // 0 for 0-4, 1 for 5-9, 2 for 10-14 etc.if (!isset($data[$distributiongroup])) {$data[$distributiongroup] = 1;} else {$data[$distributiongroup]++;}if ($distributiongroup > $max) {$max = $distributiongroup;}}$rs->close();for ($i = 0; $i <= $max; $i++) {if (!isset($data[$i])) {$data[$i] = 0;}}ksort($data);foreach ($data as $distributiongroup => $courses) {$distributiongroupname = sprintf("%d-%d", $distributiongroup * 5, $distributiongroup * 5 + 4);$this->data['sizes'][] = array('course_size' => $distributiongroupname,'courses' => $courses,);}}}