diff --git a/admin/assignsample.php b/admin/assignsample.php index 7ad615d9..a848d041 100644 --- a/admin/assignsample.php +++ b/admin/assignsample.php @@ -242,6 +242,73 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['rsid'])) xhtml_foot($js_foot); die(); } + else if (isset($_GET['sort'])) + { + $cso = $db->GetOne(" SELECT sort_order + FROM questionnaire_sample + WHERE questionnaire_id = $questionnaire_id + AND sample_import_id = $sid"); + + if ($_GET['sort'] == "up") + { + //find previous 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 < $cso + ORDER BY sort_order DESC 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 = $cso + 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 > $cso + 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 = $cso + WHERE sample_import_id = $ssid + AND questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + unset($_GET['sort']); + + } + } else { //need to remove rsid from questionnaire @@ -254,85 +321,15 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['rsid'])) $db->Execute("SELECT @i := 0"); $db->Execute("UPDATE `questionnaire_sample` SET sort_order = @i:=@i+1 WHERE 1=1 ORDER BY sort_order ASC"); } - unset($_GET['questionnaire_id']); } -if (isset($_GET['sort_order']) && isset($_GET['sort'])) -{ - $sort_order = $_GET['sort_order']; - if ($_GET['sort'] == "up") $so = $sort_order -1; - if ($_GET['sort'] == "down") $so = $sort_order +1; - - $sql = "UPDATE questionnaire_sample - SET sort_order = IF(sort_order = $sort_order, $so, $sort_order) - WHERE sort_order IN( $sort_order, $so)"; - $db->Execute($sql); - unset($_GET['sort']); unset($_GET['sort_order']); -} - -/* auto-set continiuos sort_order values for existing questionnaire_samples if not set before or first-time run */ -if ($db->GetOne("SELECT COUNT(sort_order) - COUNT(DISTINCT sort_order ) FROM questionnaire_sample") >0){ - $db->Execute("SELECT @i := 0"); - $db->Execute("UPDATE `questionnaire_sample` SET sort_order = @i:=@i+1 WHERE 1=1 ORDER BY sort_order ASC"); -} - -$subtitle = T_("List, Sort & Assign Samples"); -xhtml_head(T_("Assign & Sort questionnaire samples"),true,$css,$js_head,false,false,false,$subtitle);//array("../css/table.css"),array("../js/window.js") +$subtitle = T_("Assign questionnaire samples"); +xhtml_head(T_("Assign questionnaire samples"),true,$css,$js_head,false,false,false,$subtitle);//array("../css/table.css"),array("../js/window.js") print " " . T_("Go back") . ""; -print "