From 23896737d9c90471a339acc906e22d6c6de41160 Mon Sep 17 00:00:00 2001 From: Jason Cleeland Date: Sat, 24 Apr 2004 04:00:27 +0000 Subject: [PATCH] Created new functions, checkmandatory, checkconditionalmandatory referred to by the display scripts (question, group, survey). Also added array handling functions previously in the qanda.php script so that all public scripts could access them. git-svn-id: file:///Users/Shitiz/Downloads/lssvn/trunk/unstable@996 b72ed6b6-b9f8-46b5-92b4-906544132732 --- index.php | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/index.php b/index.php index b96ba71945e..09950fa62a9 100644 --- a/index.php +++ b/index.php @@ -482,4 +482,172 @@ function checkconfield($value) } } } + +function checkmandatorys($backok=null) + { + if ((isset($_POST['mandatory']) && $_POST['mandatory']) && (!isset($backok) || $backok != "Y")) + { + $chkmands=explode("|", $_POST['mandatory']); //These are the mandatory questions to check + $mfns=explode("|", $_POST['mandatoryfn']); //These are the fieldnames of the mandatory questions + $mi=0; + foreach ($chkmands as $cm) + { + if (!isset($multiname) || $multiname != "MULTI$mfns[$mi]") //no multiple type mandatory set, or does not match this question (set later on for first time) + { + if ((isset($multiname) && $multiname) && (isset($_POST[$multiname]) && $_POST[$multiname])) //This isn't the first time (multiname exists, and is a posted variable) + { + if ($$multiname == $$multiname2) //The number of questions not answered is equal to the number of questions + { + //The number of questions not answered is equal to the number of questions + //This section gets used if it is a multiple choice type question + if (isset($_POST['move']) && $_POST['move'] == " << "._PREV." ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._NEXT." >> ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._LAST." ") {$_SESSION['step'] = $_POST['thisstep']; $_POST['move'] == " "._NEXT." >> ";} + $notanswered[]=substr($multiname, 5, strlen($multiname)); + $$multiname=0; + $$multiname2=0; + } + } + $multiname="MULTI$mfns[$mi]"; + $multiname2=$multiname."2"; //POSSIBLE CORRUPTION OF PROCESS - CHECK LATER + $$multiname=0; + $$multiname2=0; + } + else {$multiname="MULTI$mfns[$mi]";} + if (isset($_SESSION[$cm]) && ($_SESSION[$cm] == "0" || $_SESSION[$cm])) + { + } + elseif (!isset($_POST[$multiname]) || !$_POST[$multiname]) + { + //One of the mandatory questions hasn't been asnwered + if (isset($_POST['move']) && $_POST['move'] == " << "._PREV." ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._NEXT." >> ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._LAST." ") {$_SESSION['step'] = $_POST['thisstep']; $_POST['move'] == " "._NEXT." >> ";} + $notanswered[]=$mfns[$mi]; + } + else + { + //One of the mandatory questions hasn't been answered + $$multiname++; + } + $$multiname2++; + $mi++; + } + if ($multiname && isset($_POST[$multiname]) && $_POST[$multiname]) // Catch the last multiple options question in the lot + { + if ($$multiname == $$multiname2) //so far all multiple choice options are unanswered + { + //The number of questions not answered is equal to the number of questions + if (isset($_POST['move']) && $_POST['move'] == " << "._PREV." ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._NEXT." >> ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._LAST." ") {$_SESSION['step'] = $_POST['thisstep']; $_POST['move'] == " "._NEXT." >> ";} + $notanswered[]=substr($multiname, 5, strlen($multiname)); + $$multiname=""; + $$multiname2=""; + } + } + } + if (!isset($notanswered)) {return false;}//$notanswered=null;} + return $notanswered; + } + +function checkconditionalmandatorys($backok=null) + { + if ((isset($_POST['conmandatory']) && $_POST['conmandatory']) && (!isset($backok) || $backok != "Y")) //Mandatory conditional questions that should only be checked if the conditions for displaying that question are met + { + $chkcmands=explode("|", $_POST['conmandatory']); + $cmfns=explode("|", $_POST['conmandatoryfn']); + $mi=0; + foreach ($chkcmands as $ccm) + { + if (!isset($multiname) || $multiname != "MULTI$cmfns[$mi]") //the last multipleanswerchecked is different to this one + { + if (isset($multiname) && $multiname && isset($_POST[$multiname]) && $_POST[$multiname]) + { + if ($$multiname == $$multiname2) //For this lot all multiple choice options are unanswered + { + //The number of questions not answered is equal to the number of questions + if (isset($_POST['move']) && $_POST['move'] == " << "._PREV." ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._NEXT." >> ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._LAST." ") {$_SESSION['step'] = $_POST['thisstep']; $_POST['move'] == " "._NEXT." >> ";} + $notanswered[]=substr($multiname, 5, strlen($multiname)); + $$multiname=0; + $$multiname2=0; + } + } + $multiname="MULTI$cmfns[$mi]"; + $multiname2=$multiname."2"; //POSSIBLE CORRUPTION OF PROCESS - CHECK LATER + $$multiname=0; + $$multiname2=0; + } + else{$multiname="MULTI$cmfns[$mi]";} + $dccm="display$cmfns[$mi]"; + if (isset($_SESSION[$ccm]) && ($_SESSION[$ccm] == "0" || $_SESSION[$ccm]) && isset($_POST[$dccm]) && $_POST[$dccm] == "on") //There is an answer + { + } + elseif ((isset($_POST[$dccm]) && $_POST[$dccm] == "on") && (!isset($_POST[$multiname]) || !$_POST[$multiname])) //Question is on, there is no answer, but it's a multiple + { + if (isset($_POST['move']) && $_POST['move'] == " << "._PREV." ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._NEXT." >> ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._LAST." ") {$_SESSION['step'] = $_POST['thisstep']; $_POST['move'] == " "._NEXT." >> ";} + $notanswered[]=$cmfns[$mi]; + } + elseif (isset($_POST[$dccm]) && $_POST[$dccm] == "on") + { + //One of the conditional mandatory questions was on, but hasn't been answered + $$multiname++; + } + $$multiname2++; + $mi++; + } + if (isset($multiname) && $multiname && isset($_POST[$multiname]) && $_POST[$multiname]) + { + if ($$multiname == $$multiname2) //so far all multiple choice options are unanswered + { + //The number of questions not answered is equal to the number of questions + if (isset($_POST['move']) && $_POST['move'] == " << "._PREV." ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._NEXT." >> ") {$_SESSION['step'] = $_POST['thisstep'];} + if (isset($_POST['move']) && $_POST['move'] == " "._LAST." ") {$_SESSION['step'] = $_POST['thisstep']; $_POST['move'] == " "._NEXT." >> ";} + $notanswered[]=substr($multiname, 5, strlen($multiname)); + } + } + } + if (!isset($notanswered)) {return false;}//$notanswered=null;} + return $notanswered; + } + +function addtoarray_single($array1, $array2) + { + //Takes two single element arrays and adds second to end of first if value exists + if (is_array($array2)) + { + foreach ($array2 as $ar) + { + if ($ar && $ar !== null) + { + $array1[]=$ar; + } + } + } + return $array1; + } + +function remove_nulls_from_array($array) + { + foreach ($array as $ar) + { + if ($ar !== null) + { + $return[]=$ar; + } + } + if (isset($return)) + { + return $return; + } + else + { + return false; + } + } ?> \ No newline at end of file