From 56c60b269eb1edf17ea649f6c4f968bc1bb62840 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 May 2015 17:41:58 +0300 Subject: [PATCH] THE KEY file , all modification done for. Now 4-in-1 - edit sample_var name/type - delete sample_var - DELETE SAMPLE (competely) from sample/sampe_var/sample_import/sample_import_var_restrict - check for previously undeleted sample records in previously deidentified samples (with option to clear residues ) *prepared to check proper var types selections and delete var confirmation Need to decide - if required additional limitation on sample_var delete / type change - if required to delete sample records from other tables as well (case , call attempts, calls, _notes)... all admin panel querries adjusted for sample_import_var_restrict table --- admin/samplelist.php | 474 ++++++++++++++++++++++++++++++------------- 1 file changed, 335 insertions(+), 139 deletions(-) diff --git a/admin/samplelist.php b/admin/samplelist.php index 96166ef2..95e23250 100644 --- a/admin/samplelist.php +++ b/admin/samplelist.php @@ -61,189 +61,380 @@ $js_foot = array( "../js/custom.js" ); -if (isset($_POST['submitr'])) +if (isset($_POST['ren'])) { $sample_import_id = intval($_POST['sample_import_id']); + unset($_POST['ren']); + unset($_POST['sample_import_id']); + $sql = "UPDATE sample_import SET description = " . $db->qstr($_POST['description']) . " WHERE sample_import_id = $sample_import_id"; $db->Execute($sql); - $_GET['rename'] = $sample_import_id; + $_GET['edit'] = $sample_import_id; } -if (isset($_POST['submit'])) + +if (isset($_POST['ed'])) { $sample_import_id = intval($_POST['sample_import_id']); - unset($_POST['submit']); + unset($_POST['ed']); unset($_POST['sample_import_id']); - foreach($_POST as $p) - { - $sql = "DELETE FROM sample_var - WHERE var LIKE " . $db->qstr($p) . " - AND sample_id IN - (SELECT sample_id - FROM sample - WHERE import_id = $sample_import_id)"; - $db->Execute($sql); +// print_r($_POST). "
"; //посмотрим чего отравляется + if (isset($_POST['del']) && isset($_POST['type']) ) { + $a = array(); $b = array(); $cert = array(); $a = $_POST['type']; + + //echo "

type before unset->>"; foreach($_POST['type'] as $key => $val) { echo ' | ', $key,' => ',$val,' | '; }; print "

"; + + foreach($_POST['del'] as $p) { + unset ($_POST['type'][$p]); + $deleted[] = $p; + } + $b = $_POST['type']; $cert = array_diff_assoc($a, $b); + + foreach($cert as $key => $val ) { + + if ($val == 3 || $val==4 || $val == 5 || $val == 6 || $val == 7){ + echo "
", T_("Attention!! It's not recommended to delete string '$key'.
Please BE Careful and check again strings to delete."), "
"; + } + /* else { echo "
", T_("You can delete string '$key'. "), "
"; } */ + } + //echo "

del ->>"; foreach($_POST['del'] as $key => $val) { echo ' | ', $key,' => ',$val,' | '; }; print "

"; } + + if (isset($_POST['type'])){ + + //check that we have correct var types and quantity + $prph = 0; $pcd = 0; $st = 0; $fn = 0; $eml =0; + foreach($_POST['type'] as $key => $val) { + if ($val == 3) $prph++; + else if ($val == 5) $pcd++; + else if ($val == 4) $st++; + else if ($val == 6) $fn++; + else if ($val == 7) $ln++; + else if ($val == 8) $eml++; + } + /* if($prph == 1) {$ch1 = true;} + + + + + + + + + + + if ($ch1 && $ch2 && $ch3 && $ch4) */$typecheck = true; //echo $ch1,$ch2,$ch3,$ch4, "typecheck=",$typecheck, "
" ; + + if ($typecheck){ + + foreach($_POST['type'] as $p => $val) + { + $sql = "UPDATE sample_import_var_restrict + SET `type` = $val + WHERE `var_id` = $p"; + $db->Execute($sql); + } + + if (isset($_POST['del'])) { + $db->StartTrans(); + + foreach($_POST["del"] as $p) { + $sql = "DELETE FROM `sample_import_var_restrict` + WHERE var_id = $p"; + $db->Execute($sql); + echo "
", T_(" String $p DELETED"), "
"; + + $sql = "DELETE FROM `sample_var` + WHERE var_id = $p + AND sample_id IN (SELECT sample_id FROM `sample` WHERE import_id = $sample_import_id)"; + $db->Execute($sql); + echo "
", T_(" Sample_Var data for variable $p DELETED from this sample"), "
"; + } + unset($_POST['del']); + + $db->CompleteTrans(); + + } + } + else { + echo "
", T_("Smth wrong with selected field types.
Please check again var types selection and/or fields that you supposed to delete."), "
"; + //exit (); + } + } + + if (isset($_POST['var'])){ + + foreach($_POST['var'] as $p => $val) + {// echo '| ',$p,' => ',$val,'+ '; + $v = str_replace(" ", "_", $val); + + $sql = "UPDATE sample_import_var_restrict + SET `var` = '$v' + WHERE sample_import_id = $sample_import_id + AND `var_id` = $p"; + $db->Execute($sql); + } + + unset($_POST['var']); + } + + if (isset($_POST['see'])){ + + $sql = "UPDATE sample_import_var_restrict + SET `restrict` = 1 + WHERE sample_import_id = $sample_import_id"; + $db->Execute($sql); + + foreach($_POST['see'] as $p => $val) + {// echo $p,' => ',$val,' + '; + $sql = "UPDATE sample_import_var_restrict + SET `restrict` = 0 + WHERE sample_import_id = $sample_import_id + AND `var_id` = $val"; + $db->Execute($sql); + } + unset($_POST['see']); + } + + unset($_POST['type']); $_GET['edit'] = $sample_import_id; + } -if (isset($_POST['submitvp'])) -{ - $sample_import_id = intval($_POST['sample_import_id']); +if (isset($_GET['delete_sample'])){ - unset($_POST['submitvp']); - unset($_POST['sample_import_id']); - $db->StartTrans(); - - $sql = "UPDATE sample_import_var_restrict - SET `restrict` = 1 - WHERE sample_import_id = $sample_import_id"; - $db->Execute($sql); + $sample_import_id = $_GET['delete_sample']; - foreach($_POST as $p => $val) - { - $sql = "UPDATE sample_import_var_restrict - SET `restrict` = 0 - WHERE sample_import_id = $sample_import_id - AND `var` LIKE " . $db->qstr($p); + // -->check questionnaire_sample - unassign sample if assigned + $sql = "SELECT questionnaire_id FROM `questionnaire_sample` WHERE sample_import_id = $sample_import_id"; + $rs = $db->GetAll($sql); + if (count($rs) != 0){ + echo "
", T_("Sample $sample_import_id is still assigned to questionnaire.
Please unassign sample prior to delete."), "
"; + } + else{ + //get the string list of sample_id's + $sql = "SELECT sample_id FROM `sample` where import_id = $sample_import_id"; + $rs = $db->GetAll($sql); + for($i=0;$i<=count($rs)-1;$i++){ $samimdel[] = $rs[$i]['sample_id'] ;} + $samimdel_s = implode(",",$samimdel); + + $db->StartTrans(); + + //del from questionnaire_sample_exclude_priority + $sql = "DELETE FROM `questionnaire_sample_exclude_priority` WHERE sample_id IN ($samimdel_s)"; + $db->Execute($sql); + + //del from questionnaire_sample_quota + $sql = "DELETE FROM `questionnaire_sample_quota` WHERE sample_import_id = $sample_import_id"; + $db->Execute($sql); + + //del from questionnaire_sample_quota_row + $sql = "DELETE FROM `questionnaire_sample_quota_row` WHERE sample_import_id = $sample_import_id"; + $db->Execute($sql); + + //del from questionnaire_sample_quota_row_exclude + $sql = "DELETE FROM `questionnaire_sample_quota_row_exclude` WHERE sample_id IN ($samimdel_s)"; $db->Execute($sql); - } - $db->CompleteTrans(); - - $_GET['view'] = $sample_import_id; + //del from questionnaire_sample_timeslot + $sql = "DELETE FROM `questionnaire_sample_timeslot` WHERE sample_import_id = $sample_import_id"; + $db->Execute($sql); + + //delete from sample_var + $sql = "DELETE FROM `sample_var` WHERE sample_id IN ($samimdel_s)"; + $db->Execute($sql); + + //del from sample_import_var_restrict + $sql = "DELETE FROM `sample_import_var_restrict` WHERE sample_import_id = $sample_import_id"; + $db->Execute($sql); + + //del from sample + $sql = "DELETE FROM `sample` WHERE import_id = $sample_import_id"; + $db->Execute($sql); + + //del from sample_import + $sql = "DELETE FROM `sample_import` WHERE sample_import_id = $sample_import_id"; + $db->Execute($sql); + + $db->CompleteTrans(); + + if (mysql_errno() == 0){echo "
", T_("Sample $sample_import_id was deleted."), "
"; } + else {echo "
ERROR ".mysql_errno()." ".mysql_error()."\n
";} + } + + unset($_GET['delete_sample']); + $samimdel_s = ''; } -if (isset($_GET['rename'])) + +if (isset($_GET['edit']) ) { - $subtitle=T_("Rename sample"); + $subtitle=T_("Rename, Set viewing permissions & Manage sample variables") ; xhtml_head(T_("Sample management"),true,$css,$js_head,false,false,false,$subtitle); - echo " " . T_("Go back") . ""; - $sample_import_id = intval($_GET['rename']); + echo "
 " . T_("Go back") . "
"; + + $sample_import_id = intval($_GET['edit']); + + $sql = "SELECT * FROM sample_import WHERE sample_import_id = $sample_import_id"; + $sd = $db->GetRow($sql); + + if($sd['enabled'] == 1) $dis = disabled; // -> disable edit and delete if sample is enabled - $sql = "SELECT description - FROM sample_import - WHERE sample_import_id = $sample_import_id"; - $rs = $db->GetOne($sql); + $sql = "SELECT type, description + FROM sample_var_type"; + $rd = $db->GetAll($sql); + + $sql = "SELECT sir.var_id, + CONCAT('') as var, + CONCAT ('') as type, sv.val, + CONCAT('') as see, + CONCAT('') as del, + sir.restrict IS NULL as existss + FROM sample_import as si, sample_var as sv, sample as s, sample_import_var_restrict as sir, sample_var_type as svt + WHERE si.sample_import_id = $sample_import_id + AND sir.sample_import_id = si.sample_import_id + AND sir.var_id = sv.var_id + AND sv.sample_id = s.sample_id + AND s.import_id = si.sample_import_id + AND svt.type = sir.type + GROUP BY sir.var_id"; + $rs = $db->GetAll($sql); - print "

" . T_("Sample current description") . ": " . $rs . "

"; + print "

" . T_("Sample") . ": " . $sd['description'] . " ID $sample_import_id

"; + print "
 " . T_("Search this sample") . "
"; + print "
"; + + if($sd['enabled'] == 0){ + ?>
-

-
+

+
/>
-
+
 " . T_("Go back") . ""; - - $sample_import_id = intval($_GET['view']); - - $sql = "SELECT sample_id - FROM `sample` - WHERE import_id = $sample_import_id"; - - $sample_id = $db->GetOne($sql); - - $sql = "SELECT si.description, sv.val, sv.var, - CONCAT('') as box, - sir.restrict IS NULL as existss - FROM sample_import as si - JOIN `sample` as s ON (s.import_id = si.sample_import_id AND s.sample_id = $sample_id) - JOIN sample_var as sv ON (sv.sample_id = s.sample_id) - LEFT JOIN sample_import_var_restrict as sir ON (sir.sample_import_id = si.sample_import_id AND sir.var = sv.var) - WHERE si.sample_import_id = $sample_import_id"; - - $rs = $db->GetAll($sql); - - //if not in restrict table, then insert - foreach($rs as $r) - { - if ($r['existss'] == 1) - { - $sql = "INSERT INTO sample_import_var_restrict (sample_import_id,var,`restrict`) - VALUES ($sample_import_id,'{$r['var']}',0)"; - $db->Execute($sql); - } } - - print "

" . T_("Operator viewing permissions") . " ". T_("for") . " " . T_("sample") . ": " . $rs[0]['description'] . "

"; - if (!$rs) print ""; - else { - print " -
"; - xhtml_table($rs,array("var","val","box"),array(T_("Field"),T_("Example data"),T_("Allow operator to see?"))); -?> -

-
-
- - " . T_("Go back") . ""; - - $sample_import_id = intval($_GET['edit']); - - $sql = "SELECT si.description, sv.val, sv.var, - CONCAT('') as box - FROM sample_import as si, sample_var as sv, sample as s - WHERE si.sample_import_id = $sample_import_id - AND sv.sample_id = s.sample_id - AND s.import_id = si.sample_import_id - GROUP BY sv.var"; - $rs = $db->GetAll($sql); - - print "

" . T_("Sample") . ": " . $rs[0]['description'] . "

"; - if ($rs){ - print ""; + ?> -
+

-
+
+
-

" . T_("Select which fields from this sample to deidentify.

Deidentified fields will be permanently deleted from the sample.") . "

"; } else { - print ""; + print ""; + + /*check `Time_zone_name` and `phone` values for deidentified records*/ + $sql = "SELECT `sample`.sample_id FROM `sample` + LEFT JOIN `sample_var` ON (`sample`.sample_id = `sample_var`.sample_id) + WHERE `sample_var`.sample_id IS NULL + AND `sample`.import_id = $sample_import_id + AND (`sample`.Time_zone_name !='' || `sample`.phone !='')"; + $rs = $db->GetAll($sql); + + if (!empty($rs)) { + $num = count($rs); + print "

" . T_("There're still $num records for `Time_zone_name` and `phone` values for deidentified records") . "

"; + + print "
"; + } + } - xhtml_foot(); + + unset ($rs); + + /*check if there's sample_var data not matching sample_import_var_restrict.var_id */ + $sql = "SELECT `sv`.var_id, `sv`.var, `sv`.type FROM `sample_var` as sv + LEFT JOIN `sample_import_var_restrict` as sivr ON (`sivr`.var_id = `sv`.var_id) + WHERE `sivr`.var_id IS NULL + AND `sv`.sample_id IN (SELECT sample_id FROM `sample` WHERE import_id = $sample_import_id) + GROUP BY `sv`.var_id"; + + $rs = $db->GetAll($sql); + if (!empty($rs)) { + $count = count($rs); + //print_r($rs); + print "

" . T_("Fix this sample ") . "

"; + print "

" . $count . " var id's not match

"; + +/* print "
+ + + +
"; */ + print "
"; + + /* if (isset($_POST['restore___'])){ + $sql = "INSERT INTO sample_import_var_restrict + (`sample_import_id`,`var_id`,`var`,`type`,`restrict`) + VALUES ($sample_import_id,' ',' ',' ',1)"; + + $db->Execute($sql); + unset($_POST['restore___']); + } + if (isset($_POST['delvarf___'])){ + $sql = ""; + + $db->Execute($sql); + unset($_POST['delvarf___']); + } */ + + unset($rs); + } + + if (isset($_POST['dtzph'])){ + + /*delete `Time_zone_name` and `phone` values for deidentified records*/ + $db->StartTrans(); + + $sql = "UPDATE `sample` + LEFT JOIN `sample_var` ON (`sample`.sample_id = `sample_var`.sample_id) + SET `Time_zone_name`='',`phone`='' + WHERE `sample_var`.sample_id IS NULL + AND `sample`.import_id = $sample_import_id"; + $db->Execute($sql); + + unset($_POST['dtzph']); + + $db->CompleteTrans(); + } + + xhtml_foot($js_foot); exit(); } @@ -281,17 +472,22 @@ $sql = "SELECT END as enabledisable, CASE WHEN enabled = 1 THEN - CONCAT('') + CONCAT('') ELSE - CONCAT('') + CONCAT(' + + ') END as did, - CONCAT('') as vp, - CONCAT('') as rname, + CASE WHEN enabled = 1 THEN + CONCAT('') + ELSE + CONCAT('') + END as delsample, CONCAT('') as ssearch, CONCAT('') as calls, - CONCAT('

',description,' 

') as description - FROM sample_import"; -$rs = $db->GetAll($sql); + CONCAT('

',description,' 

') as description, + CONCAT('

',(SELECT COUNT( DISTINCT`sample_var`.sample_id) FROM `sample_var`, `sample` WHERE `sample`.sample_id = `sample_var`.sample_id AND `sample`.import_id = sample_import_id ),' 

') as cnt + FROM sample_import ORDER BY sample_import_id DESC"; + + $rs = $db->GetAll($sql); $subtitle=T_("Sample list"); xhtml_head(T_("Sample management"),true,$css,$js_head,false,false,false,$subtitle); @@ -299,12 +495,12 @@ echo "
 " . T_("Go back") . "  " . T_("Import a sample file") . "
"; -$columns = array("id","description","status","enabledisable","calls","did","vp","rname", "ssearch"); +$columns = array("id","description","cnt","status","enabledisable","calls","did","ssearch","delsample"); //"vp","rname", //$titles = array(T_("ID"),T_("Sample"), T_("Call History"),T_("Enable/Disable"), T_("Status"), T_("Deidentify"), T_("View"), T_("Rename"), T_("Search")); xhtml_table($rs,$columns, false, "table-hover table-condensed "); xhtml_foot($js_foot); ?> \ No newline at end of file