Browse Source

Fix:Coding style

MOODLE_20_STABLE
Vasilis Daloukas 9 years ago
parent
commit
acbd0158ff
  1. 22
      classes/event/course_module_instance_list_viewed.php
  2. 16
      classes/event/course_module_viewed.php
  3. 18
      classes/event/game_played.php
  4. 17
      classes/plugininfo/booktool.php
  5. 17
      classes/plugininfo/gametool.php
  6. 1370
      cross/cross_class.php
  7. 447
      cross/crossdb_class.php
  8. 443
      cross/play.php

22
classes/event/course_module_instance_list_viewed.php

@ -1,4 +1,18 @@
<?php <?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
@ -13,7 +27,7 @@
namespace mod_game\event; namespace mod_game\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
/** /*
* The mod_game instance list viewed event class. * The mod_game instance list viewed event class.
* *
* @package mod_game * @package mod_game
@ -32,8 +46,8 @@ class course_module_instance_list_viewed extends \core\event\course_module_insta
$params = array( $params = array(
'context' => \context_course::instance($course->id) 'context' => \context_course::instance($course->id)
); );
$event = \mod_game\event\course_module_instance_list_viewed::create($params); $event = \mod_game\event\course_module_instance_list_viewed::create( $params);
$event->add_record_snapshot('course', $course); $event->add_record_snapshot('course', $course);
return $event; return $event;
}} }
}

16
classes/event/course_module_viewed.php

@ -1,4 +1,18 @@
<?php <?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
@ -36,7 +50,6 @@ class course_module_viewed extends \core\event\course_module_viewed {
'context' => $context, 'context' => $context,
'objectid' => $game->id 'objectid' => $game->id
); );
/** @var course_module_viewed $event */
$event = self::create($data); $event = self::create($data);
$event->add_record_snapshot('game', $game); $event->add_record_snapshot('game', $game);
return $event; return $event;
@ -47,7 +60,6 @@ class course_module_viewed extends \core\event\course_module_viewed {
'context' => $context, 'context' => $context,
'objectid' => $game->id 'objectid' => $game->id
); );
/** @var course_module_viewed $event */
$event = self::create($data); $event = self::create($data);
$event->add_record_snapshot('game', $game); $event->add_record_snapshot('game', $game);
return $event; return $event;

18
classes/event/game_played.php

