function tripal_feature_load_featurelocs
2.x tripal_feature.theme.inc | tripal_feature_load_featurelocs($feature_id, $side = 'as_parent', $aggregate = 1) |
3.x tripal_feature.theme.inc | tripal_feature_load_featurelocs($feature_id, $side = 'as_parent', $aggregate = 1) |
1.x tripal_feature.module | tripal_feature_load_featurelocs($feature_id, $side = 'as_parent', $aggregate = 1) |
Load the locations for a given feature
Parameters
$feature_id: The feature to look up locations for
$side: Whether the feature is the scrfeature, 'as_parent', or feature, 'as_child'
$aggregate: Whether or not to get the locations for related features
Related topics
1 call to tripal_feature_load_featurelocs()
- tripal_feature_load_featureloc_sequences in tripal_feature/
theme/ tripal_feature.theme.inc - Get the sequence this feature is located on
File
- tripal_feature/
theme/ tripal_feature.theme.inc, line 206
Code
function tripal_feature_load_featurelocs($feature_id, $side = 'as_parent', $aggregate = 1) {
$sql = "
SELECT
F.name, F.feature_id, F.uniquename,
FS.name as src_name, FS.feature_id as src_feature_id, FS.uniquename as src_uniquename,
CVT.name as cvname, CVT.cvterm_id,
CVTS.name as src_cvname, CVTS.cvterm_id as src_cvterm_id,
FL.fmin, FL.fmax, FL.is_fmin_partial, FL.is_fmax_partial,FL.strand, FL.phase
FROM {featureloc} FL
INNER JOIN {feature} F ON FL.feature_id = F.feature_id
INNER JOIN {feature} FS ON FS.feature_id = FL.srcfeature_id
INNER JOIN {cvterm} CVT ON F.type_id = CVT.cvterm_id
INNER JOIN {cvterm} CVTS ON FS.type_id = CVTS.cvterm_id
";
if (strcmp($side, 'as_parent') == 0) {
$sql .= "WHERE FL.srcfeature_id = :feature_id ";
}
if (strcmp($side, 'as_child') == 0) {
$sql .= "WHERE FL.feature_id = :feature_id ";
}
$flresults = chado_query($sql, array(':feature_id' => $feature_id));
// copy the results into an array
$i = 0;
$featurelocs = array();
while ($loc = $flresults->fetchObject()) {
// if a drupal node exists for this feature then add the nid to the
// results object
$loc->fnid = chado_get_nid_from_id('feature', $loc->feature_id);
$loc->snid = chado_get_nid_from_id('feature', $loc->src_feature_id);
// add the result to the array
$featurelocs[$i++] = $loc;
}
// Add the relationship feature locs if aggregate is turned on
if ($aggregate and strcmp($side, 'as_parent') == 0) {
// get the relationships for this feature without substituting any children
// for the parent. We want all relationships
$relationships = tripal_feature_get_aggregate_relationships($feature_id, 0);
foreach ($relationships as $rindex => $rel) {
// get the featurelocs for each of the relationship features
$rel_featurelocs = tripal_feature_load_featurelocs($rel->subject_id, 'as_child', 0);
foreach ($rel_featurelocs as $findex => $rfloc) {
$featurelocs[$i++] = $rfloc;
}
}
}
usort($featurelocs, 'tripal_feature_sort_locations');
return $featurelocs;
}