diff --git a/headergame.php b/headergame.php
index 7d1d326..4bf2a0f 100755
--- a/headergame.php
+++ b/headergame.php
@@ -1,82 +1,92 @@
.
- require_once(dirname(__FILE__) . '/../../config.php');
- require_once($CFG->libdir.'/gradelib.php');
- require_once($CFG->dirroot.'/mod/game/locallib.php');
- require_once($CFG->libdir . '/completionlib.php');
+require_once(dirname(__FILE__) . '/../../config.php');
+require_once($CFG->libdir.'/gradelib.php');
+require_once($CFG->dirroot.'/mod/game/locallib.php');
+require_once($CFG->libdir . '/completionlib.php');
- $id = optional_param('id', 0, PARAM_INT); // Course Module ID, or
- $q = optional_param('q', 0, PARAM_INT); // game ID
+$id = optional_param('id', 0, PARAM_INT); // Course Module ID.
+$q = optional_param('q', 0, PARAM_INT); // Game ID.
- if ($id) {
- if (! $cm = get_coursemodule_from_id('game', $id)) {
- print_error('invalidcoursemodule');
- }
- if (! $course = $DB->get_record('course', array('id' => $cm->course))) {
- print_error('coursemisconf');
- }
- if (! $game = $DB->get_record('game', array('id' => $cm->instance))) {
- print_error('invalidcoursemodule');
- }
- } else {
- if (! $game = $DB->get_record('game', array('id' => $q))) {
- print_error('invalidgameid q='.$q, 'game');
- }
- if (! $course = $DB->get_record('course', array('id' => $game->course))) {
- print_error('invalidcourseid');
- }
- if (! $cm = get_coursemodule_from_instance('game', $game->id, $course->id)) {
- print_error('invalidcoursemodule');
- }
+if ($id) {
+ if (!$cm = get_coursemodule_from_id('game', $id)) {
+ print_error('invalidcoursemodule');
}
+ if (! $course = $DB->get_record('course', array('id' => $cm->course))) {
+ print_error('coursemisconf');
+ }
+ if (! $game = $DB->get_record('game', array('id' => $cm->instance))) {
+ print_error('invalidcoursemodule');
+ }
+} else {
+ if (! $game = $DB->get_record('game', array('id' => $q))) {
+ print_error('invalidgameid q='.$q, 'game');
+ }
+ if (!$course = $DB->get_record('course', array('id' => $game->course))) {
+ print_error('invalidcourseid');
+ }
+ if (!$cm = get_coursemodule_from_instance('game', $game->id, $course->id)) {
+ print_error('invalidcoursemodule');
+ }
+}
-/// Check login and get context.
- require_login($course->id, false, $cm);
- $context = game_get_context_module_instance( $cm->id);
- require_capability('mod/game:view', $context);
-
-/// Cache some other capabilites we use several times.
- $canattempt = has_capability('mod/game:attempt', $context);
- $canreviewmine = has_capability('mod/game:reviewmyattempts', $context);
+// Check login and get context.
+require_login($course->id, false, $cm);
+$context = game_get_context_module_instance( $cm->id);
+require_capability('mod/game:view', $context);
-/// Create an object to manage all the other (non-roles) access rules.
- $timenow = time();
- //$accessmanager = new game_access_manager(game::create($game->id, $USER->id), $timenow);
+// Cache some other capabilites we use several times.
+$canattempt = has_capability('mod/game:attempt', $context);
+$canreviewmine = has_capability('mod/game:reviewmyattempts', $context);
-/// If no questions have been set up yet redirect to edit.php
- //if (!$game->questions && has_capability('mod/game:manage', $context)) {
- // redirect($CFG->wwwroot . '/mod/game/edit.php?cmid=' . $cm->id);
- //}
+// Create an object to manage all the other (non-roles) access rules.
+$timenow = time();
-/// Log this request.
- if( game_use_events())
- {
- require( 'classes/event/course_module_viewed.php');
- \mod_game\event\course_module_viewed::viewed($game, $context)->trigger();
- }else
- add_to_log($course->id, 'game', 'view', "view.php?id=$cm->id", $game->id, $cm->id);
+// Log this request.
+if (game_use_events()) {
+ require( 'classes/event/course_module_viewed.php');
+ \mod_game\event\course_module_viewed::viewed($game, $context)->trigger();
+} else {
+ add_to_log($course->id, 'game', 'view', "view.php?id=$cm->id", $game->id, $cm->id);
+}
-/// Initialize $PAGE, compute blocks
- $PAGE->set_url('/mod/game/view.php', array('id' => $cm->id));
+// Initialize $PAGE, compute blocks.
+$PAGE->set_url('/mod/game/view.php', array('id' => $cm->id));
- $edit = optional_param('edit', -1, PARAM_BOOL);
- if ($edit != -1 && $PAGE->user_allowed_editing()) {
- $USER->editing = $edit;
- }
+$edit = optional_param('edit', -1, PARAM_BOOL);
+if ($edit != -1 && $PAGE->user_allowed_editing()) {
+ $USER->editing = $edit;
+}
- // Note: MDL-19010 there will be further changes to printing header and blocks.
- // The code will be much nicer than this eventually.
- $title = $course->shortname . ': ' . format_string($game->name);
+// Note: MDL-19010 there will be further changes to printing header and blocks.
+// The code will be much nicer than this eventually.
+$title = $course->shortname . ': ' . format_string($game->name);
- if ($PAGE->user_allowed_editing() && !empty($CFG->showblocksonmodpages)) {
- $buttons = '
';
- $PAGE->set_button($buttons);
- }
+if ($PAGE->user_allowed_editing() && !empty($CFG->showblocksonmodpages)) {
+ $buttons = '';
+ $PAGE->set_button($buttons);
+}
- $PAGE->set_title($title);
- $PAGE->set_heading($course->fullname);
+$PAGE->set_title($title);
+$PAGE->set_heading($course->fullname);
- echo $OUTPUT->header();
+echo $OUTPUT->header();
diff --git a/mod_form.php b/mod_form.php
index 083be71..1777f0a 100755
--- a/mod_form.php
+++ b/mod_form.php
@@ -1,4 +1,19 @@
-.
+
/**
* Form for creating and modifying a game
*
@@ -7,88 +22,84 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-require_once ($CFG->dirroot.'/course/moodleform_mod.php');
+require_once( $CFG->dirroot.'/course/moodleform_mod.php');
require( 'locallib.php');
class mod_game_mod_form extends moodleform_mod {
-
- function definition() {
- global $CFG, $DB, $COURSE;
+ public function definition() {
+ global $CFG, $DB, $COURSE;
$config = get_config('game');
$mform =& $this->_form;
$id = $this->_instance;
- if(!empty($this->_instance)){
-
- if($g = $DB->get_record('game', array('id' => $id))){
+ if (!empty($this->_instance)) {
+ if ($g = $DB->get_record('game', array('id' => $id))) {
$gamekind = $g->gamekind;
+ } else {
+ print_error('incorrect game');
}
- else{
- print_error('incorrect game');
- }
- }
- else {
+ } else {
$gamekind = required_param('type', PARAM_ALPHA);
}
-
- //Hidden elements
+
+ // Hidden elements.
$mform->addElement('hidden', 'gamekind', $gamekind);
$mform->setDefault('gamekind', $gamekind);
$mform->setType('gamekind', PARAM_ALPHA);
$mform->addElement('hidden', 'type', $gamekind);
$mform->setDefault('type', $gamekind);
$mform->setType('type', PARAM_ALPHA);
-
+
$mform->addElement( 'hidden', 'gameversion', game_get_version());
$mform->setType('gameversion', PARAM_INT);
$mform->addElement('header', 'general', get_string('general', 'form'));
-
- $mform->addElement('text', 'name', 'Name', array('size'=>'64'));
- if (!empty($CFG->formatstringstriptags)){
+
+ $mform->addElement('text', 'name', 'Name', array('size' => '64'));
+ if (!empty($CFG->formatstringstriptags)) {
$mform->setType('name', PARAM_TEXT);
- }
- else{
+ } else {
$mform->setType('name', PARAM_CLEAN);
}
- if( !isset( $g))
+ if (!isset( $g)) {
$mform->setDefault('name', get_string( 'game_'.$gamekind, 'game'));
+ }
$mform->addRule('name', null, 'required', null, 'client');
- $hasglossary = ($gamekind == 'hangman' || $gamekind == 'cross' || $gamekind == 'cryptex' || $gamekind == 'sudoku' || $gamekind == 'hiddenpicture' || $gamekind == 'snakes');
+ $hasglossary = ($gamekind == 'hangman' || $gamekind == 'cross' ||
+ $gamekind == 'cryptex' || $gamekind == 'sudoku' ||
+ $gamekind == 'hiddenpicture' || $gamekind == 'snakes');
$questionsourceoptions = array();
- if($hasglossary)
+ if ($hasglossary) {
$questionsourceoptions['glossary'] = get_string('modulename', 'glossary');
- //if( $gamekind != 'snakes' && $gamekind != 'sudoku' &&
- // $gamekind != 'hiddenpicture') {
- $questionsourceoptions['question'] = get_string('sourcemodule_question', 'game');
- //}
- if( $gamekind != 'bookquiz')
+ }
+ $questionsourceoptions['question'] = get_string('sourcemodule_question', 'game');
+ if ($gamekind != 'bookquiz') {
$questionsourceoptions['quiz'] = get_string('modulename', 'quiz');
- $mform->addElement('select', 'sourcemodule', get_string('sourcemodule','game'), $questionsourceoptions);
+ }
+ $mform->addElement('select', 'sourcemodule', get_string('sourcemodule', 'game'), $questionsourceoptions);
- if($hasglossary){
+ if ($hasglossary) {
$a = array();
- if($recs = $DB->get_records('glossary', array( 'course' => $COURSE->id), 'id,name')){
- foreach($recs as $rec){
+ if ($recs = $DB->get_records('glossary', array( 'course' => $COURSE->id), 'id,name')) {
+ foreach ($recs as $rec) {
$a[$rec->id] = $rec->name;
- }
+ }
}
$mform->addElement('select', 'glossaryid', get_string('sourcemodule_glossary', 'game'), $a);
$mform->disabledIf('glossaryid', 'sourcemodule', 'neq', 'glossary');
- if( count( $a) == 0)
+ if (count( $a) == 0) {
$select = 'glossaryid=-1';
- else if( count( $a) == 1)
+ } else if (count( $a) == 1) {
$select = 'glossaryid='.$rec->id;
- else
- {
+ } else {
$select = '';
- foreach($recs as $rec){
+ foreach ($recs as $rec) {
$select .= ','.$rec->id;
}
$select = 'g.id IN ('.substr( $select, 1).')';
@@ -98,8 +109,8 @@ class mod_game_mod_form extends moodleform_mod {
$a = array();
$a[ ] = '';
$sql = "SELECT gc.id,gc.name,g.name as name2 FROM $table WHERE $select ORDER BY g.name,gc.name";
- if($recs = $DB->get_records_sql( $sql)){
- foreach($recs as $rec){
+ if ($recs = $DB->get_records_sql( $sql)) {
+ foreach ($recs as $rec) {
$a[$rec->id] = $rec->name2.' -> '.$rec->name;
}
}
@@ -107,41 +118,35 @@ class mod_game_mod_form extends moodleform_mod {
$mform->disabledIf('glossarycategoryid', 'sourcemodule', 'neq', 'glossary');
}
-
- //*********************
- // Question Category - Short Answer
-
- if( $gamekind != 'bookquiz'){
+ // Question Category - Short Answer.
+ if ($gamekind != 'bookquiz') {
$context = game_get_context_course_instance( $COURSE->id);
$select = " contextid in ($context->id)";
$a = array();
- if($recs = $DB->get_records_select('question_categories', $select, null, 'id,name')){
- foreach($recs as $rec){
+ if ($recs = $DB->get_records_select('question_categories', $select, null, 'id,name')) {
+ foreach ($recs as $rec) {
$s = $rec->name;
- if(($count = $DB->count_records('question', array( 'category' => $rec->id))) != 0){
+ if (($count = $DB->count_records('question', array( 'category' => $rec->id))) != 0) {
$s .= " ($count)";
}
$a[$rec->id] = $s;
}
}
-
+
$mform->addElement('select', 'questioncategoryid', get_string('sourcemodule_questioncategory', 'game'), $a);
$mform->disabledIf('questioncategoryid', 'sourcemodule', 'neq', 'question');
- //subcategories
+ // Subcategories.
$mform->addElement('selectyesno', 'subcategories', get_string('sourcemodule_include_subcategories', 'game'));
$mform->disabledIf('subcategories', 'sourcemodule', 'neq', 'question');
}
-
- //***********************
- // Quiz Category
-
- if( $gamekind != 'bookquiz'){
+ // Quiz Category.
+ if ($gamekind != 'bookquiz') {
$a = array();
- if( $recs = $DB->get_records('quiz', array( 'course' => $COURSE->id), 'id,name')){
- foreach( $recs as $rec){
+ if ($recs = $DB->get_records('quiz', array( 'course' => $COURSE->id), 'id,name')) {
+ foreach ($recs as $rec) {
$a[$rec->id] = $rec->name;
}
}
@@ -149,80 +154,74 @@ class mod_game_mod_form extends moodleform_mod {
$mform->disabledIf('quizid', 'sourcemodule', 'neq', 'quiz');
}
-
- //***********************
- // Book
- if($gamekind == 'bookquiz'){
+ // Book.
+ if ( $gamekind == 'bookquiz') {
$a = array();
- if($recs = $DB->get_records('book', array( 'course' => $COURSE->id), 'id,name')){
- foreach($recs as $rec){
+ if ($recs = $DB->get_records('book', array( 'course' => $COURSE->id), 'id,name')) {
+ foreach ($recs as $rec) {
$a[$rec->id] = $rec->name;
- }
+ }
}
$mform->addElement('select', 'bookid', get_string('sourcemodule_book', 'game'), $a);
}
-
-//Common settings to all games
- $mform->addElement('text', 'maxattempts', get_string('cross_max_attempts','game'));
- $mform->setType('maxattempts', PARAM_INT);
-//---------------------------------------------------------------------------
-// Grade options
+ // Common settings to all games.
+ $mform->addElement('text', 'maxattempts', get_string('cross_max_attempts', 'game'));
+ $mform->setType('maxattempts', PARAM_INT);
+ // Grade options.
$mform->addElement('header', 'gradeoptions', get_string('grades', 'grades'));
$mform->addElement('text', 'grade', get_string( 'grademax', 'grades'), array('size' => 4));
$mform->setType('grade', PARAM_INT);
$gradingtypeoptions = array();
- $gradingtypeoptions[ GAME_GRADEHIGHEST] = get_string('gradehighest','game');
- $gradingtypeoptions[ GAME_GRADEAVERAGE] = get_string('gradeaverage','game');
- $gradingtypeoptions[ GAME_ATTEMPTFIRST] = get_string('attemptfirst','game');
- $gradingtypeoptions[ GAME_ATTEMPTLAST] = get_string('attemptlast','game');
- $mform->addElement('select', 'grademethod', get_string('grademethod','game'), $gradingtypeoptions);
-
+ $gradingtypeoptions[ GAME_GRADEHIGHEST] = get_string('gradehighest', 'game');
+ $gradingtypeoptions[ GAME_GRADEAVERAGE] = get_string('gradeaverage', 'game');
+ $gradingtypeoptions[ GAME_ATTEMPTFIRST] = get_string('attemptfirst', 'game');
+ $gradingtypeoptions[ GAME_ATTEMPTLAST] = get_string('attemptlast', 'game');
+ $mform->addElement('select', 'grademethod', get_string('grademethod', 'game'), $gradingtypeoptions);
+
// Open and close dates.
$mform->addElement('date_time_selector', 'timeopen', get_string('gameopen', 'game'),
array('optional' => true, 'step' => 1));
$mform->addHelpButton('timeopen', 'gameopenclose', 'game');
$mform->addElement('date_time_selector', 'timeclose', get_string('gameclose', 'game'),
- array('optional' => true, 'step' => 1));
-
-//---------------------------------------------------------------------------
-// Bookquiz options
+ array('optional' => true, 'step' => 1));
- if($gamekind == 'bookquiz'){
+ // Bookquiz options.
+ if ($gamekind == 'bookquiz') {
$mform->addElement('header', 'bookquiz', get_string( 'bookquiz_options', 'game'));
$bookquizlayoutoptions = array();
$bookquizlayoutoptions[0] = get_string('bookquiz_layout0', 'game');
$bookquizlayoutoptions[1] = get_string('bookquiz_layout1', 'game');
- $mform->addElement('select','param3', get_string('bookquiz_layout', 'game'), $bookquizlayoutoptions);
+ $mform->addElement('select', 'param3',
+ get_string('bookquiz_layout', 'game'), $bookquizlayoutoptions);
}
-
-//---------------------------------------------------------------------------
-// Hangman options
- if($gamekind == 'hangman'){
+ // Hangman options.
+ if ($gamekind == 'hangman') {
$mform->addElement('header', 'hangman', get_string( 'hangman_options', 'game'));
$mform->addElement('text', 'param4', get_string('hangman_maxtries', 'game'), array('size' => 4));
$mform->setType('param4', PARAM_INT);
$mform->addElement('selectyesno', 'param1', get_string('hangman_showfirst', 'game'));
$mform->addElement('selectyesno', 'param2', get_string('hangman_showlast', 'game'));
- $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces','game'));
+ $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces', 'game'));
$mform->addElement('selectyesno', 'param8', get_string('hangman_allowsub', 'game'));
$mform->addElement('text', 'param10', get_string( 'hangman_maximum_number_of_errors', 'game'), array('size' => 4));
$mform->setType('param10', PARAM_INT);
- if( !isset( $config->hangmanimagesets))
+ if (!isset( $config->hangmanimagesets)) {
$number = 1;
- else
+ } else {
$number = $config->hangmanimagesets;
- if( $number > 1)
- {
+ }
+ if ($number > 1) {
$a = array();
- for( $i=1; $i <= $number; $i++)
+ for ($i = 1; $i <= $number; $i++) {
$a[ $i] = $i;
- $mform->addElement('select', 'param3', get_string('hangman_imageset','game'), $a);
+ }
+ $mform->addElement('select', 'param3', get_string('hangman_imageset', 'game'), $a);
}
$mform->addElement('selectyesno', 'param5', get_string('hangman_showquestion', 'game'));
@@ -231,40 +230,36 @@ class mod_game_mod_form extends moodleform_mod {
$a = array();
$a = get_string_manager()->get_list_of_translations();
- $a[ ''] = '----------';
+ $a[ ''] = '----------';
$a[ 'user'] = get_string('language_user_defined', 'game');
ksort( $a);
- $mform->addElement('select', 'language', get_string('hangman_language','game'), $a);
+ $mform->addElement('select', 'language', get_string('hangman_language', 'game'), $a);
- $mform->addElement('text', 'userlanguage', get_string('language_user_defined','game'));
+ $mform->addElement('text', 'userlanguage', get_string('language_user_defined', 'game'));
$mform->setType('userlanguage', PARAM_TEXT);
$mform->disabledIf('userlanguage', 'language', 'neq', 'user');
}
-//---------------------------------------------------------------------------
-// Crossword options
-
- if($gamekind == 'cross'){
+ // Crossword options.
+ if ($gamekind == 'cross') {
$mform->addElement('header', 'cross', get_string( 'cross_options', 'game'));
$mform->addElement('text', 'param1', get_string('cross_maxcols', 'game'));
$mform->setType('param1', PARAM_INT);
$mform->addElement('text', 'param4', get_string('cross_minwords', 'game'));
- $mform->setType('param4', PARAM_INT);
+ $mform->setType('param4', PARAM_INT);
$mform->addElement('text', 'param2', get_string('cross_maxwords', 'game'));
$mform->setType('param2', PARAM_INT);
- $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces','game'));
+ $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces', 'game'));
$crosslayoutoptions = array();
$crosslayoutoptions[0] = get_string('cross_layout0', 'game');
$crosslayoutoptions[1] = get_string('cross_layout1', 'game');
- $mform->addElement('select','param3', get_string('cross_layout', 'game'), $crosslayoutoptions);
+ $mform->addElement('select', 'param3', get_string('cross_layout', 'game'), $crosslayoutoptions);
$mform->setType('param5', PARAM_INT);
- $mform->addElement('selectyesno', 'param6', get_string('cross_disabletransformuppercase','game'));
+ $mform->addElement('selectyesno', 'param6', get_string('cross_disabletransformuppercase', 'game'));
}
-//---------------------------------------------------------------------------
-// Cryptex options
-
- if($gamekind == 'cryptex'){
+ // Cryptex options.
+ if ($gamekind == 'cryptex') {
$mform->addElement('header', 'cryptex', get_string( 'cryptex_options', 'game'));
$mform->addElement('text', 'param1', get_string('cross_maxcols', 'game'));
$mform->setType('param1', PARAM_INT);
@@ -272,15 +267,13 @@ class mod_game_mod_form extends moodleform_mod {
$mform->setType('param4', PARAM_INT);
$mform->addElement('text', 'param2', get_string('cross_maxwords', 'game'));
$mform->setType('param2', PARAM_INT);
- $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces','game'));
- $mform->addElement('text', 'param8', get_string('cryptex_maxtries','game'));
+ $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces', 'game'));
+ $mform->addElement('text', 'param8', get_string('cryptex_maxtries', 'game'));
$mform->setType('param8', PARAM_INT);
}
-
-//---------------------------------------------------------------------------
-// Millionaire options
- if($gamekind == 'millionaire'){
+ // Millionaire options.
+ if ($gamekind == 'millionaire') {
global $OUTPUT, $PAGE;
$mform->addElement('header', 'millionaire', get_string( 'millionaire_options', 'game'));
@@ -288,44 +281,36 @@ class mod_game_mod_form extends moodleform_mod {
$mform->setDefault('param8', '#408080');
$mform->setType('param8', PARAM_TEXT);
- //$mform->addElement('colorpicker', 'param8', get_string('millionaire_background', 'game'));
- //$mform->registerRule('color','regex','/^#([a-fA-F0-9]{6})$/');
- //$mform->addRule('config_bgcolor','Enter a valid RGB color - # and then 6 characters','color');
-
- $mform->addElement('selectyesno', 'shuffle', get_string('millionaire_shuffle','game'));
+ $mform->addElement('selectyesno', 'shuffle', get_string('millionaire_shuffle', 'game'));
}
-//---------------------------------------------------------------------------
-// Sudoku options
-
- if($gamekind == 'sudoku'){
+ // Sudoku options.
+ if ($gamekind == 'sudoku') {
$mform->addElement('header', 'sudoku', get_string( 'sudoku_options', 'game'));
$mform->addElement('text', 'param2', get_string('sudoku_maxquestions', 'game'));
$mform->setType('param2', PARAM_INT);
}
-//---------------------------------------------------------------------------
-// Snakes and Ladders options
-
- if($gamekind == 'snakes'){
+ // Snakes and Ladders options.
+ if ($gamekind == 'snakes') {
$mform->addElement('header', 'snakes', get_string( 'snakes_options', 'game'));
$snakesandladdersbackground = array();
- if($recs = $DB->get_records( 'game_snakes_database', null, 'id,name')){
- foreach( $recs as $rec){
+ if ($recs = $DB->get_records( 'game_snakes_database', null, 'id,name')) {
+ foreach ($recs as $rec) {
$snakesandladdersbackground[$rec->id] = $rec->name;
}
}
-
+
$snakeslayoutoptions = array();
$snakeslayoutoptions[0] = get_string('snakes_layout0', 'game');
$snakeslayoutoptions[1] = get_string('snakes_layout1', 'game');
- $mform->addElement('select','param8', get_string('bookquiz_layout', 'game'), $snakeslayoutoptions);
-
- if(count($snakesandladdersbackground) == 0){
+ $mform->addElement('select', 'param8', get_string('bookquiz_layout', 'game'), $snakeslayoutoptions);
+
+ if (count($snakesandladdersbackground) == 0) {
require("{$CFG->dirroot}/mod/game/db/importsnakes.php");
- if($recs = $DB->get_records('game_snakes_database', null, 'id,name')){
- foreach($recs as $rec){
+ if ($recs = $DB->get_records('game_snakes_database', null, 'id,name')) {
+ foreach ($recs as $rec) {
$snakesandladdersbackground[$rec->id] = $rec->name;
}
}
@@ -334,14 +319,14 @@ class mod_game_mod_form extends moodleform_mod {
ksort( $snakesandladdersbackground);
$mform->addElement('select', 'param3', get_string('snakes_background', 'game'), $snakesandladdersbackground);
- //param3 = background
- //param4 = itemid for file_storage
- //param5 (=1 means dirty file and and have to be computed again)
- //param6 = width of autogenerated picture
- //param7 = height of autogenerated picture
- //param8 = layout
+ // Param3 = background.
+ // Param4 = itemid for file_storage.
+ // Param5 (=1 means dirty file and and have to be computed again).
+ // Param6 = width of autogenerated picture.
+ // Param7 = height of autogenerated picture.
+ // Param8 = layout.
- $attachmentoptions = array('subdirs'=>false, 'maxfiles'=>1);
+ $attachmentoptions = array('subdirs' => false, 'maxfiles' => 1);
$mform->addElement('filepicker', 'param4', get_string('snakes_file', 'game'), $attachmentoptions);
$mform->disabledIf('param4', 'param3', 'neq', '0');
@@ -379,10 +364,8 @@ class mod_game_mod_form extends moodleform_mod {
$mform->setType('snakes_height', PARAM_INT);
}
-//---------------------------------------------------------------------------
-// Hidden Picture options
-
- if($gamekind == 'hiddenpicture'){
+ // Hidden Picture options.
+ if ($gamekind == 'hiddenpicture') {
$mform->addElement('header', 'hiddenpicture', get_string( 'hiddenpicture_options', 'game'));
$mform->addElement('text', 'param1', get_string('hiddenpicture_across', 'game'));
$mform->setType('param1', PARAM_INT);
@@ -392,14 +375,14 @@ class mod_game_mod_form extends moodleform_mod {
$mform->setDefault('param2', 3);
$a = array();
- if($recs = $DB->get_records('glossary', array( 'course' => $COURSE->id), 'id,name')){
- foreach($recs as $rec){
+ if ($recs = $DB->get_records('glossary', array( 'course' => $COURSE->id), 'id,name')) {
+ foreach ($recs as $rec) {
$cmg = get_coursemodule_from_instance('glossary', $rec->id, $COURSE->id);
$context = game_get_context_module_instance( $cmg->id);
- if( $DB->record_exists( 'files', array( 'contextid' => $context->id))){
+ if ($DB->record_exists( 'files', array( 'contextid' => $context->id))) {
$a[$rec->id] = $rec->name;
}
- }
+ }
}
$mform->addElement('select', 'glossaryid2', get_string('hiddenpicture_pictureglossary', 'game'), $a);
@@ -407,104 +390,98 @@ class mod_game_mod_form extends moodleform_mod {
$mform->setType('param4', PARAM_INT);
$mform->addELement('text', 'param5', get_string('hiddenpicture_height', 'game'));
$mform->setType('param5', PARAM_INT);
- $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces','game'));
+ $mform->addElement('selectyesno', 'param7', get_string('hangman_allowspaces', 'game'));
}
-//---------------------------------------------------------------------------
-// Header/Footer options
-
+ // Header/Footer options.
$mform->addElement('header', 'headerfooteroptions', 'Header/Footer Options');
- $mform->addElement('htmleditor', 'toptext', get_string('toptext','game'));
- $mform->addElement('htmleditor', 'bottomtext', get_string('bottomtext','game'));
+ $mform->addElement('htmleditor', 'toptext', get_string('toptext', 'game'));
+ $mform->addElement('htmleditor', 'bottomtext', get_string('bottomtext', 'game'));
-//---------------------------------------------------------------------------
$features = new stdClass;
$this->standard_coursemodule_elements($features);
-//---------------------------------------------------------------------------
-// buttons
+ // Buttons.
$this->add_action_buttons();
}
-
- function validation($data, $files){
+ public function validation($data, $files) {
$errors = parent::validation($data, $files);
-
+
// Check open and close times are consistent.
if ($data['timeopen'] != 0 && $data['timeclose'] != 0 &&
$data['timeclose'] < $data['timeopen']) {
$errors['timeclose'] = get_string('closebeforeopen', 'quiz');
}
-
+
return $errors;
}
- function set_data($default_values) {
+ public function set_data($defaultvalues) {
global $DB;
- if( isset( $default_values->type))
- {
- //Default values for every game.
- if( $default_values->type == 'hangman')
- {
- $default_values->param10 = 6; //maximum number of wrongs
- }else if( $default_values->type == 'snakes')
- {
- $default_values->gamekind = $default_values->type;
- $default_values->param3 = 1;
- $default_values->questioncategoryid = 0;
- }else if( $default_values->type == 'millionaire')
- {
- $default_values->shuffle = 1;
+ if (isset( $defaultvalues->type)) {
+ // Default values for every game.
+ if ($defaultvalues->type == 'hangman') {
+ $defaultvalues->param10 = 6; // Maximum number of wrongs.
+ } else if ($defaultvalues->type == 'snakes') {
+ $defaultvalues->gamekind = $defaultvalues->type;
+ $defaultvalues->param3 = 1;
+ $defaultvalues->questioncategoryid = 0;
+ } else if ($defaultvalues->type == 'millionaire') {
+ $defaultvalues->shuffle = 1;
}
- }
-
- if( isset( $default_values->gamekind)){
- if( $default_values->gamekind == 'hangman'){
- if( $default_values->param10 == 0)
- $default_values->param10 = 6;
- }else if( $default_values->gamekind == 'millionaire'){
- if( isset( $default_values->param8))
- $default_values->param8 = '#'.substr( '000000'.strtoupper( dechex( $default_values->param8)),-6);
- }else if( $default_values->gamekind == 'cross')
- {
- if( $default_values->param5 == NULL)
- $default_values->param5 = 1;
+ }
+
+ if (isset( $defaultvalues->gamekind)) {
+ if ($defaultvalues->gamekind == 'hangman') {
+ if ($defaultvalues->param10 == 0) {
+ $defaultvalues->param10 = 6;
+ }
+ } else if ($defaultvalues->gamekind == 'millionaire') {
+ if (isset( $defaultvalues->param8)) {
+ $defaultvalues->param8 = '#'.substr( '000000'.strtoupper( dechex( $defaultvalues->param8)), -6);
+ }
+ } else if ($defaultvalues->gamekind == 'cross') {
+ if ($defaultvalues->param5 == null) {
+ $defaultvalues->param5 = 1;
+ }
}
-
- if( $default_values->gamekind == 'snakes'){
- if( isset( $default_values->param9)){
- $a = explode( '#',$default_values->param9);
- foreach( $a as $s){
+
+ if ($defaultvalues->gamekind == 'snakes') {
+ if (isset( $defaultvalues->param9)) {
+ $a = explode( '#', $defaultvalues->param9);
+ foreach ($a as $s) {
$pos = strpos( $s, ':');
- if( $pos){
+ if ($pos) {
$name = substr( $s, 0, $pos);
- $default_values->$name = substr( $s, $pos+1);
+ $defaultvalues->$name = substr( $s, $pos + 1);
}
}
}
}
}
- if( !isset( $default_values->gamekind))
- $default_values->gamekind = $default_values->type;
- if( $default_values->gamekind == 'snakes'){
- if( isset( $default_values->param3)){
- $board = $default_values->param3;
- if( $board != 0){
+ if (!isset( $defaultvalues->gamekind)) {
+ $defaultvalues->gamekind = $defaultvalues->type;
+ }
+ if ($defaultvalues->gamekind == 'snakes') {
+ if (isset( $defaultvalues->param3)) {
+ $board = $defaultvalues->param3;
+ if ($board != 0) {
$rec = $DB->get_record( 'game_snakes_database', array( 'id' => $board));
- $default_values->snakes_data = $rec->data;
- $default_values->snakes_cols = $rec->cols;
- $default_values->snakes_rows = $rec->rows;
- $default_values->snakes_headerx = $rec->headerx;
- $default_values->snakes_headery = $rec->headery;
- $default_values->snakes_footerx = $rec->footerx;
- $default_values->snakes_footery = $rec->footery;
+ $defaultvalues->snakes_data = $rec->data;
+ $defaultvalues->snakes_cols = $rec->cols;
+ $defaultvalues->snakes_rows = $rec->rows;
+ $defaultvalues->snakes_headerx = $rec->headerx;
+ $defaultvalues->snakes_headery = $rec->headery;
+ $defaultvalues->snakes_footerx = $rec->footerx;
+ $defaultvalues->snakes_footery = $rec->footery;
}
}
}
-
- parent::set_data($default_values);
+
+ parent::set_data($defaultvalues);
}
}
diff --git a/pagelib.php b/pagelib.php
index e66800d..c379428 100755
--- a/pagelib.php
+++ b/pagelib.php
@@ -1,7 +1,21 @@
-.
-require_once($CFG->libdir.'/pagelib.php');
-require_once($CFG->dirroot.'/course/lib.php'); // needed for some blocks
+require_once( $CFG->libdir.'/pagelib.php');
+require_once( $CFG->dirroot.'/course/lib.php'); // Needed for some blocks.
define('PAGE_GAME_VIEW', 'mod-game-view');
@@ -18,75 +32,59 @@ $DEFINEDPAGES = array( PAGE_GAME_VIEW);
class page_game extends page_generic_activity {
- function init_quick($data) {
- if(empty($data->pageid)) {
+ public function init_quick($data) {
+ if (empty($data->pageid)) {
print_error('Cannot quickly initialize page: empty course id');
}
$this->activityname = 'game';
parent::init_quick($data);
}
- function print_header($title, $morebreadcrumbs = NULL, $navigation ='') {
+ public function print_header($title, $morebreadcrumbs = null, $navigation ='') {
global $USER, $CFG;
$this->init_full();
$replacements = array(
'%fullname%' => format_string($this->activityrecord->name)
- );
- foreach($replacements as $search => $replace) {
+ )
+ foreach ($replacements as $search => $replace) {
$title = str_replace($search, $replace, $title);
}
- if($this->courserecord->id == SITEID) {
+ if ($this->courserecord->id == SITEID) {
$breadcrumbs = array();
- }
- else {
+ } else {
$breadcrumbs = array($this->courserecord->shortname => $CFG->wwwroot.'/course/view.php?id='.$this->courserecord->id);
}
$breadcrumbs[get_string('modulenameplural', 'game')] = $CFG->wwwroot.'/mod/game/index.php?id='.$this->courserecord->id;
- $breadcrumbs[format_string($this->activityrecord->name)] = $CFG->wwwroot.'/mod/game/view.php?id='.$this->modulerecord->id;
+ $breadcrumbs[format_string($this->activityrecord->name)]
+ = $CFG->wwwroot.'/mod/game/view.php?id='.$this->modulerecord->id;
- if(!empty($morebreadcrumbs)) {
+ if (!empty($morebreadcrumbs)) {
$breadcrumbs = array_merge($breadcrumbs, $morebreadcrumbs);
}
-/*
- $total = count($breadcrumbs);
- $current = 1;
- $crumbtext = '';
- foreach($breadcrumbs as $text => $href) {
- if($current++ == $total) {
- $crumbtext .= ' '.$text;
- }
- else {
- $crumbtext .= ' '.$text.' ->';
- }
- }
-*/
- if(empty($morebreadcrumbs) && $this->user_allowed_editing()) {
+
+ if (empty($morebreadcrumbs) && $this->user_allowed_editing()) {
$buttons = ''.
update_module_button($this->modulerecord->id, $this->courserecord->id, get_string('modulename', 'game')).' ';
- if(!empty($CFG->showblocksonmodpages)) {
+ if (!empty($CFG->showblocksonmodpages)) {
$buttons .= ' ';
}
$buttons .= '
';
- }
- else {
+ } else {
$buttons = ' ';
}
- //print_header($title, $this->courserecord->fullname, $crumbtext, '', '', true, $buttons, navmenu($this->courserecord, $this->modulerecord),false,$bodytags);
- print_header($title, $this->courserecord->fullname, $navigation);
+ print_header($title, $this->courserecord->fullname, $navigation);
}
- function get_type() {
+ public function get_type() {
return PAGE_GAME_VIEW;
}
}
-
-?>
diff --git a/preview.php b/preview.php
index 46135b8..0ef5c3a 100755
--- a/preview.php
+++ b/preview.php
@@ -1,4 +1,19 @@
-.
+
/**
* This page prints a particular attempt of game
*
@@ -6,62 +21,63 @@
* @version $Id: preview.php,v 1.10 2012/07/25 11:16:04 bdaloukas Exp $
* @package game
**/
-
- require_once("../../config.php");
- require_once("lib.php");
- require_once("locallib.php");
- require_once( "hangman/play.php");
- require_once( "cross/play.php");
- require_once( "cryptex/play.php");
- require_once( "millionaire/play.php");
- require_once( "sudoku/play.php");
- require_once( "bookquiz/play.php");
-
- require_once( "headergame.php");
+require_once("../../config.php");
+require_once("lib.php");
+require_once("locallib.php");
+
+require_once( "hangman/play.php");
+require_once( "cross/play.php");
+require_once( "cryptex/play.php");
+require_once( "millionaire/play.php");
+require_once( "sudoku/play.php");
+require_once( "bookquiz/play.php");
+
+require_once( "headergame.php");
+
+$context = game_get_context_module_instance( $cm->id);
- $context = game_get_context_module_instance( $cm->id);
+if (!has_capability('mod/game:viewreports', $context)) {
+ print_error( get_string( 'only_teachers', 'game'));
+}
- if (!has_capability('mod/game:viewreports', $context)){
- print_error( get_string( 'only_teachers', 'game'));
- }
+$action = required_param('action', PARAM_ALPHANUM);
+$gamekind = required_param('gamekind', PARAM_ALPHANUM);
+$update = required_param('update', PARAM_INT);
- $action = required_param('action', PARAM_ALPHANUM);
- $gamekind = required_param('gamekind', PARAM_ALPHANUM);
- $update = required_param('update', PARAM_INT);
+$attemptid = required_param('attemptid', PARAM_INT);
+$attempt = $DB->get_record( 'game_attempts', array('id' => $attemptid));
+$game = $DB->get_record( 'game', array( 'id' => $attempt->gameid));
+$detail = $DB->get_record( 'game_'.$gamekind, array( 'id' => $attemptid));
+$solution = ($action == 'solution');
- $attemptid = required_param('attemptid', PARAM_INT);
- $attempt = $DB->get_record( 'game_attempts', array('id' => $attemptid));
- $game = $DB->get_record( 'game', array( 'id' => $attempt->gameid));
- $detail = $DB->get_record( 'game_'.$gamekind, array( 'id' => $attemptid));
- $solution = ($action == 'solution');
+$PAGE->navbar->add(get_string('preview', 'game'));
- $PAGE->navbar->add(get_string('preview', 'game'));
-
- switch( $gamekind)
- {
- case 'cross':
- $g = '';
- $onlyshow = true;
- $endofgame = false;
- $print = false;
- $checkbutton = false;
- $showhtmlsolutions = false;
- $showhtmlprintbutton = true;
- $showstudentguess = false;
- game_cross_play( $update, $game, $attempt, $detail, $g, $onlyshow, $solution, $endofgame, $print, $checkbutton, $showhtmlsolutions, $showhtmlprintbutton, $showstudentguess, $context);
- break;
- case 'sudoku':
- game_sudoku_play( $update, $game, $attempt, $detail, true, $solution, $context);
- break;
- case 'hangman':
+switch( $gamekind) {
+ case 'cross':
+ $g = '';
+ $onlyshow = true;
+ $endofgame = false;
+ $print = false;
+ $checkbutton = false;
+ $showhtmlsolutions = false;
+ $showhtmlprintbutton = true;
+ $showstudentguess = false;
+ game_cross_play( $update, $game, $attempt, $detail, $g, $onlyshow, $solution,
+ $endofgame, $print, $checkbutton, $showhtmlsolutions, $showhtmlprintbutton,
+ $showstudentguess, $context);
+ break;
+ case 'sudoku':
+ game_sudoku_play( $update, $game, $attempt, $detail, true, $solution, $context);
+ break;
+ case 'hangman':
$preview = ($action == 'preview');
- game_hangman_play( $update, $game, $attempt, $detail, $preview, $solution, $context);
- break;
- case 'cryptex':
- $crossm = $DB->get_record( 'game_cross', array('id' => $attemptid));
- game_cryptex_play( $update, $game, $attempt, $detail, $crossm, false, true, $solution, $context);
- break;
- }
+ game_hangman_play( $update, $game, $attempt, $detail, $preview, $solution, $context);
+ break;
+ case 'cryptex':
+ $crossm = $DB->get_record( 'game_cross', array('id' => $attemptid));
+ game_cryptex_play( $update, $game, $attempt, $detail, $crossm, false, true, $solution, $context);
+ break;
+}
- echo $OUTPUT->footer();
+echo $OUTPUT->footer();
diff --git a/print.php b/print.php
index 8e04fab..e3ec473 100755
--- a/print.php
+++ b/print.php
@@ -1,4 +1,19 @@
-.
+
/**
* This page export the game to html
*
@@ -6,80 +21,78 @@
* @version $Id: print.php,v 1.7 2012/07/25 11:16:04 bdaloukas Exp $
* @package game
**/
- require_once("../../config.php");
- require_once("lib.php");
- require_once("locallib.php");
-
- $id = required_param('id', PARAM_INT); // Course Module ID, or
- $gameid = required_param('gameid', PARAM_INT);
-
- $game = $DB->get_record( 'game', array( 'id' => $gameid));
-
- require_login( $game->course);
-
- $context = game_get_context_module_instance( $id);
- require_capability('mod/game:view', $context);
-
- game_print( $game, $id, $context);
-
- function game_print( $game, $update, $context){
-
- if( $game->gamekind == 'cross')
- game_print_cross( $game, $update, $context);
- else if( $game->gamekind == 'cryptex')
- game_print_cryptex( $game, $update, $context);
+require_once("../../config.php");
+require_once("lib.php");
+require_once("locallib.php");
+
+$id = required_param('id', PARAM_INT); // Course Module ID.
+$gameid = required_param('gameid', PARAM_INT);
+
+$game = $DB->get_record( 'game', array( 'id' => $gameid));
+
+require_login( $game->course);
+
+$context = game_get_context_module_instance( $id);
+require_capability('mod/game:view', $context);
+
+game_print( $game, $id, $context);
+
+function game_print( $game, $update, $context) {
+ if ( $game->gamekind == 'cross') {
+ game_print_cross( $game, $update, $context);
+ } else if ($game->gamekind == 'cryptex') {
+ game_print_cryptex( $game, $update, $context);
}
-
- function game_print_cross( $game, $update, $context)
- {
- require( "cross/play.php");
-
- $attempt = game_getattempt( $game, $crossrec);
-
- $g = '';
- $onlyshow = true;
- $showsolution = false;
- $endofgame = false;
- $print = true;
- $checkbutton = false;
- $showhtmlsolutions = false;
- $showhtmlprintbutton = false;
- $showstudentguess = false;
+}
+
+function game_print_cross( $game, $update, $context) {
+ require( "cross/play.php");
+
+ $attempt = game_getattempt( $game, $crossrec);
+
+ $g = '';
+ $onlyshow = true;
+ $showsolution = false;
+ $endofgame = false;
+ $print = true;
+ $checkbutton = false;
+ $showhtmlsolutions = false;
+ $showhtmlprintbutton = false;
+ $showstudentguess = false;
?>
Print
-get_record_select( 'game_cross', "id=$attempt->id");
+ $updateattempt = false;
+ $onlyshow = true;
+ $showsolution = false;
+ $showhtmlprintbutton = false;
+ $print = true;
+ $crossm = $DB->get_record_select( 'game_cross', "id=$attempt->id");
?>
Print
-dirroot.'/mod/game/locallib.php');
- require_once($CFG->dirroot.'/mod/game/report/reportlib.php');
-
- $id = optional_param('id',0,PARAM_INT); // Course Module ID, or
- $q = optional_param('q',0,PARAM_INT); // game ID
-
- $mode = optional_param('mode', 'overview', PARAM_ALPHA); // Report mode
-
- if ($id) {
- if (! $cm = get_coursemodule_from_id('game', $id)) {
- print_error( "There is no coursemodule with id $id");
- }
-
- if (! $course = $DB->get_record('course', array( 'id' => $cm->course))) {
- print_error( 'Course is misconfigured');
- }
-
- if (! $game = $DB->get_record( 'game', array( 'id' => $cm->instance))) {
- print_error( "The game with id $cm->instance corresponding to this coursemodule $id is missing");
- }
-
- } else {
- if (! $game = $DB->get_record( 'game', array( 'id' => $q))) {
- print_error( "There is no game with id $q");
- }
- if (! $course = $DB->get_record( 'course', array( 'id' => $game->course))) {
- print_error( "The course with id $game->course that the game with id $a belongs to is missing");
- }
- if (! $cm = get_coursemodule_from_instance( 'game', $game->id, $course->id)) {
- print_error( "The course module for the game with id $q is missing");
- }
+.
+
+// This script uses installed report plugins to print game reports.
+
+require_once("../../config.php");
+require_once($CFG->dirroot.'/mod/game/locallib.php');
+require_once($CFG->dirroot.'/mod/game/report/reportlib.php');
+
+$id = optional_param('id', 0, PARAM_INT); // Course Module ID.
+$q = optional_param('q', 0, PARAM_INT); // Game ID.
+
+$mode = optional_param('mode', 'overview', PARAM_ALPHA); // Report mode.
+
+if ($id) {
+ if (! $cm = get_coursemodule_from_id('game', $id)) {
+ print_error( "There is no coursemodule with id $id");
}
- require_login($course->id, false);
- $context = get_context_instance(CONTEXT_MODULE, $cm->id);
- require_capability('mod/game:viewreports', $context);
-
- // if no questions have been set up yet redirect to edit.php
- //if (!$game->questions and has_capability('mod/game:manage', $context)) {
- // redirect('edit.php?gameid='.$game->id);
- //}
+ if (! $course = $DB->get_record('course', array( 'id' => $cm->course))) {
+ print_error( 'Course is misconfigured');
+ }
- // Upgrade any attempts that have not yet been upgraded to the
- // Moodle 1.5 model (they will not yet have the timestamp set)
- //if ($attempts = get_records_sql("SELECT a.*".
- // " FROM {$CFG->prefix}game_attempts a, {$CFG->prefix}question_states s".
- // " WHERE a.game = '$game->id' AND s.attempt = a.uniqueid AND s.timestamp = 0")) {
- // foreach ($attempts as $attempt) {
- // game_upgrade_states($attempt);
- // }
- //}
+ if (! $game = $DB->get_record( 'game', array( 'id' => $cm->instance))) {
+ print_error( "The game with id $cm->instance corresponding to this coursemodule $id is missing");
+ }
+} else {
+ if (! $game = $DB->get_record( 'game', array( 'id' => $q))) {
+ print_error( "There is no game with id $q");
+ }
+ if (! $course = $DB->get_record( 'course', array( 'id' => $game->course))) {
+ print_error( "The course with id $game->course that the game with id $a belongs to is missing");
+ }
+ if (! $cm = get_coursemodule_from_instance( 'game', $game->id, $course->id)) {
+ print_error( "The course module for the game with id $q is missing");
+ }
+}
- add_to_log($course->id, "game", "report", "report.php?id=$cm->id", "$game->id", "$cm->id");
+require_login($course->id, false);
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_capability('mod/game:viewreports', $context);
-/// Open the selected game report and display it
+add_to_log($course->id, "game", "report", "report.php?id=$cm->id", "$game->id", "$cm->id");
- $mode = clean_param( $mode, PARAM_SAFEDIR);
+// Open the selected game report and display it.
- if (! is_readable("report/$mode/report.php")) {
- print_error("Report not known ($mode)");
- }
+$mode = clean_param( $mode, PARAM_SAFEDIR);
- include("report/default.php"); // Parent class
- include("report/$mode/report.php");
+if (! is_readable("report/$mode/report.php")) {
+ print_error("Report not known ($mode)");
+}
- $report = new game_overview_report();
+require("report/default.php"); // Parent class.
+require("report/$mode/report.php");
- if (! $report->display( $game, $cm, $course)) { // Run the report!
- print_error( 'Error occurred during pre-processing!');
- }
+$report = new game_overview_report();
-/// Print footer
+if (! $report->display( $game, $cm, $course)) { // Run the report!
+ print_error( 'Error occurred during pre-processing!');
+}
- echo $OUTPUT->footer($course);
+// Print footer.
+echo $OUTPUT->footer($course);
diff --git a/review.php b/review.php
index 4a0fae1..ce743d8 100755
--- a/review.php
+++ b/review.php
@@ -1,327 +1,327 @@
-get_record('game_attempts', array( 'id' => $attempt))) {
- print_error("No such attempt ID exists");
- }
- if (! $game = $DB->get_record('game', array( 'id' => $attempt->gameid))) {
- print_error("The game with id $attempt->gameid belonging to attempt $attempt is missing");
- }
-
- game_compute_attempt_layout( $game, $attempt);
-
- if (! $course = $DB->get_record('course', array( 'id' => $game->course))) {
- print_error("The course with id $game->course that the game with id $game->id belongs to is missing");
- }
- if (! $cm = get_coursemodule_from_instance("game", $game->id, $course->id)) {
- print_error("The course module for the game with id $game->id is missing");
+.
+
+// This page prints a review of a particular game attempt.
+
+require_once("../../config.php");
+require_once("locallib.php");
+require_once("../../lib/questionlib.php");
+
+$attempt = required_param('attempt', PARAM_INT); // A particular attempt ID for review.
+$page = optional_param('page', 0, PARAM_INT); // The required page.
+$showall = optional_param('showall', 0, PARAM_BOOL);
+
+if (! $attempt = $DB->get_record('game_attempts', array( 'id' => $attempt))) {
+ print_error("No such attempt ID exists");
+}
+if (! $game = $DB->get_record('game', array( 'id' => $attempt->gameid))) {
+ print_error("The game with id $attempt->gameid belonging to attempt $attempt is missing");
+}
+
+game_compute_attempt_layout( $game, $attempt);
+
+if (! $course = $DB->get_record('course', array( 'id' => $game->course))) {
+ print_error("The course with id $game->course that the game with id $game->id belongs to is missing");
+}
+if (! $cm = get_coursemodule_from_instance("game", $game->id, $course->id)) {
+ print_error("The course module for the game with id $game->id is missing");
+}
+
+$grade = game_score_to_grade( $attempt->score, $game);
+$feedback = game_feedback_for_grade( $grade, $attempt->gameid);
+
+require_login( $course->id, false, $cm);
+$context = get_context_instance( CONTEXT_MODULE, $cm->id);
+$coursecontext = get_context_instance( CONTEXT_COURSE, $cm->course);
+$isteacher = isteacher( $game->course, $USER->id);
+$options = game_get_reviewoptions( $game, $attempt, $context);
+$popup = $isteacher ? 0 : $game->popup; // Controls whether this is shown in a javascript-protected window.
+
+add_to_log($course->id, "game", "review", "review.php?id=$cm->id&attempt=$attempt->id", "$game->id", "$cm->id");
+
+// Print the page header.
+
+$strgames = get_string('modulenameplural', 'game');
+$strreview = get_string('review', 'game');
+$strscore = get_string('score', "game");
+$strgrade = get_string('grade');
+$strbestgrade = get_string('bestgrade', 'quiz');
+$strtimetaken = get_string('timetaken', 'game');
+$strtimecompleted = get_string('completedon', 'game');
+
+$strupdatemodule = has_capability('moodle/course:manageactivities',
+ $coursecontext) ? update_module_button($cm->id, $course->id, get_string('modulename', 'game')) : '';
+
+$strgames = get_string("modulenameplural", "game");
+$strgame = get_string("modulename", "game");
+
+if (function_exists( 'build_navigation')) {
+ $navigation = build_navigation('', $cm);
+ echo $OUTPUT->heading("$course->shortname: $game->name", "$course->shortname: $game->name", $navigation,
+ "", "", true, update_module_button($cm->id, $course->id, $strgame),
+ navmenu($course, $cm));
+} else {
+ if ($course->category) {
+ $navigation = "wwwroot}/course/view.php?id=$course->id\">$course->shortname ->";
+ } else {
+ $navigation = '';
}
- $grade = game_score_to_grade( $attempt->score, $game);
- $feedback = game_feedback_for_grade( $grade, $attempt->gameid);
-
- require_login( $course->id, false, $cm);
- $context = get_context_instance( CONTEXT_MODULE, $cm->id);
- $coursecontext = get_context_instance( CONTEXT_COURSE, $cm->course);
- $isteacher = isteacher( $game->course, $USER->id);
- $options = game_get_reviewoptions( $game, $attempt, $context);
- $popup = $isteacher ? 0 : $game->popup; // Controls whether this is shown in a javascript-protected window.
-
- add_to_log($course->id, "game", "review", "review.php?id=$cm->id&attempt=$attempt->id", "$game->id", "$cm->id");
-
-/// Print the page header
-
- $strgames = get_string('modulenameplural', 'game');
- $strreview = get_string('review', 'game');
- $strscore = get_string('score', "game");
- $strgrade = get_string('grade');
- $strbestgrade = get_string('bestgrade', 'quiz');
- $strtimetaken = get_string('timetaken', 'game');
- $strtimecompleted = get_string('completedon', 'game');
-
-
- $strupdatemodule = has_capability('moodle/course:manageactivities', $coursecontext)
- ? update_module_button($cm->id, $course->id, get_string('modulename', 'game'))
- : "";
-
- $strgames = get_string("modulenameplural", "game");
- $strgame = get_string("modulename", "game");
-
- if( function_exists( 'build_navigation')){
- $navigation = build_navigation('', $cm);
- echo $OUTPUT->heading("$course->shortname: $game->name", "$course->shortname: $game->name", $navigation,
- "", "", true, update_module_button($cm->id, $course->id, $strgame),
- navmenu($course, $cm));
- }else{
- if ($course->category) {
- $navigation = "wwwroot}/course/view.php?id=$course->id\">$course->shortname ->";
- } else {
- $navigation = '';
- }
- echo $OUTPUT->heading("$course->shortname: $game->name", "$course->fullname",
- "$navigation id>$strgames -> $game->name",
- "", "", true, update_module_button($cm->id, $course->id, $strgame),
- navmenu($course, $cm));
- }
-
-
- echo '
'; // for overlib
-/// Print heading and tabs if this is part of a preview
- //if (has_capability('mod/game:preview', $context)) {
- if ($attempt->userid == $USER->id) { // this is the report on a preview
- $currenttab = 'preview';
- } else {
- $currenttab = 'reports';
- $mode = '';
+ echo $OUTPUT->heading("$course->shortname: $game->name", "$course->fullname",
+ "$navigation id>$strgames -> $game->name",
+ "", "", true, update_module_button($cm->id, $course->id, $strgame),
+ navmenu($course, $cm));
+}
+
+echo '
'; // For overlib.
+
+// Print heading and tabs if this is part of a preview.
+if ($attempt->userid == $USER->id) {
+ // This is the report on a preview.
+ $currenttab = 'preview';
+} else {
+ $currenttab = 'reports';
+ $mode = '';
+}
+
+require('tabs.php');
+
+// Load all the questions and states needed by this script.
+// Load the questions needed by page.
+$pagelist = $showall ? game_questions_in_game( $attempt->layout) : game_questions_on_page( $attempt->layout, $page);
+$a = explode( ',', $pagelist);
+$pagelist = '';
+foreach ($a as $item) {
+ if (substr( $item, 0, 1)) {
+ if (substr( $item, -1) != 'G') {
+ $pagelist .= ','.$item;
}
- include('tabs.php');
- //} else {
- // print_heading(format_string($game->name));
- //}
-
-/// Load all the questions and states needed by this script
-
- // load the questions needed by page
- $pagelist = $showall ? game_questions_in_game( $attempt->layout) : game_questions_on_page( $attempt->layout, $page);
- $a = explode( ',', $pagelist);
- $pagelist = '';
- foreach( $a as $item){
- if( substr( $item, 0, 1)){
- if( substr( $item, -1) != 'G'){
- $pagelist .= ','.$item;
- }
- }
- }
- $pagelist = substr( $pagelist, 1);
-
- if( $pagelist != ''){
- $sql = "SELECT q.*, i.id AS instance,i.id as iid,".
- "i.score AS score,i.studentanswer".
- " FROM {question} q,".
- " {game_queries} i".
- " WHERE i.attemptid = '$attempt->id' AND q.id = i.questionid AND (i.sourcemodule='question' or i.sourcemodule = 'quiz')".
- " AND q.id IN ($pagelist)";
-
- if (!$questions = $DB->get_records_sql( $sql)) {
- print_error('No questions found');
- }
- }else
- {
- $questions = array();
- }
-
- // Load the question type specific information
- if (!get_question_options( $questions)) {
- print_error('Could not load question options');
}
+}
+
+$pagelist = substr( $pagelist, 1);
- $states = game_compute_states( $game, $questions);
-/// Print infobox
-
- //$timelimit = (int)$game->timelimit * 60;
- $timelimit = 0;
- $overtime = 0;
-
- if ($attempt->timefinish) {
- if ($timetaken = ($attempt->timefinish - $attempt->timestart)) {
- if($timelimit && $timetaken > ($timelimit + 60)) {
- $overtime = $timetaken - $timelimit;
- $overtime = format_time($overtime);
- }
- $timetaken = format_time($timetaken);
- } else {
- $timetaken = "-";
+if ($pagelist != '') {
+ $sql = "SELECT q.*, i.id AS instance,i.id as iid,".
+ "i.score AS score,i.studentanswer".
+ " FROM {question} q,".
+ " {game_queries} i".
+ " WHERE i.attemptid = '$attempt->id' AND q.id = i.questionid AND (i.sourcemodule='question' or i.sourcemodule = 'quiz')".
+ " AND q.id IN ($pagelist)";
+
+ if (!$questions = $DB->get_records_sql( $sql)) {
+ print_error('No questions found');
+ }
+} else {
+ $questions = array();
+}
+
+// Load the question type specific information.
+if (!get_question_options( $questions)) {
+ print_error('Could not load question options');
+}
+
+$states = game_compute_states( $game, $questions);
+// Print infobox.
+
+$timelimit = 0;
+$overtime = 0;
+
+if ($attempt->timefinish) {
+ if ($timetaken = ($attempt->timefinish - $attempt->timestart)) {
+ if ($timelimit && $timetaken > ($timelimit + 60)) {
+ $overtime = $timetaken - $timelimit;
+ $overtime = format_time($overtime);
}
+ $timetaken = format_time($timetaken);
} else {
- $timetaken = get_string('unfinished', 'game');
+ $timetaken = "-";
}
+} else {
+ $timetaken = get_string('unfinished', 'game');
+}
+
+$table->align = array("right", "left");
+if ($attempt->userid <> $USER->id) {
+ $student = $DB->get_record('user', array( 'id' => $attempt->userid));
+ $picture = print_user_picture($student->id, $course->id, $student->picture, false, true);
+ $table->data[] = array($picture,
+ ''.fullname($student, true).' ');
+}
- $table->align = array("right", "left");
- if ($attempt->userid <> $USER->id) {
- $student = $DB->get_record('user', array( 'id' => $attempt->userid));
- $picture = print_user_picture($student->id, $course->id, $student->picture, false, true);
- $table->data[] = array($picture, ''.fullname($student, true).' ');
+if (count($attempts = $DB->get_records('game_attempts', array( 'gameid' => $game->id,
+ 'userid' => $attempt->userid), 'attempt ASC')) > 1) {
+ // Print list of attempts.
+ $attemptlist = '';
+ foreach ($attempts as $at) {
+ $attemptlist .= ($at->id == $attempt->id) ? ''.$at->attempt.' , ' : ''.$at->attempt.' , ';
}
- //if (has_capability('mod/game:grade', $context)){
- if( count($attempts = $DB->get_records('game_attempts', array( 'gameid' => $game->id, 'userid' => $attempt->userid), 'attempt ASC')) > 1) {
- // print list of attempts
- $attemptlist = '';
- foreach ($attempts as $at) {
- $attemptlist .= ($at->id == $attempt->id)
- ? ''.$at->attempt.' , '
- : ''.$at->attempt.' , ';
- }
- $table->data[] = array(get_string('attempts', 'game').':', trim($attemptlist, ' ,'));
+ $table->data[] = array(get_string('attempts', 'game').':', trim($attemptlist, ' ,'));
+}
+
+$table->data[] = array(get_string('startedon', 'game').':', userdate($attempt->timestart));
+if ($attempt->timefinish) {
+ $table->data[] = array("$strtimecompleted:", userdate($attempt->timefinish));
+ $table->data[] = array("$strtimetaken:", $timetaken);
+}
+
+// If the student is allowed to see their score.
+if ($options->scores) {
+ if ($game->grade) {
+ if ($overtime) {
+ $result->sumgrades = "0";
+ $result->grade = "0.0";
}
- //}
- $table->data[] = array(get_string('startedon', 'game').':', userdate($attempt->timestart));
- if ($attempt->timefinish) {
- $table->data[] = array("$strtimecompleted:", userdate($attempt->timefinish));
- $table->data[] = array("$strtimetaken:", $timetaken);
+ $a = new stdClass;
+ $percentage = round($attempt->score * 100, 0);
+ $a->grade = game_score_to_grade( $attempt->score, $game);
+ $a->maxgrade = $game->grade;
+ $table->data[] = array("$strscore:", "{$a->grade}/{$game->grade} ($percentage %)");
}
- //if the student is allowed to see their score
- if ($options->scores) {
- if ($game->grade) {
- if($overtime) {
- $result->sumgrades = "0";
- $result->grade = "0.0";
- }
-
- $a = new stdClass;
- $percentage = round($attempt->score*100, 0);
- $a->grade = game_score_to_grade( $attempt->score, $game);
- $a->maxgrade = $game->grade;
- $table->data[] = array("$strscore:", "{$a->grade}/{$game->grade} ($percentage %)");
- //$table->data[] = array("$strgrade:", get_string('outof', 'game', $a));
+}
+
+if ($options->overallfeedback && $feedback) {
+ $table->data[] = array(get_string('feedback', 'game'), $feedback);
+}
+
+if ($isteacher and $attempt->userid == $USER->id) {
+ // The teacher is at the end of a preview. Print button to start new preview.
+ unset($buttonoptions);
+ $buttonoptions['q'] = $game->id;
+ $buttonoptions['forcenew'] = true;
+ echo '';
+ print_single_button($CFG->wwwroot.'/mod/game/attempt.php', $buttonoptions, get_string('startagain', 'game'));
+ echo '
';
+} else {
+ // Print number of the attempt.
+ print_heading(get_string('reviewofattempt', 'game', $attempt->attempt));
+}
+print_table($table);
+
+// Print javascript button to close the window, if necessary.
+if (!$isteacher) {
+ include('attempt_close_js.php');
+}
+
+// Print the navigation panel if required.
+$numpages = game_number_of_pages( $attempt->layout);
+if ($numpages > 1 and !$showall) {
+ print_paging_bar($numpages, $page, 1, 'review.php?attempt='.$attempt->id.'&');
+ echo '';
+}
+
+// Print all the questions.
+if ($pagelist) {
+ game_print_questions( $pagelist, $attempt, $questions, $options, $states, $game);
+}
+
+// Print the navigation panel if required.
+if ($numpages > 1 and !$showall) {
+ print_paging_bar($numpages, $page, 1, 'review.php?attempt='.$attempt->id.'&');
+}
+
+// Print javascript button to close the window, if necessary.
+if (!$isteacher) {
+ require('attempt_close_js.php');
+}
+
+if (empty($popup)) {
+ echo $OUTPUT->footer($course);
+}
+
+function game_compute_states( $game, $questions) {
+ global $QTYPES;
+
+ // Restore the question sessions to their most recent states creating new sessions where required.
+ $states = array();
+ foreach ($questions as $question) {
+ $state = new StdClass;
+
+ $cmoptions->course = $game->course;
+ $cmoptions->optionflags->optionflags = 0;
+ $cmoptions->id = 0;
+ $cmoptions->shuffleanswers = 1;
+
+ $state->last_graded = new StdClass;
+ $state->last_graded->event = QUESTION_EVENTOPEN;
+
+ $state->raw_grade = 0;
+
+ $attempt = 0;
+ if (!$QTYPES[$question->qtype]->create_session_and_responses( $question, $state, $cmoptions, $attempt)) {
+ print_error( 'game_compute_states: problem');
}
- }
- if ($options->overallfeedback && $feedback) {
- $table->data[] = array(get_string('feedback', 'game'), $feedback);
- }
- if ($isteacher and $attempt->userid == $USER->id) {
- // the teacher is at the end of a preview. Print button to start new preview
- unset($buttonoptions);
- $buttonoptions['q'] = $game->id;
- $buttonoptions['forcenew'] = true;
- echo '';
- print_single_button($CFG->wwwroot.'/mod/game/attempt.php', $buttonoptions, get_string('startagain', 'game'));
- echo '
';
- } else { // print number of the attempt
- print_heading(get_string('reviewofattempt', 'game', $attempt->attempt));
- }
- print_table($table);
- // print javascript button to close the window, if necessary
- if (!$isteacher) {
- include('attempt_close_js.php');
- }
+ $state->event = QUESTION_EVENTOPEN;
+ $state->manualcomment = '';
-/// Print the navigation panel if required
- $numpages = game_number_of_pages( $attempt->layout);
- if ($numpages > 1 and !$showall) {
- print_paging_bar($numpages, $page, 1, 'review.php?attempt='.$attempt->id.'&');
- echo '';
- }
+ $state->responses = array( '' => $question->studentanswer);
+ $state->attempt = $question->iid;
-/// Print all the questions
- if( $pagelist){
- game_print_questions( $pagelist, $attempt, $questions, $options, $states, $game);
+ $states[ $question->id] = $state;
}
+ return $states;
+}
- // Print the navigation panel if required
- if ($numpages > 1 and !$showall) {
- print_paging_bar($numpages, $page, 1, 'review.php?attempt='.$attempt->id.'&');
- }
+function game_print_questions( $pagelist, $attempt, $questions, $options, $states, $game) {
+ $pagequestions = explode(',', $pagelist);
+ $number = game_first_questionnumber( $attempt->layout, $pagelist);
+ foreach ($pagequestions as $i) {
+ if (!isset($questions[$i])) {
+ echo $OUTPUT->box_start('center', '90%');
+ echo '' . $number . ' ';
+ notify(get_string('errormissingquestion', 'quiz', $i));
+ echo $OUTPUT->box_end();
+ $number++; // Just guessing that the missing question would have lenght 1.
+ continue;
+ }
+ $options->validation = QUESTION_EVENTVALIDATE === $states[$i]->event;
+ $options->history = false;
+ unset( $options->questioncommentlink);
- // print javascript button to close the window, if necessary
- if (!$isteacher) {
- include('attempt_close_js.php');
- }
+ // Print the question.
+ if ($i > 0) {
+ echo " \n";
+ }
+
+ $questions[$i]->maxgrade = 0;
- if (empty($popup)) {
- echo $OUTPUT->footer($course);
+ $options->correct_responses = 0;
+ $options->feedback = 0;
+ $options->readonly = 0;
+
+ global $QTYPES;
+
+ unset( $cmoptions);
+ $cmoptions->course = $game->course;
+ $cmoptions->optionflags->optionflags = 0;
+ $cmoptions->id = 0;
+ $cmoptions->shuffleanswers = 1;
+ $attempt = 0;
+ $question = $questions[ $i];
+ if (!$QTYPES[$question->qtype]->create_session_and_responses( $question, $state, $cmoptions, $attempt)) {
+ print_error( 'game_sudoku_showquestions_quiz: problem');
+ }
+ $cmoptions->optionflags = 0;
+ print_question( $question, $states[$i], $number, $cmoptions, $options);
+ $number += $questions[$i]->length;
}
-
- function game_compute_states( $game, $questions)
- {
- global $QTYPES;
-
- // Restore the question sessions to their most recent states
- // creating new sessions where required
-
- $states = array();
- foreach ($questions as $question) {
- $state = new StdClass;
-
- $cmoptions->course = $game->course;
- $cmoptions->optionflags->optionflags = 0;
- $cmoptions->id = 0;
- $cmoptions->shuffleanswers = 1;
-
- $state->last_graded = new StdClass;
- $state->last_graded->event = QUESTION_EVENTOPEN;
-
- $state->raw_grade = 0;
-
- $attempt = 0;
- if (!$QTYPES[$question->qtype]->create_session_and_responses( $question, $state, $cmoptions, $attempt)) {
- print_error( 'game_compute_states: problem');
- }
-
- $state->event = QUESTION_EVENTOPEN;
- //$question->maxgrade = 100;
- $state->manualcomment = '';
-
- $state->responses = array( '' => $question->studentanswer);
- $state->attempt = $question->iid;
-
- $states[ $question->id] = $state;
- }
- return $states;
- }
-
-
-
- function game_print_questions( $pagelist, $attempt, $questions, $options, $states, $game)
- {
- $pagequestions = explode(',', $pagelist);
- $number = game_first_questionnumber( $attempt->layout, $pagelist);
- foreach ($pagequestions as $i) {
- if (!isset($questions[$i])) {
- echo $OUTPUT->box_start('center', '90%');
- echo '' . $number . ' ';
- notify(get_string('errormissingquestion', 'quiz', $i));
- echo $OUTPUT->box_end();
- $number++; // Just guessing that the missing question would have lenght 1
- continue;
- }
- $options->validation = QUESTION_EVENTVALIDATE === $states[$i]->event;
- //$options->history = ($isteacher and !$attempt->preview) ? 'all' : 'graded';
- $options->history = false;
- unset( $options->questioncommentlink);
- // Print the question
- if ($i > 0) {
- echo " \n";
- }
- $questions[$i]->maxgrade = 0;
-
- $options->correct_responses = 0;
- $options->feedback = 0;
- $options->readonly = 0;
-
- global $QTYPES;
-
- unset( $cmoptions);
- $cmoptions->course = $game->course;
- $cmoptions->optionflags->optionflags = 0;
- $cmoptions->id = 0;
- $cmoptions->shuffleanswers = 1;
- $attempt = 0;
- $question = $questions[ $i];
- if (!$QTYPES[$question->qtype]->create_session_and_responses( $question, $state, $cmoptions, $attempt)) {
- print_error( 'game_sudoku_showquestions_quiz: problem');
- }
- $cmoptions->optionflags = 0;
- print_question( $question, $states[$i], $number, $cmoptions, $options);
- $number += $questions[$i]->length;
- }
- }
-
-?>
+}
diff --git a/settings.php b/settings.php
old mode 100644
new mode 100755
index ed99261..aaac733
--- a/settings.php
+++ b/settings.php
@@ -1,4 +1,19 @@
-.
+
/**
* Form for creating and modifying a game
*
@@ -12,7 +27,7 @@ defined('MOODLE_INTERNAL') || die;
if ($ADMIN->fulltree) {
require_once(dirname(__FILE__).'/lib.php');
- // General settings
+ // General settings.
$settings->add(new admin_setting_configcheckbox('game/hidebookquiz',
get_string('hidebookquiz', 'game'), get_string('confighidebookquiz', 'game'), 0));
diff --git a/showanswers.php b/showanswers.php
index d55731a..010aa23 100755
--- a/showanswers.php
+++ b/showanswers.php
@@ -1,4 +1,19 @@
-.
+
/**
* This page shows the answers of the current game
*
@@ -6,49 +21,53 @@
* @version $Id: showanswers.php,v 1.7 2012/07/25 22:46:42 bdaloukas Exp $
* @package game
**/
-
- require_once("../../config.php");
- require_once( "headergame.php");
- if (!has_capability('mod/game:viewreports', $context)){
- print_error( get_string( 'only_teachers', 'game'));
- }
+require_once("../../config.php");
+require_once( "headergame.php");
+
+if (!has_capability('mod/game:viewreports', $context)) {
+ print_error( get_string( 'only_teachers', 'game'));
+}
- $PAGE->navbar->add(get_string('showanswers', 'game'));
+$PAGE->navbar->add(get_string('showanswers', 'game'));
- $action = optional_param('action', "", PARAM_ALPHANUM); // action
- if( $action == 'delstats')
- $DB->delete_records('game_repetitions', array('gameid' => $game->id, 'userid' => $USER->id));
- if( $action == 'computestats')
- game_compute_repetitions($game);
+$action = optional_param('action', "", PARAM_ALPHANUM); // Action.
+if ($action == 'delstats') {
+ $DB->delete_records('game_repetitions', array('gameid' => $game->id, 'userid' => $USER->id));
+}
+if ($action == 'computestats') {
+ game_compute_repetitions($game);
+}
- echo ''.get_string('repetitions', 'game').': ';
- echo get_string('user').': ';
- game_showusers($game);
- echo " wwwroot}/mod/game/showanswers.php?q=$q&action=delstats\">".get_string('clearrepetitions','game').' ';
- echo " wwwroot}/mod/game/showanswers.php?q=$q&action=computestats\">".get_string('computerepetitions','game').' ';
- echo ' ';
+echo ''.get_string('repetitions', 'game').': ';
+echo get_string('user').': ';
+game_showusers($game);
+echo " wwwroot}/mod/game/showanswers.php?q=$q&action=delstats\">".
+ get_string('clearrepetitions', 'game').' ';
+echo " wwwroot}/mod/game/showanswers.php?q=$q&action=computestats\">".
+ get_string('computerepetitions', 'game').' ';
+echo ' ';
- $existsbook = ($DB->get_record( 'modules', array( 'name' => 'book'), 'id,id'));
- game_showanswers( $game, $existsbook, $context);
+$existsbook = ($DB->get_record( 'modules', array( 'name' => 'book'), 'id,id'));
+game_showanswers( $game, $existsbook, $context);
- echo $OUTPUT->footer();
+echo $OUTPUT->footer();
-function game_compute_repetitions($game){
+function game_compute_repetitions($game) {
global $DB, $USER;
- $DB->delete_records('game_repetitions', array('gameid' => $game->id,'userid' => $USER->id));
+ $DB->delete_records('game_repetitions', array('gameid' => $game->id, 'userid' => $USER->id));
$sql = "INSERT INTO {game_repetitions}( gameid,userid,questionid,glossaryentryid,repetitions) ".
"SELECT $game->id,$USER->id,questionid,glossaryentryid,COUNT(*) ".
"FROM {game_queries} WHERE gameid=$game->id AND userid=$USER->id GROUP BY questionid,glossaryentryid";
- if( !$DB->execute( $sql))
+ if (!$DB->execute( $sql)) {
print_error('Problem on computing statistics for repetitions');
+ }
}
-function game_showusers($game)
-{
+function game_showusers($game) {
global $CFG, $USER;
$users = array();
@@ -63,11 +82,13 @@ function game_showusers($game)
if ($guest = guest_user()) {
$users[$guest->id] = fullname($guest);
}
+ $href = $CFG->wwwroot.'/mod/game/showanswers.php?q='.$game->id.'&userid=';
?>
id,PARAM_INT);
+ $selected = optional_param('userid', $USER->id, PARAM_INT);
$output = '' . "\n";
$output .= ' ' . "\n";
}
-function game_showanswers( $game, $existsbook, $context)
-{
- if( $game->gamekind == 'bookquiz' and $existsbook){
+function game_showanswers( $game, $existsbook, $context) {
+ if ($game->gamekind == 'bookquiz' and $existsbook) {
game_showanswers_bookquiz( $game, $context);
return;
}
-
- switch( $game->sourcemodule){
- case 'question':
- game_showanswers_question( $game, $context);
- break;
- case 'glossary':
- game_showanswers_glossary( $game);
- break;
- case 'quiz':
- game_showanswers_quiz( $game, $context);
- break;
+
+ switch ($game->sourcemodule) {
+ case 'question':
+ game_showanswers_question( $game, $context);
+ break;
+ case 'glossary':
+ game_showanswers_glossary( $game);
+ break;
+ case 'quiz':
+ game_showanswers_quiz( $game, $context);
+ break;
}
}
-function game_showanswers_appendselect( $game)
-{
- switch( $game->gamekind){
- case 'hangman':
- case 'cross':
- case 'crypto':
- return " AND qtype='shortanswer'";
- case 'millionaire':
- return " AND qtype = 'multichoice'";
- case 'sudoku':
- case 'bookquiz':
- case 'snakes':
- return " AND qtype in ('shortanswer', 'truefalse', 'multichoice')";
+function game_showanswers_appendselect( $game) {
+ switch ($game->gamekind) {
+ case 'hangman':
+ case 'cross':
+ case 'crypto':
+ return " AND qtype='shortanswer'";
+ case 'millionaire':
+ return " AND qtype = 'multichoice'";
+ case 'sudoku':
+ case 'bookquiz':
+ case 'snakes':
+ return " AND qtype in ('shortanswer', 'truefalse', 'multichoice')";
}
-
+
return '';
}
-function game_showanswers_question( $game, $context)
-{
+function game_showanswers_question( $game, $context) {
global $DB;
- if( $game->gamekind != 'bookquiz'){
+ if ($game->gamekind != 'bookquiz') {
$select = ' category='.$game->questioncategoryid;
- if( $game->subcategories){
+ if ($game->subcategories) {
$cats = question_categorylist( $game->questioncategoryid);
- if( strpos( $cats, ',') > 0){
+ if (strpos( $cats, ',') > 0) {
$select = ' category in ('.$cats.')';
}
}
- }else
- {
+ } else {
$context2 = get_context_instance(50, $COURSE->id);
$select = " contextid in ($context2->id)";
$select2 = '';
- if( $recs = $DB->get_records_select( 'question_categories', $select, null, 'id,id')){
- foreach( $recs as $rec){
+ if ($recs = $DB->get_records_select( 'question_categories', $select, null, 'id,id')) {
+ foreach ($recs as $rec) {
$select2 .= ','.$rec->id;
}
}
$select = ' AND category IN ('.substr( $select2, 1).')';
}
-
+
$select .= ' AND hidden = 0 ';
$select .= game_showanswers_appendselect( $game);
-
+
$showcategories = ($game->gamekind == 'bookquiz');
$order = ($showcategories ? 'category,questiontext' : 'questiontext');
game_showanswers_question_select( $game, '{question} q', $select, '*', $order, $showcategories, $game->course, $context);
}
-
-function game_showanswers_quiz( $game, $context)
-{
+function game_showanswers_quiz( $game, $context) {
global $CFG;
- $select = "quiz='$game->quizid' ".
- ' AND qqi.question=q.id'.
- ' AND q.hidden=0'.
- game_showanswers_appendselect( $game);
- $table = '{question} q,{quiz_question_instances} qqi';
-
+ $select = "quiz='$game->quizid' ".
+ ' AND qqi.question=q.id'.
+ ' AND q.hidden=0'.
+ game_showanswers_appendselect( $game);
+ $table = '{question} q,{quiz_question_instances} qqi';
+
game_showanswers_question_select( $game, $table, $select, 'q.*', 'category,questiontext', false, $game->course, $context);
}
-
-function game_showanswers_question_select( $game, $table, $select, $fields, $order, $showcategoryname, $courseid, $context)
-{
+function game_showanswers_question_select( $game, $table, $select, $fields, $order, $showcategoryname, $courseid, $context) {
global $CFG, $DB, $OUTPUT;
$sql = "SELECT $fields FROM $table WHERE $select ORDER BY $order";
- if( ($questions = $DB->get_records_sql( $sql)) === false){
+ if (($questions = $DB->get_records_sql( $sql)) === false) {
return;
}
$table .= ",{game_repetitions} gr";
$select .= " AND gr.questionid=q.id AND gr.glossaryentryid=0 AND gr.gameid=".$game->id;
- $userid = optional_param('userid',0,PARAM_INT);
- if( $userid)
+ $userid = optional_param('userid', 0, PARAM_INT);
+ if ($userid) {
$select .= " AND gr.userid=$userid";
+ }
$sql = "SELECT q.id as id,SUM(repetitions) as c FROM {$table} WHERE $select GROUP BY q.id";
$reps = $DB->get_records_sql( $sql);
-
- $categorynames = array();
- if( $showcategoryname){
- $select = '';
- $recs = $DB->get_records( 'question_categories', null, '', '*', 0, 1);
- foreach( $recs as $rec){
- if( array_key_exists( 'course', $rec)){
- $select = "course=$courseid";
- }else{
- $context = get_context_instance(50, $courseid);
- $select = " contextid in ($context->id)";
- }
- break;
- }
-
- if( ($categories = $DB->get_records_select( 'question_categories', $select, null, '', 'id,name'))){
- foreach( $categories as $rec){
- $categorynames[ $rec->id] = $rec->name;
- }
- }
- }
-
+
+ $categorynames = array();
+ if ($showcategoryname) {
+ $select = '';
+ $recs = $DB->get_records( 'question_categories', null, '', '*', 0, 1);
+ foreach ($recs as $rec) {
+ if (array_key_exists( 'course', $rec)) {
+ $select = "course=$courseid";
+ } else {
+ $context = get_context_instance(50, $courseid);
+ $select = " contextid in ($context->id)";
+ }
+ break;
+ }
+
+ if (($categories = $DB->get_records_select( 'question_categories', $select, null, '', 'id,name'))) {
+ foreach ($categories as $rec) {
+ $categorynames[ $rec->id] = $rec->name;
+ }
+ }
+ }
+
echo '';
echo ' ';
- if( $showcategoryname){
- echo ''.get_string( 'categories', 'quiz').' ';
- }
+ if ($showcategoryname) {
+ echo ''.get_string( 'categories', 'quiz').' ';
+ }
echo ''.get_string( 'questions', 'quiz').' ';
echo ''.get_string( 'answers', 'quiz').' ';
echo ''.get_string( 'feedbacks', 'game').' ';
- if( $reps)
+ if ($reps) {
echo ''.get_string( 'repetitions', 'game').' ';
+ }
echo " \r\n";
$line = 0;
- foreach( $questions as $question){
+ foreach ($questions as $question) {
echo '';
echo ''.(++$line);
echo ' ';
- if( $showcategoryname){
- echo '';
- if( array_key_exists( $question->category, $categorynames)){
- echo $categorynames[ $question->category];
- }else{
- echo ' ';
- }
- echo ' ';
- }
+ if ($showcategoryname) {
+ echo '';
+ if (array_key_exists( $question->category, $categorynames)) {
+ echo $categorynames[ $question->category];
+ } else {
+ echo ' ';
+ }
+ echo ' ';
+ }
echo '';
- echo "wwwroot}/question/question.php?inpopup=1&id=$question->id&courseid=$courseid\" target=\"_blank\"> pix_url('t/edit')."\" alt=\"Edit\" /> ";
-
- echo game_filterquestion(str_replace( array( "\'", '\"'), array( "'", '"'), $question->questiontext), $question->id, $context->id, $game->course);
-
- switch( $question->qtype){
- case 'shortanswer':
- $recs = $DB->get_records( 'question_answers', array( 'question' => $question->id), 'fraction DESC', 'id,answer,feedback');
- if( $recs == false){
- $rec = false;
- }else{
- foreach( $recs as $rec)
- break;
- }
- echo " $rec->answer ";
- if( $rec->feedback == '')
- $rec->feedback = ' ';
- echo "$rec->feedback ";
- break;
- case 'multichoice':
- case 'truefalse':
- $recs = $DB->get_records( 'question_answers', array( 'question' => $question->id));
- $feedback = '';
- echo '';
- $i = 0;
- foreach( $recs as $rec){
- if( $i++ > 0)
- echo ' ';
- if( $rec->fraction == 1){
- echo " $rec->answer ";
- if( $rec->feedback == '')
- $feedback .= ' ';
- else
+ echo "wwwroot}/question/question.php?inpopup=1&id=$question->id&courseid=$courseid\" target=\"_blank\">";
+ echo " pix_url('t/edit')."\" alt=\"Edit\" /> ";
+
+ echo game_filterquestion(str_replace( array( "\'", '\"'), array( "'", '"'),
+ $question->questiontext), $question->id, $context->id, $game->course);
+
+ switch ($question->qtype) {
+ case 'shortanswer':
+ $recs = $DB->get_records( 'question_answers',
+ array( 'question' => $question->id), 'fraction DESC', 'id,answer,feedback');
+ if ($recs == false) {
+ $rec = false;
+ } else {
+ foreach ($recs as $rec) {
+ break;
+ }
+ }
+ echo " $rec->answer ";
+ if ($rec->feedback == '') {
+ $rec->feedback = ' ';
+ }
+ echo "$rec->feedback ";
+ break;
+ case 'multichoice':
+ case 'truefalse':
+ $recs = $DB->get_records( 'question_answers', array( 'question' => $question->id));
+ $feedback = '';
+ echo '';
+ $i = 0;
+ foreach ($recs as $rec) {
+ if ($i++ > 0) {
+ echo ' ';
+ }
+ if ($rec->fraction == 1) {
+ echo " $rec->answer ";
+ if ($rec->feedback == '') {
+ $feedback .= ' ';
+ }
+ } else {
$feedback .= "$rec->feedback ";
-
- }else
- {
- echo " $rec->answer";
- if( $rec->feedback == '')
- $feedback .= ' ';
- else
+ }
+ } else {
+ echo " $rec->answer";
+ if ($rec->feedback == '') {
+ $feedback .= ' ';
+ } else {
$feedback .= " ";
+ }
}
- }
- echo ' ';
- if( $feedback == '')
- $feedback = ' ';
- echo "$feedback ";
- break;
- default:
- echo "$question->qtype ";
+ echo '';
+ if ($feedback == '') {
+ $feedback = ' ';
+ }
+ echo "$feedback ";
+ break;
+ default:
+ echo "$question->qtype ";
break;
}
- //Show repetitions
- if( $reps){
- if( array_key_exists( $question->id, $reps)){
+ // Show repetitions.
+ if ($reps) {
+ if (array_key_exists( $question->id, $reps)) {
$rep = $reps[ $question->id];
echo ''.$rep->c.' ';
- }else
+ } else {
echo ' ';
+ }
}
echo " \r\n";
@@ -326,54 +350,57 @@ function game_showanswers_question_select( $game, $table, $select, $fields, $ord
echo "
\r\n\r\n";
}
-function game_showanswers_glossary( $game)
-{
+function game_showanswers_glossary( $game) {
global $CFG, $DB;
-
- $table = '{glossary_entries} ge';
+
+ $table = '{glossary_entries} ge';
$select = "glossaryid={$game->glossaryid}";
- if( $game->glossarycategoryid){
- $select .= " AND gec.entryid = ge.id ".
- " AND gec.categoryid = {$game->glossarycategoryid}";
- $table .= ",{glossary_entries_categories} gec";
- }
+ if ($game->glossarycategoryid) {
+ $select .= " AND gec.entryid = ge.id ".
+ " AND gec.categoryid = {$game->glossarycategoryid}";
+ $table .= ",{glossary_entries_categories} gec";
+ }
$sql = "SELECT ge.id,definition,concept FROM $table WHERE $select ORDER BY definition";
- if( ($questions = $DB->get_records_sql( $sql)) === false){
+ if (($questions = $DB->get_records_sql( $sql)) === false) {
return;
}
- //Show repetitions of questions
+ // Show repetitions of questions.
$table = "{glossary_entries} ge, {game_repetitions} gr";
$select = "glossaryid={$game->glossaryid} AND gr.glossaryentryid=ge.id AND gr.gameid=".$game->id;
- $userid = optional_param('userid',0,PARAM_INT);
- if( $userid)
+ $userid = optional_param('userid', 0, PARAM_INT);
+ if ($userid) {
$select .= " AND gr.userid=$userid";
- if( $game->glossarycategoryid){
- $select .= " AND gec.entryid = ge.id ".
- " AND gec.categoryid = {$game->glossarycategoryid}";
+ }
+ if ($game->glossarycategoryid) {
+ $select .= " AND gec.entryid = ge.id ".
+ " AND gec.categoryid = {$game->glossarycategoryid}";
$table .= ",{glossary_entries_categories} gec";
}
$sql = "SELECT ge.id,SUM(repetitions) as c FROM {$table} WHERE $select GROUP BY ge.id";
$reps = $DB->get_records_sql( $sql);
-
+
echo '';
echo ' ';
echo ''.get_string( 'questions', 'quiz').' ';
echo ''.get_string( 'answers', 'quiz').' ';
- if( $reps != false)
+ if ($reps != false) {
echo ''.get_string( 'repetitions', 'game').' ';
+ }
echo " \r\n";
$line = 0;
- foreach( $questions as $question){
- if( $game->param7 == 0){ //Not allowed spaces
- if(!( strpos( $question->concept, ' ') === false))
+ foreach ($questions as $question) {
+ if ($game->param7 == 0) { // Not allowed spaces.
+ if (!( strpos( $question->concept, ' ') === false)) {
continue;
+ }
}
- if( $game->param8 == 0){ //Not allowed -
- if(!( strpos( $question->concept, '-') === false))
+ if ($game->param8 == 0) { // Not allowed -.
+ if (!( strpos( $question->concept, '-') === false)) {
continue;
+ }
}
-
+
echo '';
echo ''.(++$line);
echo ' ';
@@ -383,30 +410,29 @@ function game_showanswers_glossary( $game)
$query->glossaryentryid = $question->id;
echo ''.game_show_query( $game, $query, $question->definition).' ';
-
echo ''.$question->concept.' ';
- if( $reps != false){
- if( array_key_exists( $question->id, $reps))
- {
+ if ($reps != false) {
+ if (array_key_exists( $question->id, $reps)) {
$rep = $reps[ $question->id];
echo ''.$rep->c.' ';
- }else
+ } else {
echo ' ';
+ }
}
echo " \r\n";
}
echo "
\r\n\r\n";
}
-function game_showanswers_bookquiz( $game, $context)
-{
+function game_showanswers_bookquiz( $game, $context) {
global $CFG;
-
- $select = "gbq.questioncategoryid=q.category ".
- " AND gbq.gameid = $game->id ".
- " AND bc.id = gbq.chapterid";
- $table = "{question} q,{game_bookquiz_questions} gbq,{book_chapters} bc";
-
+
+ $select = "gbq.questioncategoryid=q.category ".
+ " AND gbq.gameid = $game->id ".
+ " AND bc.id = gbq.chapterid";
+ $table = "{question} q,{game_bookquiz_questions} gbq,{book_chapters} bc";
+
$showcategories = ($game->gamekind == 'bookquiz');
- game_showanswers_question_select( $game, $table, $select, "DISTINCT q.*", "bc.pagenum,questiontext", $showcategories, $game->course, $context);
+ game_showanswers_question_select( $game, $table, $select, "DISTINCT q.*",
+ "bc.pagenum,questiontext", $showcategories, $game->course, $context);
}
diff --git a/showattempts.php b/showattempts.php
index 83797ad..65af7fb 100755
--- a/showattempts.php
+++ b/showattempts.php
@@ -1,4 +1,19 @@
-.
+
/**
* This page shows the answers of the current game
*
@@ -6,256 +21,259 @@
* @version $Id: showattempts.php,v 1.6 2012/07/25 11:16:04 bdaloukas Exp $
* @package game
**/
-
- require_once("../../config.php");
- require_once( "headergame.php");
- if (!has_capability('mod/game:viewreports', $context)){
- print_error( get_string( 'only_teachers', 'game'));
- }
+require_once("../../config.php");
+require_once( "headergame.php");
- $PAGE->navbar->add(get_string('showattempts', 'game'));
+if (!has_capability('mod/game:viewreports', $context)) {
+ print_error( get_string( 'only_teachers', 'game'));
+}
- $action = optional_param('action', "", PARAM_ALPHANUM); // action
- if( $action == 'delete'){
- game_ondeleteattempt( $game);
- }
+$PAGE->navbar->add(get_string('showattempts', 'game'));
+
+$action = optional_param('action', "", PARAM_ALPHANUM); // Action.
+if ($action == 'delete') {
+ game_ondeleteattempt( $game);
+}
+
+echo get_string( 'group').': ';
+game_showgroups( $game);
+echo ' '.get_string('user').': ';
+game_showusers( $game);echo ' ';
+
+game_showattempts( $game);
+
+echo $OUTPUT->footer();
+
+function game_showusers($game) {
+ global $CFG, $USER, $DB;
- echo get_string( 'group').': ';
- game_showgroups( $game);
- echo ' '.get_string('user').': ';
- game_showusers( $game);echo ' ';
-
- game_showattempts( $game);
-
- echo $OUTPUT->footer();
-
-
- function game_showusers($game)
- {
- global $CFG, $USER, $DB;
-
- $users = array();
-
- $context = game_get_context_course_instance( $game->course);
-
- $groupid = optional_param('groupid',0, PARAM_INT);
- $sql = "SELECT DISTINCT ra.userid,u.lastname,u.firstname FROM {role_assignments} ra, {user} u ".
- " WHERE ra.contextid={$context->id} AND ra.userid=u.id";
- if( $groupid != 0)
- $sql .= " AND ra.userid IN (SELECT gm.userid FROM {groups_members} gm WHERE gm.groupid=$groupid)";
- if( ($recs = $DB->get_records_sql( $sql))){
- foreach( $recs as $rec){
- $users[ $rec->userid] = $rec->lastname.' '.$rec->firstname;
- }
- }
-
-
- if ($guest = guest_user()) {
- $users[$guest->id] = fullname($guest);
+ $users = array();
+
+ $context = game_get_context_course_instance( $game->course);
+
+ $groupid = optional_param('groupid', 0, PARAM_INT);
+ $sql = "SELECT DISTINCT ra.userid,u.lastname,u.firstname FROM {role_assignments} ra, {user} u ".
+ " WHERE ra.contextid={$context->id} AND ra.userid=u.id";
+ if ($groupid != 0) {
+ $sql .= " AND ra.userid IN (SELECT gm.userid FROM {groups_members} gm WHERE gm.groupid=$groupid)";
+ }
+ if (($recs = $DB->get_records_sql( $sql))) {
+ foreach ($recs as $rec) {
+ $users[ $rec->userid] = $rec->lastname.' '.$rec->firstname;
}
- ?>
+ }
+
+ if ($guest = guest_user()) {
+ $users[$guest->id] = fullname($guest);
+ }
+ $href = $CFG->wwwroot.'/mod/game/showattempts.php?q='.$game->id.'&userid=';
+?>
- ' . "\n";
- $output .= ' ' . "\n";
-
- if (!empty($options)) {
- foreach ($options as $value => $label) {
- $output .= ' ' . "\n";
- } else {
- $output .= '>'. $label .' ' . "\n";
- }
+ $attributes = 'onchange="javascript:onselectuser();"';
+ $name = 'user';
+ $id = 'menu'.$name;
+ $class = 'menu'.$name;
+ $class = 'select ' . $class; // Add 'select' selector always.
+ $nothing = get_string("allparticipants");
+ $nothingvalue = '0';
+ $options = $users;
+ $selected = optional_param('userid', 0, PARAM_INT);
+
+ $output = '' . "\n";
+ $output .= ' ' . "\n";
+
+ if (!empty($options)) {
+ foreach ($options as $value => $label) {
+ $output .= ' ' . "\n";
+ } else {
+ $output .= '>'. $label .' ' . "\n";
}
}
- echo $output . ' ' . "\n";
}
+ echo $output . ' ' . "\n";
+}
- function game_showgroups($game)
- {
- global $CFG, $USER, $DB;
-
- $groups = array();
- if( ($recs = $DB->get_records_sql( "SELECT id,name FROM {groups} WHERE courseid=$game->course ORDER BY name"))){
- foreach( $recs as $rec){
- $groups[ $rec->id] = $rec->name;
- }
- }
+function game_showgroups($game) {
+ global $CFG, $USER, $DB;
- ?>
+ $groups = array();
+ if (($recs = $DB->get_records_sql( "SELECT id,name FROM {groups} WHERE courseid=$game->course ORDER BY name"))) {
+ foreach ($recs as $rec) {
+ $groups[ $rec->id] = $rec->name;
+ }
+ }
+ $href = $CFG->wwwroot.'/mod/game/showattempts.php?q='.$game->id.'&groupid=';
+?>
' . "\n";
- $output .= ' ' . "\n";
-
- if (!empty($options)) {
- foreach ($options as $value => $label) {
- $output .= ' ' . "\n";
- } else {
- $output .= '>'. $label .' ' . "\n";
- }
+ $attributes = 'onchange="javascript:onselectgroup();"';
+ $name = 'group';
+ $id = 'menu'.$name;
+ $class = 'menu'.$name;
+ $class = 'select ' . $class; // Add 'select' selector always.
+ $nothing = get_string("allgroups");
+ $nothingvalue = '0';
+ $options = $groups;
+ $selected = optional_param('groupid', 0, PARAM_INT);
+
+ $output = '' . "\n";
+ $output .= ' ' . "\n";
+
+ if (!empty($options)) {
+ foreach ($options as $value => $label) {
+ $output .= ' ' . "\n";
+ } else {
+ $output .= '>'. $label .' ' . "\n";
}
}
- echo $output . ' ' . "\n";
}
+ echo $output . '' . "\n";
+}
- function game_showattempts($game){
- global $CFG, $DB, $OUTPUT;
-
- $allowdelete = optional_param('allowdelete', 0, PARAM_INT);
-
- $userid = optional_param('userid',0,PARAM_INT);
- $limitfrom = optional_param('limitfrom', 0, PARAM_INT);
- $gamekind = $game->gamekind;
- $update = get_coursemodule_from_instance( 'game', $game->id, $game->course)->id;
-
- //Here are user attempts
- $table = "{game_attempts} as ga, {user} u, {game} as g";
- $select = "ga.userid=u.id AND ga.gameid={$game->id} AND g.id={$game->id}";
- $fields = "ga.id, u.lastname, u.firstname, ga.attempts,".
- "timestart, timefinish, timelastattempt, score, ga.lastip, ga.lastremotehost";
- if( $userid != 0)
- $select .= ' AND u.id='.$userid;
- $sql = "SELECT COUNT(*) AS c FROM $table WHERE $select";
- $count = $DB->count_records_sql( $sql);
- $maxlines = 20;
- $recslimitfrom = $recslimitnum = '';
- if( $count > $maxlines){
- $recslimitfrom = ( $limitfrom ? $limitfrom * $maxlines : '');
- $recslimitnum = $maxlines;
-
- for($i=0; $i*$maxlines < $count; $i++){
- if( $i == $limitfrom){
- echo ($i+1).' ';
- }else
- {
- echo "wwwroot}/mod/game/showattempts.php?q={$game->id}&limitfrom=$i&\">".($i+1)." ";
- echo ' ';
- }
+function game_showattempts($game) {
+ global $CFG, $DB, $OUTPUT;
+
+ $allowdelete = optional_param('allowdelete', 0, PARAM_INT);
+
+ $userid = optional_param('userid', 0, PARAM_INT);
+ $limitfrom = optional_param('limitfrom', 0, PARAM_INT);
+ $gamekind = $game->gamekind;
+ $update = get_coursemodule_from_instance( 'game', $game->id, $game->course)->id;
+
+ // Here are user attempts.
+ $table = "{game_attempts} as ga, {user} u, {game} as g";
+ $select = "ga.userid=u.id AND ga.gameid={$game->id} AND g.id={$game->id}";
+ $fields = "ga.id, u.lastname, u.firstname, ga.attempts,".
+ "timestart, timefinish, timelastattempt, score, ga.lastip, ga.lastremotehost";
+ if ($userid != 0) {
+ $select .= ' AND u.id='.$userid;
+ }
+ $sql = "SELECT COUNT(*) AS c FROM $table WHERE $select";
+ $count = $DB->count_records_sql( $sql);
+ $maxlines = 20;
+ $recslimitfrom = $recslimitnum = '';
+ if ($count > $maxlines) {
+ $recslimitfrom = ( $limitfrom ? $limitfrom * $maxlines : '');
+ $recslimitnum = $maxlines;
+
+ for ($i = 0; $i * $maxlines < $count; $i++) {
+ if ($i == $limitfrom) {
+ echo ($i + 1).' ';
+ } else {
+ echo "wwwroot}/mod/game/showattempts.php?q={$game->id}&limitfrom=$i&\">".($i + 1)." ";
+ echo ' ';
}
- echo " ";
}
+ echo " ";
+ }
- $sql = "SELECT $fields FROM $table WHERE $select ORDER BY timelastattempt DESC,timestart DESC";
- if( ($recs = $DB->get_records_sql( $sql, null, $recslimitfrom, $recslimitnum)) != false){
- echo '';
- echo ''.get_string( 'delete').' '.get_string('user').' ';
- echo ''.get_string('lastip', 'game').' ';
- echo ''.get_string('timestart', 'game').' ';
- echo ''.get_string('timelastattempt', 'game').' ';
- echo ''.get_string('timefinish', 'game').' ';
- echo ''.get_string('score', 'game').' ';
- echo ''.get_string('attempts', 'game').' ';
- echo ''.get_string('preview', 'game').' ';
- echo ''.get_string('showsolution', 'game').' ';
- echo " \r\n";
+ $sql = "SELECT $fields FROM $table WHERE $select ORDER BY timelastattempt DESC,timestart DESC";
+ if (($recs = $DB->get_records_sql( $sql, null, $recslimitfrom, $recslimitnum)) != false) {
+ echo '\r\n";
+ echo '';
+ echo "\r\n";
}
+ echo "
\r\n";
}
+}
+
+function game_ondeleteattempt( $game) {
+ global $CFG, $DB;
- function game_ondeleteattempt( $game)
- {
- global $CFG, $DB;
-
- $attemptid = required_param('attemptid', PARAM_INT);
-
- $attempt = $DB->get_record( 'game_attempts', array( 'id' => $attemptid));
-
- switch( $game->gamekind)
- {
- case 'bookquiz':
- $DB->delete_records( 'game_bookquiz_chapters', array( 'attemptid' => $attemptid));
- break;
- }
- $DB->delete_records( 'game_queries', array( 'attemptid' => $attemptid));
- $DB->delete_records( 'game_attempts', array( 'id' => $attemptid));
- }
+ $attemptid = required_param('attemptid', PARAM_INT);
+
+ $attempt = $DB->get_record( 'game_attempts', array( 'id' => $attemptid));
+
+ switch( $game->gamekind) {
+ case 'bookquiz':
+ $DB->delete_records( 'game_bookquiz_chapters', array( 'attemptid' => $attemptid));
+ break;
+ }
+ $DB->delete_records( 'game_queries', array( 'attemptid' => $attemptid));
+ $DB->delete_records( 'game_attempts', array( 'id' => $attemptid));
+}
diff --git a/tabs.php b/tabs.php
index d89168b..3383de0 100755
--- a/tabs.php
+++ b/tabs.php
@@ -1,4 +1,19 @@
-.
+
/**
* Sets up the tabs used by the game pages based on the users capabilites.
*
@@ -8,7 +23,7 @@
*/
if (empty($game)) {
- print_error('You cannot call this script in that way');
+ print_error('You cannot call this script in that way');
}
if (!isset($currenttab)) {
$currenttab = '';
@@ -29,39 +44,34 @@ $activated = array();
global $USER;
-
if (has_capability('mod/game:view', $context)) {
$row[] = new tabobject('info', "{$CFG->wwwroot}/mod/game/view.php?q=$game->id", get_string('info', 'game'));
}
if (has_capability('mod/game:viewreports', $context)) {
-//if( isteacher( $game->course, $USER->id)){
- $row[] = new tabobject('reports', "{$CFG->wwwroot}/mod/game/report.php?q=$game->id", get_string('results', 'game'));
-//}
+ $row[] = new tabobject('reports', "{$CFG->wwwroot}/mod/game/report.php?q=$game->id", get_string('results', 'game'));
}
if (has_capability('mod/game:preview', $context)) {
$row[] = new tabobject('preview', "{$CFG->wwwroot}/mod/game/attempt.php?a=$game->id", get_string('preview', 'game'));
}
if (has_capability('mod/game:manage', $context)) {
-//if( isteacher( $game->course, $USER->id)){
- global $USER;
- $sesskey = $USER->sesskey;
- $url = "{$CFG->wwwroot}/course/mod.php?update=$cm->id&return=true&sesskey=$sesskey";
+ global $USER;
+ $sesskey = $USER->sesskey;
+ $url = "{$CFG->wwwroot}/course/mod.php?update=$cm->id&return=true&sesskey=$sesskey";
$row[] = new tabobject('edit', $url, get_string('edit'));
-//}
}
-if ($currenttab == 'info' && count($row) == 1) {
+if ( !($currenttab == 'info' && count($row) == 1)) {
// Don't show only an info tab (e.g. to students).
-} else {
$tabs[] = $row;
}
if ($currenttab == 'reports' and isset($mode)) {
$inactive[] = 'reports';
$activated[] = 'reports';
-
+
$allreports = get_list_of_plugins("mod/game/report");
- $reportlist = array ('overview' /*, 'regrade' , 'grading' , 'analysis'*/); // Standard reports we want to show first
+ // Standard reports we want to show first
+ $reportlist = array ('overview' /*, 'regrade' , 'grading' , 'analysis'*/);
foreach ($allreports as $report) {
if (!in_array($report, $reportlist)) {
@@ -98,5 +108,3 @@ if ($currenttab == 'edit' and isset($mode)) {
}
print_tabs($tabs, $currenttab, $inactive, $activated);
-
-?>
diff --git a/translate.php b/translate.php
index 06ae926..fdea7a2 100755
--- a/translate.php
+++ b/translate.php
@@ -1,4 +1,19 @@
-.
+
/**
* Check translation of module Game
*
@@ -21,8 +36,9 @@ require( 'locallib.php');
$moodle19dir = '/var/www/moodle19';
$context = get_context_instance(CONTEXT_COURSE, $COURSE->id);
-if (!has_capability('mod/game:viewreports', $context))
+if (!has_capability('mod/game:viewreports', $context)) {
error( get_string( 'only_teachers', 'game'));
+}
$langname = array();
$langname['ca'] = 'Català (ca)';
@@ -45,16 +61,16 @@ $langname['uk'] = 'Українська (uk)';
$langname['pt_br'] = 'Português - Brasil (pt_br)';
$langname['zh_cn'] = '简体中文 (zh_cn)';
ksort( $langname);
-$a = read_dir( $CFG->dirroot.'/mod/game','php');
+$a = read_dir( $CFG->dirroot.'/mod/game', 'php');
$strings = array();
$files = array();
-foreach( $a as $file)
+foreach ($a as $file) {
$files[] = $file;
+}
sort( $files);
-foreach( $files as $file)
-{
- readsourcecode( $file, $strings);
+foreach ($files as $file) {
+ readsourcecode( $file, $strings);
}
$strings[ 'game:attempt'] = '/db/access.php * game:attempt';
@@ -86,150 +102,151 @@ unset( $en[ 'convertto']);
$langs = computelangs();
$sum = array();
$destdir = game_export_createtempdir();
-foreach( $langs as $lang)
-{
- if($lang != 'en' and $lang != 'CVS' and strpos( $lang, '_utf8') == 0 and strpos( $lang, '_uft8') == 0)
- {
+foreach ($langs as $lang) {
+ if ($lang != 'en' and $lang != 'CVS' and strpos( $lang, '_utf8') == 0 and strpos( $lang, '_uft8') == 0) {
computediff( $en, $lang, $strings, $langname, $sum, $destdir, $untranslated);
$auntranslated[ $lang] = $untranslated;
}
}
-$file_no_translation = 'game_lang_no_translation.zip';
-$filezip=game_create_zip( $destdir, $COURSE->id, $file_no_translation);
+$filenotranslation = 'game_lang_no_translation.zip';
+$filezip = game_create_zip( $destdir, $COURSE->id, $filenotranslation);
remove_dir( $destdir);
-$ilang=0;
+$ilang = 0;
echo '';
echo "Counter Language Missing words Percent completed ";
-foreach($sum as $s)
- echo ''.(++$ilang).' '.$s."\r\n";
+foreach ($sum as $s) {
+ echo ''.(++$ilang).' '.$s."\r\n";
+}
echo "
";
-echo "wwwroot}/file.php/1/export/$file_no_translation\">Words that is not translated yet in each language ";
+echo "wwwroot}/file.php/1/export/$filenotranslation\">Words that is not translated yet in each language ";
-//Find missing strings on en/game.php
+// Find missing strings on en/game.php.
$not = array();
$prevfile = '';
-foreach( $strings as $info)
-{
+foreach ($strings as $info) {
$pos = strpos( $info, '*');
- $name = substr( $info, $pos+2);
- $file = substr( $info, 0, $pos-1);
- if( substr( $file, 0, 1) == '/')
+ $name = substr( $info, $pos + 2);
+ $file = substr( $info, 0, $pos - 1);
+ if (substr( $file, 0, 1) == '/') {
$file = substr( $file, 1);
- if( $file != $prevfile)
- {
+ }
+ if ($file != $prevfile) {
$prevfile = $file;
}
- if( !array_key_exists( $name, $en))
+ if (!array_key_exists( $name, $en)) {
$not[ $info] = $info;
+ }
}
-$oldfile='';
+$oldfile = '';
unset( $not[ 'tabs.php * $report']);
unset( $not[ 'mod_form.php * game_\'.$gamekin']);
unset( $not[ 'mod.html * game_\'.$form->gamekin']);
unset( $not[ '/report/overview/report.php * fullname\')."\t".get_string(\'startedon']);
unset( $not[ '/hangman/play.php * hangman_correct_\'.$ter']);
-if( count( $not))
+if (count( $not)) {
echo " Missing strings on en/game.php ";
-foreach( $not as $key => $value)
-{
+}
+foreach ($not as $key => $value) {
$pos = strpos( $value, '*');
$file = trim( substr( $value, 0, $pos));
- $key = trim( substr( $value, $pos+1));
- if( $key == 'convertfrom' or $key == 'convertto')
+ $key = trim( substr( $value, $pos + 1));
+ if ($key == 'convertfrom' or $key == 'convertto') {
continue;
-
- if( substr( $file, 0, 1) == '/')
+ }
+
+ if (substr( $file, 0, 1) == '/') {
$file = substr( $file, 1);
- if( $file != $oldfile)
- {
+ }
+ if ($file != $oldfile) {
echo " //$file \r\n";
- $fileold=$file;
+ $fileold = $file;
}
echo '$'."string[ '$key'] = \"\"; ";
}
-//Finds translations to en that are not used now
+// Finds translations to en that are not used now.
$ret = '';
-foreach( $en as $key => $value)
-{
- if( !array_key_exists( $key, $strings))
+foreach ($en as $key => $value) {
+ if (!array_key_exists( $key, $strings)) {
$ret .= "$key = $value ";
+ }
}
-if( $ret != '')
+if ($ret != '') {
echo 'Translations that are not used '.$ret;
+}
-//Creates the zip files of translations
+// Creates the zip files of translations.
$destdir = game_export_createtempdir();
sort( $strings);
-foreach( $langname as $lang => $name)
-{
- $strings_lang = readlangfile( $lang, $header);
- if (empty($string_lang)) {
+foreach ($langname as $lang => $name) {
+ $stringslang = readlangfile( $lang, $header);
+ if (empty($stringlang)) {
continue;
}
$ret = '';
-
- foreach( $strings_lang as $key => $value)
- {
- if( !array_key_exists( $key, $en))
- {
- if( $key != 'convertfrom' and $key != 'convertto')
+
+ foreach ($stringslang as $key => $value) {
+ if (!array_key_exists( $key, $en)) {
+ if ($key != 'convertfrom' and $key != 'convertto') {
$ret .= ' '.$key."\r\n";
+ }
}
}
- if( $ret != '')
+ if ($ret != '') {
echo 'Unused translation for lang '.$lang.' '.substr( $ret, 4)."\r\n";
+ }
$ret = $header;
- foreach( $strings as $info)
- {
+ foreach ($strings as $info) {
$pos = strpos( $info, '*');
- $name = substr( $info, $pos+2);
- $file = substr( $info, 0, $pos-1);
- if( substr( $file, 0, 1) == '/')
+ $name = substr( $info, $pos + 2);
+ $file = substr( $info, 0, $pos - 1);
+ if (substr( $file, 0, 1) == '/') {
$file = substr( $file, 1);
- if( $file != $prevfile)
- {
+ }
+ if ($file != $prevfile) {
$prevfile = $file;
$ret .= "\r\n//".$file."\r\n";
}
- if( array_key_exists( $name, $strings_lang))
- $ret .= '$string'."[ '$name'] = ".$strings_lang[ $name]."\r\n";
+ if (array_key_exists( $name, $stringslang)) {
+ $ret .= '$string'."[ '$name'] = ".$stringslang[ $name]."\r\n";
+ }
}
- if( $lang != 'en')
- {
+ if ($lang != 'en') {
$untranslated = $auntranslated[ $lang];
- if( $untranslated != '')
+ if ($untranslated != '') {
$ret .= "\r\n//Untranslated\r\n".$untranslated;
+ }
}
mkdir( $destdir.'/'.$lang);
$file = $destdir.'/'.$lang.'/game.php';
file_put_contents( $file, $ret);
}
-$file_sorted = 'game_lang_sorted.zip';
-$filezip=game_create_zip( $destdir, $COURSE->id, $file_sorted);
+$filesorted = 'game_lang_sorted.zip';
+$filezip = game_create_zip( $destdir, $COURSE->id, $filesorted);
remove_dir( $destdir);
-echo "wwwroot}/file.php/1/export/$file_sorted\">Sorted translation files ";
+echo "wwwroot}/file.php/1/export/$filesorted\">Sorted translation files ";
asort( $en);
$sprev = '';
$keyprev = '';
$ret = '';
-foreach( $en as $key => $s)
-{
- if( $s == $sprev)
+foreach ($en as $key => $s) {
+ if ($s == $sprev) {
$ret .= "$key $keyprev $s \r\n";
+ }
$sprev = $s;
$keyprev = $key;
}
-if( $ret != '')
- echo 'Same translations Word1 Word2 Translation '.$ret.'
';
+if ($ret != '') {
+ echo 'Same translations ';
+ echo 'Word1 Word2 Translation '.$ret.'
';
+}
-function readlangfile( $lang, &$header)
-{
+function readlangfile( $lang, &$header) {
global $CFG;
$file = $CFG->dirroot.'/mod/game/lang/'.$lang.'/game.php';
@@ -242,45 +259,45 @@ function readlangfile( $lang, &$header)
$lines = file( $file);
$header = '';
$endofheader = false;
- foreach( $lines as $line)
- {
- if( $endofheader == false)
- {
- if( strpos( $line, '//') === false)
+ foreach ($lines as $line) {
+ if ($endofheader == false) {
+ if (strpos( $line, '//') === false) {
$endofheader = true;
- else
+ } else {
$header .= $line;
+ }
}
- if( splitlangdefinition($line,$name,$trans))
+ if (splitlangdefinition($line, $name, $trans)) {
$a[ $name] = $trans;
+ }
}
-
- if( $lang != 'en')
+
+ if ($lang != 'en') {
readlangfile_repairmoodle19( $lang, $a);
+ }
return $a;
}
-function splitlangdefinition($line,&$name,&$trans)
-{
+function splitlangdefinition($line, &$name, &$trans) {
$pos1 = strpos( $line, '=');
- if( $pos1 == 0)
+ if ($pos1 == 0) {
return false;
+ }
$pos2 = strpos( $line, '//');
- if( $pos2 != 0 or substr( $line, 0, 2) == '//')
- {
- if( $pos2 < $pos1)
- return false; //Commented line
+ if ($pos2 != 0 or substr( $line, 0, 2) == '//') {
+ if ($pos2 < $pos1) {
+ return false; // Commented line.
+ }
}
-
- $name = trim(substr( $line, 0, $pos1-1));
- $trans = trim(substr( $line, $pos1+1));
+
+ $name = trim(substr( $line, 0, $pos1 - 1));
+ $trans = trim(substr( $line, $pos1 + 1));
$pos = strpos( $name, '\'');
- if( $pos)
- {
- $name = substr( $name, $pos+1);
+ if ($pos) {
+ $name = substr( $name, $pos + 1);
$pos = strrpos( $name, '\'');
$name = substr( $name, 0, $pos);
}
@@ -288,122 +305,124 @@ function splitlangdefinition($line,&$name,&$trans)
return true;
}
-function readsourcecode( $file, &$strings)
-{
+function readsourcecode( $file, &$strings) {
global $CFG;
$lines = file( $file);
- foreach( $lines as $line)
- {
+ foreach ($lines as $line) {
parseline( $strings, $line, $file);
}
return $strings;
}
-function parseline( &$strings, $line, $filename)
-{
+function parseline( &$strings, $line, $filename) {
global $CFG;
-
+
$filename = substr( $filename, strlen( $CFG->dirroot.'/mod/game/'));
- if( strpos($filename, '/'))
+ if (strpos($filename, '/')) {
$filename = '/'.$filename;
+ }
$pos0 = 0;
- for(;;)
- {
+ for (;;) {
$pos = strpos( $line, 'get_string', $pos0);
- if( $pos == false)
+ if ($pos == false) {
$pos = strpos( $line, 'print_string', $pos0);
- if( $pos === false)
+ }
+ if ($pos === false) {
break;
+ }
$pos1 = strpos( $line, '(', $pos);
$pos2 = strpos( $line, ',', $pos);
$pos3 = strpos( $line, ')', $pos);
- if( $pos1 == 0 or $pos2 == 0 or $pos3 == 0)
- {
- $pos0 = $pos+1;
+ if ($pos1 == 0 or $pos2 == 0 or $pos3 == 0) {
+ $pos0 = $pos + 1;
continue;
}
- $name = gets( substr( $line, $pos1+1, $pos2-$pos1-1));
- $file = gets( substr( $line, $pos2+1, $pos3-$pos2-1));
+ $name = gets( substr( $line, $pos1 + 1, $pos2 - $pos1 - 1));
+ $file = gets( substr( $line, $pos2 + 1, $pos3 - $pos2 - 1));
- if( $file == 'game')
- {
- if( !array_key_exists( $name, $strings))
+ if ($file == 'game') {
+ if (!array_key_exists( $name, $strings)) {
$strings[ $name] = $filename.' * '.$name;
- }else
- {
+ }
+ } else {
$pos4 = strpos($file, '\'');
- if( $pos4)
+ if ($pos4) {
$file = substr( $file, 0, $pos4);
-
+ }
$pos4 = strpos($file, '"');
- if($pos4)
+ if ($pos4) {
$file = substr( $file, 0, $pos4);
+ }
- if( $file == 'game')
- {
- if( !array_key_exists( $name, $strings))
+ if ($file == 'game') {
+ if (!array_key_exists( $name, $strings)) {
$strings[ $name] = $filename.' * '.$name;
+ }
}
}
- $pos0 = $pos+1;
+ $pos0 = $pos + 1;
}
}
-function gets( $s)
-{
+function gets( $s) {
$s = trim( $s);
- if( substr( $s, 0, 1) == '"')
+ if (substr( $s, 0, 1) == '"') {
$s = substr( $s, 1, -1);
- if( substr( $s, 0, 1) == '\'')
+ }
+ if (substr( $s, 0, 1) == '\'') {
$s = substr( $s, 1, -1);
+ }
+
return $s;
}
function read_dir($dir, $ext) {
- if( $ext != '')
+ if ($ext != '') {
$ext = '.' .$ext;
+ }
$len = strlen( $ext);
$a = array( $dir);
$ret = array();
- while( count( $a)){
+ while (count( $a)) {
$dir = array_pop( $a);
- if( strpos( $dir, '/lang/') != 0)
+ if (strpos( $dir, '/lang/') != 0) {
continue;
+ }
$d = dir($dir);
while (false !== ($entry = $d->read())) {
- if($entry!='.' && $entry!='..') {
+ if ($entry != '.' && $entry != '..') {
$entry = $dir.'/'.$entry;
- if(is_dir($entry)) {
+ if (is_dir($entry)) {
$a[] = $entry;
} else {
- if( $len == 0)
+ if ($len == 0) {
$ret[] = $entry;
- else if( substr( $entry, -$len) == $ext)
+ } else if (substr( $entry, -$len) == $ext) {
$ret[] = $entry;
+ }
}
}
}
$d->close();
- }
+ }
- return $ret;
+ return $ret;
}
-function computelangs()
-{
+function computelangs() {
global $CFG;
$dir = $CFG->dirroot.'/mod/game/lang';
$ret = array();
$d = dir( $dir);
while (false !== ($entry = $d->read())) {
- if( $entry != '.' and $entry != '..'){
- if(is_dir($dir.'/'.$entry)) {
+ if ($entry != '.' and $entry != '..') {
+ if (is_dir($dir.'/'.$entry)) {
$ret[] = $entry;
}
}
@@ -412,14 +431,12 @@ function computelangs()
return $ret;
}
-function computediff( $en, $lang, $strings, $langname, &$sum, $outdir, &$untranslated)
-{
+function computediff( $en, $lang, $strings, $langname, &$sum, $outdir, &$untranslated) {
global $CFG;
$untranslated = '';
- $counten=count($en);
+ $counten = count($en);
$trans = readlangfile( $lang, $header);
- foreach( $trans as $s => $key)
- {
+ foreach ($trans as $s => $key) {
unset( $en[ $s]);
}
@@ -427,69 +444,69 @@ function computediff( $en, $lang, $strings, $langname, &$sum, $outdir, &$untrans
$lines = file( $file);
$count = 0;
$s = '';
- foreach( $lines as $line)
- {
+ foreach ($lines as $line) {
$s .= $line;
- if( ++$count >= 3)
+ if (++$count >= 3) {
break;
+ }
}
-
+
$a = array();
- foreach( $en as $name => $t)
- {
- if( array_key_exists( $name, $strings))
+ foreach ($en as $name => $t) {
+ if (array_key_exists( $name, $strings)) {
$file = $strings[ $name];
- else
+ } else {
$file = '';
+ }
$t = strip_tags( $t);
$a[ $file.' * '.$name] = '$'."string[ '$name'] = $t\r\n";
}
ksort( $a);
- if( array_key_exists( $lang, $langname))
+ if (array_key_exists( $lang, $langname)) {
$langprint = $langname[ $lang];
- else
+ } else {
$langprint = $lang;
+ }
- $sum[]="$langprint ".count($a)." ".round(100*($counten-count($a))/$counten,0)." % ";
- $prev_file = '';
- foreach( $a as $key => $line)
- {
+ $sum[] = "$langprint ".count($a)." ".
+ round(100 * ($counten - count($a)) / $counten, 0)." % ";
+ $prevfile = '';
+ foreach ($a as $key => $line) {
$pos = strpos( $key, '*');
- $file = trim( substr( $key, 0, $pos-1));
- if( substr( $file, 0, 1) == '/')
+ $file = trim( substr( $key, 0, $pos - 1));
+ if (substr( $file, 0, 1) == '/') {
$file = substr( $file, 1);
- if( $file != $prev_file)
- {
+ }
+ if ($file != $prevfile) {
$s .= "\r\n//$file\r\n";
- $prev_file = $file;
+ $prevfile = $file;
}
$s .= $line;
- $untranslated .= "//$prev_file ".$line;
+ $untranslated .= "//$prevfile ".$line;
}
$file = $outdir.'/'.$lang.'.php';
file_put_contents( $file, $s);
}
-//Copies the translation from Moodle 19
-function readlangfile_repairmoodle19( $lang, &$strings_lang)
-{
+// Copies the translation from Moodle 19.
+function readlangfile_repairmoodle19( $lang, &$stringslang) {
global $moodle19dir;
-
- if( $moodle19dir == '')
+
+ if ($moodle19dir == '') {
return;
-
+ }
+
$file = $moodle19dir.'/mod/game/lang/'.$lang.'_utf8/game.php';
$a = array();
$lines = file( $file);
- foreach( $lines as $line)
- {
- if( splitlangdefinition($line,$name,$trans))
- {
- if( !array_key_exists( $name, $strings_lang))
- $strings_lang[ $name] = $trans;
+ foreach ($lines as $line) {
+ if (splitlangdefinition($line, $name, $trans)) {
+ if (!array_key_exists( $name, $stringslang)) {
+ $stringslang[ $name] = $trans;
+ }
}
}
}
diff --git a/version.php b/version.php
index 42094f3..843e0f8 100755
--- a/version.php
+++ b/version.php
@@ -1,4 +1,19 @@
-.
+
/**
* Code fragment to define the version of game
* This fragment is called by moodle_needs_upgrading() and /admin/index.php
@@ -10,22 +25,22 @@
defined('MOODLE_INTERNAL') || die();
-if( !isset( $plugin))
-{
+if (!isset( $plugin)) {
$plugin = new stdClass;
$useplugin = 0;
-}else if( $plugin == 'mod_game')
-{
+} else if ($plugin == 'mod_game') {
$plugin = new stdClass;
$useplugin = 1;
-}else
+} else {
$useplugin = 2;
+}
-$plugin->component = 'mod_game'; // Full name of the plugin (used for diagnostics)
-$plugin->version = 2015122201; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2010112400; // Requires Moodle 2.0
-$plugin->cron = 0; // Period for cron to check this module (secs)
-$plugin->release = '3.36.22.1';
+$plugin->component = 'mod_game'; // Full name of the plugin (used for diagnostics).
+$plugin->version = 2015122501; // The current module version (Date: YYYYMMDDXX).
+$plugin->requires = 2010112400; // Requires Moodle 2.0.
+$plugin->cron = 0; // Period for cron to check this module (secs).
+$plugin->release = '3.36.25.1';
-if( $useplugin != 2)
+if ($useplugin != 2) {
$module = $plugin;
+}
diff --git a/view.php b/view.php
index 7f7a1bf..ff211a2 100755
--- a/view.php
+++ b/view.php
@@ -1,308 +1,315 @@
-libdir.'/gradelib.php');
- require_once($CFG->dirroot.'/mod/game/locallib.php');
-
- $id = optional_param('id', 0, PARAM_INT); // Course Module ID, or
-
- if (! $cm = get_coursemodule_from_id('game', $id)) {
- print_error('invalidcoursemodule');
- }
- if (! $course = $DB->get_record('course', array('id' => $cm->course))) {
- print_error('coursemisconf');
+.
+
+// This page prints a particular instance of game.
+
+require_once(dirname(__FILE__) . '/../../config.php');
+require_once($CFG->libdir.'/gradelib.php');
+require_once($CFG->dirroot.'/mod/game/locallib.php');
+
+$id = optional_param('id', 0, PARAM_INT); // Course Module ID.
+
+if (! $cm = get_coursemodule_from_id('game', $id)) {
+ print_error('invalidcoursemodule');
+}
+if (! $course = $DB->get_record('course', array('id' => $cm->course))) {
+ print_error('coursemisconf');
+}
+if (! $game = $DB->get_record('game', array('id' => $cm->instance))) {
+ print_error('invalidcoursemodule');
+}
+
+// Check login and get context.
+require_login($course->id, false, $cm);
+$context = game_get_context_module_instance( $cm->id);
+require_capability('mod/game:view', $context);
+
+$timenow = time();
+
+// Cache some other capabilites we use several times.
+$canattempt = true;
+$strtimeopenclose = '';
+if ($timenow < $game->timeopen) {
+ $canattempt = false;
+ $strtimeopenclose = get_string('gamenotavailable', 'game', userdate($game->timeopen));
+} else if ($game->timeclose && $timenow > $game->timeclose) {
+ $strtimeopenclose = get_string("gameclosed", "game", userdate($game->timeclose));
+ $canattempt = false;
+} else {
+ if ($game->timeopen) {
+ $strtimeopenclose = get_string('gameopenedon', 'game', userdate($game->timeopen));
}
- if (! $game = $DB->get_record('game', array('id' => $cm->instance))) {
- print_error('invalidcoursemodule');
+ if ($game->timeclose) {
+ $strtimeopenclose = get_string('gamecloseson', 'game', userdate($game->timeclose));
}
-
-/// Check login and get context.
- require_login($course->id, false, $cm);
- $context = game_get_context_module_instance( $cm->id);
- require_capability('mod/game:view', $context);
-
- $timenow = time();
-
-/// Cache some other capabilites we use several times.
+}
+if (has_capability('mod/game:manage', $context)) {
$canattempt = true;
- $strtimeopenclose = '';
- if ($timenow < $game->timeopen) {
- $canattempt = false;
- $strtimeopenclose = get_string('gamenotavailable', 'game', userdate($game->timeopen));
- } else if ($game->timeclose && $timenow > $game->timeclose) {
- $strtimeopenclose = get_string("gameclosed", "game", userdate($game->timeclose));
- $canattempt = false;
- } else {
- if ($game->timeopen) {
- $strtimeopenclose = get_string('gameopenedon', 'game', userdate($game->timeopen));
- }
- if ($game->timeclose) {
- $strtimeopenclose = get_string('gamecloseson', 'game', userdate($game->timeclose));
- }
- }
- if (has_capability('mod/game:manage', $context)) {
- $canattempt = true;
- }
-
-/// Log this request.
- if( game_use_events())
- {
- require( 'classes/event/course_module_viewed.php');
- \mod_game\event\course_module_viewed::viewed($game, $context)->trigger();
- }else
- add_to_log($course->id, 'game', 'view', "view.php?id=$cm->id", $game->id, $cm->id);
-
- // Mark as viewed
- $completion=new completion_info($course);
- $completion->set_module_viewed($cm);
-
-/// Initialize $PAGE, compute blocks
- $PAGE->set_url('/mod/game/view.php', array('id' => $cm->id));
-
- $edit = optional_param('edit', -1, PARAM_BOOL);
- if ($edit != -1 && $PAGE->user_allowed_editing()) {
- $USER->editing = $edit;
- }
+}
- $title = $course->shortname . ': ' . format_string($game->name);
-
- if ($PAGE->user_allowed_editing() && !empty($CFG->showblocksonmodpages)) {
- $buttons = '';
- $PAGE->set_button($buttons);
- }
-
- $PAGE->set_title($title);
- $PAGE->set_heading($course->fullname);
-
- echo $OUTPUT->header();
-
-/// Print game name and description
- echo $OUTPUT->heading(format_string($game->name));
-
-/// Display information about this game.
-
- echo $OUTPUT->box_start('quizinfo');
- if ($game->attempts != 1) {
- echo get_string('gradingmethod', 'quiz', game_get_grading_option_name($game->grademethod));
- }
- echo $OUTPUT->box_end();
-
-/// Show number of attempts summary to those who can view reports.
- if (has_capability('mod/game:viewreports', $context)) {
- if ($strattemptnum = game_get_user_attempts($game->id, $USER->id)) {
- //echo '\n";
- echo get_string( 'attempts', 'game').': '.count( $strattemptnum);
- if( $game->maxattempts)
- {
- echo ' ('.get_string( 'max', 'quiz').': '.$game->maxattempts.')';
- }
+// Log this request.
+if (game_use_events()) {
+ require( 'classes/event/course_module_viewed.php');
+ \mod_game\event\course_module_viewed::viewed($game, $context)->trigger();
+} else {
+ add_to_log($course->id, 'game', 'view', "view.php?id=$cm->id", $game->id, $cm->id);
+}
+
+// Mark as viewed.
+$completion = new completion_info($course);
+$completion->set_module_viewed($cm);
+
+// Initialize $PAGE, compute blocks.
+$PAGE->set_url('/mod/game/view.php', array('id' => $cm->id));
+
+$edit = optional_param('edit', -1, PARAM_BOOL);
+if ($edit != -1 && $PAGE->user_allowed_editing()) {
+ $USER->editing = $edit;
+}
+
+$title = $course->shortname . ': ' . format_string($game->name);
+
+if ($PAGE->user_allowed_editing() && !empty($CFG->showblocksonmodpages)) {
+ $buttons = '';
+ $PAGE->set_button($buttons);
+}
+
+$PAGE->set_title($title);
+$PAGE->set_heading($course->fullname);
+
+echo $OUTPUT->header();
+
+// Print game name and description.
+echo $OUTPUT->heading(format_string($game->name));
+
+// Display information about this game.
+echo $OUTPUT->box_start('quizinfo');
+if ($game->attempts != 1) {
+ echo get_string('gradingmethod', 'quiz', game_get_grading_option_name($game->grademethod));
+}
+echo $OUTPUT->box_end();
+
+// Show number of attempts summary to those who can view reports.
+if (has_capability('mod/game:viewreports', $context)) {
+ if ($strattemptnum = game_get_user_attempts($game->id, $USER->id)) {
+ echo get_string( 'attempts', 'game').': '.count( $strattemptnum);
+ if ($game->maxattempts) {
+ echo ' ('.get_string( 'max', 'quiz').': '.$game->maxattempts.')';
}
}
-
-/// Get this user's attempts.
- $attempts = game_get_user_attempts($game->id, $USER->id);
- $lastfinishedattempt = end($attempts);
- $unfinished = false;
- if ($unfinishedattempt = game_get_user_attempt_unfinished($game->id, $USER->id)) {
- $attempts[] = $unfinishedattempt;
- $unfinished = true;
- }
- $numattempts = count($attempts);
-
-/// Work out the final grade, checking whether it was overridden in the gradebook.
- $mygrade = game_get_best_grade($game, $USER->id);
- $mygradeoverridden = false;
- $gradebookfeedback = '';
-
- $grading_info = grade_get_grades($course->id, 'mod', 'game', $game->id, $USER->id);
- if (!empty($grading_info->items)) {
- $item = $grading_info->items[0];
- if (isset($item->grades[$USER->id])) {
- $grade = $item->grades[$USER->id];
-
- if ($grade->overridden) {
- $mygrade = $grade->grade + 0; // Convert to number.
- $mygradeoverridden = true;
- }
- if (!empty($grade->str_feedback)) {
- $gradebookfeedback = $grade->str_feedback;
- }
+}
+
+// Get this user's attempts.
+$attempts = game_get_user_attempts($game->id, $USER->id);
+$lastfinishedattempt = end($attempts);
+$unfinished = false;
+if ($unfinishedattempt = game_get_user_attempt_unfinished($game->id, $USER->id)) {
+ $attempts[] = $unfinishedattempt;
+ $unfinished = true;
+}
+$numattempts = count($attempts);
+
+// Work out the final grade, checking whether it was overridden in the gradebook.
+$mygrade = game_get_best_grade($game, $USER->id);
+$mygradeoverridden = false;
+$gradebookfeedback = '';
+
+$gradinginfo = grade_get_grades($course->id, 'mod', 'game', $game->id, $USER->id);
+if (!empty($gradinginfo->items)) {
+ $item = $gradinginfo->items[0];
+ if (isset($item->grades[$USER->id])) {
+ $grade = $item->grades[$USER->id];
+
+ if ($grade->overridden) {
+ $mygrade = $grade->grade + 0; // Convert to number.
+ $mygradeoverridden = true;
+ }
+ if (!empty($grade->str_feedback)) {
+ $gradebookfeedback = $grade->str_feedback;
}
}
+}
-/// Print table with existing attempts
- if ($attempts) {
+// Print table with existing attempts.
+if ($attempts) {
+ echo $OUTPUT->heading(get_string('summaryofattempts', 'quiz'));
- echo $OUTPUT->heading(get_string('summaryofattempts', 'quiz'));
+ // Work out which columns we need, taking account what data is available in each attempt.
+ list($someoptions, $alloptions) = game_get_combined_reviewoptions($game, $attempts, $context);
- // Work out which columns we need, taking account what data is available in each attempt.
- list($someoptions, $alloptions) = game_get_combined_reviewoptions($game, $attempts, $context);
+ $attemptcolumn = $game->attempts != 1;
- $attemptcolumn = $game->attempts != 1;
+ $gradecolumn = $someoptions->scores && ($game->grade > 0);
+ $overallstats = $alloptions->scores;
- $gradecolumn = $someoptions->scores && ($game->grade > 0);
- //$markcolumn = $gradecolumn && ($game->grade != $game->sumgrades);
- $overallstats = $alloptions->scores;
+ // Prepare table header.
+ $table = new html_table();
+ $table->attributes['class'] = 'generaltable gameattemptsummary';
+ $table->head = array();
+ $table->align = array();
+ $table->size = array();
+ if ($attemptcolumn) {
+ $table->head[] = get_string('attempt', 'game');
+ $table->align[] = 'center';
+ $table->size[] = '';
+ }
+ $table->head[] = get_string('timecompleted', 'game');
+ $table->align[] = 'left';
+ $table->size[] = '';
- // Prepare table header
- $table = new html_table();
- $table->attributes['class'] = 'generaltable gameattemptsummary';
- $table->head = array();
- $table->align = array();
- $table->size = array();
- if ($attemptcolumn) {
- $table->head[] = get_string('attempt', 'game');
- $table->align[] = 'center';
- $table->size[] = '';
- }
- $table->head[] = get_string('timecompleted', 'game');
- $table->align[] = 'left';
+ if ($gradecolumn) {
+ $table->head[] = get_string('grade') . ' / ' . game_format_grade( $game, $game->grade);
+ $table->align[] = 'center';
$table->size[] = '';
+ }
- if ($gradecolumn) {
- $table->head[] = get_string('grade') . ' / ' . game_format_grade( $game, $game->grade);
- $table->align[] = 'center';
- $table->size[] = '';
- }
+ $table->head[] = get_string('timetaken', 'game');
+ $table->align[] = 'left';
+ $table->size[] = '';
- $table->head[] = get_string('timetaken', 'game');
- $table->align[] = 'left';
- $table->size[] = '';
+ // One row for each attempt.
+ foreach ($attempts as $attempt) {
+ $attemptoptions = game_get_reviewoptions($game, $attempt, $context);
+ $row = array();
- // One row for each attempt
- foreach ($attempts as $attempt) {
- $attemptoptions = game_get_reviewoptions($game, $attempt, $context);
- $row = array();
-
- // Add the attempt number, making it a link, if appropriate.
- if ($attemptcolumn) {
- if ($attempt->preview) {
- $row[] = get_string('preview', 'game');
- } else {
- $row[] = $attempt->attempt;
- }
+ // Add the attempt number, making it a link, if appropriate.
+ if ($attemptcolumn) {
+ if ($attempt->preview) {
+ $row[] = get_string('preview', 'game');
+ } else {
+ $row[] = $attempt->attempt;
}
+ }
- // prepare strings for time taken and date completed
- $timetaken = '';
+ // Prepare strings for time taken and date completed.
+ $timetaken = '';
+ $datecompleted = '';
+ if ($attempt->timefinish > 0) {
+ // Attempt has finished.
+ $timetaken = format_time($attempt->timefinish - $attempt->timestart);
+ $datecompleted = userdate($attempt->timefinish);
+ } else {
+ // The a is still in progress.
+ $timetaken = format_time($timenow - $attempt->timestart);
$datecompleted = '';
- if ($attempt->timefinish > 0) {
- // attempt has finished
- $timetaken = format_time($attempt->timefinish - $attempt->timestart);
- $datecompleted = userdate($attempt->timefinish);
- } else
- {
- // The a is still in progress.
- $timetaken = format_time($timenow - $attempt->timestart);
- $datecompleted = '';
- }
- $row[] = $datecompleted;
+ }
+ $row[] = $datecompleted;
- // Ouside the if because we may be showing feedback but not grades. bdaloukas
- $attemptgrade = game_score_to_grade($attempt->score, $game);
+ // Ouside the if because we may be showing feedback but not grades.
+ $attemptgrade = game_score_to_grade($attempt->score, $game);
- if ($gradecolumn) {
- if ($attemptoptions->scores) {
- $formattedgrade = game_format_grade($game, $attemptgrade);
- // highlight the highest grade if appropriate
- if ($overallstats && !$attempt->preview && $numattempts > 1 && !is_null($mygrade) &&
- $attemptgrade == $mygrade && $game->grademethod == QUIZ_GRADEHIGHEST) {
+ if ($gradecolumn) {
+ if ($attemptoptions->scores) {
+ $formattedgrade = game_format_grade($game, $attemptgrade);
+ // Highlight the highest grade if appropriate.
+ if ($overallstats && !$attempt->preview && $numattempts > 1 && !is_null($mygrade) &&
+ $attemptgrade == $mygrade && $game->grademethod == QUIZ_GRADEHIGHEST) {
$table->rowclasses[$attempt->attempt] = 'bestrow';
- }
-
- $row[] = $formattedgrade;
- } else {
- $row[] = '';
}
- }
-
- $row[] = $timetaken;
- if ($attempt->preview) {
- $table->data['preview'] = $row;
+ $row[] = $formattedgrade;
} else {
- $table->data[$attempt->attempt] = $row;
+ $row[] = '';
}
- } // End of loop over attempts.
- echo html_writer::table($table);
- }
+ }
-/// Print information about the student's best score for this game if possible.
+ $row[] = $timetaken;
+ if ($attempt->preview) {
+ $table->data['preview'] = $row;
+ } else {
+ $table->data[$attempt->attempt] = $row;
+ }
+ } // End of loop over attempts.
+ echo html_writer::table($table);
+}
+
+// Print information about the student's best score for this game if possible.
+if ($numattempts && $gradecolumn && !is_null($mygrade)) {
+ $resultinfo = '';
+
+ if ($overallstats) {
+ $a = new stdClass;
+ $a->grade = game_format_grade($game, $mygrade);
+ $a->maxgrade = game_format_grade($game, $game->grade);
+ $a = get_string('outofshort', 'quiz', $a);
+ $resultinfo .= $OUTPUT->heading(get_string('yourfinalgradeis', 'game', $a), 2, 'main');
+ }
- if ($numattempts && $gradecolumn && !is_null($mygrade)) {
- $resultinfo = '';
+ if ($mygradeoverridden) {
+ $resultinfo .= ''.get_string('overriddennotice', 'grades')."
\n";
+ }
- if ($overallstats) {
- $a = new stdClass;
- $a->grade = game_format_grade($game, $mygrade);
- $a->maxgrade = game_format_grade($game, $game->grade);
- $a = get_string('outofshort', 'quiz', $a);
- $resultinfo .= $OUTPUT->heading(get_string('yourfinalgradeis', 'game', $a), 2, 'main');
- }
+ if ($gradebookfeedback) {
+ $resultinfo .= $OUTPUT->heading(get_string('comment', 'game'), 3, 'main');
+ $resultinfo .= ''.$gradebookfeedback."
\n";
+ }
- if ($mygradeoverridden) {
- $resultinfo .= ''.get_string('overriddennotice', 'grades')."
\n";
- }
- if ($gradebookfeedback) {
- $resultinfo .= $OUTPUT->heading(get_string('comment', 'game'), 3, 'main');
- $resultinfo .= ''.$gradebookfeedback."
\n";
- }
+ if ($resultinfo) {
+ echo $OUTPUT->box($resultinfo, 'generalbox', 'feedback');
+ }
+}
- if ($resultinfo) {
- echo $OUTPUT->box($resultinfo, 'generalbox', 'feedback');
- }
+// Determine if we should be showing a start/continue attempt button or a button to go back to the course page.
+echo $OUTPUT->box_start('gameattempt');
+$buttontext = ''; // This will be set something if as start/continue attempt button should appear.
+
+if ($unfinished) {
+ if ($canattempt) {
+ $buttontext = get_string('continueattemptgame', 'game');
+ }
+} else {
+ // Game is finished. Check if max number of attempts is reached.
+ if (!game_can_start_new_attempt( $game)) {
+ $canattempt = false;
}
-/// Determine if we should be showing a start/continue attempt button,
-/// or a button to go back to the course page.
- echo $OUTPUT->box_start('gameattempt');
- $buttontext = ''; // This will be set something if as start/continue attempt button should appear.
+ if ($canattempt) {
+ echo ' ';
- if ($unfinished) {
- if ($canattempt) {
- $buttontext = get_string('continueattemptgame', 'game');
- }
- } else {
- //Game is finished. Check if max number of attempts is reached
- if( !game_can_start_new_attempt( $game))
- $canattempt = false;
-
- if ($canattempt) {
- echo ' ';
- if ($numattempts == 0) {
- $buttontext = get_string('attemptgamenow', 'game');
- } else {
- $buttontext = get_string('reattemptgame', 'game');
- }
+ if ($numattempts == 0) {
+ $buttontext = get_string('attemptgamenow', 'game');
+ } else {
+ $buttontext = get_string('reattemptgame', 'game');
}
}
+}
-/// Now actually print the appropriate button.
+// Now actually print the appropriate button.
+echo $strtimeopenclose;
- echo $strtimeopenclose;
+if ($buttontext) {
+ global $OUTPUT;
- if ($buttontext) {
+ $strconfirmstartattempt = '';
- global $OUTPUT;
+ // Show the start button, in a div that is initially hidden.
+ echo '';
+ $url = new moodle_url($CFG->wwwroot.'/mod/game/attempt.php', array('id' => $id));
+ $button = new single_button($url, $buttontext);
+ echo $OUTPUT->render($button);
+ echo "
\n";
+} else {
+ echo $OUTPUT->continue_button($CFG->wwwroot . '/course/view.php?id=' . $course->id);
+}
+echo $OUTPUT->box_end();
- $strconfirmstartattempt = '';
-
- /// Show the start button, in a div that is initially hidden.
- echo '';
- $url = new moodle_url($CFG->wwwroot.'/mod/game/attempt.php', array('id' => $id));
- $button = new single_button($url, $buttontext);
- echo $OUTPUT->render($button);
- echo "
\n";
- } else {
- echo $OUTPUT->continue_button($CFG->wwwroot . '/course/view.php?id=' . $course->id);
- }
- echo $OUTPUT->box_end();
-
- echo $OUTPUT->footer();
+echo $OUTPUT->footer();