|
@@ -23,13 +23,13 @@ function blast_ui_preprocess_show_blast_report(&$vars) {
|
|
|
|
|
|
// Get blast job details.
|
|
|
$vars['blast_job'] = get_BLAST_job($vars['job_id']);
|
|
|
-
|
|
|
+
|
|
|
// Determine the blast command for display.
|
|
|
$vars['blast_job']->blast_cmd = $vars['blast_job']->program;
|
|
|
foreach($vars['blast_job']->options as $key => $value) {
|
|
|
$vars['blast_job']->blast_cmd .= ' -' . $key. ' ' . $value ;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Determine the URL of the blast form.
|
|
|
$vars['blast_form_url'] = 'blast/nucleotide/nucleotide';
|
|
|
switch($vars['blast_job']->program) {
|
|
@@ -46,12 +46,23 @@ function blast_ui_preprocess_show_blast_report(&$vars) {
|
|
|
$vars['blast_form_url'] = 'blast/protein/protein';
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Load the XML file.
|
|
|
$vars['xml'] = NULL;
|
|
|
+ $vars['num_results'] = FALSE;
|
|
|
+ $vars['too_many_results'] = FALSE;
|
|
|
+
|
|
|
$full_path_xml = DRUPAL_ROOT . DIRECTORY_SEPARATOR . $vars['blast_job']->files->result->xml;
|
|
|
if (is_readable($full_path_xml)) {
|
|
|
- $vars['xml'] = simplexml_load_file($full_path_xml);
|
|
|
+
|
|
|
+ $vars['num_results'] = `grep -c "<Hit>" $full_path_xml`;
|
|
|
+
|
|
|
+ if ($vars['num_results'] < 500) {
|
|
|
+ $vars['xml'] = simplexml_load_file($full_path_xml);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $vars['too_many_results'] = TRUE;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -85,7 +96,7 @@ function blast_ui_theme_registry_alter(&$theme_registry) {
|
|
|
|
|
|
/**
|
|
|
* Makes the tripal job_id unrecognizable.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param $job_id
|
|
|
* The tripal job_id of the blast you want to make secret.
|
|
|
*
|
|
@@ -96,7 +107,7 @@ function blast_ui_make_secret($job_id) {
|
|
|
|
|
|
$mapping = blast_ui_secret_mapping();
|
|
|
$secret = str_replace(array_keys($mapping), $mapping, $job_id);
|
|
|
-
|
|
|
+
|
|
|
return $secret;
|
|
|
}
|
|
|
|
|
@@ -113,7 +124,7 @@ function blast_ui_reveal_secret($secret) {
|
|
|
|
|
|
$mapping = blast_ui_secret_mapping(TRUE);
|
|
|
$job_id = str_replace(array_keys($mapping), $mapping, $secret);
|
|
|
-
|
|
|
+
|
|
|
// Check that the job_id exists if it is an integer.
|
|
|
if (is_numeric($job_id)) {
|
|
|
|
|
@@ -129,7 +140,7 @@ function blast_ui_reveal_secret($secret) {
|
|
|
else {
|
|
|
return $job_id;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
// Last ditch effort: maybe this job was encoded before the upgrade?
|
|
|
else {
|
|
|
|
|
@@ -157,7 +168,7 @@ function blast_ui_reveal_secret($secret) {
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -177,19 +188,19 @@ function blast_ui_secret_mapping($reveal = FALSE) {
|
|
|
9 => 'Km',
|
|
|
0 => 'jVo',
|
|
|
);
|
|
|
-
|
|
|
- // Since this is an open-source module with all the code publically available,
|
|
|
- // our secret is not very secret... We are ok with this since the liklihood of
|
|
|
+
|
|
|
+ // Since this is an open-source module with all the code publically available,
|
|
|
+ // our secret is not very secret... We are ok with this since the liklihood of
|
|
|
// profiting by stealing random blast results is pretty low. That said, if this bothers
|
|
|
// you, feel free to implement the following function in a private module to change
|
|
|
// this mapping to something that cannot easily be looked up on github. ;-).
|
|
|
// NOTE: Ensure that the mapping you come up with is unique to ensure that the
|
|
|
- // job_id can be consistently revealed or your users might end up unable to find
|
|
|
+ // job_id can be consistently revealed or your users might end up unable to find
|
|
|
// their own blast results...
|
|
|
if (function_exists('private_make_mapping_ultra_secret')) {
|
|
|
$mapping = private_make_mapping_ultra_secret($mapping);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if ($reveal) {
|
|
|
return array_flip($mapping);
|
|
|
}
|
|
@@ -199,7 +210,7 @@ function blast_ui_secret_mapping($reveal = FALSE) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Tests your secret mapping over a set of random integers
|
|
|
+ * Tests your secret mapping over a set of random integers
|
|
|
* to ensure the job_id can be recovered.
|
|
|
*
|
|
|
* @param $num_iterations
|
|
@@ -208,21 +219,21 @@ function blast_ui_secret_mapping($reveal = FALSE) {
|
|
|
function blast_ui_test_secret_mapping($num_iterations = 10000) {
|
|
|
|
|
|
$all_work = TRUE;
|
|
|
-
|
|
|
+
|
|
|
for($i = 0; $i <= $num_iterations; $i++) {
|
|
|
$job_id = mt_rand(0,100000);
|
|
|
-
|
|
|
+
|
|
|
$secret = blast_ui_make_secret($job_id);
|
|
|
$recovered_job_id = blast_ui_reveal_secret($secret);
|
|
|
-
|
|
|
+
|
|
|
if ($job_id != $recovered_job_id) {
|
|
|
drupal_set_message("Unable to recover job_id: $job_id; Secret: $secret.",'error');
|
|
|
$all_work = FALSE;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if ($all_work) {
|
|
|
drupal_Set_message("Secret Mapping works over $num_iterations iterations with random integers.");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|