Tripal Plant PopGen Submit
pages.php
Go to the documentation of this file.
1 <?php
7 function tpps_admin_files_diagnostics_page(array $form, array &$form_state, $study_accession = NULL) {
8  $markup = "";
9 
10  $results = chado_query('SELECT * FROM tpps_submission WHERE accession = :accession', [
11  ':accession' => $study_accession
12  ]);
13 
14  $serialized_data = "";
15  foreach($results as $row) {
16  $serialized_data = unserialize($row->submission_state);
17  }
18  // print_r($serialized_data['saved_values']);
19 
20  // print_r($serialized_data['ids']);
21  $project_id = $serialized_data['ids']['project_id'];
22 
23 
24  $project_file_ids = [];
25  // get file_ids from project_id
26  $results = chado_query('SELECT * FROM tpps_project_file_managed WHERE project_id = :project_id', [
27  ':project_id' => $project_id
28  ]);
29  foreach ($results as $row) {
30  // print_r($row);
31  array_push($project_file_ids, $row->fid);
32  }
33  // print_r($project_file_ids);
34  sort($project_file_ids);
35 
36  $saved_values = $serialized_data['saved_values'];
37  // print_r($saved_values);
38  $file_ids = [];
39  $organism_count = $saved_values['1']['organism']['number'];
40  // print_r($organism_count);
41  for($i=1; $i<=4; $i++) {
42  if ($i == 3) {
43  for($j=1; $j<=$organism_count; $j++) {
44  if(isset($saved_values[$i]['tree-accession']['species-' . $j]['file'])) {
45  array_push($file_ids, $saved_values[$i]['tree-accession']['species-' . $j]['file']);
46  }
47  }
48  }
49  if ($i == 4) {
50  // Phenotype files
51  for($j=1; $j<=$organism_count; $j++) {
52  if(isset($saved_values[$i]['organism-' . $j]['phenotype']['file'])) {
53  array_push($file_ids, $saved_values[$i]['organism-' . $j]['phenotype']['file']);
54  }
55  if(isset($saved_values[$i]['organism-' . $j]['phenotype']['metadata'])) {
56  array_push($file_ids, $saved_values[$i]['organism-' . $j]['phenotype']['metadata']);
57  }
58  }
59  for($j=1; $j<=$organism_count; $j++) {
60  if(isset($saved_values[$i]['organism-' . $j]['genotype']['files']['snps-assay'])) {
61  array_push($file_ids, $saved_values[$i]['organism-' . $j]['genotype']['files']['snps-assay']);
62  }
63  if(isset($saved_values[$i]['organism-' . $j]['genotype']['files']['snps-association'])) {
64  array_push($file_ids, $saved_values[$i]['organism-' . $j]['genotype']['files']['snps-association']);
65  }
66  if(isset($saved_values[$i]['organism-' . $j]['genotype']['files']['vcf'])) {
67  array_push($file_ids, $saved_values[$i]['organism-' . $j]['genotype']['files']['vcf']);
68  }
69  if(isset($saved_values[$i]['organism-' . $j]['genotype']['files']['ssrs'])) {
70  array_push($file_ids, $saved_values[$i]['organism-' . $j]['genotype']['files']['ssrs']);
71  }
72  if(isset($saved_values[$i]['organism-' . $j]['genotype']['files']['ssrs_extra'])) {
73  array_push($file_ids, $saved_values[$i]['organism-' . $j]['genotype']['files']['ssrs_extra']);
74  }
75  }
76  }
77  }
78  // print_r($file_ids);
79  sort($file_ids);
80 
81  $markup .= '<div style="font-size: 12px;">';
82  $markup .= '<div style="display: inline-block; width: 30%; vertical-align: top;">';
83  $markup .= '<h4>Project ID Managed</h4>';
84  foreach ($project_file_ids as $fid) {
85  $markup .= '<div>' . $fid . '-';
86  $file = file_load($fid);
87  if ($file) {
88  $file_url = check_plain(file_create_url($file->uri));
89  $markup .= "<a href='$file_url' target='blank'>$file->filename</a>";
90  }
91  $markup .= '</div>';
92  }
93  $markup .= '</div>';
94 
95  $markup .= '<div style="display: inline-block; width: 30%; vertical-align: top;">';
96  $markup .= '<h4>Submission state</h4>';
97  foreach ($file_ids as $fid) {
98  $markup .= '<div>' . $fid . '-';
99  $file = file_load($fid);
100  if ($file) {
101  $file_url = check_plain(file_create_url($file->uri));
102  $markup .= "<a href='$file_url' target='blank'>$file->filename</a>";
103  }
104  $markup .= '</div>';
105  }
106  $markup .= '</div>';
107 
108  $markup .= '<div style="display: inline-block; width: 30%; vertical-align: top;">';
109  $markup .= '<h4>History/State files</h4>';
110  $overall_file_ids = $serialized_data['files'];
111  sort($overall_file_ids);
112  foreach ($overall_file_ids as $fid) {
113  $markup .= '<div>' . $fid . '-';
114  $file = file_load($fid);
115  if ($file) {
116  $file_url = check_plain(file_create_url($file->uri));
117  $markup .= "<a href='$file_url' target='blank'>$file->filename</a>";
118  }
119  $markup .= '</div>';
120 
121  }
122  $markup .= '</div>';
123  $markup .= '</div>';
124 
125  $form['markup'] = array(
126  '#type' => 'markup',
127  '#markup' => $markup
128  );
129 
130  return $form;
131 }
132 
138 function tpps_admin_state_compare_page(array $form, array &$form_state, $study_accession1 = NULL, $study_accession2 = NULL) {
139 
140  // print_r($study_accession1);
141  // print_r($study_accession2);
142 
143  $results1 = chado_query('SELECT * FROM tpps_submission WHERE accession = :accession', [
144  ':accession' => $study_accession1
145  ]);
146 
147  $results2 = chado_query('SELECT * FROM tpps_submission WHERE accession = :accession', [
148  ':accession' => $study_accession2
149  ]);
150 
151  $submission1 = [];
152  foreach ($results1 as $row) {
153  $submission1 = unserialize($row->submission_state);
154  }
155 
156  $submission2 = [];
157  foreach ($results2 as $row) {
158  $submission2 = unserialize($row->submission_state);
159  }
160 
161  $markup = "";
162  $markup .= '<div style="width: 80%"><table width="800px">';
163  $markup .= '<tr>';
164  $markup .= '<td colspan="1" style="width: 30%; display: inline-block; vertical-align: top; word-wrap: break-word;">';
165  $markup .= '<h3>' . $study_accession1 . '</h3>';
166  $markup .= print_r($submission1['saved_values'], true);
167  $markup .= '</td>';
168  $markup .= '<td colspan="1" style="width: 30%; display: inline-block; vertical-align: top; word-wrap: break-word;">';
169  $markup .= '<h3>' . $study_accession2 . '</h3>';
170  $markup .= print_r($submission2['saved_values'], true);
171  $markup .= '</td>';
172  $markup .= '<td colspan="1" style="width: 30%; display: inline-block; vertical-align: top; word-wrap: break-word;">';
173  $markup .= '<h3>Differences</h3>';
174  // $markup .= print_r(array_diff($submission1['saved_values'], $submission2['saved_values']), true);
175  $markup .= print_r(tpps_arrayRecursiveDiff($submission1['saved_values'], $submission2['saved_values']), true);
176  $markup .= '</td>';
177  $markup .= '</tr>';
178  $markup .= '</table></div>';
179  $form['markup'] = array(
180  '#type' => 'markup',
181  '#markup' => $markup
182  );
183  return $form;
184 }
185 
186 // https://stackoverflow.com/questions/3876435/recursive-array-diff
187 function tpps_arrayRecursiveDiff($aArray1, $aArray2) {
188  $aReturn = array();
189 
190  foreach ($aArray1 as $mKey => $mValue) {
191  if (array_key_exists($mKey, $aArray2)) {
192  if (is_array($mValue)) {
193  $aRecursiveDiff = tpps_arrayRecursiveDiff($mValue, $aArray2[$mKey]);
194  if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; }
195  } else {
196  if ($mValue != $aArray2[$mKey]) {
197  $aReturn[$mKey] = $mValue;
198  }
199  }
200  } else {
201  $aReturn[$mKey] = $mValue;
202  }
203  }
204  return $aReturn;
205 }
206 
207 // https://stackoverflow.com/questions/5911067/compare-object-properties-and-show-diff-in-php
208 function tpps_objDiff($obj1, $obj2):array {
209  $a1 = (array)$obj1;
210  $a2 = (array)$obj2;
211  return tpps_arrDiff($a1, $a2);
212 }
213 
214 function tpps_arrDiff(array $a1, array $a2):array {
215  $r = array();
216  foreach ($a1 as $k => $v) {
217  if (array_key_exists($k, $a2)) {
218  if ($v instanceof stdClass) {
219  $rad = objDiff($v, $a2[$k]);
220  if (count($rad)) { $r[$k] = $rad; }
221  }else if (is_array($v)){
222  $rad = arrDiff($v, $a2[$k]);
223  if (count($rad)) { $r[$k] = $rad; }
224  // required to avoid rounding errors due to the
225  // conversion from string representation to double
226  } else if (is_double($v)){
227  if (abs($v - $a2[$k]) > 0.000000000001) {
228  $r[$k] = array($v, $a2[$k]);
229  }
230  } else {
231  if ($v != $a2[$k]) {
232  $r[$k] = array($v, $a2[$k]);
233  }
234  }
235  } else {
236  $r[$k] = array($v, null);
237  }
238  }
239  return $r;
240 }
241 ?>
tpps_admin_state_compare_page(array $form, array &$form_state, $study_accession1=NULL, $study_accession2=NULL)
Definition: pages.php:138
tpps_arrayRecursiveDiff($aArray1, $aArray2)
Definition: pages.php:187
tpps_arrDiff(array $a1, array $a2)
Definition: pages.php:214
tpps_objDiff($obj1, $obj2)
Definition: pages.php:208
tpps_admin_files_diagnostics_page(array $form, array &$form_state, $study_accession=NULL)
Definition: pages.php:7