<?php
// https://tryphp.w3schools.com/showphp.php?filename=demo_form_validation_complete

// define variables and set to empty values
$A1 = $Aname1 = "";
$A2 = $Aname2 = "";
$A3 = $Aname3 = "";
$chosen_answer = "";

$nameErr = $emailErr = $genderErr = "";
$name = $email = $gender = $comment = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }
  }
/*
if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
      $websiteErr = "Invalid URL";
    }
  }
*/
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }

  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }

  if (empty($_POST["Aname1"])) {
    $Aname1Err = "Aname1 is required";
  } else {
    $Aname1 = test_input($_POST["Aname1"]);
  }

  if (empty($_POST["Aname2"])) {
    $Aname2Err = "Aname2 is required";
  } else {
    $Aname2 = test_input($_POST["Aname2"]);
  }

  if (empty($_POST["Aname3"])) {
    $Aname3Err = "Aname3 is required";
  } else {
    $Aname3 = test_input($_POST["Aname3"]);
  }
  if (empty($_POST["chosen_answer"])) {
    $chosen_answerErr = "chosen_answer is required";
  } else {
    $chosen_answer = test_input($_POST["chosen_answer"]);
  }}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

?>

<?php
if ($include_heading == "no") {
${'xml'.$test}=simplexml_load_file("inc_quarterly_tests/".$test_ref);// or die("Error: Cannot create object $ xml");
  // don't include heading in xml_load_clog.inc
  // test_ref used from clog
}

else {
// copy pasted from xml_load_quarterly_test_session.inc
/************* heading ***************/
echo "<div id=\"main\" class=\"main\" type=\"text/css\"> ";
echo "<div id=\"topic_area\" class=\"topic_area\" type=\"text/css\">";

/************* file ref ***************/
$test_ref = "quarterly_test_kasperskygroup148_20230614.xml";
//$test_ref = "quarterly_test_kasperskygroup148_20230314.xml";

${'xml'.$test}=simplexml_load_file("inc_quarterly_tests/".$test_ref);// or die("Error: Cannot create object $ xml");

echo "<div width=\"40%;\" style=\"float: left;\">\n";
echo "<h1><img src=\"pix/icons8-quiz-100.png\" width=\"70em\" border=\"0\" alt=\"test name\">".${'xml'.$test}->sbook_test_name."</h1>\n";
echo "<div align=\"right\" style=\"font-size:70%; color: #cdcdcd;\">by D.Potter</div></div>\n";
echo "&nbsp;</div>\n";

echo "<div style=\"margin-left: 35%\" align=\"left\">\n";
echo "<h2>Company: ".${'xml'.$test}->sbook_test_company. "</h2><br />\n";
echo "<h3>Group: ".${'xml'.$test}->sbook_test_group. "</h3><br />\n";
echo "<h3>Target level: ".${'xml'.$test}->sbook_test_level. "</h3><br />\n";
//echo "<h3>Test date: ".${'xml'.$test}->sbook_test_date. "</h3><br /><br />\n";
//echo "<h3>Student name: ______________________________________________  </h3><br /><br />\n";

date_default_timezone_set('Europe/Moscow');
$date = date('Y/m/d H:i:s');
echo "<h3>Test date: ".$date."</h3><br /><br />\n";

  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
      $nameErr = "Only letters and white space allowed";
    }
  }
echo "<h3>Student name: ". $name ."</h3><br /><br />\n";


echo "<h3>Score: </h3><br />\n";
echo "</div>\n";
  /************* end heading *************/
}
?>

<form method="post" action="<?php echo htmlspecialchars('pg.php?content=sbook_plugins/xml_load_quarterly_test_on_line.inc');?>">

<?php
echo "<div class=\"flex-container\">";

