From 95bbdab5f65229d7e17e47c250e67cdd891b8980 Mon Sep 17 00:00:00 2001 From: james Date: Thu, 3 Mar 2011 02:57:40 +0000 Subject: [PATCH] Add safetyquestions as part of the project/view and project/edit API --- api.php | 6 +++-- register_participants.inc.php | 45 ++++++++++++++++++++++++++++++++ register_participants_safety.php | 2 ++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/api.php b/api.php index 3d37206..f4e01c1 100644 --- a/api.php +++ b/api.php @@ -1055,7 +1055,8 @@ switch($request[0]) { /* APIDOC: project/view description(Displays the current project information) return(project array) - object(project: {project_id integer, projectdivisions_id integer, title varchar(255), language char(2), req_electricity enum('no', 'yes'), req_table enum('no', 'yes'), req_special varchar(128), summary text}) + object(project: {project_id integer, projectdivisions_id integer, title varchar(255), language char(2), req_electricity enum('no', 'yes'), req_table enum('no', 'yes'), req_special varchar(128), summary text,safetyquestions array of question}) + object(question: {id,question,type,required,ord,answer}) */ case 'view': if($u=user_load($_SESSION['users_id'])) { @@ -1077,6 +1078,8 @@ switch($request[0]) { /* APIDOC: project/edit post(project array) description(Edit an existing project. "language" notes the language a participant wishes to be judged in. "req_electricity" notes whethor or not the project requires an electrical outlet. "req_table" states whether or not the project needs a table. "req_special" is a field for special requirements.) + object(project: as per project/view) + object(question: for sake of not re-transmitting all the safetyquestion text, the only fields required to save are {id,answer}) return(project array) */ case 'edit': @@ -1090,7 +1093,6 @@ switch($request[0]) { $message = saveProjectData($project); if($message == 'success'){ $ret['status'] = 'ok'; - //FIXME: this should getProject or something to reload whats actually in the database instead of just returning what they gave us $ret['project'] = getProject($_SESSION['users_id']); }else{ $ret['status'] = 'error'; diff --git a/register_participants.inc.php b/register_participants.inc.php index 8a0e668..839609b 100644 --- a/register_participants.inc.php +++ b/register_participants.inc.php @@ -273,8 +273,10 @@ function saveProjectData($data){ $message = i18n("Cannot make changes to forms once they have been received by the fair"); }else if(registrationDeadlinePassed()){ $message = i18n("Cannot make changes to forms after registration deadline"); + /* if fields are missing, thtas okay, save what we do have, no point makign them re-enter the whole thing }else if(count($missingFields)){ $message = i18n("Required fields missing: %1", array(implode(', ', $missingFields))); + */ }else{ //first, lets make sure this project really does belong to them $q = mysql_query("SELECT * FROM projects WHERE id='" . $data['project_id'] . "' AND registrations_id='" . $_SESSION['registration_id'] . "' AND conferences_id='" . $conference['id'] . "'"); @@ -318,6 +320,20 @@ function saveProjectData($data){ "WHERE id='" . $data['project_id'] . "'"); $message = mysql_error(); + //update the safetyquestion answers (safety table) + if(is_array($data['safetyquestions'])) { + //wipe them all out first + mysql_query("DELETE FROM safety WHERE registrations_id='{$_SESSION['registration_id']}' AND conferences_id='{$conference['id']}'"); + //and add them back + foreach($data['safetyquestions'] AS $q) { + mysql_query("INSERT INTO safety (registrations_id,safetyquestions_id,answer,conferences_id) VALUES ( + '{$_SESSION['registration_id']}', + '{$q['id']}', + '".mysql_real_escape_string($q['answer'])."', + '{$conference['id']}')"); + } + } + if($message == ''){ $message = 'success'; } @@ -480,6 +496,9 @@ function getProject($userId){ }else{ $returnval = mysql_fetch_assoc($q); } + + $safetyquestions=getSafetyQuestions($regId); + $returnval['safetyquestions']=$safetyquestions; return $returnval; } @@ -737,4 +756,30 @@ function getMentors($registrations_id){ } return $returnval; } + +function getSafetyQuestions($reg_id="") { + global $conference; + if($reg_id) $regId=$reg_id; + else $regId=$_SESSION['registration_id']; + + //get their answers + $safetyanswers=array(); + $q=mysql_query("SELECT * FROM safety WHERE registrations_id='$regId'"); + while($r=mysql_fetch_object($q)) { + $safetyanswers[$r->safetyquestions_id]=$r->answer; + } + + $ret=array(); + //now get all the possible questiosn + $q=mysql_query("SELECT `id`,`question`,`type`,`required`,`ord` FROM safetyquestions WHERE conferences_id='".$conference['id']."' ORDER BY ord"); + while($r=mysql_fetch_assoc($q)) { + if(array_key_exists($r['id'],$safetyanswers)) + $r['answer']=$safetyanswers[$r['id']]; + else + $r['answer']=null; + $ret[]=$r; + } + return $ret; +} + ?> diff --git a/register_participants_safety.php b/register_participants_safety.php index 115a7d7..2562d4d 100644 --- a/register_participants_safety.php +++ b/register_participants_safety.php @@ -135,5 +135,7 @@ else if($newstatus=="complete") { else echo notice(i18n("There are no safety questions to be answered")); + + send_footer(); ?>