PageRenderTime 54ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/Prohits/analyst/advanced_search_results.php

http://prohits.googlecode.com/
PHP | 969 lines | 848 code | 45 blank | 76 comment | 94 complexity | d7e64c1d6ec293faae575d79a07a4e65 MD5 | raw file
  1. <?
  2. /***********************************************************************
  3. Copyright 2010 Gingras and Tyers labs,
  4. Samuel Lunenfeld Research Institute, Mount Sinai Hospital.
  5. Licensed under the Apache License, Version 2.0 (the "License");
  6. you may not use this file except in compliance with the License.
  7. You may obtain a copy of the License at
  8. http://www.apache.org/licenses/LICENSE-2.0
  9. Unless required by applicable law or agreed to in writing, software
  10. distributed under the License is distributed on an "AS IS" BASIS,
  11. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. See the License for the specific language governing permissions and
  13. limitations under the License.
  14. *************************************************************************/
  15. $theaction = '';
  16. $frm_search_str = '';
  17. $frm_search_OrAnd = '';
  18. $frm_addwildcard = '';
  19. $frm_search_description = 0;
  20. $frm_date_str = '';
  21. $frm_expDetail_str ='';
  22. $pro_access_ID_str = '';
  23. $limit = 3000;
  24. $bait_search = true;
  25. $hit_search = true;
  26. $band_search = true;
  27. $gel_search = true;
  28. $rawfile_search = true;
  29. $task_search = true;
  30. $bait_selected_bait_arr = array();
  31. $hit_selected_bait_arr = array();
  32. $TPP_hit_selected_bait_arr = array();
  33. $hit_selected_band_arr = array();
  34. $TPP_hit_selected_band_arr = array();
  35. $band_selected_band_arr = array();
  36. $gel_selected_gel_arr = array();
  37. $raw_file_searched_arr = array();
  38. $raw_file_searched_str = '';
  39. $task_searched_arr = array();
  40. $task_searched_str = '';
  41. $expDetail_bait_arr = array();
  42. $expDetail_Exp_arr = array();
  43. $expDetail_Exp_str = '';
  44. $theaction = '';
  45. $like_str = '';
  46. $GeneID_str = '';
  47. $s_wildcard = '';
  48. $e_wildcard = '';
  49. $geneID_str = '';
  50. $SQL_bait = '';
  51. $date_from = '';
  52. $date_to = '';
  53. $msg_h = '';
  54. $exp_option_mld = '';
  55. $exp_option_num = 0;
  56. $SQL_exp = '';
  57. $SQL_exp_group = '';
  58. $add_process_img = 1;
  59. $frm_user_id = '';
  60. $where_UserID_bait = '';
  61. $where_UserID_hits = '';
  62. $where_UserID_hits_TPP = '';
  63. $where_UserID_gel = '';
  64. $where_UserID_exp = '';
  65. $where_UserID_task = '';
  66. $where_UserID_band = '';
  67. require("../common/site_permission.inc.php");
  68. include("common_functions.inc.php");
  69. require("../common/common_fun.inc.php");
  70. /*echo "<pre>";
  71. print_r($request_arr);
  72. echo "</pre>";*/
  73. $proteinDB = new mysqlDB(PROHITS_PROTEINS_DB);
  74. $managerDB = new mysqlDB(MANAGER_DB);
  75. require("site_header.php");
  76. switch($frm_addwildcard){
  77. case 'both':
  78. $s_wildcard = '%';
  79. $e_wildcard = '%';
  80. break;
  81. case 'front':
  82. $s_wildcard = '%';
  83. break;
  84. case 'end':
  85. $e_wildcard = '%';
  86. break;
  87. }
  88. if($frm_date_str){
  89. $date_arr = explode(' To ', $frm_date_str);
  90. $date_from = $date_arr[0] . "-00";
  91. $date_to = $date_arr[1] . "-32";
  92. }
  93. if($frm_user_id){
  94. $where_UserID_bait = $where_UserID_band = " AND OwnerID='$frm_user_id' ";
  95. $where_UserID_hits = " AND H.OwnerID='$frm_user_id' ";
  96. $where_UserID_hits_TPP = " AND B.OwnerID='$frm_user_id' ";
  97. $where_UserID_gel = " AND G.OwnerID='$frm_user_id' ";
  98. $where_UserID_exp = " AND E.OwnerID='$frm_user_id' ";
  99. $where_UserID_task = " AND UserID='$frm_user_id' ";
  100. }
  101. if($frm_expDetail_str){
  102. //$SQL_exp and $SQL_exp_group will be used in get_exp_bait_arr()
  103. preg_match_all("/[0-9]+[_]([0-9]+),,/", $frm_expDetail_str, $matches);
  104. if($matches){
  105. // $matches[1] is the selected option array.
  106. $exp_option_mld = implode(",", $matches[1]);
  107. $exp_option_num = count($matches[1]);
  108. $tmp_arr = explode("====", $frm_expDetail_str);
  109. $and_or = '';
  110. if(count($tmp_arr)>1){
  111. $frm_expDetail_str = $tmp_arr[0];
  112. $and_or = $tmp_arr[1];
  113. }
  114. $SQL_exp = "SELECT E.BaitID, D.ExpID FROM ExpDetail D, Experiment E WHERE D.ExpID=E.ID AND OptionID in ($exp_option_mld)";
  115. if($and_or == 'AND' ){
  116. $SQL_exp_group = " GROUP by D.ExpID HAVING count(D.ExpID)=$exp_option_num";
  117. }
  118. }
  119. $expDetail_Exp_arr = get_exp_bait_arr("Band");
  120. if($expDetail_Exp_arr){
  121. $expDetail_Exp_str = implode(",", $expDetail_Exp_arr);
  122. }
  123. }
  124. //bait search---------------------------------------------------------
  125. if($frm_search_str){
  126. $frm_search_str = trim($frm_search_str);
  127. $frm_search_str = preg_replace("/[ ]+/", " ", $frm_search_str);
  128. $frm_search_str = mysql_escape_string($frm_search_str);
  129. $like_str = '';
  130. $bait_selected_bait_str = '';
  131. $bait_selected_bait_num = 0;
  132. if($frm_search_description){
  133. $field_arr = array("GeneID","LocusTag","GeneName","BaitAcc","Tag","Mutation","Clone","Vector","Description");
  134. }else{
  135. $field_arr = array("GeneID","LocusTag","GeneName","BaitAcc","Tag","Mutation","Clone","Vector");
  136. }
  137. $like_str = get_like_str($field_arr,$frm_search_str);
  138. if($like_str){
  139. $SQL = "SELECT ID FROM Bait WHERE ProjectID='$AccessProjectID' $where_UserID_bait and (" . $like_str .")";
  140. $SQL .= get_and_date_str('DateTime');
  141. //echo "B1: $SQL<br>\n";exit;
  142. $bait_arr = $HITSDB->fetchAll($SQL);
  143. if(!$bait_arr){
  144. $bait_search = false;
  145. }else{
  146. foreach($bait_arr as $value){
  147. array_push($bait_selected_bait_arr, $value['ID']);
  148. }
  149. }
  150. }
  151. }
  152. //hits search---------------------------------------------------------
  153. $hit_value_for_bait_arr = array();
  154. $hit_value_for_band_arr = array();
  155. $tpp_hit_value_for_bait_arr = array();
  156. $tpp_hit_value_for_band_arr = array();
  157. if($frm_search_str){
  158. $hit_selected_bait_str = '';
  159. $hits_selected_bait_num = 0;
  160. if($frm_search_description){
  161. //search hits description
  162. if($frm_search_OrAnd){
  163. $like_str = get_like_str(array("HitName"),$frm_search_str);
  164. $SQL = "SELECT B.ID, H.BandID, H.Expect, H.Expect2, H.Pep_num from Hits H, Bait B
  165. WHERE B.ID=H.BaitID and B.ProjectID='$AccessProjectID' $where_UserID_hits and (" . $like_str .") ";
  166. if($frm_date_str){
  167. $SQL .= get_and_date_str('H.DateTime');
  168. }
  169. $SQL .= " GROUP BY H.BandID ORDER BY B.ID, H.Pep_num desc";
  170. $TPP_like_str = get_like_str(array("ProteinDec"),$frm_search_str);
  171. $TPP_SQL = "SELECT B.ID, H.BandID, H.PROBABILITY, H.TOTAL_NUMBER_PEPTIDES from TppProtein H, Bait B
  172. WHERE B.ID=H.BaitID and B.ProjectID='$AccessProjectID' $where_UserID_hits_TPP and (" . $TPP_like_str .") ";
  173. if($frm_date_str){
  174. $TPP_SQL .= get_and_date_str('B.DateTime');
  175. }
  176. $TPP_SQL .= " Order by B.ID, H.TOTAL_NUMBER_PEPTIDES desc";
  177. }else{
  178. $SQL = "SELECT B.ID, H.BandID, H.Expect, H.Expect2, H.Pep_num from Hits H, Bait B
  179. WHERE B.ID=H.BaitID and B.ProjectID='$AccessProjectID' $where_UserID_hits and H.HitName like '$frm_search_str' ";
  180. if($frm_date_str){
  181. $SQL .= get_and_date_str('H.DateTime');
  182. }
  183. $SQL .= " ORDER BY B.ID, H.Pep_num desc";
  184. $TPP_SQL = "SELECT B.ID, H.BandID, H.PROBABILITY, H.TOTAL_NUMBER_PEPTIDES from TppProtein H, Bait B
  185. WHERE B.ID=H.BaitID and B.ProjectID='$AccessProjectID' $where_UserID_hits_TPP and H.ProteinDec like '$frm_search_str' ";
  186. if($frm_date_str){
  187. $TPP_SQL .= get_and_date_str('B.DateTime');
  188. }
  189. $TPP_SQL .= " Order by B.ID, H.TOTAL_NUMBER_PEPTIDES desc";
  190. }
  191. $results = mysql_query($SQL,$HITSDB->link);
  192. while($row = mysql_fetch_row($results)){
  193. array_push($hit_selected_bait_arr, $row[0]);
  194. array_push($hit_selected_band_arr, $row[1]);
  195. if(!isset($hit_value_for_bait_arr[$row[0]])){
  196. $tmp_expect = ($row[2])?$row[2]:$row[3];
  197. $hit_value_for_bait_arr[$row[0]]= $tmp_expect ." / ". $row[4];
  198. }
  199. if(!isset($hit_value_for_band_arr[$row[1]])){
  200. $hit_value_for_band_arr[$row[1]]= $tmp_expect ." / ". $row[4];
  201. }
  202. }
  203. $TPP_results = mysql_query($TPP_SQL,$HITSDB->link);
  204. while($row = mysql_fetch_row($TPP_results)){
  205. array_push($TPP_hit_selected_bait_arr, $row[0]);
  206. array_push($TPP_hit_selected_band_arr, $row[1]);
  207. if(!isset($tpp_hit_value_for_bait_arr[$row[0]])){
  208. $tpp_hit_value_for_bait_arr[$row[0]]= $row[2] ." / ". $row[3];
  209. }
  210. if(!isset($tpp_hit_value_for_band_arr[$row[1]])) {
  211. $tpp_hit_value_for_band_arr[$row[1]]= $row[2] ." / ". $row[3];
  212. }
  213. }
  214. }
  215. //not (exact phrase/all words and with two words)
  216. if($frm_search_OrAnd == 'OR' or !strpos($frm_search_str, ' ')){
  217. $geneID_str = '';
  218. $geneID_str_ens = '';
  219. $selected_bait_gene_str = '';
  220. //search all gene IDs
  221. $like_str = get_like_str(array("GeneName"),$frm_search_str);
  222. $SQL_ens = "SELECT ENSG FROM `Protein_ClassENS` WHERE $like_str";
  223. $results = mysql_query($SQL_ens, $proteinDB->link);
  224. if(mysql_num_rows($results) > $limit){
  225. $like_str_tmp = get_like_str(array("GeneName"),$frm_search_str, '=');
  226. $SQL_ens = "SELECT ENSG FROM `Protein_ClassENS` WHERE $like_str_tmp";
  227. $results = mysql_query($SQL_ens, $proteinDB->link);
  228. //$msg_h = "More than $limit gene names are matched the search. The exact phrase search is used.";
  229. }
  230. while($row = mysql_fetch_row($results)){
  231. $selected_bait_gene_str .= ",'".$row[0]."'";
  232. }
  233. $SQL_g = "SELECT EntrezGeneID FROM `Protein_Class` WHERE $like_str";
  234. //echo $SQL_g;
  235. $results = mysql_query($SQL_g, $proteinDB->link);
  236. if(mysql_num_rows($results) > $limit){
  237. $like_str_tmp = get_like_str(array("GeneName"),$frm_search_str, '=');
  238. $SQL_g = "SELECT EntrezGeneID FROM `Protein_Class` WHERE $like_str_tmp";
  239. $results = mysql_query($SQL_g, $proteinDB->link);
  240. $msg_h = "<br>More than $limit gene names are matched. \"The exact phrase\" gene name search is used for hits search.";
  241. }
  242. while($row = mysql_fetch_row($results)){
  243. $selected_bait_gene_str .= ",'".$row[0]."'";
  244. }
  245. //echo "H2: $SQL_g<br>\n";
  246. //from seached GeneIDs get bait IDs from hits results
  247. if($selected_bait_gene_str){
  248. $selected_bait_gene_str = substr($selected_bait_gene_str, 1);
  249. $SQL = "SELECT B.ID, H.BandID, H.Expect, H.Expect2, H.Pep_num, H.SearchEngine from Hits H, Bait B
  250. WHERE B.ID=H.BaitID and B.ProjectID='$AccessProjectID' $where_UserID_hits and H.GeneID in($selected_bait_gene_str) ";
  251. if($frm_date_str) {
  252. $SQL .= get_and_date_str('H.DateTime');
  253. }
  254. $SQL .= " ORDER BY B.ID, H.Pep_num desc";
  255. $TPP_SQL = "SELECT B.ID, H.BandID, H.PROBABILITY, H.TOTAL_NUMBER_PEPTIDES, H.SearchEngine from TppProtein H, Bait B
  256. WHERE B.ID=H.BaitID and B.ProjectID='$AccessProjectID' $where_UserID_hits_TPP and H.GeneID in($selected_bait_gene_str) ";
  257. if($frm_date_str) {
  258. $TPP_SQL .= get_and_date_str('B.DateTime');
  259. }
  260. $TPP_SQL .= " Order by B.ID, H.TOTAL_NUMBER_PEPTIDES desc";
  261. //echo "H3: $SQL<br>\n";
  262. //echo "H4: $TPP_SQL<br>\n";exit;
  263. $results = mysql_query($SQL, $HITSDB->link);
  264. while($row = mysql_fetch_row($results)){
  265. array_push($hit_selected_bait_arr, $row[0]);
  266. array_push($hit_selected_band_arr, $row[1]);
  267. if(!isset($hit_value_for_bait_arr[$row[0]])){
  268. $tmp_expect = ($row[2])?$row[2]:$row[3];
  269. $hit_value_for_bait_arr[$row[0]]= $row[5] ." " . $tmp_expect ." / ". $row[4];
  270. }
  271. if(!isset($hit_value_for_band_arr[$row[1]])){
  272. $hit_value_for_band_arr[$row[1]]= $row[5]." " . $tmp_expect ." / ". $row[4];
  273. }
  274. }
  275. $TPP_results = mysql_query($TPP_SQL, $HITSDB->link);
  276. while($row = mysql_fetch_row($TPP_results)){
  277. array_push($TPP_hit_selected_bait_arr, $row[0]);
  278. array_push($TPP_hit_selected_band_arr, $row[1]);
  279. if(!isset($tpp_hit_value_for_bait_arr[$row[0]])){
  280. $tpp_hit_value_for_bait_arr[$row[0]]= $row[4] ."TPP " . $row[2] ." / ". $row[3];
  281. }
  282. if(!isset($tpp_hit_value_for_band_arr[$row[1]])){
  283. $tpp_hit_value_for_band_arr[$row[1]]= $row[4] ."TPP " . $row[2] ." / ". $row[3];
  284. }
  285. }
  286. }
  287. }
  288. $hit_selected_bait_arr = array_unique($hit_selected_bait_arr);
  289. $hit_selected_band_arr = array_unique($hit_selected_band_arr);
  290. $TPP_hit_selected_bait_arr = array_unique($TPP_hit_selected_bait_arr);
  291. $TPP_hit_selected_band_arr = array_unique($TPP_hit_selected_band_arr);
  292. if(!$hit_selected_bait_arr){
  293. $hit_search = false;
  294. }
  295. }
  296. //add ExpDetail search in bait and hit search-----------------------
  297. if($SQL_exp){
  298. if($frm_search_str){
  299. if($bait_selected_bait_arr){
  300. $bait_selected_bait_arr = get_exp_bait_arr("Bait", $bait_selected_bait_arr);
  301. }
  302. if($hit_selected_bait_arr){
  303. $hit_selected_bait_arr = get_exp_bait_arr("Hit", $hit_selected_bait_arr);
  304. $hit_selected_band_arr = get_exp_band_arr("Hit", $hit_selected_band_arr);
  305. }
  306. if($TPP_hit_selected_bait_arr){
  307. $TPP_hit_selected_bait_arr = array_unique($TPP_hit_selected_bait_arr);
  308. $TPP_hit_selected_bait_arr = get_exp_bait_arr("Hit", $TPP_hit_selected_bait_arr);
  309. $TPP_hit_selected_band_arr = get_exp_band_arr("Hit", $TPP_hit_selected_band_arr);
  310. }
  311. }else{
  312. $expDetail_bait_arr = get_exp_bait_arr("Bait");
  313. $bait_selected_bait_arr = $expDetail_bait_arr;
  314. $hit_selected_bait_arr = get_hit_bait_arr($expDetail_bait_arr);
  315. $TPP_hit_selected_bait_arr = get_hit_bait_arr($expDetail_bait_arr, 'TPP');
  316. $hit_selected_band_arr = get_exp_band_arr('Hit');
  317. $TPP_hit_selected_band_arr = get_exp_band_arr('TPP');
  318. }
  319. }
  320. //search sample ----------------------------------------------------
  321. $SQL = "SELECT `ID` FROM `Band` WHERE `ProjectID`='$AccessProjectID' $where_UserID_band";
  322. if($frm_search_str){
  323. $like_str = get_like_str(array("Location"),$frm_search_str);
  324. $SQL .= " AND (". $like_str .")";
  325. }
  326. if($SQL_exp and $SQL_exp_group){
  327. if($expDetail_Exp_str){
  328. $SQL .= " AND ExpID in ($expDetail_Exp_str)";
  329. }else{
  330. $band_search = false;
  331. }
  332. }
  333. if($date_from and $date_to){
  334. $SQL .= " AND (DateTime > '".$date_from."' AND DateTime < '".$date_to."')";
  335. }
  336. //echo "Band: $SQL<br>\n";
  337. if($band_search){
  338. $results = mysql_query($SQL, $HITSDB->link);
  339. while($row = mysql_fetch_row($results)){
  340. array_push($band_selected_band_arr, $row[0]);
  341. }
  342. }
  343. //search gel ---------------------------------------------------------
  344. $SQL = "SELECT distinct G.ID FROM Gel G, Lane L WHERE G.ID=L.GelID AND G.ProjectID='$AccessProjectID' $where_UserID_gel";
  345. if($frm_search_str){
  346. $like_str = get_like_str(array("Name", "Image", "LaneCode"),$frm_search_str);
  347. $SQL .= " AND (". $like_str .")";
  348. }
  349. if($SQL_exp and $SQL_exp_group){
  350. if($expDetail_Exp_str){
  351. $SQL .= " AND ExpID in ($expDetail_Exp_str)";
  352. }else{
  353. $gel_search = false;
  354. }
  355. }
  356. if($date_from and $date_to){
  357. $SQL .= " AND (G.DateTime > '".$date_from."' AND G.DateTime < '".$date_to."')";
  358. }
  359. //echo "Gel: $SQL<br>\n";
  360. if($gel_search){
  361. $results = mysql_query($SQL, $HITSDB->link);
  362. while($row = mysql_fetch_row($results)){
  363. array_push($gel_selected_gel_arr, $row[0]);
  364. }
  365. }
  366. $raw_file_num = 0;
  367. $task_num = 0;
  368. $msTable_arr = array();
  369. if($frm_search_str and !$SQL_exp){
  370. //get access id string
  371. if($USER->Type == 'Admin'){
  372. $sql_p = "SELECT P.ID, P.Name FROM Projects P order by P.ID";
  373. }else{
  374. $sql_p = "SELECT P.ID, P.Name FROM Projects P, ProPermission M where P.ID=M.ProjectID and M.UserID=$USER->ID order by P.ID";
  375. }
  376. $results = mysql_query($sql_p, $PROHITSDB->link);
  377. while($row = mysql_fetch_row($results)){
  378. if($pro_access_ID_str) $pro_access_ID_str .= ",";
  379. $pro_access_ID_str .= $row[0];
  380. }
  381. //get all ms tables
  382. $SQL = "SHOW TABLES";
  383. $results = mysql_query($SQL, $managerDB->link);
  384. while($row = mysql_fetch_row($results)){
  385. array_push($msTable_arr, $row[0]);
  386. }
  387. //search raw file ---------------------------------------------
  388. $tableName = '';
  389. $SQL_from = '';
  390. $SQL_where = ' WHERE';
  391. $like_str = get_like_str(array("FileName"),$frm_search_str);
  392. $SQL_where .= " (". $like_str .")";
  393. $SQL_where .= get_and_date_str('Date');
  394. $SQL_where .= " AND ProjectID in($pro_access_ID_str)";
  395. foreach($BACKUP_SOURCE_FOLDERS as $baseTable => $var_arr){
  396. if(!in_array($baseTable, $msTable_arr)) continue;
  397. $raw_file_searched_arr[$baseTable] = array();
  398. $SQL = "SELECT ID From `".$baseTable."`". $SQL_where;
  399. $results = mysql_query($SQL, $managerDB->link);
  400. while($row = mysql_fetch_row($results)){
  401. array_push($raw_file_searched_arr[$baseTable], $row[0]);
  402. $raw_file_num++;
  403. }
  404. //echo "RawFile : $SQL<br>\n";
  405. //print_r($raw_file_searched_arr[$baseTable]);
  406. }
  407. if(!$raw_file_num) $rawfile_search = false;
  408. //Search Tasks --------------------------------------------------
  409. //$task_search = true;
  410. $like_str = get_like_str(array("TaskName"),$frm_search_str);
  411. foreach($BACKUP_SOURCE_FOLDERS as $baseTable => $var_arr){
  412. $task_searched_arr[$baseTable] = array();
  413. $tableSearchTasks = $baseTable."SearchTasks";
  414. if(!in_array($tableSearchTasks, $msTable_arr)) continue;
  415. $SQL = "SELECT ID from $tableSearchTasks where ";
  416. $SQL .= " (". $like_str .")";
  417. $SQL .= get_and_date_str('StartTime');
  418. $SQL .= " AND ProjectID in($pro_access_ID_str) $where_UserID_task";
  419. $results = mysql_query($SQL, $managerDB->link);
  420. while($row = mysql_fetch_row($results)){
  421. if($row[0] > 0){
  422. array_push( $task_searched_arr[$baseTable], $row[0]);
  423. $raw_file_num++;
  424. }
  425. }
  426. //echo "Task : $SQL<br>\n";
  427. //print_r($task_searched_arr[$baseTable]);
  428. }
  429. }else{
  430. $rawfile_search = false;
  431. $task_search = false;
  432. }
  433. $lable_exp = $frm_expDetail_dis;
  434. $tmp_str = ($lable_exp)?"<br>".$lable_exp:"";
  435. $page_lable = urlencode("\"$frm_search_str\"". $tmp_str );
  436. //---display search results --------------------------------------
  437. ?>
  438. <STYLE type="text/css">
  439. td { font-family : Arial, Helvetica, sans-serif; FONT-SIZE: 10pt;}
  440. .st1 {
  441. display: block;
  442. border: black solid 1px;
  443. width:552;
  444. color: black;
  445. background-color: white;
  446. }
  447. </STYLE>
  448. <script type="text/javascript">
  449. function browse_for_detail(theURL, theTitle, id_str, id_vl_str, theTable){
  450. var theForm = document.getElementById('searched_form');
  451. theForm.title_lable.value = theTitle + theForm.title_lable.value;
  452. theForm.table.value=theTable;
  453. theForm.searched_id_str.value=document.getElementById(id_str).value;
  454. if(theURL == 'band_show.php'){
  455. theForm.frm_Band_groups.value = 'Band';
  456. }
  457. if(id_vl_str){
  458. theForm.searched_id_vl_str.value=document.getElementById(id_vl_str).value;
  459. }
  460. theForm.action = theURL;
  461. theForm.submit();
  462. }
  463. </script>
  464. <form id="searched_form" name="searched_form" method='post' action="">
  465. <input type=hidden name='searched_id_str' id='searched_id_str' value=''>
  466. <input type=hidden name='searched_id_vl_str' id='searched_id_vl_str' value=''>
  467. <input type=hidden name='theaction' id='theaction' value='search'>
  468. <input type=hidden name='table' id='table' value=''>
  469. <input type=hidden name='title_lable' id='title_lable' value='<?=$page_lable;?>'>
  470. <input type=hidden name='frm_Band_groups' id='frm_Band_groups' value=''>
  471. <table border="0" cellpadding="0" cellspacing="0" width="95%">
  472. <tr>
  473. <td align="left"><br>
  474. &nbsp; <font color="navy" face="helvetica,arial,futura" size="5"><b>Search Results
  475. <?
  476. if($AccessProjectName){
  477. echo " <font color='red' face='helvetica,arial,futura' size='3'>(Project: $AccessProjectName)</font>";
  478. }
  479. ?>
  480. </b>
  481. </font>
  482. </td>
  483. <td align="right">
  484. &nbsp;
  485. </td>
  486. </tr>
  487. <tr>
  488. <td colspan=2 height=1 bgcolor="black"><img src="./images/pixel.gif"></td>
  489. </tr>
  490. <tr>
  491. <td align="center" colspan=2 bgcolor=''><br>
  492. <?
  493. $lable_wildcard = 'No';
  494. $lable_OrAnd = 'the exact phrase';
  495. $label_des = ($frm_search_description)?'Yes':'No';
  496. //$lable_exp = ($frm_expDetail_str)?$frm_expDetail_str:"&nbsp;";
  497. //$RemoveChars = array('/@@/', '/[0-9]+_[0-9]+,,/', '/;;/');
  498. //$ReplaceWith = array('<br>', '', ': ');
  499. switch($frm_addwildcard){
  500. case 'both':
  501. $lable_wildcard = 'front and end';
  502. break;
  503. case 'front':
  504. $lable_wildcard = 'at the front';
  505. break;
  506. case 'end':
  507. $lable_wildcard = 'at the end';
  508. break;
  509. }
  510. switch($frm_search_OrAnd){
  511. case 'OR':
  512. $lable_OrAnd = 'at least one of the words';
  513. break;
  514. case 'AND':
  515. $lable_OrAnd = 'all words';
  516. break;
  517. }
  518. ?> <DIV class="st1">
  519. <table width=100% border=0 cellspacing="1" cellpadding="2">
  520. <tr><td colspan=2 bgcolor="#9c9c9c" height=30 align=center>
  521. <font color="#FFFFFF"><b>Your search results for following criteria:</b></font>
  522. </td>
  523. </tr>
  524. <tr>
  525. <td width=200 bgcolor="#eeeeee"><b>Word(s) or value(s)</b>:</td><td bgcolor="#eeeeee"><?=$frm_search_str;?></td>
  526. </tr><tr>
  527. <td bgcolor="#eeeeee"><b>Add wildcard</b>:</td><td bgcolor="#eeeeee"><?=$lable_wildcard;?></td>
  528. </tr><tr>
  529. <td bgcolor="#eeeeee"><b>Find</b>:</td><td bgcolor="#eeeeee"><?=$lable_OrAnd;?></td>
  530. </tr><tr>
  531. <td bgcolor="#eeeeee"><b>Include description</b>:</td><td bgcolor="#eeeeee"><?=$label_des;?></td>
  532. </tr>
  533. <tr>
  534. <td valign=top bgcolor="#eeeeee"><b>Experiment detail</b>:</td><td bgcolor="#eeeeee"><?=$lable_exp;?></td>
  535. </tr>
  536. <tr>
  537. <td bgcolor="#eeeeee"><b>Date</b>:</td><td bgcolor="#eeeeee"><?=($frm_date_str)?$frm_date_str:"&nbsp;";?></td>
  538. </tr>
  539. </table>
  540. </div>
  541. <?=$msg_h;?>
  542. <br>
  543. <DIV class="st1">
  544. <table width=100% border=0 cellspacing="1" cellpadding="2">
  545. <tr bgcolor="#888888" align=center>
  546. <td bgcolor="#9c9c9c"><font color="#FFFFFF"><b>Record Type</b></font></td>
  547. <td bgcolor="#9c9c9c"><font color="#FFFFFF"><b>Match(es)</b></font></td>
  548. <td bgcolor="#9c9c9c"><font color="#FFFFFF"><b>Browse for Detail</b></font></td>
  549. </tr>
  550. <tr>
  551. <td width=200 bgcolor="#cccccc"> Bait:</td>
  552. <td width=200 align=center bgcolor="#eeeeee">
  553. <?
  554. //---- display bait -----------------
  555. $num = count($bait_selected_bait_arr);
  556. echo $num . "";
  557. ?>
  558. </td>
  559. <td align=center bgcolor="#eeeeee">
  560. <?
  561. if($num){
  562. $bait_selected_bait_str = implode(",", $bait_selected_bait_arr);
  563. echo "<input type=hidden name='bait_ids' id='bait_ids' value='$bait_selected_bait_str'>\n";
  564. echo "<a class=button href=\"javascript: browse_for_detail('bait.php', 'Search Bait ', 'bait_ids', '', '');\">[Browse]</a>";
  565. }else{
  566. echo "&nbsp;";
  567. }
  568. ?>
  569. </td>
  570. </tr>
  571. <tr>
  572. <td bgcolor="#cccccc"> Hit (Report by Bait): </td>
  573. <td align=center bgcolor="#eeeeee">
  574. <?
  575. // -- display hits ----------------
  576. $num = count($hit_selected_bait_arr);
  577. echo $num . "";
  578. ?>
  579. </td>
  580. <td align=center bgcolor="#eeeeee">
  581. <?
  582. if($num){
  583. $hit_selected_bait_str = implode(",", $hit_selected_bait_arr);
  584. $hit_value_for_bait_str = '';
  585. foreach($hit_value_for_bait_arr as $key=>$value){
  586. $hit_value_for_bait_str .= $key . ",".$value . ":";
  587. }
  588. echo "<input type=hidden name='hit_ids_v' id='hit_ids_v' value='$hit_value_for_bait_str'>\n";
  589. echo "<input type=hidden name='hit_ids' id='hit_ids' value='$hit_selected_bait_str'>\n";
  590. echo "<a class=button href=\"javascript: browse_for_detail('bait.php', 'Search hits ', 'hit_ids', 'hit_ids_v', '');\">[Browse]</a>";
  591. }else{
  592. echo "&nbsp;";
  593. }
  594. ?>
  595. </td>
  596. </tr>
  597. <tr>
  598. <td bgcolor="#cccccc"> Hit (Report by Sample): </td>
  599. <td align=center bgcolor="#eeeeee">
  600. <?
  601. // -- display hits ----------------
  602. $num = count($hit_selected_band_arr);
  603. echo $num . "";
  604. ?>
  605. </td>
  606. <td align=center bgcolor="#eeeeee">
  607. <?
  608. if($num){
  609. $hit_selected_band_str = implode(",", $hit_selected_band_arr);
  610. $hit_value_for_band_str = '';
  611. foreach($hit_value_for_band_arr as $key=>$value){
  612. $hit_value_for_band_str .= $key .",".$value . ":";
  613. }
  614. echo "<input type=hidden name='hit_Band_ids_v' id='hit_Band_ids_v' value='$hit_value_for_band_str'>\n";
  615. echo "<input type=hidden name='hit_Band_ids' id='hit_Band_ids' value='$hit_selected_band_str'>\n";
  616. echo "<a class=button href=\"javascript: browse_for_detail('band_show.php', 'Search hits ', 'hit_Band_ids', 'hit_Band_ids_v','');\">[Browse]</a>";
  617. }else{
  618. echo "&nbsp;";
  619. }
  620. ?>
  621. </td>
  622. </tr>
  623. <tr>
  624. <td bgcolor="#cccccc"> TPP Hit (Report by Bait): </td>
  625. <td align=center bgcolor="#eeeeee">
  626. <?
  627. // -- display TPP hits ----------------
  628. $num = count($TPP_hit_selected_bait_arr);
  629. echo $num . "";
  630. ?>
  631. </td>
  632. <td align=center bgcolor="#eeeeee">
  633. <?
  634. if($num){
  635. $TPP_hit_selected_bait_str = implode(",", $TPP_hit_selected_bait_arr);
  636. $tpp_value_str = '';
  637. foreach($tpp_hit_value_for_bait_arr as $key=>$value){
  638. $tpp_value_str .= $key. ",".$value . ":";
  639. }
  640. echo "<input type=hidden name='hit_TPP_ids_v' id='hit_TPP_ids_v' value='$tpp_value_str'>\n";
  641. echo "<input type=hidden name='TPP_ids' id='TPP_ids' value='$TPP_hit_selected_bait_str'>\n";
  642. echo "<a class=button href=\"javascript: browse_for_detail('bait.php', 'Search TPP hits ', 'TPP_ids', 'hit_TPP_ids_v', 'TPP');\">[Browse]</a>";
  643. }else{
  644. echo "&nbsp;";
  645. }
  646. ?>
  647. </td>
  648. </tr>
  649. <tr>
  650. <td bgcolor="#cccccc"> TPP Hit (Report by Sample): </td>
  651. <td align=center bgcolor="#eeeeee">
  652. <?
  653. // -- display TPP hits ----------------
  654. $num = count($TPP_hit_selected_band_arr);
  655. echo $num . "";
  656. ?>
  657. </td>
  658. <td align=center bgcolor="#eeeeee">
  659. <?
  660. if($num){
  661. $TPP_hit_selected_band_str = implode(",", $TPP_hit_selected_band_arr);
  662. $tpp_value_str = '';
  663. foreach($tpp_hit_value_for_band_arr as $key=>$value){
  664. $tpp_value_str .= $key. ",".$value . ":";
  665. }
  666. echo "<input type=hidden name='tpp_band_ids_v' id='tpp_band_ids_v' value='$tpp_value_str'>\n";
  667. echo "<input type=hidden name='tpp_band_ids' id='tpp_band_ids' value='$TPP_hit_selected_band_str'>\n";
  668. echo "<a class=button href=\"javascript: browse_for_detail('band_show.php', 'Search sample ', 'tpp_band_ids', 'tpp_band_ids_v', 'TPP');\">[Browse]</a>";
  669. }else{
  670. echo "&nbsp;";
  671. }
  672. ?>
  673. </td>
  674. </tr>
  675. <tr>
  676. <td bgcolor="#cccccc"> Sample: </td>
  677. <td align=center bgcolor="#eeeeee">
  678. <?
  679. $num = count($band_selected_band_arr);
  680. echo $num . "";
  681. ?>
  682. </td>
  683. <td align=center bgcolor="#eeeeee">
  684. <?
  685. if($num){
  686. $band_selected_band_str = implode(",", $band_selected_band_arr);
  687. echo "<input type=hidden name='band_ids' id='band_ids' value='$band_selected_band_str'>\n";
  688. echo "<a class=button href=\"javascript: browse_for_detail('band_show.php', 'Search sample ', 'band_ids', '','');\">[Browse]</a>";
  689. }else{
  690. echo "&nbsp;";
  691. }
  692. ?>
  693. </td>
  694. </tr>
  695. <?
  696. // --- display gel----------------------
  697. if($gel_selected_gel_arr){
  698. ?>
  699. <tr>
  700. <td bgcolor="#cccccc"> Gel: </td>
  701. <td align=center bgcolor="#eeeeee">
  702. <?
  703. $num = count($gel_selected_gel_arr);
  704. echo $num . "";
  705. ?>
  706. </td>
  707. <td align=center bgcolor="#eeeeee">
  708. <?
  709. if($num){
  710. $gel_selected_gel_str = implode(",", $gel_selected_gel_arr);
  711. echo "<input type=hidden name='gel_ids' id='gel_ids' value='$gel_selected_gel_str'>\n";
  712. echo "<a class=button href=\"javascript: browse_for_detail('gel.php', 'Search gel ', 'gel_ids', '','');\">[Browse]</a>";
  713. }else{
  714. echo "&nbsp;";
  715. }
  716. ?>
  717. </td>
  718. </tr>
  719. <?}?>
  720. <tr>
  721. <?
  722. //---- display raw files ------------
  723. $num = 0;
  724. $total_imploded_str = '';
  725. $dis_arr = array();
  726. foreach($raw_file_searched_arr as $theTable => $theValue){
  727. if($theValue){
  728. $tmp_num = count($theValue);
  729. $num += $tmp_num;
  730. $the_imploded = $theTable . ":" . implode(",",$theValue);
  731. $total_imploded_str .= $the_imploded.";;";
  732. array_push($dis_arr, array("$theTable", $tmp_num, $theTable . ":" . implode(",",$theValue)));
  733. }
  734. }
  735. $num_tables = count($dis_arr);
  736. ?>
  737. <td rowspan="<?=$num_tables+1;?>" valign=top bgcolor="#cccccc"> Raw File / Folder: </td>
  738. <td align=center bgcolor="#eeeeee"><?="<font color='#FF0000'>total: $num</font>";?></td>
  739. <td align=center bgcolor="#eeeeee">
  740. <?
  741. if($num_tables){
  742. echo "<input type=hidden name='raw_ids' id='raw_ids' value='$total_imploded_str'>\n";
  743. echo "<a class=button href=\"javascript: browse_for_detail('../msManager/ms_storage_fetch_raw.php', 'Search raw file ', 'raw_ids', '','');\">[Browse]</a>";
  744. }else{
  745. echo "&nbsp;";
  746. }
  747. ?>
  748. </td>
  749. </tr>
  750. <?
  751. $con= 0;
  752. foreach($dis_arr as $tmp_dis_arr){
  753. $con++;
  754. echo "<tr>
  755. <td align=center bgcolor=\"#eeeeee\">" . $tmp_dis_arr[0] . ": " . $tmp_dis_arr[1]. "</td>
  756. <td align=center bgcolor=\"#eeeeee\">\n";
  757. echo "<input type=hidden name='raw_ids$con' id='raw_ids$con' value='".$tmp_dis_arr[2]."'>\n";
  758. echo "<a class=button href=\"javascript: browse_for_detail('../msManager/ms_storage_fetch_raw.php', 'Search raw file ', 'raw_ids$con', '','');\">[Browse]</a>";
  759. echo "</td>
  760. </tr>\n";
  761. }
  762. ?>
  763. <tr>
  764. <?
  765. //---- display search tasks -------
  766. $num = 0;
  767. $dis_arr = array();
  768. foreach($task_searched_arr as $theTable => $theValue){
  769. if($theValue){
  770. $tmp_num = count($theValue);
  771. $num += $tmp_num;
  772. $the_imploded = $theTable . ":" . implode(",",$theValue);
  773. array_push($dis_arr, array("$theTable", $tmp_num, implode(",",$theValue)));
  774. }
  775. }
  776. $num_tables = count($dis_arr);
  777. ?>
  778. <td rowspan="<?=$num_tables+1;?>" valign=top bgcolor="#cccccc"> Auto-search Task: </td>
  779. <td align=center bgcolor="#eeeeee"><?="<font color='#ff0000'>total: $num</font>";?></td>
  780. <td align=right bgcolor="#eeeeee">&nbsp;</td>
  781. </tr>
  782. <?
  783. $con= 0;
  784. foreach($dis_arr as $tmp_dis_arr){
  785. $con++;
  786. echo "<tr>
  787. <td align=center bgcolor=\"#eeeeee\">" . $tmp_dis_arr[0] . ": " . $tmp_dis_arr[1]. "</td>
  788. <td align=center bgcolor=\"#eeeeee\">\n";
  789. echo "<input type=hidden name='task_ids$con' id='task_ids$con' value='".$tmp_dis_arr[2]."'>\n";
  790. echo "<a class=button href=\"javascript: browse_for_detail('../msManager/ms_search_task_list.php', 'Find tasks ', 'task_ids$con', '','".$tmp_dis_arr[0]."');\">[Browse]</a>";
  791. echo "</td>
  792. </tr>\n";
  793. }
  794. ?>
  795. </table>
  796. </div>
  797. </td>
  798. </tr>
  799. </table>
  800. </form>
  801. <script language='javascript'>
  802. document.getElementById('process').style.display = 'none';
  803. </script>
  804. <?
  805. require("site_footer.php");
  806. //-------------------------------------------------------
  807. //from band and exp array to get those shared band array
  808. function get_exp_band_arr($type, $band_arr = array()){
  809. global $HITSDB;
  810. global $AccessProjectID;
  811. global $expDetail_Exp_str;
  812. $rt_arr = array();
  813. if(!$expDetail_Exp_str) return $rt_arr;
  814. $band_arr = array_unique($band_arr);
  815. if($band_arr){
  816. $band_str = implode(",", $band_arr);
  817. $SQL = "select distinct ID from Band where ExpID in ($expDetail_Exp_str) and ID in($band_str)";
  818. }else if($type == 'TPP'){
  819. $SQL = "select distinct B.ID from Band B, TppProtein T where B.ID=T.BandID and B.ExpID in ($expDetail_Exp_str)";
  820. }else{
  821. $SQL = "select distinct B.ID from Band B, Hits H where B.ID=H.BandID and B.ExpID in ($expDetail_Exp_str)";
  822. }
  823. //echo $SQL;
  824. $results = mysql_query($SQL, $HITSDB->link);
  825. while($row = mysql_fetch_row($results)){
  826. array_push($rt_arr, $row[0]);
  827. }
  828. return $rt_arr;
  829. }
  830. //-------------------------------------------------------
  831. //from bait array to get those baits have the pointed exp
  832. //$SQL_exp and $SQL_exp_group
  833. //if no bait array passed it will get all baits have the exp
  834. function get_exp_bait_arr($type, $selected_bait_arr = array()){
  835. global $HITSDB;
  836. global $AccessProjectID;
  837. global $SQL_exp, $SQL_exp_group,$where_UserID_exp;
  838. $rt_arr = array();
  839. $SQL = '';
  840. if($selected_bait_arr){
  841. //bait and hit
  842. $bait_str = implode(",", $selected_bait_arr);
  843. $SQL = $SQL_exp ." AND E.BaitID in ($bait_str)" . $SQL_exp_group;
  844. }else if($type == 'Bait' or $type == 'Band'){
  845. $SQL_exp .= get_and_date_str('E.DateTime');
  846. $SQL = $SQL_exp ." AND E.ProjectID='$AccessProjectID' $where_UserID_exp " . $SQL_exp_group;
  847. }else{
  848. return $rt_arr;
  849. }
  850. //echo "get_exp_bait: $SQL <br>\n";
  851. $results = mysql_query($SQL, $HITSDB->link);
  852. while($row = mysql_fetch_row($results)){
  853. if($type == 'Band'){
  854. //get ExpID array
  855. array_push($rt_arr, $row[1]);
  856. }else{
  857. //get BaitID array
  858. array_push($rt_arr, $row[0]);
  859. }
  860. }
  861. $rt_arr = array_unique($rt_arr);
  862. return $rt_arr;
  863. }
  864. //-------------------------------------------------
  865. //from bait arr get those baits have hits.
  866. function get_hit_bait_arr($expDetail_bait_arr, $type=''){
  867. global $HITSDB;
  868. $rt_arr = array();
  869. if(!$expDetail_bait_arr){
  870. return $rt_arr;
  871. }
  872. $bait_e_str = implode(",", $expDetail_bait_arr);
  873. if($type='TPP'){
  874. $SQL = "SELECT Distinct BaitID FROM Hits WHERE BaitID in ($bait_e_str)";
  875. }else{
  876. $SQL = "SELECT Distinct BaitID FROM TppProtein WHERE BaitID in ($bait_e_str)";
  877. }
  878. //echo "H6: $SQL<br>\n";
  879. $results = mysql_query($SQL, $HITSDB->link);
  880. while($row = mysql_fetch_row($results)){
  881. array_push($rt_arr, $row[0]);
  882. }
  883. return $rt_arr;
  884. }
  885. //------------------------------------------------
  886. //return sql like str from fields and imploded str
  887. function get_like_str($field_arr, $search_tmp_str, $OrAnd=''){
  888. global $s_wildcard, $e_wildcard, $frm_search_OrAnd;
  889. $rt = '';
  890. if(!$OrAnd){
  891. $OrAnd = $frm_search_OrAnd;
  892. }else if($OrAnd == "="){
  893. $OrAnd = '';
  894. }
  895. foreach($field_arr as $field){
  896. $tmp_str = '';
  897. if($rt) $rt .= " OR ";
  898. if($OrAnd){
  899. $tmp_str = "`".$field."`" . " LIKE '".$s_wildcard;
  900. $tmp_str .= str_replace(" ", $e_wildcard . "' ".$OrAnd." `".$field."` LIKE '".$s_wildcard, $search_tmp_str).$e_wildcard."'";
  901. if($OrAnd == 'AND'){
  902. $tmp_str = "($tmp_str)";
  903. }
  904. $rt .= $tmp_str;
  905. }else{
  906. $search_tmp_str = str_replace("@@", " ", $search_tmp_str);
  907. $rt .= "`".$field."`" . "='".$search_tmp_str."'";
  908. }
  909. }
  910. return $rt;
  911. }
  912. //------------------------------------------------
  913. function get_and_date_str($date){
  914. global $date_from, $date_to;
  915. $rt = '';
  916. if($date_from and $date_to){
  917. $rt = " AND ($date>'".$date_from."' AND $date<'".$date_to."')";
  918. }
  919. return $rt;
  920. }
  921. ?>