foreach (${'xml'.$test}->sbook_test_mcq as $sbook_test_mcq) {
echo "<div class=\"column_test\">";

$path_to_csv = trim($sbook_test_mcq->path_to_csv);
$uniq_id = trim(preg_replace("/[^\da-z]/i", '',mb_substr($path_to_csv, 0, 60)));
//echo $uniq_id;

if (!empty($path_to_csv)) {
//echo "<ol class=\"zebra\">";
echo "<ol>";
$file = $path_to_csv;

//read first line
$first_line = file($file);
list($exercise_type, $exercise_name, $selection_number, $instructions) = explode(";", $first_line[0]);
//echo "<em>".$first_line[0]."</em><br />";
//echo "<img valign=\"bottom\" src=\"pix/icons8-drill-100.png\" width=\"35\" border=\"0\" alt=\"controlled practice\"> <h3>".$exercise_type."</h3> - ";
if ($sbook_test_mcq->exercise_nr[0] != null) {
echo "<h3><span class=\"sbook_exercise_no\">".$sbook_test_mcq->exercise_nr . "</span></h3> ";
}
echo "<h3>".$exercise_type."</h3> (".$selection_number.")";
echo "<h5>".$exercise_name."</h5><br />";
echo "<style=\"font-size:70%\"><em>".$instructions."</em></font><br /><br />";

//read first line, but do nothing with it
$handle = fopen($file, "r");
$line = fgets($handle);

//now read the rest of the file line by line
if ($handle) {

$num_qs = -1; // -1 to start from 0 for number of questions - need for js


// SNIPPET FOR JS COUNTING % OF CORRECT ANSWERS
while (($line = fgets($handle, 4096)) !== false) {
$num_qs++; // or $counter = $counter + 1;
//echo "number of questions: ".$num_qs;

//while (($line = fgets($handle, 4096)) !== false) {
list($question, $A1, $A2, $A3, $answer) = explode(";", $line);

$answers = array ($num_qs => $answer);
//print_r($answers);

foreach ($answers as $answer) {
//echo "answers[".trim($num_qs)."] = \"".trim($answer)."\";";
$js_answers = "answers[".trim($num_qs)."] = \"".trim($answer)."\";";
}
$all_js_answers = $all_js_answers."\n".$js_answers;
    } //  while (($line = fgets($handle, 4096)) !== false)
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
//echo "<br />all answers: ".$all_js_answers;
}
/***
answers[0] = "will have ended";
answers[1] = "are going to have";
answers[2] = "will have worked";
answers[3] = "will double";
answers[4] = "are meeting";
***/
?>

<script language="JavaScript">
<!--
<?php echo "var numQues = ". 1+$num_qs.";\n"; ?>
var answers = new Array(<?php echo 1+$num_qs;?>);

<?php echo $all_js_answers; ?>

var parser, xmlDoc;
parser = new DOMParser();
xmlDoc = parser.parseFromString(answers,"text/xml");
//xmlDoc = parser.parseFromString(answers,"text/html");
document.getElementById("all_answers").innerHTML =
xmlDoc.getElementsByTagName("answers")[0].childNodes[0].nodeValue;

function getScore(form) {
var score = 0;
var currElt;
var currSelection;

    for (i=0; i<numQues; i++) {
        currElt = form.elements[i];
        currSelection = currElt.selectedIndex;
            if (currElt.options[currSelection].value == answers[i]) {
            score++;
            }
    }

    form.chosen.value = currElt.options[currSelection].value;

    score = Math.round(score/numQues*100);
    form.percentage.value = score + "%";

    var correctAnswers = "";
    for (i=1; i<=numQues; i++) {
        correctAnswers += i + ". " + answers[i-1] + "\r\n";
        }
    form.solutions.value = correctAnswers;
}
// -->
</script>


<?php
//read first line, but do nothing with it
$handle = fopen($file, "r");
$line = fgets($handle);

//now read the rest of the file line by line
if ($handle) {
$score = 0;

while (($line = fgets($handle, 4096)) !== false) {
$num_qs++; // or $counter = $counter + 1;
list($question, $A1, $A2, $A3, $answer) = explode(";", $line);

echo "<li>".$question."<br />\n";
/***/
echo "<ol type=\"a\">";
$question_name = $uniq_id.$num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($question, 0, 60)));

//$chosen_answer = $question_name;
//echo "<select name=\"".$chosen_answer."[]\" multiple=\"multiple\" tabindex=\"1\">\n";
echo "<select name=\"".$question_name."[]\" size=\"3\" multiple=\"multiple\" tabindex=\"1\">\n";
//echo "<select name=\"".$question."[]\" multiple=\"multiple\" tabindex=\"1\">\n";
//echo "<option value=\"\">choose</option>\n";
$A1 = trim($A1);
$Aname1 = $num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($A1, 0, 60)));
if (!empty($A1)) {
  //echo "<li><option value=\"$question_name.$Aname1\">".$A1."</option></li>";
  echo "<li><option value=\"$A1\">".$A1."</option></li>";

if ((isset($_POST[$question_name])) && ($_POST[$question_name][$A1] !== $answer)) {
//if ($chosen_answer !== $answer) {
//echo "NG <strike>".$_POST[$question_name][$A1]."</strike>\n";
echo "XXXXXXX NG <strike>".$_POST[$question_name][0]."</strike>\n";
echo "XXXXXXXX OK ✓ ".$answer."\n";
}

}

$A2 = trim($A2);
$Aname2 = $num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($A2, 0, 60)));
if (!empty($A2)) {
  //echo "<li><option value=\"$question_name.$Aname2\">".$A2."</option></li>";
  echo "<li><option value=\"$A2\">".$A2."</option></li>";

if ((isset($_POST[$question_name])) && ($_POST[$question_name][1] !== $answer)) {
//if ($chosen_answer !== $answer) {
//echo "NG <strike>".$_POST[$question_name][$A1]."</strike>\n";
echo "XXXXXXX NG <strike>".$_POST[$question_name][$A2]."</strike>\n";
echo "XXXXXXXX OK ✓ ".$answer."\n";
}

}

$A3 = trim($A3);
$Aname3 = $num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($A3, 0, 60)));
if (!empty($A3)) {
  //echo "<li><option value=\"$question_name.$Aname3\">".$A3."</option></li>";
  echo "<li><option value=\"$A3\">".$A3."</option></li>";

if ((isset($_POST[$question_name])) && ($_POST[$question_name][$A3] !== $answer)) {
//if ($chosen_answer !== $answer) {
//echo "NG <strike>".$_POST[$question_name][$A1]."</strike>\n";
echo "XXXXXXX NG <strike>".$_POST[$question_name][2]."</strike>\n";
echo "XXXXXXXX OK ✓ ".$answer."\n";
}

}

