From 338f50c6b6f25589eda246cca68c0b33ca389ba3 Mon Sep 17 00:00:00 2001 From: Adam Zammit Date: Fri, 11 Sep 2015 12:04:24 +1000 Subject: [PATCH] Added sorting of samples to front end --- admin/assignsample.php | 108 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 100 insertions(+), 8 deletions(-) diff --git a/admin/assignsample.php b/admin/assignsample.php index d4522b5a..eb6a5f6c 100644 --- a/admin/assignsample.php +++ b/admin/assignsample.php @@ -93,8 +93,14 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET[' $an = 0; if (isset($_GET['allownew'])) $an = 1; - $sql = "INSERT INTO questionnaire_sample(questionnaire_id,sample_import_id,call_max,call_attempt_max,random_select,answering_machine_messages,allow_new) - VALUES('$questionnaire_id','$sid','$cm','$cam','$selecttype','$am', '$an')"; + $sql = "SELECT MAX(sort_order) + 1 + FROM questionnaire_sample + WHERE questionnaire_id = '$questionnaire_id'"; + + $so = $db->GetOne($sql); + + $sql = "INSERT INTO questionnaire_sample(questionnaire_id,sample_import_id,call_max,call_attempt_max,random_select,answering_machine_messages,allow_new,sort_order) + VALUES('$questionnaire_id','$sid','$cm','$cam','$selecttype','$am', '$an', '$so')"; $db->Execute($sql); @@ -176,7 +182,6 @@ if (isset($_POST['edit'])) } - if (isset($_GET['questionnaire_id']) && isset($_GET['rsid'])) { $questionnaire_id = bigintval($_GET['questionnaire_id']); @@ -239,7 +244,67 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['rsid'])) GetRow($sql); + + $ssid = $rs['sample_import_id']; + $sso = $rs['sort_order']; + + $sql = "UPDATE questionnaire_sample + SET sort_order = $sso + WHERE sample_import_id = $sid + AND questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + $sql = "UPDATE questionnaire_sample + SET sort_order = ($sso + 1) + WHERE sample_import_id = $ssid + AND questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + } + else + { + //find next in sort order and do a swap + $sql = "SELECT sample_import_id,sort_order + FROM questionnaire_sample + WHERE questionnaire_id = $questionnaire_id + AND sort_order > (SELECT sort_order FROM questionnaire_sample WHERE questionnaire_id = $questionnaire_id AND sample_import_id = $sid) + ORDER BY sort_order ASC LIMIT 1"; + + $rs = $db->GetRow($sql); + + $ssid = $rs['sample_import_id']; + $sso = $rs['sort_order']; + + $sql = "UPDATE questionnaire_sample + SET sort_order = $sso + WHERE sample_import_id = $sid + AND questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + $sql = "UPDATE questionnaire_sample + SET sort_order = ($sso - 1) + WHERE sample_import_id = $ssid + AND questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + } + } else { //need to remove rsid from questionnaire @@ -266,7 +331,7 @@ if ($questionnaire_id != false) print "

". T_("Samples selected for this questionnaire") .":

"; - $sql = "SELECT si.description as description, + $sql = "SELECT q.sort_order as sort_order, si.description as description,si.sample_import_id, CASE WHEN q.call_max = 0 THEN '". TQ_("Unlimited") ."' ELSE q.call_max END as call_max, CASE WHEN q.call_attempt_max = 0 THEN '". TQ_("Unlimited") . "' ELSE q.call_attempt_max END AS call_attempt_max, CASE WHEN q.random_select = 0 THEN '". TQ_("Sequential") ."' ELSE '". TQ_("Random") . "' END as random_select, @@ -276,12 +341,39 @@ if ($questionnaire_id != false) CONCAT('') as unassign FROM questionnaire_sample as q, sample_import as si WHERE q.sample_import_id = si.sample_import_id - AND q.questionnaire_id = '$questionnaire_id'"; + AND q.questionnaire_id = '$questionnaire_id' + ORDER BY q.sort_order ASC"; $qs = $db->GetAll($sql); - if (!empty($qs)) - xhtml_table($qs,array("description","call_max","call_attempt_max","answering_machine_messages","random_select","allow_new","edit","unassign"),array(T_("Sample"), T_("Max calls"), T_("Max call attempts"), T_("Answering machine messages"), T_("Selection type"), T_("Allow new numbers to be drawn?"), T_("Edit"), T_("Unassign sample"))); + if (!empty($qs)) + { + $co = count($qs); + if ($co > 1) + { + for($i = 0; $i < $co; $i++) + { + $down = ""; + $up = ""; + if ($i == 0) //down only + { + $qs[$i]['sort_order'] = $down; + } + else if ($i == ($co - 1)) //up only + { + $qs[$i]['sort_order'] = $up; + } + else + { + $qs[$i]['sort_order'] = "$up $down"; + } + } + } + else + $qs[0]['sort_order'] = ""; + + xhtml_table($qs,array("sort_order","description","call_max","call_attempt_max","answering_machine_messages","random_select","allow_new","edit","unassign"),array(T_("Sort order"),T_("Sample"), T_("Max calls"), T_("Max call attempts"), T_("Answering machine messages"), T_("Selection type"), T_("Allow new numbers to be drawn?"), T_("Edit"), T_("Unassign sample"))); + } else print "

". T_("No samples selected for this questionnaire") ."

";