<?php  // $Id: format.php,v 1.6.2.2 2008/08/15 03:13:39 tjhunt Exp $ 

////////////////////////////////////////////////////////////////////////////
/// AIKEN FORMAT
///
/// This Moodle class provides all functions necessary to import and export 
/// one-correct-answer multiple choice questions in this format:
///
///  Question text
///  A) Choice #1
///  B) Choice #2
///  C) Choice #3
///  D) Choice #4
///  ANSWER: B
///    (blank line next not necessary since "AN" at the beginning of a line 
///     triggers the question input and causes input to start all over.
///
///Only ONE correct answer is allowed with no feedback responses.
///
///Be sure to reword "All of the above" type questions as "All of these" (etc.) so that choices can
///  be randomized
///
////////////////////////////////////////////////////////////////////////////

class qformat_aiken extends qformat_default {

  function provide_import() {
    return true;
  }

    function readquestions($lines){
        $questions = array();
        $question = $this->defaultquestion();
        $endchar = chr(13); 
        foreach ($lines as $line) {
            $stp = strpos($line,$endchar,0);
            $newlines = explode($endchar,$line);
            $foundQ = 0;
            for ($i=0; $i < count($newlines);$i++){
                $nowline = addslashes(trim($newlines[$i]));
                ///Go through the array and build an object called $question
                ///When done, add $question to $questions
                if (strlen($nowline) < 2) {
                    continue;
                }
                //                This will show everyline when file is being processed
                //                print("$nowline<br />");
                $leader = substr($nowline,0,2);
                if (preg_match('/[A-Z][).]/',$leader)){
                    //trim off the label and space
                    $question->answer[] = htmlspecialchars(trim(substr($nowline,2)), ENT_NOQUOTES);
                    $question->fraction[] = 0;
                    $question->feedback[] = '';
                    continue;
                }
                if ($leader == "AN"){
                    $ans = trim(substr($nowline,strpos($nowline,':') + 1));
                    $ans = substr($ans,0,1);
                    //A becomes 0 since array starts from 0
                    $rightans = ord($ans) - ord('A');
                    $question->fraction[$rightans] = 1;
                    $questions[] = $question;
                    //clear array for next question set
                    $question = $this->defaultquestion();
                    continue;
                } else {
                    //Must be the first line since no leader
                    $question->qtype = MULTICHOICE;
                    $question->name = htmlspecialchars(substr($nowline,0,50));
                    $question->questiontext = htmlspecialchars($nowline);
                    $question->single = 1;
                    $question->feedback[] = "";
                }
            }
        }
        return $questions;
    }

    function readquestion($lines) {
        //this is no longer needed but might still be called by default.php
        return;
    }
}

?>