//if (isset($_POST[$question_name])) {
//echo $question_name;
//}
echo "</select>";

// todo $answers = array ($num_qs => $answer);

/***

//if ((isset($_POST[$question_name])) && ($_POST[$question_name][$A1] = $answer)) {
//echo "<br />OK ".$answer."\n";
//}

if ((isset($_POST[$question_name][$A1])) && ($_POST[$question_name][$A1] !== $answer)) {
echo "NG <strike>".$_POST[$question_name][$A1]."</strike>\n";
echo "OK ✓ ".$answer."\n";
}

***/

foreach ($_POST[$question_name] as $chosen_answer) {
echo "<br />\n";
//echo "<br />\n✓ ".$chosen_answer."\n";
//$answer = "are meeting";

//if ($_POST[$question_name][0] == $answer) {
if ($chosen_answer == $answer) {
echo "OK ✓ ".$answer."\n";
$score++; // or $counter = $counter + 1;
}
//if ($_POST[$question_name][0] !== $answer) {
if ($chosen_answer !== $answer) {
//echo "NG <strike>".$_POST[$question_name][$A1]."</strike>\n";
echo "NG <strike>".$_POST[$question_name][0]."</strike>\n";
echo "OK ✓ ".$answer."\n";
}

}
/***/

echo "</ol>";
/***/

echo "total: ".$score;

/***
echo "<ol type=\"a\">\n";

//echo "<input type=\"radio\" name=\"".trim($A1)."\">\n";
$A1 = trim($A1);
$Aname1 = $num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($A1, 0, 60)));
if (!empty($A1)) {
  echo "<input type=\"radio\" name=\"$Aname1\"";
  if (isset($Aname1) && $Aname1==$A1) { 
  echo "checked";
}
  echo " value=\"$Aname1\">".$A1."\n";
  }

$A2 = trim($A2);
$Aname2 = $num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($A2, 0, 60)));
if (!empty($A2)) {
  echo "<input type=\"radio\" name=\"$Aname2\"";
  if (isset($Aname2) && $Aname2==$A2) { 
  echo "checked";
  }
  echo " value=\"$Aname2\">".$A2."\n";
}

$A3 = trim($A3);
$Aname3 = $num_qs.trim(preg_replace("/[^\da-z]/i", '',mb_substr($A3, 0, 60)));
if (!empty($A3)) {
  echo "<input type=\"radio\" name=\"$Aname3\"";
  if (isset($Aname3) && $Aname3==$A3) { 
  echo "checked";
  }
  echo " value=\"$Aname3\">".$A3."\n";
}
echo "</ol>\n";
  if ((isset($Aname1) && $Aname1==$A1) && (isset($Aname2) && $Aname2==$A2) && (isset($Aname3) && $Aname3==$A3)) { 
echo "<div class=\"show_key3\">".$answer."</div>";
}
***/



echo "</li><br />\n";

//echo "<div class=\"show_key3\">".$answer."</div>";
    } //  while (($line = fgets($handle, 4096)) !== false)
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
echo "<input type=\"button\" value=\"Get score\" onClick=\"getScore(this.form)\">\n";
echo "<input type=\"reset\" value=\"Clear\"><p>\n";
echo "Score = <input type=text size=15 name=\"percentage\"><br>\n";
//echo "Correct answers:<br>\n";

echo "<p id=\"all_answers\">all answers: </p><br />\n";

echo "<textarea name=\"allanswers\" wrap=\"virtual\" rows=\"10\" cols=\"40\"></textarea>\n";
echo "<textarea name=\"chosen\" wrap=\"virtual\" rows=\"10\" cols=\"40\"></textarea>\n";
echo "<textarea name=\"solutions\" wrap=\"virtual\" rows=\"10\" cols=\"40\"></textarea>\n";
//echo "</form></blockquote>\n"; // name=\"sbook_quiz\"
echo "</ol>";
}

echo "</div><!-- class column test --> \n";
} // end foreach as mcq
//echo "</div> <!-- end flex-container -->\n";
?>

<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field</span></p>

  Name: <input type="text" name="name" value="<?php echo $name;?>">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  E-mail: <input type="text" name="email" value="<?php echo $email;?>">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  Website: <input type="text" name="website" value="<?php echo $website;?>">
  <span class="error"><?php echo $websiteErr;?></span>
  <br><br>
  Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
  <br><br>
  Gender:
  <input type="radio" name="gender" 
  <?php if (isset($gender) && $gender=="female") echo "checked";?> 
  value="female">Female
  
  <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">Male
  <input type="radio" name="gender" <?php if (isset($gender) && $gender=="other") echo "checked";?> value="other">Other  
  <span class="error">* <?php echo $genderErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>
<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;

echo $A1."\n";
echo $A2;
echo $A3;


foreach ($_POST['Aname1'] as $selectedOption)
    echo $selectedOption."\n";
?>


