2004-09-12 15:06:29 +00:00
< ? php // $Id$
2002-07-25 13:48:14 +00:00
2003-01-01 06:34:13 +00:00
$COLUMN_HEIGHT = 300 ;
2005-03-10 13:30:57 +00:00
define ( 'CHOICE_PUBLISH_ANONYMOUS' , '0' );
define ( 'CHOICE_PUBLISH_NAMES' , '1' );
2003-01-01 06:34:13 +00:00
2006-02-08 23:46:21 +00:00
define ( 'CHOICE_SHOWRESULTS_NOT' , '0' );
define ( 'CHOICE_SHOWRESULTS_AFTER_ANSWER' , '1' );
define ( 'CHOICE_SHOWRESULTS_AFTER_CLOSE' , '2' );
define ( 'CHOICE_SHOWRESULTS_ALWAYS' , '3' );
2004-07-01 09:20:51 +00:00
2005-03-29 23:46:17 +00:00
define ( 'CHOICE_DISPLAY_HORIZONTAL' , '0' );
define ( 'CHOICE_DISPLAY_VERTICAL' , '1' );
2005-03-10 13:30:57 +00:00
$CHOICE_PUBLISH = array ( CHOICE_PUBLISH_ANONYMOUS => get_string ( 'publishanonymous' , 'choice' ),
CHOICE_PUBLISH_NAMES => get_string ( 'publishnames' , 'choice' ));
2003-01-01 06:34:13 +00:00
2006-02-08 23:46:21 +00:00
$CHOICE_SHOWRESULTS = array ( CHOICE_SHOWRESULTS_NOT => get_string ( 'publishnot' , 'choice' ),
CHOICE_SHOWRESULTS_AFTER_ANSWER => get_string ( 'publishafteranswer' , 'choice' ),
CHOICE_SHOWRESULTS_AFTER_CLOSE => get_string ( 'publishafterclose' , 'choice' ),
CHOICE_SHOWRESULTS_ALWAYS => get_string ( 'publishalways' , 'choice' ));
2004-07-01 09:20:51 +00:00
2005-03-29 23:46:17 +00:00
$CHOICE_DISPLAY = array ( CHOICE_DISPLAY_HORIZONTAL => get_string ( 'displayhorizontal' , 'choice' ),
CHOICE_DISPLAY_VERTICAL => get_string ( 'displayvertical' , 'choice' ));
2003-01-01 06:34:13 +00:00
/// Standard functions /////////////////////////////////////////////////////////
2002-07-25 13:48:14 +00:00
function choice_user_outline ( $course , $user , $mod , $choice ) {
2005-03-30 18:33:56 +00:00
if ( $answer = get_record ( 'choice_answers' , 'choiceid' , $choice -> id , 'userid' , $user -> id )) {
2005-04-14 22:37:43 +00:00
$result -> info = " ' " . format_string ( choice_get_option_text ( $choice , $answer -> optionid )) . " ' " ;
2005-03-30 18:33:56 +00:00
$result -> time = $answer -> timemodified ;
2002-07-25 13:48:14 +00:00
return $result ;
}
return NULL ;
}
function choice_user_complete ( $course , $user , $mod , $choice ) {
2005-03-30 18:33:56 +00:00
if ( $answer = get_record ( 'choice_answers' , " choiceid " , $choice -> id , " userid " , $user -> id )) {
2005-04-14 22:37:43 +00:00
$result -> info = " ' " . format_string ( choice_get_option_text ( $choice , $answer -> optionid )) . " ' " ;
2005-03-30 18:33:56 +00:00
$result -> time = $answer -> timemodified ;
2005-04-14 22:37:43 +00:00
echo get_string ( " answered " , " choice " ) . " : $result->info . " . get_string ( " updated " , '' , userdate ( $result -> time ));
2002-07-25 13:48:14 +00:00
} else {
2002-08-12 08:28:04 +00:00
print_string ( " notanswered " , " choice " );
2002-07-25 13:48:14 +00:00
}
}
2002-08-03 02:29:21 +00:00
function choice_add_instance ( $choice ) {
// Given an object containing all the necessary data,
// (defined by the form in mod.html) this function
// will create a new instance and return the id number
// of the new instance.
$choice -> timemodified = time ();
2004-08-21 20:59:13 +00:00
if ( ! empty ( $choice -> timerestrict ) and $choice -> timerestrict ) {
2004-07-01 12:52:15 +00:00
$choice -> timeopen = make_timestamp ( $choice -> openyear , $choice -> openmonth , $choice -> openday ,
$choice -> openhour , $choice -> openminute , 0 );
$choice -> timeclose = make_timestamp ( $choice -> closeyear , $choice -> closemonth , $choice -> closeday ,
$choice -> closehour , $choice -> closeminute , 0 );
} else {
$choice -> timeopen = 0 ;
$choice -> timeclose = 0 ;
}
2005-03-29 23:46:17 +00:00
//insert answers
2005-03-30 16:26:36 +00:00
if ( $choice -> id = insert_record ( " choice " , $choice )) {
foreach ( $choice as $name => $value ) {
if ( strstr ( $name , " newoption " )) { /// New option
$value = trim ( $value );
2005-06-27 00:58:24 +00:00
if ( isset ( $value ) && $value <> '' ) {
2005-03-30 16:26:36 +00:00
$option = NULL ;
$option -> text = $value ;
$option -> choiceid = $choice -> id ;
2005-04-14 21:10:39 +00:00
$option -> maxanswers = $choice -> { 'newlimit' . substr ( $name , 9 )};
2005-03-30 16:26:36 +00:00
$option -> timemodified = time ();
insert_record ( " choice_options " , $option );
}
2005-03-29 23:46:17 +00:00
}
}
}
2005-03-30 16:26:36 +00:00
return $choice -> id ;
2002-08-03 02:29:21 +00:00
}
function choice_update_instance ( $choice ) {
// Given an object containing all the necessary data,
// (defined by the form in mod.html) this function
// will update an existing instance with new data.
$choice -> id = $choice -> instance ;
$choice -> timemodified = time ();
2004-07-01 12:52:15 +00:00
2004-08-21 20:59:13 +00:00
if ( ! empty ( $choice -> timerestrict ) and $choice -> timerestrict ) {
2004-07-01 12:52:15 +00:00
$choice -> timeopen = make_timestamp ( $choice -> openyear , $choice -> openmonth , $choice -> openday ,
$choice -> openhour , $choice -> openminute , 0 );
$choice -> timeclose = make_timestamp ( $choice -> closeyear , $choice -> closemonth , $choice -> closeday ,
$choice -> closehour , $choice -> closeminute , 0 );
} else {
$choice -> timeopen = 0 ;
$choice -> timeclose = 0 ;
}
2005-03-29 23:46:17 +00:00
//update answers
2005-03-30 16:26:36 +00:00
foreach ( $choice as $name => $value ) {
$value = trim ( $value );
2005-03-30 18:33:56 +00:00
if ( strstr ( $name , " oldoption " )) { // Old option
2005-06-27 00:58:24 +00:00
if ( isset ( $value ) && $value <> '' ) {
2005-03-30 16:26:36 +00:00
$option = NULL ;
2005-04-05 21:53:08 +00:00
$option -> id = substr ( $name , 9 ); // Get the ID of the answer that needs to be updated.
2005-03-30 16:26:36 +00:00
$option -> text = $value ;
$option -> choiceid = $choice -> id ;
2005-04-14 21:10:39 +00:00
$option -> maxanswers = $choice -> { 'oldlimit' . substr ( $name , 9 )};
2005-03-30 16:26:36 +00:00
$option -> timemodified = time ();
2005-04-14 21:10:39 +00:00
update_record ( " choice_options " , $option );
2005-04-11 20:34:13 +00:00
} else { //empty old option - needs to be deleted.
delete_records ( " choice_options " , " id " , substr ( $name , 9 ));
2005-04-14 21:10:39 +00:00
}
2005-03-30 16:26:36 +00:00
} else if ( strstr ( $name , " newoption " )) { /// New option
2005-06-27 00:58:24 +00:00
if ( isset ( $value ) && $value <> '' ) {
2005-03-30 16:26:36 +00:00
$option = NULL ;
$option -> text = $value ;
$option -> choiceid = $choice -> id ;
2005-04-14 21:10:39 +00:00
$option -> maxanswers = $choice -> { 'newlimit' . substr ( $name , 9 )};
2005-03-30 16:26:36 +00:00
$option -> timemodified = time ();
insert_record ( " choice_options " , $option );
}
2005-03-29 23:46:17 +00:00
}
}
2004-07-01 12:52:15 +00:00
2005-03-30 16:26:36 +00:00
return update_record ( 'choice' , $choice );
2005-03-29 23:46:17 +00:00
2002-08-03 02:29:21 +00:00
}
2006-02-23 01:20:24 +00:00
function choice_show_form ( $choice , $user , $cm ) {
//$cdisplay is an array of the display info for a choice $cdisplay[$optionid]->text - text name of option.
// ->maxanswers -maxanswers for this option
// ->full - whether this option is full or not. 0=not full, 1=full
$cdisplay = array ();
$aid = 0 ;
foreach ( $choice -> option as $optionid => $text ) {
if ( isset ( $text )) { //make sure there are no dud entries in the db with blank text values.
$countanswers = ( get_records ( " choice_answers " , " optionid " , $optionid ));
if ( $countanswers ) {
$countanswers = count ( $countanswers );
} else {
$countanswers = 0 ;
}
$maxans = $choice -> maxanswers [ $optionid ];
$cdisplay [ $aid ] -> optionid = $optionid ;
$cdisplay [ $aid ] -> text = $text ;
$cdisplay [ $aid ] -> maxanswers = $maxans ;
$cdisplay [ $aid ] -> countanswers = $countanswers ;
if ( $current = get_record ( 'choice_answers' , 'choiceid' , $choice -> id , 'userid' , $user -> id , 'optionid' , $optionid )) {
$cdisplay [ $aid ] -> checked = ' checked="checked" ' ;
} else {
$cdisplay [ $aid ] -> checked = '' ;
}
if ( $choice -> limitanswers && ( $countanswers >= $maxans ) && ( empty ( $cdisplay [ $aid ] -> checked )) ) {
$cdisplay [ $aid ] -> disabled = ' disabled="disabled" ' ;
} else {
$cdisplay [ $aid ] -> disabled = '' ;
}
$aid ++ ;
}
}
switch ( $choice -> display ) {
case CHOICE_DISPLAY_HORIZONTAL :
echo " <table cellpadding= \" 20 \" cellspacing= \" 20 \" align= \" center \" ><tr> " ;
foreach ( $cdisplay as $cd ) {
echo " <td align= \" center \" valign= \" top \" > " ;
echo " <input type= \" radio \" name= \" answer \" value= \" " . $cd -> optionid . " \" alt= \" " . strip_tags ( format_text ( $cd -> text )) . " \" " . $cd -> checked . $cd -> disabled . " /> " ;
if ( ! empty ( $cd -> disabled )) {
echo format_text ( $cd -> text . " <br /><strong> " . get_string ( 'full' , 'choice' ) . " </strong> " );
} else {
echo format_text ( $cd -> text );
}
echo " </td> " ;
}
echo " </tr> " ;
echo " </table> " ;
break ;
case CHOICE_DISPLAY_VERTICAL :
$displayoptions -> para = false ;
echo " <table cellpadding= \" 10 \" cellspacing= \" 10 \" align= \" center \" > " ;
foreach ( $cdisplay as $cd ) {
echo " <tr><td align= \" left \" > " ;
echo " <input type= \" radio \" name= \" answer \" value= \" " . $cd -> optionid . " \" alt= \" " . strip_tags ( format_text ( $cd -> text )) . " \" " . $cd -> checked . $cd -> disabled . " /> " ;
echo format_text ( $cd -> text . ' ' , FORMAT_MOODLE , $displayoptions ); //display text for option.
if ( $choice -> limitanswers && ( $choice -> showresults == CHOICE_SHOWRESULTS_ALWAYS ) ){ //if limit is enabled, and show results always has been selected, display info beside each choice.
echo " </td><td> " ;
if ( ! empty ( $cd -> disabled )) {
echo get_string ( 'full' , 'choice' );
} elseif ( ! empty ( $cd -> checked )) {
//currently do nothing - maybe some text could be added here to signfy that the choice has been 'selected'
} elseif ( $cd -> maxanswers - $cd -> countanswers == 1 ) {
echo ( $cd -> maxanswers - $cd -> countanswers );
echo " " . get_string ( 'spaceleft' , 'choice' );
} else {
echo ( $cd -> maxans - $cd -> countanswers );
echo " " . get_string ( 'spacesleft' , 'choice' );
}
echo " </td> " ;
} else if ( $choice -> limitanswers && ( $cd -> countanswers >= $cd -> maxanswers )) { //if limitanswers and answers exceeded, display "full" beside the choice.
echo " <strong> " . get_string ( 'full' , 'choice' ) . " </strong> " ;
}
echo " </td> " ;
echo " </tr> " ;
}
echo " </table> " ;
break ;
}
//show save choice button
echo " <center> " ;
echo " <input type= \" hidden \" name= \" id \" value= \" $cm->id\ " /> " ;
if ( ! isguest ()) { //don't show save button if the logged in user is the guest user.
echo " <input type= \" submit \" value= \" " . get_string ( " savemychoice " , " choice " ) . " \" /> " ;
} else {
print_string ( 'havetologin' , 'choice' );
}
echo " </center> " ;
}
function choice_user_submit_response ( $formanswer , $choice , $userid ) {
$current = get_record ( 'choice_answers' , 'choiceid' , $choice -> id , 'userid' , $userid );
$countanswers = get_records ( " choice_answers " , " optionid " , $formanswer );
if ( $countanswers ) {
$countanswers = count ( $countanswers );
} else {
$countanswers = 0 ;
}
$maxans = $choice -> maxanswers [ $formanswer ];
if ( ! ( $choice -> limitanswers && ( $countanswers >= $maxans ) )) {
if ( $current ) {
$newanswer = $current ;
$newanswer -> optionid = $formanswer ;
$newanswer -> timemodified = $timenow ;
if ( ! update_record ( " choice_answers " , $newanswer )) {
error ( " Could not update your choice because of a database error " );
}
add_to_log ( $course -> id , " choice " , " choose again " , " view.php?id= $cm->id " , $choice -> id , $cm -> id );
} else {
$newanswer = NULL ;
$newanswer -> choiceid = $choice -> id ;
$newanswer -> userid = $userid ;
$newanswer -> optionid = $formanswer ;
$newanswer -> timemodified = time ();
if ( ! insert_record ( " choice_answers " , $newanswer )) {
error ( " Could not save your choice " );
}
add_to_log ( $course -> id , " choice " , " choose " , " view.php?id= $cm->id " , $choice -> id , $cm -> id );
}
} else {
error ( " this choice is full! " );
}
}
function choice_show_reportlink ( $choice , $courseid , $cmid ) {
if ( $allanswers = get_records ( " choice_answers " , " choiceid " , $choice -> id )) {
$responsecount = 0 ;
foreach ( $allanswers as $aa ) {
if ( isstudent ( $course -> id , $aa -> userid ) or isteacher ( $courseid , $aa -> userid )) { //check to make sure user is enrolled in course.
$responsecount ++ ;
}
}
} else {
$responsecount = 0 ;
}
echo '<div class="reportlink">' ;
echo " <a href= \" report.php?id= $cmid\ " > " .get_string( " viewallresponses " , " choice " , $responsecount ). " </ a > " ;
echo '</div>' ;
}
function choice_show_results ( $choice , $course , $cm , $forcepublish = '' ) {
global $CFG , $COLUMN_HEIGHT ;
print_heading ( get_string ( " responses " , " choice " ));
if ( empty ( $forcepublish )) { //alow the publish setting to be overridden
$forcepublish = $choice -> publish ;
}
/// Check to see if groups are being used in this choice
if ( $groupmode = groupmode ( $course , $cm )) { // Groups are being used
$currentgroup = setup_and_print_groups ( $course , $groupmode , $_SERVER [ 'PHP_SELF' ] . " ?id= $cm->id " );
} else {
$currentgroup = false ;
}
if ( $currentgroup ) {
$users = get_group_users ( $currentgroup , " u.firstname ASC " , '' , 'u.id, u.picture, u.firstname, u.lastname, u.idnumber' );
} else {
$users = get_course_users ( $course -> id , " u.firstname ASC " , '' , 'u.id, u.picture, u.firstname, u.lastname, u.idnumber' ) + get_admins ();
}
if ( ! $users ) {
print_heading ( get_string ( " nousersyet " ));
}
if ( $allresponses = get_records ( " choice_answers " , " choiceid " , $choice -> id )) {
foreach ( $allresponses as $aa ) {
$answers [ $aa -> userid ] = $aa ;
}
} else {
$answers = array () ;
}
$timenow = time ();
foreach ( $choice -> option as $optionid => $text ) {
$useranswer [ $optionid ] = array ();
}
foreach ( $users as $user ) {
if ( ! empty ( $user -> id ) and ! empty ( $answers [ $user -> id ])) {
$answer = $answers [ $user -> id ];
$useranswer [( int ) $answer -> optionid ][] = $user ;
} else {
$useranswer [ 0 ][] = $user ;
}
}
foreach ( $choice -> option as $optionid => $text ) {
if ( ! $choice -> option [ $optionid ]) {
unset ( $useranswer [ $optionid ]); // Throw away any data that doesn't apply
}
}
ksort ( $useranswer );
switch ( $forcepublish ) {
case CHOICE_PUBLISH_NAMES :
$isteacher = isteacher ( $course -> id );
$tablewidth = ( int ) ( 100.0 / count ( $useranswer ));
if ( isteacher ( $course -> id , $USER -> id )) {
echo '<div id="tablecontainer">' ;
echo '<form id="attemptsform" method="post" action="' . $_SERVER [ 'PHP_SELF' ] . '" onsubmit="var menu = document.getElementById(\'menuaction\'); return (menu.options[menu.selectedIndex].value == \'delete\' ? \'' . addslashes ( get_string ( 'deleteattemptcheck' , 'quiz' )) . '\' : true);">' ;
echo '<input type="hidden" name="id" value="' . $cm -> id . '" />' ;
echo '<input type="hidden" name="mode" value="overview" />' ;
}
echo " <table cellpadding= \" 5 \" cellspacing= \" 10 \" align= \" center \" class= \" results names \" > " ;
echo " <tr> " ;
$count = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( $optionid ) {
echo " <th class= \" col $count header \" width= \" $tablewidth % \" > " ;
} else if ( $choice -> showunanswered ) {
echo " <th class= \" col $count header \" width= \" $tablewidth % \" > " ;
} else {
continue ;
}
echo format_string ( choice_get_option_text ( $choice , $optionid ));
echo " </th> " ;
$count ++ ;
}
echo " </tr><tr> " ;
$count = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( $optionid ) {
echo " <td class= \" col $count data \" width= \" $tablewidth % \" valign= \" top \" nowrap= \" nowrap \" > " ;
} else if ( $choice -> showunanswered ) {
echo " <td class= \" col $count data \" width= \" $tablewidth % \" valign= \" top \" nowrap= \" nowrap \" > " ;
} else {
continue ;
}
echo " <table width= \" 100% \" > " ;
foreach ( $userlist as $user ) {
if ( ! ( $optionid == 0 && isadmin ( $user -> id )) && ! ( $optionid == 0 && isteacher ( $course -> id , $user -> id ) && ! ( isteacheredit ( $course -> id , $user -> id )) ) ) { //make sure admins and hidden teachers are not shown in not answered yet column.
echo " <tr> " ;
if ( isteacher ( $course -> id , $user -> id )) {
echo '<td width=\"5\" nowrap=\"nowrap\"><input type="checkbox" name="attemptid[]" value="' . $answers [ $user -> id ] -> id . '" /></td>' ;
}
echo " <td width= \" 10 \" nowrap= \" nowrap \" class= \" picture \" > " ;
print_user_picture ( $user -> id , $course -> id , $user -> picture );
echo " </td><td width= \" 100% \" nowrap= \" nowrap \" class= \" fullname \" > " ;
echo " <a href= \" $CFG->wwwroot /user/view.php?id= $user->id &course= $course->id\ " > " ;
echo fullname ( $user , $isteacher );
echo " </a> " ;
echo " </td></tr> " ;
}
}
$count ++ ;
echo " </table> " ;
echo " </td> " ;
}
echo " </tr><tr> " ;
$count = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( ! $optionid and ! $choice -> showunanswered ) {
continue ;
}
echo " <td align= \" center \" class= \" count \" > " ;
$countanswers = count_records ( " choice_answers " , " optionid " , $optionid );
if ( $choice -> limitanswers && ! $optionid == 0 ) {
echo get_string ( " taken " , " choice " ) . " : " ;
echo $countanswers ;
echo " <br> " ;
echo get_string ( " limit " , " choice " ) . " : " ;
$choice_option = get_record ( " choice_options " , " id " , $optionid );
echo $choice_option -> maxanswers ;
}
echo " </td> " ;
$count ++ ;
}
/// Print "Select all" etc.
if ( isteacher ( $course -> id , $user -> id )) {
echo '<tr><td><p>' ;
echo '<tr><td>' ;
echo '<a href="javascript:select_all_in(\'DIV\',null,\'tablecontainer\');">' . get_string ( 'selectall' , 'quiz' ) . '</a> / ' ;
echo '<a href="javascript:deselect_all_in(\'DIV\',null,\'tablecontainer\');">' . get_string ( 'selectnone' , 'quiz' ) . '</a> ' ;
echo ' ' ;
$options = array ( 'delete' => get_string ( 'delete' ));
echo choose_from_menu ( $options , 'action' , '' , get_string ( 'withselected' , 'quiz' ), 'if(this.selectedIndex > 0) submitFormById(\'attemptsform\');' , '' , true );
echo '<noscript id="noscriptmenuaction" style="display: inline;">' ;
echo '<input type="submit" value="' . get_string ( 'go' ) . '" /></noscript>' ;
echo '<script type="text/javascript">' . " \n <!-- \n " . 'document.getElementById("noscriptmenuaction").style.display = "none";' . " \n --> \n " . '</script>' ;
echo '</p></td></tr>' ;
}
echo " </tr></table> " ;
if ( isteacher ( $course -> id , $user -> id )) {
echo " </form></div> " ;
}
break ;
case CHOICE_PUBLISH_ANONYMOUS :
$tablewidth = ( int ) ( 100.0 / count ( $useranswer ));
echo " <table cellpadding= \" 5 \" cellspacing= \" 0 \" align= \" center \" class= \" results anonymous \" > " ;
echo " <tr> " ;
$count = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( $optionid ) {
echo " <th width= \" $tablewidth % \" class= \" col $count header \" > " ;
} else if ( $choice -> showunanswered ) {
echo " <th width= \" $tablewidth % \" class= \" col $count header \" > " ;
} else {
continue ;
}
echo format_string ( choice_get_option_text ( $choice , $optionid ));
echo " </th> " ;
$count ++ ;
}
echo " </tr><tr> " ;
$maxcolumn = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( ! $optionid and ! $choice -> showunanswered ) {
continue ;
}
$column [ $optionid ] = 0 ;
foreach ( $userlist as $user ) {
if ( ! ( $optionid == 0 && isadmin ( $user -> id )) && ! ( $optionid == 0 && isteacher ( $course -> id , $user -> id ) && ! ( isteacheredit ( $course -> id , $user -> id )) ) ) { //make sure admins and hidden teachers are not shown in not answered yet column.
$column [ $optionid ] ++ ;
}
}
if ( $column [ $optionid ] > $maxcolumn ) {
$maxcolumn = $column [ $optionid ];
}
}
echo " </tr><tr> " ;
$count = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( ! $optionid and ! $choice -> showunanswered ) {
continue ;
}
$height = 0 ;
if ( $maxcolumn ) {
$height = $COLUMN_HEIGHT * (( float ) $column [ $optionid ] / ( float ) $maxcolumn );
}
echo " <td valign= \" bottom \" align= \" center \" class= \" col $count data \" > " ;
echo " <img src= \" column.png \" height= \" $height\ " width = \ " 49 \" alt= \" \" /> " ;
echo " </td> " ;
$count ++ ;
}
echo " </tr> " ;
echo " <tr> " ;
$count = 0 ;
foreach ( $useranswer as $optionid => $userlist ) {
if ( ! $optionid and ! $choice -> showunanswered ) {
continue ;
}
echo " <td align= \" center \" class= \" col $count count \" > " ;
if ( $choice -> limitanswers && ! $optionid == 0 ) {
echo get_string ( " taken " , " choice " ) . " : " ;
echo $column [ $optionid ];
echo " <br> " ;
echo get_string ( " limit " , " choice " ) . " : " ;
$choice_option = get_record ( " choice_options " , " id " , $optionid );
echo $choice_option -> maxanswers ;
} else {
echo $column [ $optionid ];
}
echo " </td> " ;
$count ++ ;
}
echo " </tr></table> " ;
break ;
}
}
function choice_delete_responses ( $attemptids ) {
if ( ! is_array ( $attemptids ) || empty ( $attemptids )) {
return false ;
}
foreach ( $attemptids as $num => $attemptid ) {
if ( empty ( $attemptid )) {
unset ( $attemptids [ $num ]);
}
}
foreach ( $attemptids as $attemptid ) {
if ( $todelete = get_record ( 'choice_answers' , 'id' , $attemptid )) {
delete_records ( 'choice_answers' , 'id' , $attemptid );
}
}
return true ;
}
2002-08-03 02:29:21 +00:00
function choice_delete_instance ( $id ) {
// Given an ID of an instance of this module,
// this function will permanently delete the instance
// and any data that depends on it.
if ( ! $choice = get_record ( " choice " , " id " , " $id " )) {
return false ;
}
$result = true ;
2005-03-30 16:26:36 +00:00
if ( ! delete_records ( " choice_answers " , " choiceid " , " $choice->id " )) {
2002-08-03 02:29:21 +00:00
$result = false ;
}
2005-03-30 16:26:36 +00:00
if ( ! delete_records ( " choice_options " , " choiceid " , " $choice->id " )) {
2002-08-03 02:29:21 +00:00
$result = false ;
}
2005-03-30 16:26:36 +00:00
if ( ! delete_records ( " choice " , " id " , " $choice->id " )) {
2005-03-29 23:46:17 +00:00
$result = false ;
}
2005-03-30 16:26:36 +00:00
2002-08-03 02:29:21 +00:00
return $result ;
}
2006-02-23 01:20:24 +00:00
2003-09-29 15:27:30 +00:00
function choice_get_participants ( $choiceid ) {
//Returns the users with data in one choice
2005-03-29 23:46:17 +00:00
//(users with records in choice_responses, students)
2003-09-29 15:27:30 +00:00
global $CFG ;
//Get students
2005-02-13 00:42:29 +00:00
$students = get_records_sql ( " SELECT DISTINCT u.id, u.id
2003-09-29 15:27:30 +00:00
FROM { $CFG -> prefix } user u ,
2005-03-30 16:26:36 +00:00
{ $CFG -> prefix } choice_answers a
WHERE a . choiceid = '$choiceid' and
u . id = a . userid " );
2003-09-29 15:27:30 +00:00
//Return students array (it contains an array of unique users)
return ( $students );
}
2002-08-03 02:29:21 +00:00
2005-03-30 16:26:36 +00:00
function choice_get_option_text ( $choice , $id ) {
// Returns text string which is the answer that matches the id
if ( $result = get_record ( " choice_options " , " id " , $id )) {
return $result -> text ;
2005-03-29 23:46:17 +00:00
} else {
return get_string ( " notanswered " , " choice " );
}
2002-08-12 08:28:04 +00:00
}
2002-09-08 09:42:07 +00:00
function choice_get_choice ( $choiceid ) {
2005-03-29 23:46:17 +00:00
// Gets a full choice record
2005-03-30 16:26:36 +00:00
if ( $choice = get_record ( " choice " , " id " , $choiceid )) {
if ( $options = get_records ( " choice_options " , " choiceid " , $choiceid , " id " )) {
foreach ( $options as $option ) {
2005-03-30 23:34:04 +00:00
$choice -> option [ $option -> id ] = $option -> text ;
2005-04-14 21:10:39 +00:00
$choice -> maxanswers [ $option -> id ] = $option -> maxanswers ;
2005-03-30 16:26:36 +00:00
}
return $choice ;
}
}
return false ;
2002-09-08 09:42:07 +00:00
}
2005-09-01 04:14:31 +00:00
function choice_get_view_actions () {
return array ( 'view' , 'view all' , 'report' );
}
function choice_get_post_actions () {
return array ( 'choose' , 'choose again' );
}
2005-03-30 04:32:36 +00:00
?>