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/>./*** This block allows the user to give the course a rating, which* is displayed in a custom table (<prefix>_block_rate_course).** @package block* @subpackage rate_course* @copyright 2009 Jenny Gray* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later** Code was Rewritten for Moodle 2.X By Atar + Plus LTD for Comverse LTD.* @copyright © 2011 Comverse LTD.* @license http://www.gnu.org/copyleft/gpl.html GNU Public License*/class block_rate_course extends block_list{public function init() {$this->title = get_string('courserating', 'block_rate_course');}public function applicable_formats() {return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);}public function has_config() {return true; // Config only for review part.}public function get_content() {global $CFG, $COURSE, $USER, $DB, $OUTPUT, $PAGE;if ($this->content !== null) {return $this->content;}$this->content = new stdClass;$this->content->items = array();$this->content->icons = array();if (substr($PAGE->pagetype, 0, 11) == 'course-view') {$qmod = $DB->get_record('modules', array('name'=>'questionnaire'));if ($qmod && ($qmod->visible=='1') && !empty($CFG->block_rate_course_quest)) {// Get the Give a Review instance id.$questionnaire = $DB->get_record_sql("SELECT id,sid FROM {questionnaire} WHERE name = ? AND course = ?",array($CFG->block_rate_course_quest, $COURSE->id));if ($questionnaire) {$url = new moodle_url('/mod/questionnaire/report.php',array('instance'=>$questionnaire->id, 'sid'=>$questionnaire->sid));$this->content->items[] = $OUTPUT->action_link($url, get_string('viewreview', 'block_rate_course'));$this->content->icons[] = $OUTPUT->pix_icon('review', get_string('viewreview', 'block_rate_course'),'block_rate_course', array('class'=>'icon'));}}$this->content->icons[] = $OUTPUT->pix_icon('star', get_string('giverating', 'block_rate_course'),'block_rate_course', array('class'=>'icon'));$url = new moodle_url('/blocks/rate_course/rate.php', array('courseid'=>$COURSE->id));$this->content->items[] = $OUTPUT->action_link($url, get_string('giverating', 'block_rate_course'));$this->content->items[] = '';$this->content->icons[] = $OUTPUT->pix_icon('spacer', '');// Output current rating.$this->content->footer = '<div class="centered">'.$this->display_rating($COURSE->id, true).'</div>';} else {if ($this->page->user_is_editing()) {$this->content->items[] = get_string('editingsitehome', 'block_rate_course');}}return $this->content;}/*** Checks whether any version of the course already exists.* @param int $courseid The ID of the course.* @return int rating.*/public function get_rating($courseid) {global $CFG, $DB;$sql = "SELECT AVG(rating) AS avgFROM {block_rate_course}WHERE course = $courseid";$avg = -1;if ($avgrec = $DB->get_record_sql($sql)) {$avg = $avgrec->avg * 2; // Double it for half star scores.// Now round it up or down.$avg = round($avg);}return $avg;}/*** Outputs the current rating. Can be called outside the block.* @param int $courseid the ID of the course* @param bool $return return the string (true) or echo it immediately (false)* @return string the html to output graphic, alt text and number of ratings*/public function display_rating($courseid, $return=false) {global $CFG, $DB;$count = $DB->count_records('block_rate_course', array('course'=>$courseid));$ratedby = '';if ($count > 0) {$ratedby = get_string ('rating_users', 'block_rate_course', $count);}$numstars = $this->get_rating( $courseid );if ($numstars == -1) {$alt = '';} else if ($numstars == 0) {$alt = get_string( 'rating_alt0', 'block_rate_course' );} else {$alt = get_string( 'rating_altnum', 'block_rate_course', $numstars/2 );}$res = '<img src="'.$CFG->wwwroot.'/blocks/rate_course/pix/rating_graphic.php?courseid='.$courseid.'" alt="'.$alt.'"/><br/>'.$ratedby;if ($return) {return $res;}echo $res;}public function show_rating($courseid) {global $CFG, $DB;// Pinned block check once per session for performance.if (!isset($_SESSION['starsenabled'])) {$_SESSION['starsenabled'] = $DB->get_field('block', 'visible',array('name'=>'rate_course'));if ($_SESSION['starsenabled'] && !isset($_SESSION['starspinned'])) {$_SESSION['starspinned'] = $DB->get_record_sql("SELECT * FROM {block_pinned} pJOIN {block} b ON b.id = p.blockidWHERE pagetype = ? AND p.visible = ? AND b.name = ?",array('course-view', 1, 'rate_course'));}}if (!$_SESSION['starsenabled']) {return false;}if ($_SESSION['starspinned']) {return true;}return $DB->get_record_sql("SELECT * FROM {block_instance} iJOIN {block} b ON b.id = i.blockidWHERE pageid = ? and b.name = ?", array($courseid, 'rate_course'));}}