@ -1,4 +1,18 @@
<?php <?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
@ -38,7 +52,6 @@ class game_played extends \core\event\base {
'context' => $context, 'context' => $context,
'objectid' => $game->id 'objectid' => $game->id
); );
/** @var chapter_viewed $event */
$event = self::create($data); $event = self::create($data);
$event->add_record_snapshot('game', $game); $event->add_record_snapshot('game', $game);
return $event; return $event;
@ -50,7 +63,8 @@ class game_played extends \core\event\base {
* @return array|null * @return array|null
*/ */
protected function get_legacy_logdata() { protected function get_legacy_logdata() {
return array($this->courseid, 'game', 'view', 'view.php?id=' . $this->contextinstanceid, $this->objectid, $this->contextinstanceid); return array($this->courseid, 'game', 'view', 'view.php?id=' . $this->contextinstanceid,
$this->objectid, $this->contextinstanceid);
} }
/** /**

17
classes/plugininfo/booktool.php

@ -1,4 +1,21 @@
<?php <?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/** /**
* Subplugin info class. * Subplugin info class.
* *

17
classes/plugininfo/gametool.php

@ -1,4 +1,21 @@
<?php <?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/** /**
* Subplugin info class. * Subplugin info class.
* *

1370
cross/cross_class.php

File diff suppressed because it is too large

447
cross/crossdb_class.php

@ -1,4 +1,21 @@
<?php // $Id: crossdb_class.php,v 1.17 2012/07/25 11:16:05 bdaloukas Exp $ <?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/** /**
* This class is a cross that can load and save to a table * This class is a cross that can load and save to a table
* *
@ -7,242 +24,230 @@
* @package game * @package game
**/ **/
class CrossDB extends Cross class CrossDB extends Cross {
{ public function savecross( $game, &$crossm, $crossd, $id) {
function savecross( $game, &$crossm, $crossd, $id) global $DB, $USER;
{
global $DB, $USER; $crossm->id = $id;
$crossm->sourcemodule = $game->sourcemodule;
$crossm->id = $id;
$crossm->sourcemodule = $game->sourcemodule; $this->delete_records( $id);
$this->delete_records( $id); if (!(game_insert_record( "game_cross", $crossm))) {
print_error( 'Insert page: new page game_cross not inserted');
if (!(game_insert_record( "game_cross", $crossm))){ }
print_error( 'Insert page: new page game_cross not inserted');
} foreach ($crossd as $rec) {
$rec->attemptid = $id;
foreach( $crossd as $rec) $rec->questiontext = addslashes( $rec->questiontext);
{
$rec->attemptid = $id; $rec->gamekind = $game->gamekind;
$rec->questiontext = addslashes( $rec->questiontext); $rec->gameid = $game->id;
$rec->userid = $USER->id;
$rec->gamekind = $game->gamekind; $rec->sourcemodule = $game->sourcemodule;
$rec->gameid = $game->id;
$rec->userid = $USER->id; if (!$DB->insert_record( 'game_queries', $rec)) {
$rec->sourcemodule = $game->sourcemodule; print_error( 'Insert page: new page game_queries not inserted');
}
if (!$DB->insert_record( 'game_queries', $rec)){
print_error( 'Insert page: new page game_queries not inserted');
}
game_update_repetitions($game->id, $USER->id, $rec->questionid, $rec->glossaryentryid); game_update_repetitions($game->id, $USER->id, $rec->questionid, $rec->glossaryentryid);
} }
return true; return true;
} }
function delete_records( $id) public function delete_records( $id) {
{
global $DB; global $DB;
if( !$DB->delete_records( 'game_queries', array( 'attemptid' => $id))){ if (!$DB->delete_records( 'game_queries', array( 'attemptid' => $id))) {
print_error( "Can't delete from game_queries attemptid=$id"); print_error( "Can't delete from game_queries attemptid=$id");
} }
if( !$DB->delete_records( 'game_cross', array( 'id' => $id))){ if (!$DB->delete_records( 'game_cross', array( 'id' => $id))) {
print_error( "Can't delete from game_cross id=$id"); print_error( "Can't delete from game_cross id=$id");
} }
} }
function loadcross( $g, &$done, &$html, $game, $attempt, $crossrec, $onlyshow, $showsolution, &$finishattempt, $showhtmlsolutions, &$language, $showstudentguess, $context) public function loadcross( $g, &$done, &$html, $game, $attempt, $crossrec, $onlyshow, $showsolution,
{ &$finishattempt, $showhtmlsolutions, &$language, $showstudentguess, $context) {
global $DB; global $DB;
$info = ''; $info = '';
$correctLetters = 0; $correctletters = 0;
$allLetters = 0; $allletters = 0;
$wrongLetters = 0; $wrongletters = 0;
$html = ''; $html = '';
$done = false; $done = false;
$loadfromdb = ( $g == ""); $loadfromdb = ( $g == "");
$this->m_mincol = $this->m_minrow = 0; $this->mmincol = $this->mminrow = 0;
$this->m_maxcol = $crossrec->cols; $this->mmaxcol = $crossrec->cols;
$this->m_maxrow = $crossrec->rows; $this->mmaxrow = $crossrec->rows;
if( $g == ""){ if ($g == "") {
$g = str_repeat( ' ', $this->m_maxcol * $this->m_maxrow); $g = str_repeat( ' ', $this->m_maxcol * $this->m_maxrow);
} }
$load = false; $load = false;
$puzzle = str_repeat('.', $this->m_maxrow * $this->m_maxcol); $puzzle = str_repeat('.', $this->m_maxrow * $this->m_maxcol);
if ($recs = $DB->get_records( 'game_queries', array( 'attemptid' => $crossrec->id))) if ($recs = $DB->get_records( 'game_queries', array( 'attemptid' => $crossrec->id))) {
{ $a = array();
$a = array(); foreach ($recs as $rec) {
foreach ($recs as $rec) if ($rec->horizontal) {
{ $key = sprintf( 'h%10d %10d', $rec->row, $rec->col);
if( $rec->horizontal) } else {
$key = sprintf( 'h%10d %10d', $rec->row, $rec->col); $key = sprintf( 'v%10d %10d', $rec->col, $rec->row);
else }
$key = sprintf( 'v%10d %10d', $rec->col, $rec->row); $a[ $key] = $rec;
$a[ $key] = $rec;
}
ksort( $a);
$b = array();
$correctletters = $wrongletters = $restletters = 0;
foreach( $a as $rec){
$this->updatecrossquestions( $rec, $g, $pos, $correctletters, $wrongletters, $restletters, $game, $attempt, $crossrec, $loadfromdb);
$b[] = $rec;
if( ($rec->col != 0) and ($rec->row != 0)){
$load = true;
}
if( $language == ''){
$language = game_detectlanguage( $rec->answertext);
} }
}
$info = $this->game_cross_computecheck( $correctletters, $wrongletters, $restletters, $game, $attempt, $done, $onlyshow, $showsolution, $finishattempt); ksort( $a);
$html = $this->showhtml_base( $crossrec, $b, $showsolution, $showhtmlsolutions, $showstudentguess, $context, $game); $b = array();
$correctletters = $wrongletters = $restletters = 0;
foreach ($a as $rec) {
$this->updatecrossquestions( $rec, $g, $pos, $correctletters,
$wrongletters, $restletters, $game, $attempt, $crossrec, $loadfromdb);
$b[] = $rec;
if (($rec->col != 0) and ($rec->row != 0)) {
$load = true;
}
if ($language == '') {
$language = game_detectlanguage( $rec->answertext);
}
}
$info = $this->game_cross_computecheck( $correctletters, $wrongletters,
$restletters, $game, $attempt, $done, $onlyshow, $showsolution, $finishattempt);
$html = $this->showhtml_base( $crossrec, $b, $showsolution, $showhtmlsolutions, $showstudentguess, $context, $game);
}
if ($load == false) {
$finishattempt = true;
}
return $info;
} }
if( $load == false)
{
$finishattempt = true;
}
return $info;
}
function game_cross_computecheck( $correctletters, $wrongletters, $restletters, $game, $attempt, &$done, $onlyshow, $showsolution, $finishattempt)
{
$ret = '';
//if( $correctletters == 0 and $wrongletters == 0){
// return $ret;
//}
$and = get_string( 'and', 'game');
$a = array();
if( $correctletters)
$a[] = $correctletters.' '.( $correctletters > 1 ? get_string( 'cross_corrects', 'game') :get_string( 'cross_correct', 'game'));
if( $wrongletters)
$a[] = '<b>'.$wrongletters.' '.( $wrongletters > 1 ? get_string( 'cross_errors', 'game') : get_string( 'cross_error', 'game')).'</b>';
if( $correctletters > 1 or $wrongletters > 1) {
$ret = get_string( 'cross_found_many', 'game');
}else if( count( $a))
{
$ret = get_string( 'cross_found_one', 'game');
}else
$ret = '';
$i = 0;
foreach( $a as $msg)
{
$i++;
if( $i == 1){
$ret .= ' '.$msg;
}else if( $i == count($a))
{
$ret .= ' '.get_string( 'and', 'game').' '.$msg;
}else
{
$ret .= ', '.$msg;
}
}
$done = ( $restletters == 0 ? true : false);
if( $finishattempt == false){
if( $onlyshow or $showsolution){
return $ret;
}
}else{
$done = 1;
}
$grade = $correctletters / ($correctletters + $restletters);
$ret .= '<br>'.get_string( 'grade', 'game').' '.round( $grade * 100).' %';
game_updateattempts( $game, $attempt, $grade, $done);
return $ret;
}
//rec is a record of cross_questions public function game_cross_computecheck( $correctletters, $wrongletters, $restletters, $game,
function updatecrossquestions( &$rec, &$g, &$pos, &$correctletters, &$wrongletters, &$restletters, $game, $attempt, $crossrec, $loadfromdb) $attempt, &$done, $onlyshow, $showsolution, $finishattempt) {
{
global $DB, $USER; $ret = '';
$word = $rec->answertext; $and = get_string( 'and', 'game');
$len = game_strlen( $word);
$a = array();
if( $loadfromdb) if ($correctletters) {
$guess = $rec->studentanswer; $a[] = $correctletters.' '.
else ( $correctletters > 1 ? get_string( 'cross_corrects', 'game') : get_string( 'cross_correct', 'game'));
$guess = game_substr( $g, $pos, $len); }
if ($wrongletters) {
$len_guess = game_strlen( $guess);; $a[] = '<b>'.$wrongletters.' '.
$pos += $len; ( $wrongletters > 1 ? get_string( 'cross_errors', 'game') : get_string( 'cross_error', 'game')).'</b>';
}
$is_empty = true;
for($i = 0; $i < $len; $i++) if ($correctletters > 1 or $wrongletters > 1) {
{ $ret = get_string( 'cross_found_many', 'game');
if( $i < $len_guess) } else if ( count( $a)) {
$letterguess = game_substr( $guess, $i, 1); $ret = get_string( 'cross_found_one', 'game');
else } else {
$letterguess = " "; $ret = '';
}
if( $letterguess != ' ')
$is_empty = false; $i = 0;
foreach ($a as $msg) {
$letterword= game_substr( $word, $i, 1); $i++;
if( $letterword != $letterguess)
{ if ($i == 1) {
if( ($letterguess != ' ' and $letterguess != '_')){ $ret .= ' '.$msg;
} else if ( $i == count($a)) {
$ret .= ' '.get_string( 'and', 'game').' '.$msg;
} else {
$ret .= ', '.$msg;
}
}
$done = ( $restletters == 0 ? true : false);
if ($finishattempt == false) {
if ($onlyshow or $showsolution) {
return $ret;
}
} else {
$done = 1;
}
$grade = $correctletters / ($correctletters + $restletters);
$ret .= '<br>'.get_string( 'grade', 'game').' '.round( $grade * 100).' %';
game_updateattempts( $game, $attempt, $grade, $done);
return $ret;
}
// Rec is a record of cross_questions.
public function updatecrossquestions( &$rec, &$g, &$pos, &$correctletters, &$wrongletters,
&$restletters, $game, $attempt, $crossrec, $loadfromdb) {
global $DB, $USER;
$word = $rec->answertext;
$len = game_strlen( $word);
if ($loadfromdb) {
$guess = $rec->studentanswer;
} else {
$guess = game_substr( $g, $pos, $len);
}
$lenguess = game_strlen( $guess);;
$pos += $len;
$isempty = true;
for ($i = 0; $i < $len; $i++) {
if ($i < $lenguess) {
$letterguess = game_substr( $guess, $i, 1);
} else {
$letterguess = " ";
}
if ($letterguess != ' ') {
$isempty = false;
}
$letterword = game_substr( $word, $i, 1);
if ($letterword != $letterguess) {
if (($letterguess != ' ' and $letterguess != '_')) {
$wrongletters++; $wrongletters++;
} }
game_setchar( $guess, $i, '_'); game_setchar( $guess, $i, '_');
$restletters++; $restletters++;
}else if( $letterguess == ' '){ } else if ($letterguess == ' ') {
if( $guess == $word){ if ($guess == $word) {
$correctletters++; $correctletters++;
}else }
{ } else {
//$wrongletters++; $correctletters++;
//game_setchar( $guess, $i, '_'); }
} }
}else
{ if ($isempty) {
$correctletters++; return;
} }
} if (($rec->studentanswer == $guess )) {
return;
if( $is_empty){ }
return;
} $rec->studentanswer = $guess;
if( ($rec->studentanswer == $guess )){
return;
}
$rec->studentanswer = $guess;
$updrec = new stdClass();
$updrec->studentanswer = $guess;
$updrec->id = $rec->id;
if (!$DB->update_record( 'game_queries', $updrec, $rec->id)){
print_error( 'Update game_queries: not updated');
}
$score = $correctletters / $len;
game_update_queries( $game, $attempt, $rec, $score, $guess);
}
}
$updrec = new stdClass();
$updrec->studentanswer = $guess;
$updrec->id = $rec->id;
if (!$DB->update_record( 'game_queries', $updrec, $rec->id)) {
print_error( 'Update game_queries: not updated');
}
$score = $correctletters / $len;
game_update_queries( $game, $attempt, $rec, $score, $guess);
}
}

443
cross/play.php

@ -1,144 +1,163 @@
<?php // $Id: play.php,v 1.23 2012/08/15 14:38:06 bdaloukas Exp $ <?php
// This file is part of Moodle - http://moodle.org/
// This files plays the game "Crossword" //
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
// This files plays the game "Crossword".
require( "cross_class.php"); require( "cross_class.php");
require( "crossdb_class.php"); require( "crossdb_class.php");
function game_cross_continue( $id, $game, $attempt, $cross, $g, $endofgame, $context) function game_cross_continue( $id, $game, $attempt, $cross, $g, $endofgame, $context) {
{ if ($endofgame) {
if( $endofgame){ if ($g == '') {
if( $g == ''){ game_updateattempts( $game, $attempt, -1, true);
game_updateattempts( $game, $attempt, -1, true); $endofgame = false;
$endofgame = false; }
} }
}
if( $attempt != false and $cross != false){ if ($attempt != false and $cross != false) {
return game_cross_play( $id, $game, $attempt, $cross, $g, false, false, $endofgame, false, false, false, false, true, $context); return game_cross_play( $id, $game, $attempt, $cross, $g, false, false, $endofgame,
} false, false, false, false, true, $context);
}
if( $attempt == false){
$attempt = game_addattempt( $game); if ($attempt == false) {
} $attempt = game_addattempt( $game);
}
game_cross_new( $game, $attempt->id, $crossm);
game_updateattempts( $game, $attempt, 0, 0); game_cross_new( $game, $attempt->id, $crossm);
game_updateattempts( $game, $attempt, 0, 0);
return game_cross_play( $id, $game, $attempt, $crossm, '', false, false, false, false, false, false, false, true, $context); return game_cross_play( $id, $game, $attempt, $crossm, '', false, false, false, false, false, false, false, true, $context);
} }
function game_cross_new( $game, $attemptid, &$crossm) function game_cross_new( $game, $attemptid, &$crossm) {
{
global $DB, $USER; global $DB, $USER;
$cross = new CrossDB();
$questions = array(); $cross = new CrossDB();
$infos = array();
$answers = array(); $questions = array();
$recs = game_questions_shortanswer( $game); $infos = array();
if( $recs == false){
print_error( 'game_cross_continue: '.get_string( 'no_words', 'game')); $answers = array();
} $recs = game_questions_shortanswer( $game);
$infos = array(); if ($recs == false) {
print_error( 'game_cross_continue: '.get_string( 'no_words', 'game'));
}
$infos = array();
$reps = array(); $reps = array();
foreach( $recs as $rec){ foreach ($recs as $rec) {
if( $game->param7 == false){ if ($game->param7 == false) {
if( game_strpos( $rec->answertext, ' ')){ if (game_strpos( $rec->answertext, ' ')) {
continue; //spaces not allowed continue; // Spaces not allowed.
} }
} }
$rec->answertext = game_upper( $rec->answertext); $rec->answertext = game_upper( $rec->answertext);
$answers[ $rec->answertext] = game_repairquestion( $rec->questiontext); $answers[ $rec->answertext] = game_repairquestion( $rec->questiontext);
$infos[ $rec->answertext] = array( $game->sourcemodule, $rec->questionid, $rec->glossaryentryid, $rec->attachment); $infos[ $rec->answertext] = array( $game->sourcemodule, $rec->questionid, $rec->glossaryentryid, $rec->attachment);
$a = array( 'gameid' => $game->id, 'userid' => $USER->id, 'questionid' => $rec->questionid, 'glossaryentryid' => $rec->glossaryentryid); $a = array( 'gameid' => $game->id, 'userid' => $USER->id,
if(($rec2 = $DB->get_record('game_repetitions', $a, 'id,repetitions AS r')) != false){ 'questionid' => $rec->questionid, 'glossaryentryid' => $rec->glossaryentryid);
if (($rec2 = $DB->get_record('game_repetitions', $a, 'id,repetitions AS r')) != false) {
$reps[ $rec->answertext] = $rec2->r; $reps[ $rec->answertext] = $rec2->r;
} }
} }
$cross->setwords( $answers, $game->param1, $reps); $cross->setwords( $answers, $game->param1, $reps);
//game->param4 is minimum words in crossword // The game->param4 is minimum words in crossword.
//game->param2 is maximum words in crossword // The game->param2 is maximum words in crossword.
if( $cross->computedata( $crossm, $crossd, $lettets, $game->param4, $game->param2)){ if ($cross->computedata( $crossm, $crossd, $lettets, $game->param4, $game->param2)) {
$new_crossd = array(); $newcrossd = array();
foreach( $crossd as $rec) foreach ($crossd as $rec) {
{ $info = $infos[ $rec->answertext];
$info = $infos[ $rec->answertext]; if ($info != false) {
if( $info != false){ $rec->sourcemodule = $info[ 0];
$rec->sourcemodule = $info[ 0]; $rec->questionid = $info[ 1];
$rec->questionid = $info[ 1]; $rec->glossaryentryid = $info[ 2];
$rec->glossaryentryid = $info[ 2]; $rec->attachment = $info[ 3];
$rec->attachment = $info[ 3]; }
} $newcrossd[] = $rec;
$new_crossd[] = $rec; }
} $cross->savecross( $game, $crossm, $newcrossd, $attemptid);
$cross->savecross( $game, $crossm, $new_crossd, $attemptid); }
}
if (count( $crossd) == 0) {
if( count( $crossd) == 0){ print_error( 'game_cross_continue: '.get_string( 'no_words', 'game'));
print_error( 'game_cross_continue: '.get_string( 'no_words', 'game')); }
}
} }
function showlegend( $legend, $title) function showlegend( $legend, $title) {
{ if (count( $legend) == 0) {
if( count( $legend) == 0)
return; return;
}
echo "<br><b>$title</b><br>"; echo "<br><b>$title</b><br>";
foreach( $legend as $key => $line) foreach ($legend as $key => $line) {
{
$line = game_repairquestion( $line); $line = game_repairquestion( $line);
echo game_filtertext( "$key: $line<br>", 0); echo game_filtertext( "$key: $line<br>", 0);
} }
} }
function game_cross_play( $id, $game, $attempt, $crossrec, $g, $onlyshow, $showsolution, $endofgame, $print, $checkbutton, $showhtmlsolutions, $showhtmlprintbutton,$showstudentguess, $context) function game_cross_play( $id, $game, $attempt, $crossrec, $g, $onlyshow, $showsolution,
{ $endofgame, $print, $checkbutton, $showhtmlsolutions, $showhtmlprintbutton, $showstudentguess, $context) {
global $CFG, $DB; global $CFG, $DB;
$cross = new CrossDB(); $cross = new CrossDB();
$language = $attempt->language; $language = $attempt->language;
$info = $cross->loadcross( $g, $done, $html, $game, $attempt, $crossrec, $onlyshow, $showsolution, $endofgame, $showhtmlsolutions, $attempt->language,$showstudentguess, $context); $info = $cross->loadcross( $g, $done, $html, $game, $attempt, $crossrec, $onlyshow,
$showsolution, $endofgame, $showhtmlsolutions, $attempt->language,
$showstudentguess, $context);
if( $language != $attempt->language){ if ($language != $attempt->language) {
if( !$DB->set_field( 'game_attempts', 'language', $attempt->language, array( 'id' => $attempt->id))){ if (!$DB->set_field( 'game_attempts', 'language', $attempt->language, array( 'id' => $attempt->id))) {
print_error( "game_cross_play: Can't set language"); print_error( "game_cross_play: Can't set language");
} }
} }
if( $done or $endofgame){ if ($done or $endofgame) {
if (! $cm = $DB->get_record( 'course_modules', array( 'id' => $id))) { if (! $cm = $DB->get_record( 'course_modules', array( 'id' => $id))) {
print_error("Course Module ID was incorrect id=$id"); print_error("Course Module ID was incorrect id=$id");
} }
if( $endofgame == false){
echo '<B>'.get_string( 'win', 'game').'</B><BR>';
}
if( game_can_start_new_attempt( $game))
{
echo '<br>';
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">".get_string( 'nextgame', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp; ';
}
}else if( $info != ''){
echo "<br>$info<br>";
}
if( $attempt->language != '') if ($endofgame == false) {
echo '<B>'.get_string( 'win', 'game').'</B><BR>';
}
if (game_can_start_new_attempt( $game)) {
echo '<br>';
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">".
get_string( 'nextgame', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp; ';
}
} else if ($info != '') {
echo "<br>$info<br>";
}
if ($attempt->language != '') {
$wordrtl = game_right_to_left( $attempt->language); $wordrtl = game_right_to_left( $attempt->language);
else } else {
$wordrtl = right_to_left(); $wordrtl = right_to_left();
}
$reverseprint = ($wordrtl != right_to_left()); $reverseprint = ($wordrtl != right_to_left());
if( $reverseprint) if ($reverseprint) {
$textdir = 'dir="'.($wordrtl ? 'rtl' : 'ltr').'"'; $textdir = 'dir="'.($wordrtl ? 'rtl' : 'ltr').'"';
else } else {
$textdir = ''; $textdir = '';
}
?> ?>
<style type="text/css"><!-- <style type="text/css"><!--
@ -257,17 +276,16 @@ margin-top: 1em;
</head> </head>
<?php <?php
if( $print){ if ($print) {
echo '<body onload="window.print()">'; echo '<body onload="window.print()">';
}else{ } else {
echo '<body>'; echo '<body>';
} }
if( $game->toptext != ''){ if ($game->toptext != '') {
echo $game->toptext.'<br>'; echo $game->toptext.'<br>';
} }
?> ?>
<h1></h1> <h1></h1>
<div id="waitmessage" class="answerboxstyle"> <div id="waitmessage" class="answerboxstyle">
@ -280,7 +298,7 @@ if( $print){
<p><table cellpadding="0" cellspacing="0" border="0"> <p><table cellpadding="0" cellspacing="0" border="0">
<?php <?php
if( $game->param3 == 2){ if ($game->param3 == 2) {
echo "<tr>\r\n"; echo "<tr>\r\n";
game_cross_show_welcome( $game); game_cross_show_welcome( $game);
echo "</tr>\r\n"; echo "</tr>\r\n";
@ -289,7 +307,8 @@ if( $print){
?> ?>
<tr> <tr>
<td class="crosswordarea"><table id="crossword" cellpadding="3" cellspacing="0" style="display: none; border-collapse: collapse;" <?php echo $textdir;?>> <td class="crosswordarea">
<table id="crossword" cellpadding="3" cellspacing="0" style="display: none; border-collapse: collapse;" <?php echo $textdir;?>>
<script language="JavaScript" type="text/javascript"><!-- <script language="JavaScript" type="text/javascript"><!--
@ -316,8 +335,8 @@ if (document.getElementById("waitmessage") != null)
CurrentWord = -1; CurrentWord = -1;
PrevWordHorizontal = false; PrevWordHorizontal = false;
<?PHP <?php
echo $html; echo $html;
?> ?>
OnlyCheckOnce = false; OnlyCheckOnce = false;
@ -419,7 +438,10 @@ if (document.getElementById("waitmessage") != null)
{ {
if (TableAcrossWord[x][y] >= 0 || TableDownWord[x][y] >= 0) if (TableAcrossWord[x][y] >= 0 || TableDownWord[x][y] >= 0)
{ {
document.write("<td id=\"c" + PadNumber(x) + PadNumber(y) + "\" class=\"gamebox boxnormal_unsel\" onclick=\"SelectThisWord(event);\">"); var s;
s = "<td id=\"c" + PadNumber(x) + PadNumber(y);
s += "\" class=\"gamebox boxnormal_unsel\" onclick=\"SelectThisWord(event);\">";
document.write( s);
if( solu[x][y] != '') if( solu[x][y] != '')
document.write( solu[x][y]); document.write( solu[x][y]);
@ -567,7 +589,7 @@ function SelectThisWord(event)
else else
TableCell = CellAt(x, y + i); TableCell = CellAt(x, y + i);
// Add its contents to the word we're building. // Add its contents to the word we're building.
if (TableCell.innerHTML != null && TableCell.innerHTML.length > 0 && TableCell.innerHTML != " " && TableCell.innerHTML.toLowerCase() != "&nbsp;") if (TableCell.innerHTML != null && TableCell.innerHTML.length > 0 && TableCell.innerHTML != " " && TableCell.innerHTML.toLowerCase() != "&nbsp;")
{ {
TheirWord += TableCell.innerHTML.toUpperCase(); TheirWord += TableCell.innerHTML.toUpperCase();
TheirWordLength++; TheirWordLength++;
@ -579,13 +601,13 @@ function SelectThisWord(event)
} }
document.getElementById("wordlabel").innerHTML = TheirWord; document.getElementById("wordlabel").innerHTML = TheirWord;
<?php <?php
$msg = "\"".get_string( 'cross_across', 'game').", \" : \"". $msg = "\"".get_string( 'cross_across', 'game').", \" : \"".
get_string( 'cross_down', 'game').", \""; get_string( 'cross_down', 'game').", \"";
$letters = "\" ".get_string( 'letter', 'game').".\" : \" ". $letters = "\" ".get_string( 'letter', 'game').".\" : \" ".
get_string( 'letters', 'game').".\""; get_string( 'letters', 'game').".\"";
?> ?>
document.getElementById("wordinfo").innerHTML = ((CurrentWord <= LastHorizontalWord) ? <?php echo $msg ?>) + WordLength[CurrentWord] + (WordLength[CurrentWord] == 1 ? <?php echo $letters;?>); document.getElementById("wordinfo").innerHTML = ((CurrentWord <= LastHorizontalWord) ? <?php echo $msg ?>) + WordLength[CurrentWord] + (WordLength[CurrentWord] == 1 ? <?php echo $letters;?>);
document.getElementById("wordclue").innerHTML = Clue[CurrentWord]; document.getElementById("wordclue").innerHTML = Clue[CurrentWord];
document.getElementById("worderror").style.display = "none"; document.getElementById("worderror").style.display = "none";
//document.getElementById("cheatbutton").style.display = (Word.length == 0) ? "none" : ""; //document.getElementById("cheatbutton").style.display = (Word.length == 0) ? "none" : "";
@ -630,13 +652,13 @@ function OKClick()
} }
if (TheirWord.length < WordLength[CurrentWord]) if (TheirWord.length < WordLength[CurrentWord])
{ {
document.getElementById("worderror").innerHTML = "<?php echo get_string( 'cross_error_wordlength1', 'game');?>" + WordLength[CurrentWord] + " <?php echo get_string( 'cross_error_wordlength2', 'game');?>"; document.getElementById("worderror").innerHTML = "<?php echo get_string( 'cross_error_wordlength1', 'game');?>" + WordLength[CurrentWord] + " <?php echo get_string( 'cross_error_wordlength2', 'game');?>";
document.getElementById("worderror").style.display = "block"; document.getElementById("worderror").style.display = "block";
return; return;
} }
if (TheirWord.length > WordLength[CurrentWord]) if (TheirWord.length > WordLength[CurrentWord])
{ {
document.getElementById("worderror").innerHTML = "<?php echo get_string( 'cross_error_wordlength1', 'game');?>" + WordLength[CurrentWord] + " <?php echo get_string( 'cross_error_wordlength2', 'game');?>";; document.getElementById("worderror").innerHTML = "<?php echo get_string( 'cross_error_wordlength1', 'game');?>" + WordLength[CurrentWord] + " <?php echo get_string( 'cross_error_wordlength2', 'game');?>";;
document.getElementById("worderror").style.display = "block"; document.getElementById("worderror").style.display = "block";
return; return;
} }
@ -653,7 +675,7 @@ function OKClick()
} }
<?php <?php
if( $showhtmlsolutions == false){ if ($showhtmlsolutions == false) {
?> ?>
function PackPuzzle( sData) function PackPuzzle( sData)
{ {
@ -742,55 +764,54 @@ function CheckServerClick( endofgame)
sData += "&finishattempt=1"; sData += "&finishattempt=1";
<?php <?php
if( $onlyshow == false){ if ($onlyshow == false) {
global $CFG; global $CFG;
$params = 'id='.$id.'&action=crosscheck&g='; $params = 'id='.$id.'&action=crosscheck&g=';
echo "window.location = \"{$CFG->wwwroot}/mod/game/attempt.php?$params\"+ sData;\r\n"; echo "window.location = \"{$CFG->wwwroot}/mod/game/attempt.php?$params\"+ sData;\r\n";
} }
?> ?>
} }
<?php <?php
} }
?> ?>
function OnPrint() function OnPrint()
{ {
<?php <?php
global $CFG; global $CFG;
$params = "id=$id&gameid=$game->id"; $params = "id=$id&gameid=$game->id";
echo "window.open( \"{$CFG->wwwroot}/mod/game/print.php?$params\")"; echo "window.open( \"{$CFG->wwwroot}/mod/game/print.php?$params\")";
?> ?>
} }
<?php <?php
if( $showhtmlprintbutton){ if ($showhtmlprintbutton) {
?> ?>
function PrintHtmlClick() function PrintHtmlClick()
{ {
document.getElementById("printhtmlbutton").style.display = "none"; document.getElementById("printhtmlbutton").style.display = "none";
<?php <?php
if( $showhtmlsolutions){ if ($showhtmlsolutions) {
?> document.getElementById("checkhtmlbutton").style.display = "none"; <?php ?> document.getElementById("checkhtmlbutton").style.display = "none"; <?php
} }
?> ?>
window.print(); window.print();
<?php <?php
if( $showhtmlsolutions){ if ($showhtmlsolutions) {
?> document.getElementById("checkhtmlbutton").style.display = "block"; <?php ?> document.getElementById("checkhtmlbutton").style.display = "block"; <?php
} }
?> ?>
document.getElementById("printhtmlbutton").style.display = "block"; document.getElementById("printhtmlbutton").style.display = "block";
} }
<?php <?php
} }
?> ?>
<?php <?php
if( $showhtmlprintbutton){ if ($showhtmlprintbutton) {
?> ?>
/** /**
@ -905,11 +926,9 @@ function CheckHtmlClick()
} }
} }
<?php <?php
} }
if( $showhtmlsolutions) if ($showhtmlsolutions) {
{
?> ?>
function decodeutf8(utftext) { function decodeutf8(utftext) {
var string = ""; var string = "";
@ -941,7 +960,7 @@ if( $showhtmlsolutions)
return string; return string;
} }
<?php <?php
} }
?> ?>
//--> //-->
@ -950,10 +969,10 @@ if( $showhtmlsolutions)
</table></td> </table></td>
<?php <?php
if( $game->param3 == 2){ if ($game->param3 == 2) {
echo '<td>&nbsp &nbsp &nbsp</td>'; echo '<td>&nbsp &nbsp &nbsp</td>';
game_cross_show_legends( $cross); game_cross_show_legends( $cross);
}else{ } else {
game_cross_show_welcome( $game); game_cross_show_welcome( $game);
} }
?> ?>
@ -962,80 +981,77 @@ if( $showhtmlsolutions)
<?php <?php
if( $onlyshow == false){ if ($onlyshow == false) {
echo '<div style="margin-top: 1em;">'; echo '<div style="margin-top: 1em;">';
echo '<button id="checkbutton" type="button" onclick="CheckServerClick( 0);" style="display: none;">'.get_string( 'cross_checkbutton', 'game'); echo '<button id="checkbutton" type="button" onclick="CheckServerClick( 0);" style="display: none;">'.
echo '</button>'; get_string( 'cross_checkbutton', 'game');
echo '</button>';
echo ' &nbsp;&nbsp;&nbsp;&nbsp;<button id="finishattemptbutton" type="button" onclick="CheckServerClick( 1);" style="display: none;">'.get_string( 'cross_endofgamebutton', 'game');
echo '</button>'; echo ' &nbsp;&nbsp;&nbsp;&nbsp;<button id="finishattemptbutton" type="button" onclick="CheckServerClick( 1);" style="display: none;">'.
if( $game->param5 == 1 or $game->param5 == NULL) get_string( 'cross_endofgamebutton', 'game');
{ echo '</button>';
echo ' &nbsp;&nbsp;&nbsp;&nbsp;<button id="printbutton" type="button" onclick="OnPrint( 0);" style="display: none;">'.get_string( 'print', 'game'); if ($game->param5 == 1 or $game->param5 == NULL) {
echo '</button>'; echo ' &nbsp;&nbsp;&nbsp;&nbsp;<button id="printbutton" type="button" onclick="OnPrint( 0);" style="display: none;">'.get_string( 'print', 'game');
echo '</button>';
} }
echo "</div>\r\n";
}
if( $showhtmlsolutions or $showhtmlprintbutton){
echo '<br>';
}
if( $showhtmlsolutions){
echo '<button id="checkhtmlbutton" type="button" onclick="CheckHtmlClick();" visible=true>'.get_string( 'cross_checkbutton', 'game');
echo '</button>';
}
if( $showhtmlprintbutton){ echo "</div>\r\n";
if( $showhtmlsolutions){ }
echo "&nbsp;&nbsp;&nbsp;&nbsp;";
} if ($showhtmlsolutions or $showhtmlprintbutton) {
echo '<button id="printhtmlbutton" type="button" onclick="PrintHtmlClick( 0);" visible=true>'.get_string( 'print', 'game'); echo '<br>';
echo '</button>'; }
}
if ($showhtmlsolutions) {
echo '<button id="checkhtmlbutton" type="button" onclick="CheckHtmlClick();" visible=true>'.get_string( 'cross_checkbutton', 'game');
echo '</button>';
}
if( $game->param3 == 2){ if ($showhtmlprintbutton) {
if ($showhtmlsolutions) {
echo "&nbsp;&nbsp;&nbsp;&nbsp;";
}
echo '<button id="printhtmlbutton" type="button" onclick="PrintHtmlClick( 0);" visible=true>'.get_string( 'print', 'game');
echo '</button>';
}
if ($game->param3 == 2) {
echo '<td>&nbsp &nbsp &nbsp</td>'; echo '<td>&nbsp &nbsp &nbsp</td>';
game_cross_show_welcome( $game); game_cross_show_welcome( $game);
}else{ } else {
game_cross_show_legends( $cross); game_cross_show_legends( $cross);
} }
if( $game->bottomtext != ''){ if ($game->bottomtext != '') {
echo '<br><br>'.$game->bottomtext; echo '<br><br>'.$game->bottomtext;
} }
if( $attempt != false){
if( $attempt->timefinish == 0 and $endofgame == 0)
{
?>
if ($attempt != false) {
if ($attempt->timefinish == 0 and $endofgame == 0) {
?>
<script language="JavaScript" type="text/javascript"><!-- <script language="JavaScript" type="text/javascript"><!--
if (Initialized) if (Initialized)
{ {
<?php <?php
if( $print == false){ if ($print == false) {
echo "document.getElementById(\"welcomemessage\").style.display = \"\";"; echo "document.getElementById(\"welcomemessage\").style.display = \"\";";
} }
if( $showsolution == false) if ($showsolution == false) {
{
?> ?>
document.getElementById("checkbutton").style.display = ""; document.getElementById("checkbutton").style.display = "";
document.getElementById("finishattemptbutton").style.display = ""; document.getElementById("finishattemptbutton").style.display = "";
document.getElementById("printbutton").style.display = ""; document.getElementById("printbutton").style.display = "";
<?php <?php
} }
?> ?>
} }
//--> //-->
</script> </script>
<?php <?php
}
} }
}
?> ?>
@ -1045,16 +1061,15 @@ if( $attempt != false){
<?php <?php
} }
function game_cross_show_welcome( $game){ function game_cross_show_welcome( $game) {
if( $game->param3 <> 2){ if ($game->param3 <> 2) {
game_cross_show_welcome0( $game); game_cross_show_welcome0( $game);
}else{ } else {
game_cross_show_welcome1(); game_cross_show_welcome1();
} }
} }
function game_cross_show_welcome0( $game){ function game_cross_show_welcome0( $game) {
?> ?>
<td valign="top" style="padding-left: 1em;"> <td valign="top" style="padding-left: 1em;">
@ -1071,7 +1086,7 @@ function game_cross_show_welcome0( $game){
style="font-weight: bold; <? if( $game->param6 == 0) echo 'text-transform:uppercase;'; ?>" style="font-weight: bold; <? if( $game->param6 == 0) echo 'text-transform:uppercase;'; ?>"
onkeypress="WordEntryKeyPress(event)" onchange="WordEntryKeyPress(event)" autocomplete="off"></div> onkeypress="WordEntryKeyPress(event)" onchange="WordEntryKeyPress(event)" autocomplete="off"></div>
<?php <?php
if( $game->param3 == 2){ if ($game->param3 == 2) {
game_cross_show_welcome( $game); game_cross_show_welcome( $game);
} }
?> ?>
@ -1090,7 +1105,7 @@ function game_cross_show_welcome0( $game){
<?php <?php
} }
function game_cross_show_welcome1(){ function game_cross_show_welcome1() {
?> ?>
<td valign="top" style="padding-left: 1em;"> <td valign="top" style="padding-left: 1em;">
@ -1129,7 +1144,7 @@ function game_cross_show_welcome1(){
<?php <?php
} }
function game_cross_show_legends( $cross){ function game_cross_show_legends( $cross) {
echo '<td>'; echo '<td>';
ShowLegend( $cross->m_LegendH, get_string( 'cross_across', 'game')); ShowLegend( $cross->m_LegendH, get_string( 'cross_across', 'game'));
ShowLegend( $cross->m_LegendV, get_string( 'cross_down', 'game')); ShowLegend( $cross->m_LegendV, get_string( 'cross_down', 'game'));

Loading…
Cancel
Save