From: Chris S. <san...@us...> - 2005-08-19 19:49:45
|
Update of /cvsroot/stack/stack-1-0/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20263/scripts Modified Files: Tag: development_xmlrqp stackCAS.php stackDatabase.php stackQuestion.php stackQuiz.php stackUser.php Log Message: Index: stackQuiz.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/stackQuiz.php,v retrieving revision 1.5.2.7 retrieving revision 1.5.2.8 diff -C2 -d -r1.5.2.7 -r1.5.2.8 *** stackQuiz.php 19 Aug 2005 14:05:14 -0000 1.5.2.7 --- stackQuiz.php 19 Aug 2005 19:49:31 -0000 1.5.2.8 *************** *** 1,450 **** <?php - - /** - * This file contains most functions which deal with quizzes. - * - * @package scripts - * @subpackage Stack - */ - - /** - * - */ - // 'Unique quiz ID - local mySQL value' - $stackQuiz['quizid']['descript'] = 'Quiz ID number'; - $stackQuiz['quizid']['mysql'] = 'INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'; - $stackQuiz['quizid']['type'] = 'meta'; - - // 'Quiz name' - $stackQuiz['quizName']['descript'] = 'Quiz name'; - $stackQuiz['quizName']['mysql'] = 'TINYTEXT'; - $stackQuiz['quizName']['type'] = 'meta'; - $stackQuiz['quizName']['metatag'] = 'title'; //dc:title - $stackQuiz['quizName']['metatype'] = 'dublincore'; - - // 'Quiz description' - $stackQuiz['quizDescription']['descript'] = 'Description'; - $stackQuiz['quizDescription']['mysql'] = 'TINYTEXT'; - $stackQuiz['quizDescription']['type'] = 'meta'; - $stackQuiz['quizDescription']['metatag'] = 'description'; //dc:description - $stackQuiz['quizDescription']['metatype'] = 'dublincore'; - - // 'Quiz options' - $stackQuiz['quizOptions']['descript'] = 'Quiz options'; - $stackQuiz['quizOptions']['mysql'] = 'TEXT'; - $stackQuiz['quizOptions']['type'] = 'other'; - - // 'Quiz due date' - $stackQuiz['quizDueDate']['descript'] = 'Due date'; - $stackQuiz['quizDueDate']['mysql'] = 'int(10)'; - $stackQuiz['quizDueDate']['type'] = 'date'; - - // 'Quiz mode' - $stackQuiz['quizMode']['descript'] = 'Mode'; - $stackQuiz['quizMode']['mysql'] = 'TINYTEXT'; - $stackQuiz['quizMode']['type'] = 'string'; - - //<PDK> Quiz Metadata added - database updated - // 'Globally unique quiz ID'; - $stackQuiz['quizGUID']['required'] = 'system'; - $stackQuiz['quizGUID']['mysql'] = 'CHAR(22) UNIQUE KEY'; //GUID's are 32byte characters - $stackQuiz['quizGUID']['type'] = 'meta'; - $stackQuiz['quizGUID']['metatag'] = 'identifier'; - $stackQuiz['quizGUID']['metatype'] = 'dublincore'; - - // 'Keywords'; - $stackQuiz['quizKeywords']['required'] = 'optional'; - $stackQuiz['quizKeywords']['mysql'] = 'TINYTEXT'; - $stackQuiz['quizKeywords']['type'] = 'meta'; - $stackQuiz['quizKeywords']['metatag'] = 'keyword'; //lom:keyword - $stackQuiz['quizKeywords']['metatype'] = 'lom'; ! ! $stackQuiz['quizKeywords']['descript'] = 'Keywords'; //<PDK>Need for display purposes ! ! // 'Last edited by'; - $stackQuiz['quizUserLastEdited']['required']='system'; - $stackQuiz['quizUserLastEdited']['mysql']='INT UNSIGNED'; - $stackQuiz['quizUserLastEdited']['type']='meta'; - $stackQuiz['quizUserLastEdited']['metatag']='creator'; //dc:creator - $stackQuiz['quizUserLastEdited']['metatype']='dublincore'; - - // 'Last edited on'; - $stackQuiz['quizDateLastEdited']['required']='system'; - $stackQuiz['quizDateLastEdited']['mysql']='TIMESTAMP'; - $stackQuiz['quizDateLastEdited']['type']='meta'; - $stackQuiz['quizDateLastEdited']['metatag']='date'; //dc:date - $stackQuiz['quizDateLastEdited']['metatype']='dublincore'; - - //Publisher - $stackQuiz['quizPublisher']['required']='system'; - $stackQuiz['quizPublisher']['mysql']='TINYTEXT'; - $stackQuiz['quizPublisher']['type']='meta'; - $stackQuiz['quizPublisher']['metatag']='publisher'; //dc:publisher - $stackQuiz['quizPublisher']['metatype']='dublincore'; - - //Type: Hidden from user - $stackQuiz['type']['values']=array('quiz','quiz'); //Default to 'type' enumeration in XSD file - $stackQuiz['type']['required']='optional'; - $stackQuiz['type']['mysql']='TINYTEXT'; - $stackQuiz['type']['type']='meta'; - $stackQuiz['type']['metatag']='type'; //dc:type - $stackQuiz['type']['metatype']='dublincore'; - - //Format: Hidden from user, selected by script - $stackQuiz['quizFormat']['values']=array('application','audio','image', - 'message','model','text','video', - 'multipart'); - $stackQuiz['quizFormat']['required']='optional'; - $stackQuiz['quizFormat']['mysql']='TINYTEXT'; - $stackQuiz['quizFormat']['type']='meta'; //dc:format - $stackQuiz['quizFormat']['metatag']='format'; - $stackQuiz['quizFormat']['metatype']='dublincore'; - - //Language: Defaulted to current system language, but user definable - $stackQuiz['quizLanguage']['values']=array('en','fr','nl','es','unspecified'); - $stackQuiz['quizLanguage']['required']='optional'; - $stackQuiz['quizLanguage']['mysql']='TINYTEXT'; - $stackQuiz['quizLanguage']['type']='meta'; - $stackQuiz['quizLanguage']['metatag']='language'; //dc:language - $stackQuiz['quizLanguage']['metatype']='dublincore'; - $stackQuiz['quizLanguage']['default']=$stack_defaultlang; //take the default language; - - //Rights - $stackQuiz['quizRights']['required']='optional'; - $stackQuiz['quizRights']['mysql']='TEXT'; - $stackQuiz['quizRights']['type']='meta'; - $stackQuiz['quizRights']['metatag']='rights'; //dc:rights - $stackQuiz['quizRights']['metatype']='dublincore'; - $stackQuiz['quizRights']['default']='http://www.gnu.org/copyleft/gpl.html'; - - //Learning context: Defaulted to system context, but user definable - $stackQuiz['quizLearningContext']['values']=array('Primary Education','Secondary Education','Higher Education', - 'University First Cycle','University Second Cycle','University Post Grade', - 'Technical School First Cycle','Technical School Second Cycle','Professional Formation', - 'Continuous Formation','Vocational Training','unspecified'); - $stackQuiz['quizLearningContext']['required']='optional'; - $stackQuiz['quizLearningContext']['mysql']='TINYTEXT'; - $stackQuiz['quizLearningContext']['type']='meta'; - $stackQuiz['quizLearningContext']['metatag']='context'; //lom:context - $stackQuiz['quizLearningContext']['metatype']='lom'; - $stackQuiz['quizLearningContext']['default']='unspecified'; - - //Difficulty: Default to null - up to user to specify this - $stackQuiz['quizDifficulty']['values']=array('Very Easy','Easy','Medium', - 'Difficult','Very Difficult','unspecified'); - $stackQuiz['quizDifficulty']['required']='optional'; - $stackQuiz['quizDifficulty']['mysql']='TINYTEXT'; - $stackQuiz['quizDifficulty']['type']='meta'; - $stackQuiz['quizDifficulty']['metatag']='difficulty'; //lom:difficulty - $stackQuiz['quizDifficulty']['metatype']='lom'; - $stackQuiz['quizDifficulty']['default']='unspecified'; - - //Competency: Default to solve - then up to user - $stackQuiz['quizCompetency']['values']=array('think','argue','solve', - 'represent','language','communicate', - 'tools','unspecified'); - $stackQuiz['quizCompetency']['required']='optional'; - $stackQuiz['quizCompetency']['mysql']='TINYTEXT'; - $stackQuiz['quizCompetency']['type']='meta'; - $stackQuiz['quizCompetency']['metatag']='competency'; - $stackQuiz['quizCompetency']['metatype']='stack'; //competency - $stackQuiz['quizCompetency']['default']='unspecified'; - - //CompetencyLevel: Default to null - then up to user - $stackQuiz['quizCompetencyLevel']['values']=array('elementary','simpleConceptual','multiStep', - 'complex','unspecified'); - $stackQuiz['quizCompetencyLevel']['required']='optional'; - $stackQuiz['quizCompetencyLevel']['mysql']='TINYTEXT'; - $stackQuiz['quizCompetencyLevel']['type']='meta'; - $stackQuiz['quizCompetencyLevel']['metatag']='competencylevel'; //competencylevel - $stackQuiz['quizCompetencyLevel']['metatype']='stack'; - $stackQuiz['quizCompetencyLevel']['default']='unspecified'; - - //Time to allocate: Default to null - then up to user - $stackQuiz['quizTimeAllocated']['required']='optional'; - $stackQuiz['quizTimeAllocated']['mysql']='TIME'; - $stackQuiz['quizTimeAllocated']['type']='meta'; - $stackQuiz['quizTimeAllocated']['metatag']='typicallearningtime'; //lom:typicallearningtime - $stackQuiz['quizTimeAllocated']['metatype']='lom'; - $stackQuiz['quizTimeAllocated']['default']="00:00:00"; - - //Type of quiz: Default to algebraicExpression as that is only type of quiz atm, but provides extensibility - $stackQuiz['quizExcerciseType']['values']=array('algebraicExpression','mcqSingleAnswer','mcqMultipleAnswer', - 'fillInBlank','unspecified'); - $stackQuiz['quizExcerciseType']['required']='optional'; - $stackQuiz['quizExcerciseType']['mysql']='TINYTEXT'; - $stackQuiz['quizExcerciseType']['type']='meta'; - $stackQuiz['quizExcerciseType']['metatag']='excercisetype'; //excercisetype - $stackQuiz['quizExcerciseType']['metatype']='stack'; - $stackQuiz['quizExcerciseType']['default']='unspecified'; - - /** - * Displays the student quiz selection screen - * @param array $quize_store The list of quizzes - * @param $user - * @return void - */ - function stack_quiz_student_select($quiz_store, $user) { - global $stack_root; - - require_once("{$stack_root}/html/quizjava.html"); - echo "<h1>Please choose a quiz to try</h1>"; - global $stackQuiz; - if (is_array($quiz_store)) { - echo "<p>\n<form name='quizform' action='quiz.php' method='POST'> - <input type='hidden' name='quizid' value='-1'> - <input type='hidden' name='action' value='continue_quiz'>"; - echo "\n<table cellpadding='2'>\n"; - echo "\n<tr><th>{$stackQuiz['quizName']['descript']}</th><th>{$stackQuiz['quizDescription']['descript']}</th><th>Last mark (%)</th><th>{$stackQuiz['quizDueDate']['descript']}</th></tr>"; - foreach ($quiz_store as $qs => $quiz) { - $qname = $quiz['quizName']; - $qID = $quiz['quizid']; - $mark = '-'; - if (is_array($user)) { - if (array_key_exists('id',$user)) { - $userinfo = stack_db_quiz_quizattempt_getlast($qID,$user['id']); - if (is_array($userinfo)) { - if (NULL != $userinfo['mark']) { - $mark = round(100*$userinfo['mark']/$userinfo['maxmark'],2); - } - } - } - } - - echo "<tr><td><a href=\"javascript:takeaction('continue_quiz','$qID');\">{$qname}</a></td>\n"; - echo "<td>".$quiz['quizDescription']."</td><td align='center'>$mark</td>\n"; - if ('' != $quiz['quizDueDate']) { - echo "<td>".stack_time_display($quiz['quizDueDate'])."</td>"; - } - echo "</tr>\n"; - } - echo "\n</table>\n</form>\n</p>"; } else { - echo "<p>You have no quizzes available to try.</p>"; } } //<TODO: to be implemented> /** --- 1,370 ---- <?php /** * This file contains most functions which deal with quizzes. * * @package scripts * @subpackage Stack */ /** * */ // 'Unique quiz ID - local mySQL value' $stackQuiz['quizid']['descript'] = 'Quiz ID number'; $stackQuiz['quizid']['mysql'] = 'INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'; $stackQuiz['quizid']['type'] = 'meta'; // 'Quiz name' $stackQuiz['quizName']['descript'] = 'Quiz name'; $stackQuiz['quizName']['mysql'] = 'TINYTEXT'; $stackQuiz['quizName']['type'] = 'meta'; $stackQuiz['quizName']['metatag'] = 'title'; //dc:title $stackQuiz['quizName']['metatype'] = 'dublincore'; // 'Quiz description' $stackQuiz['quizDescription']['descript'] = 'Description'; $stackQuiz['quizDescription']['mysql'] = 'TINYTEXT'; $stackQuiz['quizDescription']['type'] = 'meta'; $stackQuiz['quizDescription']['metatag'] = 'description'; //dc:description $stackQuiz['quizDescription']['metatype'] = 'dublincore'; // 'Quiz options' $stackQuiz['quizOptions']['descript'] = 'Quiz options'; $stackQuiz['quizOptions']['mysql'] = 'TEXT'; $stackQuiz['quizOptions']['type'] = 'other'; // 'Quiz due date' $stackQuiz['quizDueDate']['descript'] = 'Due date'; $stackQuiz['quizDueDate']['mysql'] = 'int(10)'; $stackQuiz['quizDueDate']['type'] = 'date'; // 'Quiz mode' $stackQuiz['quizMode']['descript'] = 'Mode'; $stackQuiz['quizMode']['mysql'] = 'TINYTEXT'; $stackQuiz['quizMode']['type'] = 'string'; //<PDK> Quiz Metadata added - database updated // 'Globally unique quiz ID'; $stackQuiz['quizGUID']['required'] = 'system'; $stackQuiz['quizGUID']['mysql'] = 'CHAR(22) UNIQUE KEY'; //GUID's are 32byte characters $stackQuiz['quizGUID']['type'] = 'meta'; $stackQuiz['quizGUID']['metatag'] = 'identifier'; $stackQuiz['quizGUID']['metatype'] = 'dublincore'; // 'Keywords'; $stackQuiz['quizKeywords']['required'] = 'optional'; $stackQuiz['quizKeywords']['mysql'] = 'TINYTEXT'; $stackQuiz['quizKeywords']['type'] = 'meta'; $stackQuiz['quizKeywords']['metatag'] = 'keyword'; //lom:keyword $stackQuiz['quizKeywords']['metatype'] = 'lom'; ! $stackQuiz['quizKeywords']['descript'] = 'Keywords'; //<PDK>Need for display purposes // 'Last edited by'; $stackQuiz['quizUserLastEdited']['required']='system'; $stackQuiz['quizUserLastEdited']['mysql']='INT UNSIGNED'; $stackQuiz['quizUserLastEdited']['type']='meta'; $stackQuiz['quizUserLastEdited']['metatag']='creator'; //dc:creator $stackQuiz['quizUserLastEdited']['metatype']='dublincore'; // 'Last edited on'; $stackQuiz['quizDateLastEdited']['required']='system'; $stackQuiz['quizDateLastEdited']['mysql']='TIMESTAMP'; $stackQuiz['quizDateLastEdited']['type']='meta'; $stackQuiz['quizDateLastEdited']['metatag']='date'; //dc:date $stackQuiz['quizDateLastEdited']['metatype']='dublincore'; //Publisher $stackQuiz['quizPublisher']['required']='system'; $stackQuiz['quizPublisher']['mysql']='TINYTEXT'; $stackQuiz['quizPublisher']['type']='meta'; $stackQuiz['quizPublisher']['metatag']='publisher'; //dc:publisher $stackQuiz['quizPublisher']['metatype']='dublincore'; //Type: Hidden from user $stackQuiz['type']['values']=array('quiz','quiz'); //Default to 'type' enumeration in XSD file $stackQuiz['type']['required']='optional'; $stackQuiz['type']['mysql']='TINYTEXT'; $stackQuiz['type']['type']='meta'; $stackQuiz['type']['metatag']='type'; //dc:type $stackQuiz['type']['metatype']='dublincore'; //Format: Hidden from user, selected by script $stackQuiz['quizFormat']['values']=array('application','audio','image', 'message','model','text','video', 'multipart'); $stackQuiz['quizFormat']['required']='optional'; $stackQuiz['quizFormat']['mysql']='TINYTEXT'; $stackQuiz['quizFormat']['type']='meta'; //dc:format $stackQuiz['quizFormat']['metatag']='format'; $stackQuiz['quizFormat']['metatype']='dublincore'; //Language: Defaulted to current system language, but user definable $stackQuiz['quizLanguage']['values']=array('en','fr','nl','es','unspecified'); $stackQuiz['quizLanguage']['required']='optional'; $stackQuiz['quizLanguage']['mysql']='TINYTEXT'; $stackQuiz['quizLanguage']['type']='meta'; $stackQuiz['quizLanguage']['metatag']='language'; //dc:language $stackQuiz['quizLanguage']['metatype']='dublincore'; $stackQuiz['quizLanguage']['default']=$stack_defaultlang; //take the default language; //Rights $stackQuiz['quizRights']['required']='optional'; $stackQuiz['quizRights']['mysql']='TEXT'; $stackQuiz['quizRights']['type']='meta'; $stackQuiz['quizRights']['metatag']='rights'; //dc:rights $stackQuiz['quizRights']['metatype']='dublincore'; $stackQuiz['quizRights']['default']='http://www.gnu.org/copyleft/gpl.html'; //Learning context: Defaulted to system context, but user definable $stackQuiz['quizLearningContext']['values']=array('Primary Education','Secondary Education','Higher Education', 'University First Cycle','University Second Cycle','University Post Grade', 'Technical School First Cycle','Technical School Second Cycle','Professional Formation', 'Continuous Formation','Vocational Training','unspecified'); $stackQuiz['quizLearningContext']['required']='optional'; $stackQuiz['quizLearningContext']['mysql']='TINYTEXT'; $stackQuiz['quizLearningContext']['type']='meta'; $stackQuiz['quizLearningContext']['metatag']='context'; //lom:context $stackQuiz['quizLearningContext']['metatype']='lom'; $stackQuiz['quizLearningContext']['default']='unspecified'; //Difficulty: Default to null - up to user to specify this $stackQuiz['quizDifficulty']['values']=array('Very Easy','Easy','Medium', 'Difficult','Very Difficult','unspecified'); $stackQuiz['quizDifficulty']['required']='optional'; $stackQuiz['quizDifficulty']['mysql']='TINYTEXT'; $stackQuiz['quizDifficulty']['type']='meta'; $stackQuiz['quizDifficulty']['metatag']='difficulty'; //lom:difficulty $stackQuiz['quizDifficulty']['metatype']='lom'; $stackQuiz['quizDifficulty']['default']='unspecified'; //Competency: Default to solve - then up to user $stackQuiz['quizCompetency']['values']=array('think','argue','solve', 'represent','language','communicate', 'tools','unspecified'); $stackQuiz['quizCompetency']['required']='optional'; $stackQuiz['quizCompetency']['mysql']='TINYTEXT'; $stackQuiz['quizCompetency']['type']='meta'; $stackQuiz['quizCompetency']['metatag']='competency'; $stackQuiz['quizCompetency']['metatype']='stack'; //competency $stackQuiz['quizCompetency']['default']='unspecified'; //CompetencyLevel: Default to null - then up to user $stackQuiz['quizCompetencyLevel']['values']=array('elementary','simpleConceptual','multiStep', 'complex','unspecified'); $stackQuiz['quizCompetencyLevel']['required']='optional'; $stackQuiz['quizCompetencyLevel']['mysql']='TINYTEXT'; $stackQuiz['quizCompetencyLevel']['type']='meta'; $stackQuiz['quizCompetencyLevel']['metatag']='competencylevel'; //competencylevel $stackQuiz['quizCompetencyLevel']['metatype']='stack'; $stackQuiz['quizCompetencyLevel']['default']='unspecified'; //Time to allocate: Default to null - then up to user $stackQuiz['quizTimeAllocated']['required']='optional'; $stackQuiz['quizTimeAllocated']['mysql']='TIME'; $stackQuiz['quizTimeAllocated']['type']='meta'; $stackQuiz['quizTimeAllocated']['metatag']='typicallearningtime'; //lom:typicallearningtime $stackQuiz['quizTimeAllocated']['metatype']='lom'; $stackQuiz['quizTimeAllocated']['default']="00:00:00"; //Type of quiz: Default to algebraicExpression as that is only type of quiz atm, but provides extensibility $stackQuiz['quizExcerciseType']['values']=array('algebraicExpression','mcqSingleAnswer','mcqMultipleAnswer', 'fillInBlank','unspecified'); $stackQuiz['quizExcerciseType']['required']='optional'; $stackQuiz['quizExcerciseType']['mysql']='TINYTEXT'; $stackQuiz['quizExcerciseType']['type']='meta'; $stackQuiz['quizExcerciseType']['metatag']='excercisetype'; //excercisetype $stackQuiz['quizExcerciseType']['metatype']='stack'; $stackQuiz['quizExcerciseType']['default']='unspecified'; /** * Displays the student quiz selection screen * @param array $quize_store The list of quizzes * @param $user * @return void */ function stack_quiz_student_select($quiz_store, $user) { global $stack_root; require_once("{$stack_root}/html/quizjava.html"); echo "<h1>Please choose a quiz to try</h1>"; global $stackQuiz; if (is_array($quiz_store)) { echo "<p>\n<form name='quizform' action='quiz.php' method='POST'> <input type='hidden' name='quizid' value='-1'> <input type='hidden' name='action' value='continue_quiz'>"; echo "\n<table cellpadding='2'>\n"; echo "\n<tr><th>{$stackQuiz['quizName']['descript']}</th><th>{$stackQuiz['quizDescription']['descript']}</th><th>Last mark (%)</th><th>{$stackQuiz['quizDueDate']['descript']}</th></tr>"; foreach ($quiz_store as $qs => $quiz) { $qname = $quiz['quizName']; $qID = $quiz['quizid']; $mark = '-'; if (is_array($user)) { if (array_key_exists('id',$user)) { $userinfo = stack_db_quiz_quizattempt_getlast($qID,$user['id']); if (is_array($userinfo)) { if (NULL != $userinfo['mark']) { $mark = round(100*$userinfo['mark']/$userinfo['maxmark'],2); } } } } echo "<tr><td><a href=\"javascript:takeaction('continue_quiz','$qID');\">{$qname}</a></td>\n"; echo "<td>".$quiz['quizDescription']."</td><td align='center'>$mark</td>\n"; if ('' != $quiz['quizDueDate']) { echo "<td>".stack_time_display($quiz['quizDueDate'])."</td>"; } echo "</tr>\n"; } echo "\n</table>\n</form>\n</p>"; + } else { + echo "<p>You have no quizzes available to try.</p>"; + } + } + + /** + * Displays on the screen the results of this quiz. + * @param int $quizID + * @return void + */ + function stack_quiz_report($quizid) { + + // Get the particular quiz, without hidden questions. + $quiz = stack_db_quiz_get($quizid,FALSE); + $quiz_options = $quiz['quizOptions']; + + echo "<h1>Quiz results: {$quiz['quizName']}</h1>"; + // Print a summary of the context of this quiz. + + // Get a list of questionIDs in this quiz + $quiz_questions = NULL; + if (array_key_exists('questions',$quiz)) { + if (is_array($quiz['questions'])) { + foreach ($quiz['questions'] as $key => $val) { + $quiz_questions[] = $val['questionID']; + $quiz_questions_source[] = stack_db_getquestion($val['questionID']); + } + } + } + if (NULL == $quiz_questions) { + echo 'There are no questions in this quiz! Please contact your administrator.'; + return NULL; + } + + // Obtain a list of users. + $stack_users = stack_user_listall(); + + if (is_array($stack_users)) { + + echo "\n<table border='1' cellpadding='2'>\n"; + echo " <tr>\n <th></th>\n"; + foreach ($quiz_questions as $key => $qID) { + $qn = $key+1; + echo " <th width='30'>".$qn."</th>\n"; + } // end foreach + echo " <th>Total</th>\n"; + echo " <th>%</th>\n</tr>\n"; + + echo " <tr>\n <th>Marks:</th>\n"; + $qtot = 0; + foreach ($quiz_questions as $key => $qID) { + $options = stack_options_set($quiz_questions_source[$key],$quiz_options); + $qn = $options['QuVal']; + echo ' <th>'.$qn."</th>\n"; + $qtot = $qtot + $qn; + } // end foreach + echo " <th>$qtot</th>\n</tr>\n"; + + + foreach ($stack_users as $user_no => $this_user) { + $userid = $this_user['id']; + $username = $this_user['name']; + echo "<tr>\n"; + echo ' <td>'.$username."</td>\n"; + $userinfo = stack_db_quiz_quizattempt_getlast($quizid,$userid); + + if (is_array($userinfo)) { + // We have attempted the quiz before with + $seed = $userinfo['seed']; + + // Check if students have previously asked for solutions. + if ($userinfo['SolRequest']) { + + } + + // Now reconstruct the actual $quizInst + $quiz_attempts = array(); + $tot = 0; + foreach ($quiz_questions as $key => $qID) { + $options = stack_options_set($quiz_questions_source[$key],$quiz_options); + $question_attempts[$key] = stack_db_attempt_get($qID,$seed+$key,$userid,$errors); + if (is_array($question_attempts[$key])) { + $mark = stack_question_inst_calcmark($question_attempts[$key],$options['QuVal'],$options['MarkModMethod']); + $tot += $mark; + $quiz_res[$key][$user_no] = $mark; + } else { + $mark = '-'; + } + // Print out a row in the table. + + echo " <td align='center'>".$mark."</td>\n"; + } // end foreach + $percent = round(100*$tot/$qtot,2); + echo " <td align='center'>".$tot."</td>\n"; + echo " <td align='center'>".$percent."</td>\n"; + echo "</tr>\n"; + } + + + //show_array($question_attempts); + } + + echo "\n</table>\n"; } else { + echo "<p>You have no users in your database.</p>"; + } + echo "<h1>Question summary</h1>"; + + if (is_array($quiz_res)) { + + // The top level is the question level. + foreach ($quiz_res as $key => $marks) { + $question = $quiz_questions_source[$key]; + + $qn = $key+1; + + echo "<p><b>Question ".$qn."</b> "; + $noatt = count($marks); + + // Mean + $tot = 0; + foreach ($marks as $mark) { + $tot += $mark; + } + $average = round($tot/$noatt,4); + + // Varience. + $var = 0; + foreach ($marks as $mark) { + $var += pow($average-$mark,2); + } + $var = round(pow($var,0.5),4); + + echo "Number of attempts: $noatt. mean: $average, variance: $var"; + echo "<br .>{$question['questionName']}, {$question['questionDescription']}"; + echo "</p>\n"; } + + + } } + + //<TODO: to be implemented> /** *************** *** 462,469 **** if (is_array($quiz)) { ! //Perform quiz field level validation here } else { // $quiz is not an array $errors['quiz']=get_string('QValidquestionnotar','stack',''); } } --- 382,394 ---- if (is_array($quiz)) { ! //Perform quiz field level validation here ! if (array_key_exists('quizOptions',$quiz)) { ! stack_options_validate($quiz['quizOptions']); ! } } else { // $quiz is not an array $errors['quiz']=get_string('QValidquestionnotar','stack',''); } + + } *************** *** 471,473 **** ?> - --- 396,397 ---- Index: stackDatabase.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/stackDatabase.php,v retrieving revision 1.34.2.7 retrieving revision 1.34.2.8 diff -C2 -d -r1.34.2.7 -r1.34.2.8 *** stackDatabase.php 19 Aug 2005 14:05:14 -0000 1.34.2.7 --- stackDatabase.php 19 Aug 2005 19:49:31 -0000 1.34.2.8 *************** *** 588,598 **** $qu_data .= ',"'.$qu_add.'" '; } ! ! $qu_fields = substr($qu_fields, 1); //Strip initial comma ! $qu_data = substr($qu_data, 1); // Build the query $query .= ' ('.$qu_fields.') VALUES ('.$qu_data.')'; ! //print_r($query); } else {// update question --- 588,598 ---- $qu_data .= ',"'.$qu_add.'" '; } ! ! $qu_fields = substr($qu_fields, 1); //Strip initial comma ! $qu_data = substr($qu_data, 1); // Build the query $query .= ' ('.$qu_fields.') VALUES ('.$qu_data.')'; ! //print_r($query); } else {// update question *************** *** 1204,1212 **** $user[$stackUserKeys[$key]] = stripslashes($val); } - } ! if (array_key_exists('options',$user)) { ! $user['options'] = base64_unserialize($user['options']); ! } return $user; --- 1204,1212 ---- $user[$stackUserKeys[$key]] = stripslashes($val); } ! if (array_key_exists('options',$user)) { ! $user['options'] = base64_unserialize($user['options']); ! } ! } return $user; *************** *** 1472,1478 **** unset($quiz['quizDateLastEdited']); } ! if ($new_quiz) { ! $qu = ''; $quv = ''; --- 1472,1478 ---- unset($quiz['quizDateLastEdited']); } ! if ($new_quiz) { ! $qu = ''; $quv = ''; Index: stackUser.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/stackUser.php,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -C2 -d -r1.12 -r1.12.2.1 *** stackUser.php 25 Jul 2005 14:11:25 -0000 1.12 --- stackUser.php 19 Aug 2005 19:49:31 -0000 1.12.2.1 *************** *** 296,299 **** --- 296,323 ---- /** + * Returns a list of all users and returns them in an array + * + * @return array + */ + function stack_user_listall() { + $userlist = NULL; + + $query = 'SELECT id, username, firstname, lastname FROM stackUser'; + + $stack_users = stack_db_query($query); + + if(0 != mysql_num_rows($stack_users)) { + + for ($i = 0; $i < mysql_num_rows($stack_users); $i++) { + $row = mysql_fetch_row($stack_users); + $userlist[] = array('id'=>$row[0],'name'=>"{$row[1]} ({$row[2]} {$row[3]})"); + } + } + + return $userlist; + } + + + /** * Build the form fragment to produce a dropdown list of current users. * Note, this builds a whole table row. *************** *** 305,313 **** function stack_user_select_formfrag($userID,$anyUser=TRUE){ ! $query = 'SELECT id, username, firstname, lastname FROM stackUser'; ! ! $stack_users = stack_db_query($query); ! if(0 != mysql_num_rows($stack_users)) { echo "<tr><td>User ID</td>\n"; --- 329,335 ---- function stack_user_select_formfrag($userID,$anyUser=TRUE){ ! $stack_users = stack_user_listall(); ! if(is_array($stack_users)) { echo "<tr><td>User ID</td>\n"; *************** *** 329,339 **** } ! for ($i = 0; $i < mysql_num_rows($stack_users); $i++) ! { ! $row = mysql_fetch_row($stack_users); ! if ($row[0] == $userID) { ! echo " <option value=\"{$row[0]}\" selected>{$row[0]} {$row[1]} ({$row[2]} {$row[3]})</option>\n"; } else { ! echo " <option value=\"{$row[0]}\">{$row[0]} {$row[1]} ({$row[2]} {$row[3]})</option>\n"; } } --- 351,360 ---- } ! foreach ($stack_users as $theuser) { ! ! if ($theuser['id'] == $userID) { ! echo " <option value=\"{$theuser['id']}\" selected>{$theuser['name']}</option>\n"; } else { ! echo " <option value=\"{$theuser['id']}\">{$theuser['name']}</option>\n"; } } Index: stackCAS.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/Attic/stackCAS.php,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** stackCAS.php 19 Aug 2005 16:16:45 -0000 1.1.2.1 --- stackCAS.php 19 Aug 2005 19:49:31 -0000 1.1.2.2 *************** *** 306,310 **** $varCommand = CASAnsTestCmd($exp1, $exp2, $t, $disp, $test); - echo "<pre>".$varCommand."</pre>"; if ($varCommand != '') { --- 306,309 ---- Index: stackQuestion.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/stackQuestion.php,v retrieving revision 1.30.2.14 retrieving revision 1.30.2.15 diff -C2 -d -r1.30.2.14 -r1.30.2.15 *** stackQuestion.php 19 Aug 2005 16:16:45 -0000 1.30.2.14 --- stackQuestion.php 19 Aug 2005 19:49:31 -0000 1.30.2.15 *************** *** 796,799 **** --- 796,800 ---- $errors['question']=get_string('QValidquestionnotar','stack',''); } + } |